| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Lisp Abfrage nach schreibgeschützter Zeichnung (1612 mal gelesen)
|
Harry Plotter Mitglied
Beiträge: 509 Registriert: 12.12.2003 Windows 10 64bit Architecture 2017 3DS Max 2017
|
erstellt am: 07. Jul. 2010 08:57 <-- editieren / zitieren --> Unities abgeben:
Hallo! Mit eurer Hilfe habe ich mir in letzter Zeit folgende kleine, aber feine Lisp-Routine gebastelt: Aktive Xrefs binden Inaktive Xrefs lösen Zeichnung bereinigen Zeichnung speichern unter ACAD 2004 Nun hätte ich noch gerne zuerst eine Abfrage, ob die Zeichnung schreibgeschützt geöffnet ist oder nicht. Wenn schreibgeschützt, dann soll die Routine ausgeführt werden Wenn NICHT schreibgeschützt, dann soll die Routine mit einem Hinweis abgebrochen werden. Kann mir dabei bitte jemand helfen - Danke! Hier mein bisheriges Werk: (defun c:A2A (/ *error* oldBnType)(defun *error*(msg) (setvar "modemacro" ".") (setvar "bindtype" oldBnType) (setvar "cmdecho" 1) (princ "\Xrefs Loesen/Pruefen/Binden/Bereinigen abgebrochen ") (princ) ); end of *error* (setq oldBnType(getvar "bindtype")) (setvar "modemacro" "Xrefs Loesen/Pruefen/Binden/Bereinigen in Arbeit......bitte warten......") (prompt "\Xrefs Loesen, Pruefen, Binden, Bereinigen---") (prompt "\nDetaching...") (vlax-for block (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (if (and (= :vlax-true (vla-get-isxref block)) (= 0 (vla-get-count block)) ) (vla-detach block) ) ) (setvar "cmdecho" 0) (prompt "...done") (prompt "\Pruefen...");(terpri) (command "_audit" "j") (prompt "\alle Xrefs binden...") (setvar "bindtype" 0) (command "-xref" "b" "*") (prompt "...fertig");(terpri) (prompt "\Bereinigen #1");(terpri) (command "_-purge" "al" "*" "N") (prompt "\Bereinigen #2");(terpri) (command "_-purge" "al" "*" "N") (prompt "\Bereinigen #3");(terpri) (command "_-purge" "al" "*" "N") (command "_AecExportToAutoCAD2004") (prompt "\Xrefs Loesen, Pruefen, Binden, Bereinigen, Speichern unter ACAD 2004 fertiggestellt!---") (setvar "modemacro" ".") (setvar "cmdecho" 1) (princ) ); end of c:A2A
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 07. Jul. 2010 09:07 <-- editieren / zitieren --> Unities abgeben: Nur für Harry Plotter
|
Harry Plotter Mitglied
Beiträge: 509 Registriert: 12.12.2003 Windows 10 64bit Architecture 2017 3DS Max 2017
|
erstellt am: 07. Jul. 2010 09:52 <-- editieren / zitieren --> Unities abgeben:
Super, vielen Dank erst mal Thomas, ich habe den Code eingebaut, der Hinweis auf die nicht schreibgschützte Zeichnung erscheint, aber es erfolgt leider noh kein Abbruch der Lisp Routine. (defun c:A2A (/ *error* oldBnType)(vl-load-com) (if(=(vla-get-readonly(vla-get-activedocument(vlax-get-acad-object))):vlax-true) (c:A2A) (alert "Zeichnung nicht schreibgeschützt.Abbruch") ) (defun *error*(msg) (setvar "modemacro" ".") (setvar "bindtype" oldBnType) (setvar "cmdecho" 1) (princ "\Xrefs Loesen/Pruefen/Binden/Bereinigen abgebrochen ") (princ) ); end of *error* (setq oldBnType(getvar "bindtype")) (setvar "modemacro" "Xrefs Loesen/Pruefen/Binden/Bereinigen in Arbeit......bitte warten......") (prompt "\Xrefs Loesen, Pruefen, Binden, Bereinigen---") (prompt "\nDetaching...") (vlax-for block (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (if (and (= :vlax-true (vla-get-isxref block)) (= 0 (vla-get-count block)) ) (vla-detach block) ) ) (setvar "cmdecho" 0) (prompt "...done") (prompt "\Pruefen...");(terpri) (command "_audit" "j") (prompt "\alle Xrefs binden...") (setvar "bindtype" 0) (command "-xref" "b" "*") (prompt "...fertig");(terpri) (prompt "\Bereinigen #1");(terpri) (command "_-purge" "al" "*" "N") (prompt "\Bereinigen #2");(terpri) (command "_-purge" "al" "*" "N") (prompt "\Bereinigen #3");(terpri) (command "_-purge" "al" "*" "N") (command "_AecExportToAutoCAD2004") (prompt "\Xrefs Loesen, Pruefen, Binden, Bereinigen, Speichern unter ACAD 2004 fertiggestellt!---") (setvar "modemacro" ".") (setvar "cmdecho" 1) (princ) ); end of c:A2A
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 07. Jul. 2010 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für Harry Plotter
überdenke nochmal was was gemacht wird.. dann sollte es wohl klar sein warum das nicht funktioniert ! (an der Stelle an der die Entscheidung getroffen wird läuft das Programm doch längst ?!)Lösung: Du treibst Acad in einen Fehler (=Abbruch) oder du fragst vorher ab: Code:
(defun *error*(msg) (setvar "modemacro" ".") (setvar "bindtype" oldBnType) (setvar "cmdecho" 1) (princ "\Xrefs Loesen/Pruefen/Binden/Bereinigen abgebrochen ") (princ) ); end of *error* (defun c:A2A () (vl-load-com) (if(=(vla-get-readonly(vla-get-activedocument(vlax-get-acad-object))):vlax-true) (A2A) (alert "Zeichnung nicht schreibgeschützt.Abbruch") ) ); end of c:A2A
(defun A2A ( / oldBnType) (setq oldBnType(getvar "bindtype")) (setvar "modemacro" "Xrefs Loesen/Pruefen/Binden/Bereinigen in Arbeit......bitte warten......") (prompt "\Xrefs Loesen, Pruefen, Binden, Bereinigen---") (prompt "\nDetaching...") (vlax-for block (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (if (and (= :vlax-true (vla-get-isxref block)) (= 0 (vla-get-count block)) ) (vla-detach block) ) ) (setvar "cmdecho" 0) (prompt "...done") (prompt "\Pruefen...");(terpri) (command "_audit" "j") (prompt "\alle Xrefs binden...") (setvar "bindtype" 0) (command "-xref" "b" "*") (prompt "...fertig");(terpri) (prompt "\Bereinigen #1");(terpri) (command "_-purge" "al" "*" "N") (prompt "\Bereinigen #2");(terpri) (command "_-purge" "al" "*" "N") (prompt "\Bereinigen #3");(terpri) (command "_-purge" "al" "*" "N") (command "_AecExportToAutoCAD2004") (prompt "\Xrefs Loesen, Pruefen, Binden, Bereinigen, Speichern unter ACAD 2004 fertiggestellt!---") (setvar "modemacro" ".") (setvar "cmdecho" 1) (princ) ); end of A2A
------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 07. Jul. 2010 10:27 <-- editieren / zitieren --> Unities abgeben: Nur für Harry Plotter
|
Harry Plotter Mitglied
Beiträge: 509 Registriert: 12.12.2003 Windows 10 64bit Architecture 2017 3DS Max 2017
|
erstellt am: 07. Jul. 2010 10:45 <-- editieren / zitieren --> Unities abgeben:
|