| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: DWG öffnen (1660 mal gelesen)
|
JoBoCAD Mitglied Dipl. Ing (FH)

 Beiträge: 32 Registriert: 12.02.2005
|
erstellt am: 08. Dez. 2005 08:32 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen, ich möchte innerhalb eines LISP-Programmes eine neue DWG öffnen lassen. Mein LISP-Programm soll dann in dieser neuen Datei ausgeführt werden. Irgendwie habe ich jetzt schon alles versucht aber komme nicht zum Erfolg. Wer kennt den Weg zum Ziel und verrät den mir ??? Danke an alle im Voraus JoBo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 .
|
erstellt am: 08. Dez. 2005 08:52 <-- editieren / zitieren --> Unities abgeben:          Nur für JoBoCAD
Du lädst dein Lispprogramm in den Namensraum der Zeichnung, nicht in den von ACAD, somit: wenn du eine neue Zeichnung lädst, gibts da dein Lisp gar nicht, und du kannst es da nicht weiterführen. was du vorhast, geht so also nicht!! TeilLösungen: a)Via ActiveX kann man auch auf offene, nicht aktive Zeichnungen zugreifen. b)dein Lisp in der acaddoc.lsp laden lassen und mittels z.B: Blackboardvariable ->vl-bb-ref / vl-bbset die Ausführung steuern
------------------ - 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 |
Brischke Moderator CAD on demand GmbH
       

 Beiträge: 4200 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 08. Dez. 2005 09:00 <-- editieren / zitieren --> Unities abgeben:          Nur für JoBoCAD
Hallo, eine andere Möglichkeit ist auch das Schreiben eines Scripts mit der aufrufenden Funktion. Dieses muss die Zeichnung öffnen, die LSP-Datei laden und das Programm starten. Bei Fragen ...
Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JoBoCAD Mitglied Dipl. Ing (FH)

 Beiträge: 32 Registriert: 12.02.2005
|
erstellt am: 08. Dez. 2005 09:12 <-- editieren / zitieren --> Unities abgeben:         
Hallo, danke für die Beiträge. In Sachen SCR-Datei ist es doch so, dass der command "script" Befehl erst am Ende der LISP-Routine gestartet werden kann. Zu Programmbeginn, dort wo ich es gerne hätte, lässt sich das Abarbeiten eines Scriptes nicht durchführen. Dass ich mit Visual LISP bessere Chancen habe ist mir schon klar. Das Problem muss ich jedoch auf Basis vom "einfachen "LISP" lösen. Nochmals Danke JoBo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
klapproth Mitglied

 Beiträge: 13 Registriert: 03.12.2005
|
erstellt am: 08. Dez. 2005 10:36 <-- editieren / zitieren --> Unities abgeben:          Nur für JoBoCAD
Zitat: Original erstellt von JoBoCAD: ...ist es doch so, dass der command "script" Befehl erst am Ende der LISP-Routine gestartet werden kann.
Ich denke, Holger meinte das genau umgekehrt: Das Script startet die Lisp-Routine. Außerdem bleiben noch weitere Möglichkeiten: a) Das Lisp-Programm modifiziert vorübergehend die Acaddoc.lsp und trägt dort seinen eigenen Neustart für die 2. Zeichnung ein. Dort gestartet, entfernt es den Eintrag aus der acaddoc.lsp zuerst und führt dann seine Aufgaben aus. b) Du trägst einen Stub-Loader in die Acaddoc.lsp ein, der immer vorhanden ist und dessen Aufgabe es ist, in einem festgelegten Ordner hinterlegte Aufgaben auszuführen. Bei jeder neu geöffneten Zeichnung wird das ausgeführt, was da als ToDo-Sammlung liegt, und alle Programme darin löschen sich selbst, nachdem sie erledigt sind (d.h, vor jedem Neu-Öffnen schiebst du Kopien rein). c) Etwas härter ist dann die Methode 'Speichertransfer'. Man schreibt den gesamten Lisp-Speicher in eine Datei und lädt ihn dann in die nächste Zeichnung wieder rein. Im Prinzip ist das einfach, viel mehr als foreach und atoms-family braucht man zum Schreiben nicht. Eingelesen wird mit load, und die ganze Atomsippe wird gnadenlos überschrieben. Das kann man allerdings nur machen, wenn keine Handles und Entitynamen transferiert werden. Der Teufel steckt hier aber im Detail, nämlich in der Wahl zwischen print, princ, prin1 usw. Sonst passiert es leicht, dass aus langen Zeichenketten kurze Symbole werden, weil die Anführungs- und Steuerzeichen während des Transfers verdunsten. Wenn du dich mal zum "Warum" äußerst, könnte man konkretere Tipps geben. Grüße, Justus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JoBoCAD Mitglied Dipl. Ing (FH)

 Beiträge: 32 Registriert: 12.02.2005
|
erstellt am: 08. Dez. 2005 12:01 <-- editieren / zitieren --> Unities abgeben:         
Hi Justus, danke für Eure Beiträge. Ich bin ein wenig auf der Leitung gesessen. Das Problem werde ich durch ne Scriptdatei die zuerst ne Zeichnung öffnet und mir dann dann das Programm anwirft lösen. Wie gesagt, ab und zu sitzt man halt auf der Leitung, dafür ist es umso schöner wenn man Antworten aus dem Forum erhält Gruss JoBo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mkl-cad Mitglied Technischer Zeichner
 
 Beiträge: 378 Registriert: 23.07.2003 ACAD 2002 Express Tools 1-9 Architektural Desktop Windows XP Server Windows 2003 3 GHz Rechner 1 GB RAM 80 GB Festplatte ATI FireGL V3100 2 17" Flachbildschirme
|
erstellt am: 09. Dez. 2005 09:03 <-- editieren / zitieren --> Unities abgeben:          Nur für JoBoCAD
Noch ne Möglichkeit: Befehl aufrufen, der Speichert eine Information in eine externe Datei. Dann neue Zeichnung öffnen lassen. Dann wird die acaddoc.lsp ja neu geladen. Dort in der STARTUP Funktion nach der externen Datei suchen lassen und dort die Informationen auslesen, bzw zurücksetzen lassen. Je nachdem welche Info in der externen Datei stand einen Befehl starten lassen oder eben nicht. Dann gehts auch nur mit Lisp ohne Script. ------------------ Martin  Viele Grüße aus dem schönen Münsterland! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |