salonz2014 发表于 2015-1-25 22:04:34

关于程序中对动态块的操作

请问可以在程序中操作动态块的参数吗

比如先用insert命令插入一个动态块,然后选中该动态块的一个线性拉伸夹点,用pause命令等用户输入拉伸距离后,再继续运行下面的程序,可否实现?

另外问个动态块的问题,为什么做了一个带有可见性参数的动态块,有3个可见性元素,对应3个选项,选择其中一个其他2个隐藏。然后保存成块文件,插入到别的图纸中以后3个元素居然同时显示了,应该是只显示默认的第一个才对啊,但是重新操作一下可见性选项后又正常了,就刚插入的时候会出现这种情况。求大神指点。。。

salonz2014 发表于 2015-1-26 21:17:28

大神何在~

salonz2014 发表于 2015-1-27 21:49:58

继续等大神。。。

鱼与熊掌 发表于 2015-1-27 23:45:57

;返回动态快属性和值
(defun cx_b_sx (en / obj pros)
(setq obj (vlax-ename->vla-object en))
(setq Pros (vlax-invoke obj 'GetDynamicBlockProperties))
(mapcar '(lambda (X)
                        (cons (vlax-get X 'PropertyName) (vlax-get X 'Value))
                )
          Pros
)                                        ;返回值
)


;动态快属性值修改 n第N 项
(defun cx_b_sxg        (en n dis / obj osbproperty pros2)
       
(setq        obj   (vlax-ename->vla-object en)
                Pros2 (vlax-variant-value (vla-GetDynamicBlockProperties obj))
)
(setq oSBProperty (vlax-safearray-get-element Pros2 (* n 2)))
        ;;;起始为0,+2为下一属性值,以此类推
(vla-put-value
    oSBProperty
    (vlax-make-variant
      dis
                        ;;;修改的值
      (vlax-variant-type (vla-get-value oSBProperty))
    )
)
)

salonz2014 发表于 2015-1-28 22:04:11

终于有大神出手了,感谢先,不过刚开始学,只会基本的autolisp命令,这个程序还要研究一下才能测试~
页: [1]
查看完整版本: 关于程序中对动态块的操作