设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3209|回复: 9

[工具] 动态“云线”

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2018-4-29 15:16:11 | 显示全部楼层 |阅读模式
  • 插件名称 : 动态云线
  • 作  者 : Lispboy
  • 运行环境 :XDRX API 晓东工具箱 
  • 发布时间 :2018-04-29
  • 命令名称 :XDTB_ACLOUD
  • 插件介绍 :看图一目了然
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

晓东温馨提示 1、运行环境为 晓东工具箱XDRX API 的插件,请下载最新版本的 晓东工具箱XDRX API开发环境 一键安装
2、在ACAD中如何加载插件,请看 论坛插件使用方法
3、如果您有要求需要定制插件,请到 编程申请 论坛发帖求助

插件详细内容

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
本帖最后由 Lispboy 于 2018-4-29 15:19 编辑

不知道合适的名字起什么,就叫“动态云线”吧,因为做出的结果是云线差不多,但思路不一样。
程序可以实时的调整“圆”的大小,递增递减的“步长”,实时的调整是“添加”或者“擦除”,结果作为“面域”存在,可以查询整体的面积。如果结果想要“多段线”,把代码里面的 ;(xdrx_region->polyline lastent) 前面的;去掉。

  1. (defun c:XDTB_ACLOUD (/ curpnt dynpt lastent m_cir mat pt r val)
  2.   (defun *error* (msg)
  3.     (xdrx_entity_delete m_cir)
  4.     (xdrx_end)
  5.     (princ)
  6.   )
  7.   (xdrx_begin)
  8.   (defun _callback (dynpt)
  9.     (xdrx_setpropertyvalue m_cir "center" dynpt)
  10.     (setq curpnt dynpt)
  11.   )
  12.   (defun _info ()
  13.     (xdrx_prompt "\n当前: *动作=" (if (= #xd_var_global_circle_action "A")
  14.                                     "添加"
  15.                                     "擦除"
  16.                                   ) " *步长=" (cond
  17.                                                 ((= #xd_var_global_circle_buchang
  18.                                                     1
  19.                                                  )
  20.                                                   "10%"
  21.                                                 )
  22.                                                 ((= #xd_var_global_circle_buchang
  23.                                                     2
  24.                                                  )
  25.                                                   "20%"
  26.                                                 )
  27.                                                 (t
  28.                                                   "30%"
  29.                                                 )
  30.                                               ) "\n"
  31.     )
  32.   )
  33.   (if (not #xd_var_global_circle_radius)
  34.     (setq #xd_var_global_circle_radius 10.0)
  35.   )
  36.   (if (not #xd_var_global_circle_buchang)
  37.     (setq #xd_var_global_circle_buchang 1)
  38.   )
  39.   (if (not #xd_var_global_circle_action)
  40.     (setq #xd_var_global_circle_action "A")
  41.   )
  42.   (if (setq r (getreal (xdrx_prompt "\n初始直径<"
  43.                                     #xd_var_global_circle_radius ">:" t
  44.                        )
  45.               )
  46.       )
  47.     (progn
  48.       (setq #xd_var_global_circle_radius r)
  49.     )
  50.   )
  51.   (xdrx_circle_make '(0 0 0) (/ #xd_var_global_circle_radius 2.0))
  52.   (setq m_cir (entlast))
  53.   (setq lastent nil
  54.         mat (xdrx_matrix_identity 3)
  55.   )
  56.   (xdrx_sysvar_push '("osmode" 0
  57.                      "cursorsize" 1
  58.                     )
  59.   )
  60.   (xdrx_pointmonitor "_callback")
  61.   (while (and
  62.            (xdrx_initget "A F E W T")
  63.            (_info)
  64.            (setq pt (getpoint (strcat (if (not pt)
  65.                                         "\n"
  66.                                         "\r"
  67.                                       ) "插入点[A-递增/F-递减/W-步长/E-添加/T-擦除]<结束>:"
  68.                               )
  69.                     )
  70.            )
  71.          )
  72.     (cond
  73.       ((= pt "A")
  74.         (setq #xd_var_global_circle_radius (* (atof (strcat "1."
  75.                                                             (itoa #xd_var_global_circle_buchang)
  76.                                                     )
  77.                                               ) #xd_var_global_circle_radius
  78.                                            )
  79.         )
  80.         (xdrx_setpropertyvalue m_cir "radius" (/ #xd_var_global_circle_radius
  81.                                                  2.0
  82.                                               )
  83.         )
  84.       )
  85.       ((= pt "F")
  86.         (setq #xd_var_global_circle_radius (* (- 1 (* 0.1 #xd_var_global_circle_buchang))
  87.                                               #xd_var_global_circle_radius
  88.                                            )
  89.         )
  90.         (xdrx_setpropertyvalue m_cir "radius" (/ #xd_var_global_circle_radius
  91.                                                  2.0
  92.                                               )
  93.         )
  94.       )
  95.       ((= pt "E")
  96.         (setq #xd_var_global_circle_action "A")
  97.       )
  98.       ((= pt "T")
  99.         (setq #xd_var_global_circle_action "D")
  100.       )
  101.       ((= pt "W")
  102.         (xdrx_initget "1 2 3")
  103.         (if (setq val (getint (xdrx_prompt "\n输入步长增减百分比[1-10%/2-20%/3-30%]<"
  104.                                            (cond
  105.                                              ((= #xd_var_global_circle_buchang
  106.                                                  1
  107.                                               )
  108.                                                1
  109.                                              )
  110.                                              ((= #xd_var_global_circle_buchang
  111.                                                  2
  112.                                               )
  113.                                                2
  114.                                              )
  115.                                              (t
  116.                                                3
  117.                                              )
  118.                                            ) ">:\n" t
  119.                               )
  120.                       )
  121.             )
  122.           (progn
  123.             (setq #xd_var_global_circle_buchang val)
  124.             (_info)
  125.           )
  126.         )
  127.       )
  128.       ((= (type pt) 'LIST)
  129.         (xdrx_curve->region m_cir)
  130.         (if (not lastent)
  131.           (progn
  132.             (setq lastent (entlast))
  133.           )
  134.           (progn
  135.             (if (= #xd_var_global_circle_action "A")
  136.               (xdrx_get_union lastent (entlast))
  137.               (xdrx_get_subtract lastent (entlast))
  138.             )
  139.           )
  140.         )
  141.         (xdrx_circle_make curpnt (/ #xd_var_global_circle_radius 2.0))
  142.         (setq m_cir (entlast))
  143.       )
  144.     )
  145.   )
  146.   (xdrx_entity_delete (entlast))
  147.   ;(xdrx_region->polyline lastent)
  148.   (xdrx_pointmonitor)
  149.   (seetq *error* nil)
  150.   (xdrx_end)
  151.   (princ)
  152. )



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1841个

财富等级: 堆金积玉

发表于 2018-4-29 18:50:15 | 显示全部楼层
不错的插件,楼主辛苦了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2018-4-30 07:13:27 | 显示全部楼层
谢谢分享。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 333个

财富等级: 日进斗金

发表于 2018-4-30 07:22:11 | 显示全部楼层
好厉害的样子
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 470个

财富等级: 日进斗金

发表于 2018-4-30 08:48:00 来自手机 | 显示全部楼层
好好好,不错,谢谢分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 811个

财富等级: 财运亨通

发表于 2018-5-2 07:58:40 | 显示全部楼层
感谢楼主分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 381个

财富等级: 日进斗金

发表于 2018-5-2 08:26:29 | 显示全部楼层
感谢分享                    
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 811个

财富等级: 财运亨通

发表于 2018-5-9 16:49:23 | 显示全部楼层
感谢楼主分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2019-6-4 09:23:10 | 显示全部楼层
怎么复制代码呀,粘贴到编辑器里全是问号

                               
登录/注册后可看大图
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2019-6-4 09:26:27 | 显示全部楼层
代码解决了,运行 :无函数定义: XDRX_ENTITY_DELETE
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )  

GMT+8, 2021-2-27 21:12 , Processed in 0.153835 second(s), 33 queries , Gzip On, WinCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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