设置动态块属性
我遇到了动态块的问题,我很确定问题源于我插入的每个块都改变了原点。如何设置此属性?;; Set Dynamic Block Properties-Lee Mac;; Modifies values of Dynamic Block properties using a supplied association list.;; blk - VLA Dynamic Block Reference object;; lst - Association list of (( . ) ... );; Returns: nil(defun setdynprops ( blk lst / itm ) (setq lst (mapcar '(lambda ( x ) (cons (strcase (car x)) (cdr x))) lst)) (foreach x (vlax-invoke blk 'getdynamicblockproperties) (if (setq itm (assoc (strcase (vla-get-propertyname x)) lst)) (vla-put-value x (vlax-make-variant (cdr itm) (vlax-variant-type (vla-get-value x)))) ) ))
我正在使用代码与动态块进行交互。使用此代码,如何设置“Origin”属性?
我尝试过列表、点对、安全数组等,但没有任何效果。
我猜这是给你一个错误?
需要动态块的 vla-object 名称而不是实体名称
(vl-load-com)(setq blk (vlax-ename->vla-object (car (entsel "\nSelect Dynamic Block: "))))(setdynprops blk'(( . ))) 不,我明白这一点。我目前正在使用代码来编辑动态块属性。但是,一个属性是原点,我认为它会弄乱一些块,因为我无法控制它的值并且它似乎设置不正确。
我要做的就是确定如何使用该代码编辑该原始参数。无论我发送什么数据类型,它都会返回一个错误:
(cons "Origin" (vlax-make-safearray vlax-vbdouble '(0 . 0)))(cons "Origin"'(0 . 0))(cons "Origin" (list 0 0))(cons "Origin" (cons 0 0))(cons "Origin" '(0 0))
这些输入都不起作用。如何正确使用此代码?
谢谢! 等待原点是块的属性还是属性,例如插入点?
--edit
因为块没有名为 Origin 的属性。我知道的。
;;----------------------------------------------------------------------------;;;; Dump all methods and properties for selected objects (defun C:VDumpIt (/ ent)(while (setq ent (car (entsel "\nSelect Entity to Dump"))) (vlax-Dump-Object (vlax-Ename->Vla-Object ent) t))(textscr)(princ)) https://forums.autodesk.com/t5/dynamic-blocks-forum/dynamic-block-origin-0-0/td-p/1753466
当我使用 getdynprops 函数时,我从块中得到以下结果: (("Stand" . "VisibilityState0") ("Right Arm X" . 74.0225) ("Right Arm Y" . 50.2598) ("Left Arm X " . -56.4576) ("Left Arm Y" . -17.357) ("Stand Height" . 158.5) ("Origin" 0.0 0.0))
我指定了除原点之外的所有这些。我认为这是动态块的内在属性。
编辑:这是参考代码:
;; Get Dynamic Block Property Value-Lee Mac;; Returns the value of a Dynamic Block property (if present);; blk - VLA Dynamic Block Reference object;; prp - Dynamic Block property name (case-insensitive)(defun LM:getdynpropvalue ( blk prp ) (setq prp (strcase prp)) (vl-some '(lambda ( x ) (if (= prp (strcase (vla-get-propertyname x))) (vlax-get x 'value))) (vlax-invoke blk 'getdynamicblockproperties) )) IDK 是我拥有的 BricsCAD 版本的限制因素之一。您可以使用但不能创建或编辑动态块。所以我对这个有点不知所措。
页:
[1]