;;;Programm zum einfachen Entfernen der Objekt-Darstellungsüberschreibung ;;;für die aktuelle Darstellungskonfiguration - Benützung auf eigene Gefahr! ;;;(c)Claudio (defun c:DEL_DO(/ AC_NAM ACADDOC ACADOB ACONF AECDOC1 ASET AVP count DISCONF DISREP DISSET DO_ELE ELE ELE_NAM Xecho) (setq XECHO (getvar "CMDECHO"))(setvar "CMDECHO" 0)(command "_undo" "_m") (vl-load-com) (defun AECDOC_SUB (/ AECBAS AECDOC1 count) (setq count 3) ;;;AecX.AecArchBaseDocument ermitteln (while (< count 10) ;;;von Version 3 bis 10 (setq AECBAS (strcat "AecX.AecArchBaseDocument." (rtos count 2 1))) ;;;z.B.:"AecX.AecArchBaseDocument.4.5" (if (not (vl-catch-all-error-p ;;;wenn kein Fehler (setq AECDOC1 (vl-catch-all-apply 'vla-GetInterfaceObject (list ACADOB AECBAS))))) ;;;Treffer versuchen (setq AECDOC AECDOC1)) ;;;Wenn Treffer dann AEC implementieren (setq count (+ count 0.1)) ;;;Versionsnummer um 0.1 erhöhen )) ;;;Endwhile,Enddefun (setq ACADOB (vlax-get-acad-object) ;;;Autocad-Applikation ACADDOC(vla-get-ActiveDocument ACADOB)) ;;;Aktives Dokument (if (not AECDOC) (AECDOC_SUB)) ;;;Wenn AEC noch nicht implementiert ist->Prog (if AECDOC (progn ;;;Wenn AEC vorhanden ->starten IF1,Progn1 (vlax-invoke AECDOC "init" ACADDOC) ;;;AEC initialisieren (setq DISSET (vlax-get AECDOC "DisplaySets") ;;;Darstellungssatz-sammlung des Dokuments AVP (vlax-get ACADDOC "ActiveViewport") ;;;Aktives Ansichtsfenster DISCONF(vlax-get AECDOC "DisplayConfigurations") ;;;Darstellungskonfigurationssammlung ACONF (vlax-get-property DISCONF "ActiveConfiguration" AVP) ;;;aktuelle Darstellungskonfiguration AC_NAM (vla-get-name ACONF) ;;;Name der aktuellen Darstellungskonfig. ASET (vlax-get-property DISSET "ActiveSet" AVP) ;;;Aktueller Darstellungssatz DISREP (vlax-get ASET "DisplayRepresentations")) ;;;Darstellungssammlung (Setq ELE (car (entsel))) ;;;Element auswählen (if Ele (progn ;;;Wenn Element gewählt ->weiter IF2,Progn2 (setq ELE_NAM(substr (cdr (assoc 0 (entget ELE))) 5) ;;;"AEC_" aus Namen entfernen ELE (vlax-ename->vla-object ELE)) ;;;ActiveX-Objekt erzeugen (vlax-for item DISREP (if (= (substr (strcase(vlax-get item 'Name)) 13 (strlen ELE_NAM) ) ELE_NAM) (setq DO_ELE item))) ;;;über Teilnamen zu Item (if (vl-catch-all-error-p (setq ELE (vl-catch-all-apply 'vlax-invoke-method (list DO_ELE 'DeleteOverride ELE)))) ;;;Override löschen (alert (strcat "Element hat keine Darstellungsüberschreibung \n für " AC_NAM " !")) ;;;sonst Meldung (Princ (strcat "\nDarstellungsüberschreibung für " AC_NAM " wurde entfernt!"))) ;;;Löschen ausgeführt ) ;;;Endprogn2 (Princ "\nKein Element gewählt !")) ;;;Meldung , Endif2 ) ;;;Endprogn1 (Alert "Programm funktioniert in \ndieser ADT-Version nicht!") ;;;Meldung bei falscher Cad-Version ) ;;;Endif1 (setvar "CMDECHO" XECHO)(princ) ) (princ "\nProgramm mit DEL_DO starten!")(princ)