Code - Beispiele

Ja/Nein Abfrage

(initget "Ja Nein")
(if (= "Ja" (getkword "Soll was gemacht werden? [Ja/Nein] <Nein>: "))
  (;| Mach was bei Ja |;)
  (;| Mach was bei Nein |;)
  )

 

Der Text welcher in der eckigen Klammer [ ] steht und mit Schrägstrich / getrennt ist, bildete die Antwortmöglichkeiten. Das Wort welches in den Pfeilen <> steht wird als Vorgabe gewählt.


wcmatch

(wcmatch) ist eine sehr pratische Funktion jedoch kann sie einen verzweifeln lassen, wenn man nicht die Sonderformen weiß.

Diese Funktion vergleich String miteinandern. (wcmatch [String der durchsucht wird]  [Suchstring])

(wcmatch "Hallo" "H*")   => T

(wcmatch "Hallo" "h*")   => nil

(wcmatch "Hallo" "H*,h*")  => T

(wcmatch "hallo" "H*,h*")  => T

(wcmatch "Hallo" "*o")   => T

(wcmatch "Hallo" "a*")   => nil

(wcmatch "Hallo" "*a*")   => T

Jetzt zu den Besonderheiten:

(wcmatch "Hallo" "*@*")   => T

(wcmatch "servus" "*@*")   => T

(wcmatch "123" "*#*")   => T 

(wcmatch "Hallo123" "*@*")  => T

(wcmatch "Hallo123" "*#*")  => T

(wcmatch "Hallo." "*.*")   => T 

(wcmatch "Hallo!" "*.*")   => T

(wcmatch "-123" "*.*")   => T

Kurz zusammengefasst:

@  steht für alle Buchstaben

#  für alle Zahlen

.  für alle Sonderzeichen


Auswahlsatz-Auswertung mit einer Schleife

(setq ss (ssget)

          zähler 0)

(repeat (sslength ss)

   (setq objekt (ssname ss zähler)

             zähler (1+ zähler))

   (command ;| Autocad-Befehl |; objekt)

)


Einzel Auswahl-Auswertung mit einer Schleife

(setq objekt T)

(while objekt

   (setq objekt (car (entsel)))

   (command ;| Autocad-Befehl |; objekt)

)

;| Autocad-Befehl |;

Mit der Funktion (command) können Autocad-Befehl ausgeführt werden.

z.B.:

(setq basispunkt (cdr (assoc 10 (entget objekt))))

(command "_rotate" objekt "" basispunkt 90)


Befehle miteinader kombinieren

Kombiniere hier die Befehl Bruch und Linie miteinander

(defun C:sl
       (/ obj ; Objekt
          pk1 ; Erster Punkt
          pk2 ; zweiter Punkt
          )
  (while ; Schleife
    (not (setq obj (car (entsel "\nLinie wählen: "))))) ; Schleifen prüfung (wenn WAHR "T" dann wird wiederholt)
  (setq pk1 (getpoint "\nErsten Punkt angeben <Enter für letzten Punkt>: ") ; Punkt ermitteln
             pk2 (getpoint "\nZweiten Punkt angeben: ") ; Punkt ermitteln
   ) ; ende setq
  (if ; WENN Prüfung
    (not pk1) ; Prüfung wenn Punkt pk1 falsch ist
    (setq pk1 (getvar "LASTPOINT")) ; dann ist pk1 "letzter punkt"
   ) ; ende if
  (command "_break" ; Bruch befehl
                       obj
                       pk1
                       pk2
   ) ; ende command
  (command "_line" ; Linie zeichnen
                       pk1
                       pk2
                       ""
  )

)


Fehlerroutine

In die Funktion einbinden:

 (setq alt_error *ERROR*

    *ERROR* error

  )

  (command "zurück" "markierung")

 

Fehler - Funktion:

(defun error (S)

    (print (strcat "*Fehler" S))

    (command "zurück" "rück")

    (setq *ERROR* alt_error)

    (princ)

  )


Datum-Zeit abfrage

(defun date-str (/ string)

   (setq string (rtos (getvar "cdate") 2 4)

             date (strcat (substr string 7 2) "."

                                  (substr string 5 2) "."

                                  (substr string 1 4))

     )

)

 

(defun time-str (sec / string)

   (setq string (rtos (getvar "cdate") 2 6))

   (if sec

          (setq time (strcat (substr string 10 2) ":"

                                          (substr string 12 2) ":"

                                          (substr string14 2))

           )

          (setq time (strcat (substr string 10 2) ":"

                                          (substr string 12 2))

           )

     )

)

 

; Hier eine ander Möglichkeit

; Hier können sie das Format selbst bestimmen

; Die Funktion fordert einen String der das Format mit Platzhaltern

; st...Stunde / mi...Minute / se...Sekunde / ta...Tag/ mo...Monat / ja...Jahr 2stellig / jahr...Jahr 4stellig

(defun cs_zeit (str / dat)
  (setq    dat  (rtos (getvar "cdate") 2 7))
  (vl-string-subst (substr dat 3 2) "ja"
    (vl-string-subst (substr dat 1 4) "jahr"
      (vl-string-subst (substr dat 5 2) "mo"
        (vl-string-subst (substr dat 7 2) "ta"
          (vl-string-subst (substr dat 14 2) "se"
            (vl-string-subst (substr dat 12 2) "mi"
              (vl-string-subst (substr dat 10 2) "st" str)

            )

          )
        )
      )
    )
  )
)


Eigenschaften von Objekten abfragen

Zuerst muss ein Objekt gewählt werden.

Die einfachste Möglichkeit um ein Objekt zu wählen:

(setq objekt (car (entsel)))

Um die Definitionsdaten abzurufen verwenden wir die Funktion (entget)

(entget objekt)

Um die Eigenschaft herauszupicken die benötigt wird benutzen wir (assoc)

(assoc 10 (entget objekt))

 

DXF-Guppencodes

(zähl nur die Wichtigsten auf, Gesamtliste befindet sich in der Entwickler-Hilfe)

0 ... Was das Objekt ist z.B.: "LINE" "INSERT"

2 ... Namen (z.B.: Blocknamen)

6 ... Linientypnamen

7 ... Textstinamen

8 ... Layernamen

10 ... Einfügungspunkt

11 ... Endpunkt von Linien

48 ... Linientypfaktor

60 ... Unsichtbar

62 ... Farbe vom Objekt

66 ... 0... Block enthält kein Attribut 1... Block enthält Attribute

 

Mit (entnext) könnt ich auch attribute in blöcken abfragen

(entget (entnext block))

z.B.: um den Attributstext abzufragen

(cdr (assoc 1 (entget (entnext (car (entsel))))))


Explorer

(defun C:explorer  ()
 (startAPP
  "explorer.exe /N, /E, /select,  "
  (strcat (chr 34) (getvar "dwgprefix") (GETVAR "DWGNAME") (chr 34)))
 )
(defun C:x ()(C:Explorer))


Programme

; Internet Explorer

(startapp "C:\\Programme\\Internet Explorer\\iexplore.exe"

                 "www.CAD-Spiegel.jimdo.com")


Falls ihr Anmerkungen, Fragen oder Verbeserungen hab dann hinterlässt ihr ein kommentar und ich werden versuchen darauf zu reagieren.