乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 59|回复: 6

[编程交流] 设置动态块属性

[复制链接]

13

主题

16

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-8-2 23:41:27 | 显示全部楼层 |阅读模式
我遇到了动态块的问题,我很确定问题源于我插入的每个块都改变了原点。如何设置此属性?
         
  1. ;; Set Dynamic Block Properties  -  Lee Mac;; Modifies values of Dynamic Block properties using a supplied association list.;; blk - [vla] VLA Dynamic Block Reference object;; lst - [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”属性?
         
        我尝试过列表、点对、安全数组等,但没有任何效果。  
回复

使用道具 举报

15

主题

1052

帖子

58

银币

中流砥柱

Rank: 25

铜币
683
发表于 2022-8-2 23:57:50 | 显示全部楼层
我猜这是给你一个错误?
        需要动态块的 vla-object 名称而不是实体名称
  1. (vl-load-com)(setq blk (vlax-ename->vla-object (car (entsel "\nSelect Dynamic Block: "))))(setdynprops blk  '(( . )))
        
回复

使用道具 举报

13

主题

16

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

15

主题

1052

帖子

58

银币

中流砥柱

Rank: 25

铜币
683
发表于 2022-8-3 00:18:05 | 显示全部楼层
等待原点是块的属性还是属性,例如插入点?
        --edit
         
        因为块没有名为 Origin 的属性。我知道的。
         
         
  1. ;;----------------------------------------------------------------------------;;;; 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))
        
回复

使用道具 举报

15

主题

1052

帖子

58

银币

中流砥柱

Rank: 25

铜币
683
发表于 2022-8-3 00:23:51 | 显示全部楼层
https://forums.autodesk.com/t5/dynamic-blocks-forum/dynamic-block-origin-0-0/td-p/1753466
         
         
回复

使用道具 举报

13

主题

16

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 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))
         
        我指定了除原点之外的所有这些。我认为这是动态块的内在属性。  
         
        编辑:这是参考代码:
        
         
  1. ;; Get Dynamic Block Property Value  -  Lee Mac;; Returns the value of a Dynamic Block property (if present);; blk - [vla] VLA Dynamic Block Reference object;; prp - [str] 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)    ))
        
回复

使用道具 举报

15

主题

1052

帖子

58

银币

中流砥柱

Rank: 25

铜币
683
发表于 2022-8-3 00:50:43 | 显示全部楼层
IDK 是我拥有的 BricsCAD 版本的限制因素之一。您可以使用但不能创建或编辑动态块。所以我对这个有点不知所措。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-12-4 16:49 , Processed in 0.283500 second(s), 66 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表