; MEU = Manuelle Eigenschaften Uebertragen ; (getestet auf ADT2004) ; ; in ADT2005 "AecX.AecScheduleApplication.4" durch ; "AecX.AecScheduleApplication.4.5" ersetzen ; (nicht getestet) ; ; Flaschenpost (cad.de)- Version 27.02.2005 ; Hinweise auch über flaschenpost2000@gmx.de ; ; unter Verwendung von Funktionen ; mit freundlicher Unterstützung ; von Torsten Möhlenhoff, ACAD-Systemhaus Bremen ; ; ; Dem Ursprungs- und Zielobjekt darf bei Verwendung der ; Funktion nur ein Eigenschaftssatz hinzugefügt sein ! ; ; Anwendung der Funktion auf eigenes Risiko, ; vor Verwendung auf Eignung prüfen ! (defun c:meu (/ el el2 el_prop el_prop2 posf en en2 posf eigname eign_list eigdef proplist all_prop gueltig psdName propName propVal) (objwahl_eigensch) (eigenschs_ermitteln) (zielobjekt_waehlen) (eigenschaften_aendern) ) (defun objwahl_eigensch () (while (= (setq el (entsel "\nObjekt mit vorhandenem Eigenschafts-Satz wählen :")) nil) (prompt "\nKein Objekt gewählt !") ) (if (= (assoc 360 (entget(car el))) nil) (progn (prompt "\nUngeeignetes Objekt")(objwahl_eigensch) ) (progn (setq el_prop (entget (cdr (assoc 360 (entget(car el)) )))) (if (= (assoc 360 el_prop) nil) (progn (prompt "\nUngeeignetes Objekt")(objwahl_eigensch) ) (progn (setq el_prop (entget (cdr (assoc 360 el_prop )))) (if (= (assoc 360 el_prop) nil) (progn (prompt "\nUngeeignetes Objekt")(objwahl_eigensch) ) (progn (setq el_prop (entget (cdr (assoc 360 el_prop)))) (if (= (assoc 340 el_prop) nil) (progn (prompt "\nUngeeignetes Objekt")(objwahl_eigensch) ) (progn (setq el_prop (entget (cdr (assoc 340 el_prop)))) (if (/= (cdr (assoc 0 el_prop)) "AEC_PROPERTY_SET_DEF") (progn (prompt "\nUngeeignetes Objekt")(objwahl_eigensch) ) );if );progn );if );progn );if );progn );if );progn );if );defun objwahl_eigensch (defun eigenschs_ermitteln () (defun pf (n lst / laelist lst) (defun mf (n lst) (if (setq lst (member n lst)) (progn (setq posf (cons (1+ (- laelist (length lst))) posf)) (setq lst (cdr lst)) (mf n lst) ) ) ) (setq laelist (length lst)) (setq posf nil) (mf n lst) (setq posf (reverse posf)) (princ) ) (pf '(300 . "AecPropertyDef") el_prop) (setq n 0) (setq all_prop nil) (setq eign_list nil) (repeat (length posf) (setq proplist nil) (setq el_pos (1- (nth n posf))) (setq gueltig 1) (while (not(equal (nth el_pos el_prop) (cons 102 "AEC_SUBOBJECT}"))) (setq proplist (cons (nth el_pos el_prop) proplist)) (if (or (equal (nth el_pos el_prop) (cons 102 "{AEC_QUERY_INFO")) (= (car (nth el_pos el_prop)) 99) ) (setq gueltig 0) ) (setq el_pos (1+ el_pos)) ) (if (= gueltig 1) (progn (setq eigname (cdr (assoc 1 proplist))) (setq eign_list (cons eigname eign_list)) ) ) (setq proplist (reverse proplist)) (setq all_prop (cons proplist all_prop)) (setq n (1+ n)) );repeat (setq all_prop (reverse all_prop)) (setq eign_list (reverse eign_list)) (setq eigdef (cdr (assoc 3 (cdr (member '(100 . "AecImpDictRecord") el_prop))))) (prompt "\n\nEigenschaftssatz '")(prompt eigdef)(prompt "' gefunden !") );defun eigenschs_ermitteln (defun zielobjekt_waehlen () (while (= (setq el2 (entsel "\n\nZiel-Objekt wählen :")) nil) (prompt "\nKein Objekt gewählt !") ) (setq en2 (car el2)) (if (= (assoc 360 (entget(car el2))) nil) (progn (prompt "\nUngeeignetes Ziel-Objekt")(zielobjekt_waehlen) ) (progn (setq el_prop2 (entget (cdr (assoc 360 (entget(car el2)) )))) (if (= (assoc 360 el_prop2) nil) (progn (prompt "\nUngeeignetes Ziel-Objekt")(zielobjekt_waehlen) ) (progn (setq el_prop2 (entget (cdr (assoc 360 el_prop2 )))) (if (= (assoc 360 el_prop2) nil) (progn (prompt "\nUngeeignetes Ziel-Objekt")(zielobjekt_waehlen) ) (progn (setq el_prop2 (entget (cdr (assoc 360 el_prop2)))) (if (= (assoc 340 el_prop2) nil) (progn (prompt "\nUngeeignetes Ziel-Objekt")(zielobjekt_waehlen) ) (progn (setq el_prop2 (entget (cdr (assoc 340 el_prop2)))) (if (/= (cdr (assoc 3 (cdr (member '(100 . "AecImpDictRecord") el_prop2)))) eigdef) (progn (prompt "\nZiel-Objekt besitzt keinen Eigenschaftssatz '") (prompt eigdef)(prompt "' !") (zielobjekt_waehlen) ) );if );progn );if );progn );if );progn );if );progn );if );defun zielobjekt_waehlen (defun eigenschaften_aendern () (vl-load-com) (setq psdName eigdef) (setq en (car el)) ;;;liefert den Wert der Eigenschaft propname des Eigenschaftssatze ;;;psdName des Elementes en (defun getADTproperty(en psdName propName / vlaObj acadObj schedApp propSets psdName propSet properties) (setq vlaObj (vlax-ename->vla-object en) acadObj (vlax-get-acad-object) schedApp (vla-getInterfaceObject acadObj "AecX.AecScheduleApplication.4") propSets (vlax-invoke-method schedApp 'PropertySets vlaObj) ) (if (setq propSet (vlax-invoke-method propSets 'Item psdName)) (progn (setq properties (vlax-get-property propSet 'Properties)) (vlax-for prop properties (if (equal (vlax-get-property prop 'Name) propName) (setq propVal (vl-catch-all-apply 'vlax-get-property (list prop 'Value)) propVal (if (vl-catch-all-error-p propVal) nil ;else (vlax-variant-value propVal) ) ) ) ) ) ) (vlax-release-object schedApp) ) ;;;schreibt den Wert propVal der Eigenschaft propname des Eigenschaftssatze ;;;psdName des Elementes en2 (defun putADTproperty(en2 psdName propName propVal / vlaObj acadObj schedApp propSets psdName propSet properties result) (setq vlaObj (vlax-ename->vla-object en2) acadObj (vlax-get-acad-object) schedApp (vla-getInterfaceObject acadObj "AecX.AecScheduleApplication.4") propSets (vlax-invoke-method schedApp 'PropertySets vlaObj) ) (if (setq propSet (vlax-invoke-method propSets 'Item psdName)) (progn (setq properties (vlax-get-property propSet 'Properties)) (vlax-for prop properties (if (equal (vlax-get-property prop 'Name) propName) (if (vlax-property-available-p prop 'Value T) (setq result (vl-catch-all-apply 'vlax-put-property (list prop 'Value propVal))) ) ) ) ) ) (vlax-release-object schedApp) (if (vl-catch-all-error-p result) (vl-catch-all-error-message result) ) ) (print) (setq n 0) (repeat (length eign_list) (setq propName (nth n eign_list)) (getADTproperty en psdName propName) (putADTproperty en2 psdName propName propVal) (prompt "\nEigenschaft: \"")(prompt propName)(prompt "\" ") (prompt "Inhalt: ")(prin1 propVal) (setq n (1+ n)) ) (prompt (strcat "\n\n"(itoa (length eign_list)) " Eigenschaft(en) übertragen !")) (princ) );defun eigenschaften_aendern ;;;;;;;;;; (prompt "\nManuelle Eigenschaften Uebertragen - Start mit MEU !") (princ)