TemporaryCAD 发表于 2022-8-2 23:41:27

设置动态块属性

我遇到了动态块的问题,我很确定问题源于我插入的每个块都改变了原点。如何设置此属性?
         
;; 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”属性?
         
      我尝试过列表、点对、安全数组等,但没有任何效果。

mhupp 发表于 2022-8-2 23:57:50

我猜这是给你一个错误?
      需要动态块的 vla-object 名称而不是实体名称
(vl-load-com)(setq blk (vlax-ename->vla-object (car (entsel "\nSelect Dynamic Block: "))))(setdynprops blk'(( . )))         

TemporaryCAD 发表于 2022-8-3 00:10:13

不,我明白这一点。我目前正在使用代码来编辑动态块属性。但是,一个属性是原点,我认为它会弄乱一些块,因为我无法控制它的值并且它似乎设置不正确。
         
      我要做的就是确定如何使用该代码编辑该原始参数。无论我发送什么数据类型,它都会返回一个错误:
         
(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))         
      这些输入都不起作用。如何正确使用此代码?
         
      谢谢!

mhupp 发表于 2022-8-3 00:18:05

等待原点是块的属性还是属性,例如插入点?
      --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))         

mhupp 发表于 2022-8-3 00:23:51

https://forums.autodesk.com/t5/dynamic-blocks-forum/dynamic-block-origin-0-0/td-p/1753466
         
         

TemporaryCAD 发表于 2022-8-3 00:38:13


当我使用 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)    ))         

mhupp 发表于 2022-8-3 00:50:43

IDK 是我拥有的 BricsCAD 版本的限制因素之一。您可以使用但不能创建或编辑动态块。所以我对这个有点不知所措。
页: [1]
查看完整版本: 设置动态块属性