明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5893|回复: 18

[源码] 动态块控制核心程序

    [复制链接]
发表于 2015-1-9 08:58 | 显示全部楼层 |阅读模式
主要的函数来至于明镜论坛,不敢藏私,遂在这里和大家分享。
本程序有两个功能:
1.获得可控制的动态块参数。
2.设置动态块参数。

注意:经测试,动态动作(英文版action)的拉伸需要需要定义在距离1(英文版distance1)的第二点。
原理不清楚,抱歉。

我为这个程序补充了一些注释,希望有所帮助。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 2明经币 +2 收起 理由
wayne_myles + 1 很给力!
USER2128 + 1 赞一个!

查看全部评分

本帖被以下淘专辑推荐:

 楼主| 发表于 2015-1-9 09:00 | 显示全部楼层
上面写错了,是明经CAD论坛。
这里是源码:

;;;加载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
  )
)
回复 支持 4 反对 0

使用道具 举报

发表于 2021-1-12 14:35 | 显示全部楼层
来个演示呗,楼主,用其他CAD的我,只能眼巴巴干看着
发表于 2018-2-24 22:32 | 显示全部楼层
虽然不是很需要,但是看起来确实是使人脑洞大开
发表于 2015-1-9 09:33 | 显示全部楼层
这个挺好的。!
发表于 2015-1-9 20:51 | 显示全部楼层
很好用,谢谢楼主
发表于 2015-6-16 10:13 | 显示全部楼层
谢谢分享,先看懂这个核心程序就可以理解工具箱了
发表于 2018-2-14 22:40 | 显示全部楼层
谢谢分享,下载学习
发表于 2019-1-6 03:27 | 显示全部楼层
好东西,支持一下~
发表于 2020-5-27 14:47 | 显示全部楼层
这个东西是我想要实现的
发表于 2020-5-27 17:11 | 显示全部楼层
谢谢分享,下载学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-19 14:31 , Processed in 2.277406 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表