TA的每日心情 | 开心 2024-8-31 15:58 |
---|
签到天数: 89 天 [LV.6]常住居民II
管理员
- 积分
- 3366
|
[code];;;加载Vlisp扩展
(vl-load-com)
;;;---------主程序:---------
;;;定义CAD快捷键
(defun c:wd ()
;;;调用应用程序
(xyls-dynbox-1)
(prin1)
)
;;;;###################应用程序#######################
;;;设置动态块[特定]属性---------
(defun xyls-dynbox-1 ()
(setvar "cmdecho" 0)
;;在屏幕上选择两点
(setq point_1 (getpoint "\nPoint 1 :"))
(setq point_2 (getpoint point_1 "\nPoint 2 :"))
;;画临时示意线
(grdraw point_1 point_2 1 1)
;;计算两点间的距离
(setq par_dist_1 (distance point_1 point_2))
;;取得两个通用函数需要的动态块,需要vla-object对象
(setq data_dynblk (vlax-ename->vla-object (car (entsel "请选择动态块"))))
;;取得所有动态块的参数,并在命令栏输出
(print (xyl-getdynallpropvalue data_dynblk))
;;lm-setdynpropvalue函数的动态块参数,需要String类型
(setq data_dynbox1_data_1 (rtos par_dist_1))
;;获得想要控制的动态块参数名称,需要String类型
(setq par_prp
(getstring "\n参考命令栏提示,请输入想要控制的动态块参数:")
)
;;调用lm-setdynpropvalue函数控制动态块
(lm-setdynpropvalue
data_dynblk
par_prp
data_dynbox1_data_1
)
)
;;;;###################通用函数#######################
;;;---------通用函数1:设置动态块[特定]属性(Lee-Mac提供)---------
(defun lm-setdynpropvalue (blk prp val)
(setq prp (strcase prp))
(vl-some
'(lambda (x)
(if (= prp (strcase (vla-get-propertyname x)))
(progn
(vla-put-value
x
(vlax-make-variant
val
(vlax-variant-type (vla-get-value x))
)
)
(cond (val)
(t)
)
)
)
)
(vlax-invoke blk 'getdynamicblockproperties)
)
)
;;;---------通用函数2:获得动态块所有属性(明经CAD论坛提供)---------
(defun xyl-getdynallpropvalue (par_blkref)
(setq Pros (vlax-invoke par_blkref 'GetDynamicBlockProperties))
(mapcar '(lambda (X)
(cons (vlax-get X 'PropertyName) (vlax-get X 'Value))
)
Pros
)
)
[/code] |
|