Hallo da draußen,
http://ww3.cad.de/foren/ubb/Forum145/HTML/001303.shtml#000002 http://ww3.cad.de/foren/ubb/Forum145/HTML/002928.shtml Nachdem nun einige Monate vergangen sind und ich mich jetzt einigermaßen in Lisp eingearbeitet habe, hab ich nun zwei Funktionen, die auf den Sichtbarkeitsparameter ansetzten.
->test funktioniert soweit, kann aber nur ein Obkekt auswählen und ist mit if
->aa sollte eigentlich ein ganzes Selection-Set auswählen und dann mehrere Bedingungen aktzeptieren, hier liegt das Problem.
Es muss irgendein Fehler mit dem ssget und dem vla-object sein.
Vieleicht kann mir jemand den unterschied im Datentyp erklären, da es ja mit entsel(da verstehe ich allerdings das car nicht, das wählt normalerweise ja nur den ersten Punkt aus einer Liste, entsel und entlast geben ja sowieso nur ein Objekt wieder ?!?)
ist ja funktioniert.
Gibt es eine Möglichkeit alle Benutzerdefinierten Parameter Einzusehen?
Mit (vlax-dump-object object) oder Variabelüberprüfung im VLisp Editor sehe ich nur IsDynamicBlock= -1 (:VlTrue) ansonsten sehe ich da nichts das nach Benutzerparametern aussieht.
(defun c:test()
(vl-load-com)
(setProperty (vlax-ename->vla-object (car (entsel))) "Sichtbarkeit" "Field 3.00m")
)
(defun setProperty (vlaDynBlock sPropertyName rValue / vlaProperty)
(foreach vlaProperty (vlax-safearray->list (vlax-variant-value (vla-GetDynamicBlockProperties vlaDynBlock)))
(if (= (vla-get-PropertyName vlaProperty) sPropertyName)
(vla-put-value vlaProperty (vlax-make-variant rValue))
); end if
); end foreach
); end defun
(defun c:aa()
(vl-load-com)
(blkObj (vlax-ename->vla-object (car (ssget))));zweiter Versuch
;(setq blkObj (ssget));erster Versuch
(setq blkProps (vlax-safearray->list (vlax-variant-value (vla-GetDynamicBlockProperties blkObj))))
(foreach blkProp blkProps
(cond
((and (= (vla-Get-PropertyName blkProp) "Sichtbarkeit")) Sichtbarkeitsname
(vla-Put-Value blkProp "Field 3.00m") ; Sichtbarkeit
)
)
)
)
ACAD sagt folgendes dazu:
Objekte wählen:
; Fehler: Fehlerhafter Argumenttyp: consp <Selection set: 9>
Bezw. im Editor
LOG Fehlerverfolgung
...............
<1> :ERROR-BREAK
[2] (CAR <Selection set: 9> )
[3] (C:AA)
<4> :CALLBACK-ENTRY
<5> :ARQ-SUBR-CALLBACK
Vielen Dank für Eure Mühen,
Christian B.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP