|
Lisp : Script aus Lisp mit Command aufrufen
CADmium am 11.09.2007 um 14:51 Uhr (0)
Zitat:Original erstellt von Peter2:Herzlichen Dank an beide. Mein Kurztest zeigt, dass es mit Übergabe von Strings klappt, dass er aber anscheinend Variablen nicht auswerten kann: Rückgabe nil, keine Meldung, keine Änderung naja .. Meldungen hab ich mir verkniffen .. aber das mit den Variablen kann ich nicht nachvollziehen.. Das erste Argument muß eine Liste mit Layernamen(Strings) sein, nicht existierender Layer werden aussortiert, das 2. muß ein existierender Layername sein. (das Anlegen hab ich mir auc ...
|
In das Form Lisp wechseln |
|
Lisp : Von lisp -> lisp aufrufen
helmut51 am 11.09.2007 um 15:50 Uhr (0)
Nach vielen vergeblichen versuchen habe ich gehofft,in diesem Beitrag eine Hilfe zu finden. Leider vergebens. Kann mir jemand sagen, warum folgender Codeschnipsel +Test4 soll die Routine NL aufrufen - nicht funktioniert(Problem wurde auf Minimum reduziert):; Routine NL wird aufgerufen (defun c:test4 ( / ) (setq a "nl") ; name der Routine (setq b "c:") (setq c (strcat b a)) ; String zusammenfügen (print (strcat "die Variable c ist belegt mit :" c ...
|
In das Form Lisp wechseln |
|
Lisp : Von lisp -> lisp aufrufen
tunnelbauer am 11.09.2007 um 16:02 Uhr (0)
Abgesehen davon, dass CADmium das Problem (wahrscheinlich) schon perfekt gelöst hat...Ist deine Funktion NL überhaupt definiert?Wenn ja - ist dies auch der Fall bevor sie aufgerufen wird... (also im Lsp-File vor dem Aufruf - nicht erst "weiter unten"...)------------------GrüsseThomas
|
In das Form Lisp wechseln |
|
Lisp : Script aus Lisp mit Command aufrufen
Peter2 am 11.09.2007 um 16:29 Uhr (0)
So, jetzt habe ich die Probleme umgedreht: Zitat:Original erstellt von fuchsi:...(LAYMRG+ (LIST AltLayer) NeuLayer)...Dafür, wie ich ich mit Listen arbeite, sollte mir das nicht passieren. Sorry und danke. Das scheint nun zu laufen.Umgekehrt gibt es nun bei deinem "invoke" Mystisches. Folgender Programmaufbau:Code: (setq layerliste (list (list "alt1" "neu1") (list "alt2" "neu2") )) (foreach paar layerliste (progn (setq altlayer (car paar) neulayer (cadr paar)) (princ (str ...
|
In das Form Lisp wechseln |
|
Lisp : Script aus Lisp mit Command aufrufen
fuchsi am 11.09.2007 um 16:37 Uhr (0)
Anscheinend verhält sich die ActiveX Methode SendCommand aufgerufen aus Lisp doch ein wenig anders als ind er VBA Umgebung.In der VBA-Umgebung (Thisdrawing.Sendcommand ..) wird das ganze sofort ausgeführt, inder LISP-Umgebung wird anscheinend die einzelnen SendCommands erst abgearbeitet, wenn LISP komplett beendet ist.Das erklärt auch, warum zuerst die ganzen Princ kommen, und dann die Meldungen des Laymrg.Die komischen Sachen wie Propertyeditor usw. erkläre ich mir eher daher, dass aus irgeneinem Grund, d ...
|
In das Form Lisp wechseln |
|
Lisp : Script aus Lisp mit Command aufrufen
Peter2 am 11.09.2007 um 16:39 Uhr (0)
Zitat:Original erstellt von fuchsi:...und das e (für Eingabe) dann als befehl interpretiert wird !Ja - wahrscheinlich.Peter------------------Für jedes Problem gibt es eine einfache Lösung.Die ist aber meistens falsch. ;-)
|
In das Form Lisp wechseln |
|
Lisp : Lisp Programmierung (ein Dorf in China?)
CADmium am 10.09.2007 um 11:43 Uhr (0)
Dein veschachteltetes if ist ja nutze doch die Funktion cond dafür. Und ganz ehrlich: die Rahmen würd ich einmal zeichen und die dwg dann per DC als Block in die aktuelle Zeichnung ziehen.------------------ - Thomas -"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."
|
In das Form Lisp wechseln |
|
Lisp : Lisp Programmierung (ein Dorf in China?)
Grebe am 31.07.2007 um 09:35 Uhr (0)
Zu deinem Layout-Problem:1. Was heisst "Layout wir nix" ? Sitzen die Linien nicht da wo sie sitzen sollten ? Könnte daran liegen, dass in den Optionen und Benutzereinstellungen die Priorität für Koordinateneingabe auf Objektfang steht. Dann könnte der Objektfang zuschlagen. Besser auf tastatureingabe umstellen.2. Ein Diesel-Makro kann nur eine bestimmte Länge haben - evtl. stösst Du da an Grenzen. Dann besser ein Skript erstellen und das per Makro ausführen lassen.3. Warum erstellst du nicht eine DWT, die ...
|
In das Form Lisp wechseln |
|
Lisp : Lisp Programmierung (ein Dorf in China?)
Rabbit 007 am 01.08.2007 um 10:29 Uhr (0)
Habe mal was für dich zum Basteln zusammen geschoben.Kopiere den hier drunter stehenden Code einfach mal in deine Befehlszeile.Code:(defun c:Hallo ( / Objektfang) (setq Objektfang (getvar "osmode")) (setvar "osmode" 0) (command "_layout" "n" "Das große Hallo Layout !!!" "") (command "_layout" "se" "Das große Hallo Layout !!!" "") (command "_line" (60.1347 202.589 ) (60.1347 131.438 ) "") (command "_line" (119.352 167.014 ) (60.1347 167.014 ) "") (command "_line" (103.753 202.589 ) (103.753 131.438 ) "") (c ...
|
In das Form Lisp wechseln |
|
Lisp : Lisp Programmierung (ein Dorf in China?)
Obi-Wahn am 08.09.2007 um 15:43 Uhr (0)
Optimal. Danke.Lieg ich richtig, dass die ausgabe des letzten befehls der funktion als bestätigung ausgegeben wird? Oder hat das einen anderen Grund, dass der Objektfangvraiablenwert erschienen ist?------------------Garten ist eine Kunstnatur
|
In das Form Lisp wechseln |
|
Lisp : Von lisp -> lisp aufrufen
helmut51 am 12.09.2007 um 07:01 Uhr (0)
Zitat:Original erstellt von CADmium:du mischt da einiges Hallo Cadmium,perfekte Lösung.nachdem aber(defun c:test ( / )(setq a c:nl)(a)(princ))funktioniert, dachte ich, dass test4 auch funktionieren muss. Hast Du einen kurzen Tipp für mich, was ich mische? Zitat:Original erstellt von tunnelbauer:Ist deine Funktion NL überhaupt definiert?[/B]Natürlich ist NL definiert und der Umweg wird gemacht, da NL auch BLABLA oder WASANDERES sein kann.
|
In das Form Lisp wechseln |
|
Lisp : Von lisp -> lisp aufrufen
Geos am 12.09.2007 um 07:34 Uhr (0)
In Deiner obigen Version belegst Du a mit "c:nl" - und das ist ein String.------------------Schöne GrüßeErnst www.geopaint.at
|
In das Form Lisp wechseln |
|
Lisp : Von lisp -> lisp aufrufen
Brischke am 12.09.2007 um 08:10 Uhr (0)
Aus Freude, dass ich CADmiums Code etwas verkürzen kann, noch ein Hinweis:Das Verketten der Klammern mit dem String "c:NL" ist nicht notwendig. Man kann auch einfach ((eval (read c)))schreiben.Grüße Holger------------------Holger BrischkeCAD on demand GmbHIndividuelle Lösungen von Heute auf Morgen.
|
In das Form Lisp wechseln |