Endless Storm
Commander
- Registriert
- Dez. 2008
- Beiträge
- 2.158
Hallo zusammen,
ich würde gern für AutoCAD etwas mit LISP programmieren. Durch Vorkenntnisse in Java ist eigentlich Wissen um Methodenaufrufe, Parameter etc vorhanden.
Jedoch verzweifel ich etwas an der Sprache LISP, welches ich nutzen wollte um Kataster-Exporte aus Smallworld in ein Kundenkonformes Format zu bringen.
Sprich: Layer auf andere schieben, einige Blöcke ersetzen, Textstile, Höhen, Farben, etc entsprechend anpassen auf fest definierte Werte.
Fangen wir klein an, Layer verschieben: [den Namen zum starten erstmal ignorieren]
dieser Code funktioniert:
[Entschuldigung für das falsche Syntax-Highlighting]
Wenn ich mir nun überlege, das ganze in eine eigene Methode zu packen und über Paramter anzusprechen, wie man es z.B. in Java auch macht, klappt das ganze nicht mehr...
Eine Übergabe der Parameter funktioniert leider nicht... es kommt ständig die Fehlermeldung: Objekte wählen: ; Fehler: Fehlerhafter SSGET-Listenwert oder es kommt gar keine Meldung...
Wo ist nur mein Denkfehler??
ich würde gern für AutoCAD etwas mit LISP programmieren. Durch Vorkenntnisse in Java ist eigentlich Wissen um Methodenaufrufe, Parameter etc vorhanden.
Jedoch verzweifel ich etwas an der Sprache LISP, welches ich nutzen wollte um Kataster-Exporte aus Smallworld in ein Kundenkonformes Format zu bringen.
Sprich: Layer auf andere schieben, einige Blöcke ersetzen, Textstile, Höhen, Farben, etc entsprechend anpassen auf fest definierte Werte.
Fangen wir klein an, Layer verschieben: [den Namen zum starten erstmal ignorieren]
dieser Code funktioniert:
[Entschuldigung für das falsche Syntax-Highlighting]
Code:
(defun c:SetCLayer ()
(changeAll)
(princ)
)
(defun changeAll ()
(command "_.chprop"
(ssget "_x" '((0 . "TEXT")(8 . "1104_Gr*nland_(Wald+Baum)")))
"" "LA" "2801_Hinweistext_3.5" "")
(command "_.chprop"
(ssget "_x" '((0 . "TEXT")(8 . "2813_Bema*ungstext")))
"" "LA" "1113_Text_Topographie" "")
;weitere Layer kämen hier hin
(princ)
)
Wenn ich mir nun überlege, das ganze in eine eigene Methode zu packen und über Paramter anzusprechen, wie man es z.B. in Java auch macht, klappt das ganze nicht mehr...
Code:
(defun c:SetCLayer ()
(setq l1104 "1104_Gr*nland_(Wald+Baum)") ;Umlaute funktionieren nicht
(setq l2801 "2801_Hinweistext_3*5")
;keiner der drei Aufrufe funktioniert...
;(changeLayer l1104 l2801)
;(changeLayer "*1104*" "*2801*")
(changeLayer "1104_Gr*nland_(Wald+Baum)" "2801_Hinweistext_3*5")
(princ)
)
(defun changeLayer (vonLayer nachLayer)
(if (tblsearch "layer" nachLayer)
(command "_.chprop"
(ssget "_x" '((0 . "TEXT")(8 . vonLayer)))
"" "LA" nachLayer "")
)
(princ)
)
Eine Übergabe der Parameter funktioniert leider nicht... es kommt ständig die Fehlermeldung: Objekte wählen: ; Fehler: Fehlerhafter SSGET-Listenwert oder es kommt gar keine Meldung...
Wo ist nur mein Denkfehler??