Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Script aus Lisp mit Command aufrufen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Script aus Lisp mit Command aufrufen (2288 mal gelesen)
Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 11. Sep. 2007 10:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich möchte in einem Lisp ein Script starten:

Code:
(command "script" "d:\\layname.scr")

Lasse ich das Script von Hand aus laufen oder kopiere den genannten Befehl in die Befehlszeile, läuft es gut.

Es geht aber nicht im Lisp und das Lisp läuft einfach drüber, und nach Studium der Online-Hilfe finde ich im Kapitel "command":

Zitat:
If the SCRIPT command is used with the command function, it should be the last function call in the AutoLISP routine.

Nun habe ich die Script-Commands in eine Unterroutine verpackt; diese hat nur die Scriptcommands - daher sind sie auch die "letzten Befehle" - und wird von der Hauptroutine aus gestartet.

Es geht aber trotzdem nicht, und auch die Befehlsvariante vl-cmdf verhält sich gleich.

Was tun??

Peter

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



Sehen Sie sich das Profil von tunnelbauer an!   Senden Sie eine Private Message an tunnelbauer  Schreiben Sie einen Gästebucheintrag für tunnelbauer

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 11. Sep. 2007 10:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Doof gefragt:

Wieviele Scripts versuchst du aufzurufen? Eines? Oder mehrere?

------------------
Grüsse

Thomas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 11. Sep. 2007 10:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von tunnelbauer:
...Wieviele Scripts versuchst du aufzurufen? Eines? Oder mehrere?

Eigentlich zwei; die könnte ich aber notfalls in eines zusammenfassen. Es wird aber auch das erste nicht gestartet.

Peter

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



Sehen Sie sich das Profil von tunnelbauer an!   Senden Sie eine Private Message an tunnelbauer  Schreiben Sie einen Gästebucheintrag für tunnelbauer

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 11. Sep. 2007 10:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Ruft er überhaupt die Unterroutine auf?

Bzw. was ist die Fehlermeldung die du erhältst?

------------------
Grüsse

Thomas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 11. Sep. 2007 10:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Soweit ich mich noch erinnern kann, werden SCripte, die über Command aus Lisp gestartet werden, erst ganz zum Schluss nach Beendigung der Lisproutinen angestossen, wobei eineige nachfolgende (also nach (command "Script" ..) LispBefehle diese Ausführung jedoch unterbinden.
Ein Einbinden in einer Subroutine bringt hier gar nichts, das der Aufruf innerhalb der Subrotuine vielelicht der letzte Aufruf ist, jedoch nicht im ganzen Lisp-Ablauf.


An und für sich fällt mir aber keine sinnvolle Anwendung von LISP und SCRIPTen zusammen ein. Die Stärke von Scripten sind eigentlich hauptsächlich in der zeichnungsübergreifenden Bearbeitung zu suchen. Hier hättest Du soweiso das Problem, dass dein Lisp sich vertschüssen würde, wenn die zeichnung gewechselt wird. (Lisp läuft im Namespace der Zeichnung, und nicht Zeichnungsübergreifend)


Jetzt erkläre mir mal, was Du machen möchtest, und wir suchen einen komplett anderen Lösungsweg. Denn alles was Du mit SCRIPTEN innerhalb einer Zeichnungs machen kannst, kannst Du auch mit LISP alleine !


[EDIT]
umgekehrt ist es natürlich was ganz anderes. Ein Script, dass eine bestimmte Anzahl von Zeichnungen abarbeitet, und in jeder zeichnung ein Lisp ausführt.
Aber Scripte aus Lisp starten halte ich für sinnlos.

[Diese Nachricht wurde von fuchsi am 11. Sep. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 11. Sep. 2007 11:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

@tunnelbauer:
Ja, die Unterroutine wird aufgerufen. Sie besteht aus
.. alert "anfang"
.. command script1 ..
.. command script2 ..
.. alert "ende"..
Die Alerts kommen, sonst nichts (auch keine Fehlermneldungen.)

@fuchsi:
es hängt auch damit zusammen: http://ww3.cad.de/foren/ubb/Forum145/HTML/002125.shtml

Ich möchte in vielen Zeichnungen
- diverse Layer umbenennen (A->test; müller->meier)
- diverse Layer verschieben  (laymrg): X->testx; Y->meier, ..

Da in jeder Zeichnung verschiedene Layer sind, muss ich mit "if" arbeiten:
if layer A, umbenennen in Test
if layer X, verschiebe auf testx

Nun kann ich
- Laymrg nicht direkt mit Lisp ansprechen
- rename nur mit Lisp ansprechen, wenn ich die Layernamen direkt als Name übergebe und nicht als  !Variable

Daher habe ich den Ausweg gesucht, im Lisp ein Script (bzw. zwei)  zu erzeugen und dann abzuarbeiten.

Die Erzeugung geht, der händische Ablauf des SAcripts ebenfalls - aber wie gesagt: der Scriptstart in Lisp geht nicht.

Peter

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 11. Sep. 2007 11:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Peter2:
Nun kann ich
- Laymrg nicht direkt mit Lisp ansprechen
- rename nur mit Lisp ansprechen, wenn ich die Layernamen direkt als Name übergebe und nicht als  !Variable

[/B]


Laymrg kenne ich nicht, ich verwende keine Expresstools.

Rename : warum soll man denn rename nicht per lisp verwenden können ?

(setq AltLayer "Layer1")
(setq NeuLayer "Layer2")
(command "._rename" "_layer" altLayer neuLayer)

Funktioniert Doch tatelos !

------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 11. Sep. 2007 11:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

auch für Laymrg läßt sich ein Lisp finden, oder rate mal, wie ich das programmieren konnte...

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 11. Sep. 2007 12:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von fuchsi:
..(command "._rename" "_layer" altLayer neuLayer)

Funktioniert Doch tatelos !



Jetzt bin ich etwas irritiert, weil bei mir gab es immer die Meldung "Layer altlayer ist nicht vorhanden." Nun geht es aber ..

Zitat:
Original erstellt von CADmium:
auch für Laymrg läßt sich ein Lisp finden, oder rate mal, wie ich das programmieren konnte...

Sicher gut und mit gewissem Aufwand. Zur Frage Script aus Lisp werde ich aber nicht viel schlauer daraus ...

Peter

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 11. Sep. 2007 12:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Also , da in ACAD 2006 das eine C : Lisp Funktion ist, und die Eingaben mittels entsel abgefragt werden , geht es wohl nur über den Umweg mittels dem AxtiveX-efehl Command ein SendCommand abzusetzten !

Achtung : ist für meine englischen expresstools !!!!

(vlax-invoke (vlax-get (vlax-get-acad-object) "ActiveDocument") "SendCommand" (strcat "LayMrg" (chr 13) "T" (chr 13) "Layer1" (chr 13) (chr 13) "T" (chr 13) "Layer2" (chr 13) "YES" (chr 13)))

------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 11. Sep. 2007 12:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich


LAYMGR.VLX.txt

 
  
Zitat:
Original erstellt von Peter2:
  Zur Frage Script aus Lisp werde ich aber nicht viel schlauer daraus ...

SCRIPT aus LISP wird nix!

anbei mal ein Scripttaugliches LAYMRG ..

der Aufruf (LAYMRG+ '("AM_1" "AM_2") "0") verschiebt alle Objekte von Layer "AM_1" und "AM_2" auf Layer "0"


------------------
       - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 11. Sep. 2007 14:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Herzlichen Dank an beide.

Zitat:
Original erstellt von CADmium:
SCRIPT aus LISP wird nix!

Schade ...

Zitat:
Original erstellt von CADmium:
...anbei mal ein Scripttaugliches LAYMRG ..

Besten Dank. 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


Zitat:
Original erstellt von fuchsi:
..Achtung : ist für meine englischen expresstools !!!!...

In der deutschen Version muss man "T" durch "E" und "YES" mit "ja" ersetzen, und es werden auch Variable akzeptiert:
Code:
(vlax-invoke (vlax-get (vlax-get-acad-object) "ActiveDocument") "SendCommand" (strcat "LayMrg" (chr 13) "e" (chr 13) altlayer (chr 13) (chr 13) "e" (chr 13) neulayer (chr 13) "JA" (chr 13)))

Peter

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 11. Sep. 2007 14:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

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 auch verkniffen, ebenso wie _undo und _regen)...

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 11. Sep. 2007 15:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Peter2:
Besten Dank. 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

Zitat:

(LAYMRG+ '("AM_1" "AM_2") "0")


ein gerne gemachter Fehler :

(setq AltLayer "IrgendEinAlterLayer")
(setq NeuLayer "IrgendEinNeuerLayer")
(LAYMRG+ '(AltLayer) NeuLayer)

kann nicht gehen, in quotierten Listen werden Variabeln nicht evaluiert, sondern als Symbol übergeben
->
(LAYMRG+ (LIST AltLayer) NeuLayer)


------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 11. Sep. 2007 16:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 (strcat "\nUntersuche " altlayer " / " neulayer "..."))

            (if (tblsearch "layer" altlayer)
                (progn
                    (vlax-invoke (vlax-get (vlax-get-acad-object) "ActiveDocument") "SendCommand" (strcat "LayMrg" (chr 13) "e" (chr 13) altlayer (chr 13) (chr 13) "e" (chr 13) neulayer (chr 13) "JA" (chr 13) ))
                )
            )
        )
    )



Eigentlich sollte damit
- immer die Meldung von princ kommen und sofort
- bei gefundenen Layern die jeweilige Umwandlung erfolgen.

Im Befehlszeilenprotokoll aber
- laufen alle princ-Meldungen durch
- dann kommt ein Block Konvertierungsmeldungen.

Wenn man den Code per Copy&Paste arbeiten lässt, dann geht es dennoch. Wenn man ihn als Lisp laufen lässt, dann verfängt er sich in einer Art Schleife, startet Laymrg+ mit unklaren Namen nochmals und öffnet noch dazu das Eigenschaftenfenster. Dann bleibt er stehen und hat gar nichts gemacht ...

Irgendwie schmeckt ihm das invoke doch nicht ganz ...

Ich werde nun die VLX von Thomas weiter verfolgen.

Peter

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 11. Sep. 2007 16:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

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, die Abfrage des Laymrg nicht passen (z.B.: Ziellayer existiert nicht) und das e (für Eingabe) dann als befehl interpretiert wird !

------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 11. Sep. 2007 16:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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. ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 05. Jun. 2008 12:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von CADmium:
...der Aufruf (LAYMRG+ '("AM_1" "AM_2") "0") verschiebt alle Objekte von Layer "AM_1" und "AM_2" auf Layer "0"..

Da habe ich jetzt leider gewisse Hoppalas bemerkt:
  • Layer 0 wird vom "normalen laymrg" nicht als Ausgangslayer akzeptiert, von laymrg+ aber schon.
  • Wählt man als Startlayer einen, der gar keine Elemente hat, passsiert im "normalen" korrekterweise nichts.

    Bei Laymrg+ wird aber in beiden Fällen irgendwas (vor allem Attribute in Inserts) auf Irgendwas verschoben (ev. aktueller Layer?).

    Peter

    ------------------
    Für jedes Problem gibt es eine einfache Lösung.
    Die ist aber meistens falsch. ;-)

    Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

  • Anzeige.:

    Anzeige: (Infos zum Werbeplatz >>)

    Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

    nächster neuerer Beitrag | nächster älterer Beitrag
    Antwort erstellen


    Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

    Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

    Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

    (c)2023 CAD.de | Impressum | Datenschutz