(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) 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
(setq ss (ssget)
zähler 0)
(repeat (sslength ss)
(setq objekt (ssname ss zähler)
zähler (1+ zähler))
(command ;| Autocad-Befehl |; objekt)
)
(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)
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
""
)
)
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)
)
(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)
)
)
)
)
)
)
)
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))))))
(defun C:explorer ()
(startAPP
"explorer.exe /N, /E, /select, "
(strcat (chr 34) (getvar "dwgprefix")
(GETVAR "DWGNAME") (chr 34)))
)
(defun C:x ()(C:Explorer))
; Internet Explorer
(startapp "C:\\Programme\\Internet Explorer\\iexplore.exe"
Falls ihr Anmerkungen, Fragen oder Verbeserungen hab dann hinterlässt ihr ein kommentar und ich werden versuchen darauf zu reagieren.