Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Lisp Abfrage nach schreibgeschützter Zeichnung

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:  Lisp Abfrage nach schreibgeschützter Zeichnung (1612 mal gelesen)
Harry Plotter
Mitglied



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

Beiträge: 509
Registriert: 12.12.2003

Windows 10 64bit
Architecture 2017
3DS Max 2017

erstellt am: 07. Jul. 2010 08:57    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

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




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

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 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 Harry Plotter 10 Unities + Antwort hilfreich

ok .. kleine Übung:

(vl-load-com)
(if(=(vla-get-readonly(vla-get-activedocument(vlax-get-acad-object))):vlax-true)
(c:A2A)
(alert "Zeichnung nicht schreibgeschützt.Abbruch")
)

------------------
  - 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

Harry Plotter
Mitglied



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

Beiträge: 509
Registriert: 12.12.2003

Windows 10 64bit
Architecture 2017
3DS Max 2017

erstellt am: 07. Jul. 2010 09:52    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

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
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 07. Jul. 2010 10:04    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 Harry Plotter 10 Unities + Antwort hilfreich

ü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




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

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 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 Harry Plotter 10 Unities + Antwort hilfreich

OT:    

(bezieht sich nicht nur auf diesen Beitrag)
------------------
      - 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

Harry Plotter
Mitglied



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

Beiträge: 509
Registriert: 12.12.2003

Windows 10 64bit
Architecture 2017
3DS Max 2017

erstellt am: 07. Jul. 2010 10:45    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

Vielen Dank an euch, jetzt funktioniert die Anweisung.

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