设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1100|回复: 15

[矩形] 自由矩形(第三版)

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-8-30 17:19:44 | 显示全部楼层 |阅读模式
  • 插件名称 : 自由矩形
  • 作  者 : newer
  • 运行环境 :XDRX API 晓东工具箱 
  • 发布时间 :2018-08-30
  • 命令名称 :xdtb_rectfree
  • 插件介绍 :自由矩形(第三版)
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

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

插件详细内容

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

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

x


同前几版比较,增加了
1、轴向设置
2、宽度设置
3、颜色设置
4、回退


请在2018.08.30日以后更新的API下使用。

  1. (defun c:XDTB_RectFree (/      e1     e2     el            ents   ents-bak
  2.                         info   info1  m_rec_ent            n           num
  3.                         p_1    p_2    p1     p2            ra           ss
  4.                         tmp    val    x             xdir
  5.                        )
  6.   (defun _process (e1 e2)
  7.     (setq ra (xd::curve:relation e2 e1))
  8.     (cond ((or (= ra 0) (= ra 4)))
  9.           ((or (= ra 2) (= ra 3)) (setq tmp (xdrx_get_union e1 e2)))
  10.           ((= ra 1) (setq tmp (xdrx_get_subtract e2 e1)))
  11.     )
  12.     (if        tmp
  13.       (setq ents (append (xdrx_pickset->ents tmp) ents))
  14.     )
  15.     (xdrx_draworder->top
  16.       (setq ents (_clear (xd::list:removedup ents)))
  17.     )
  18.   )
  19.   (defun _clear        (el)
  20.     (setq el (vl-remove        nil
  21.                         (mapcar        '(lambda (x)
  22.                                    (if (and x (entget x))
  23.                                      x
  24.                                    )
  25.                                  )
  26.                                 el
  27.                         )
  28.              )
  29.     )
  30.     (xdrx_polyline_compress el t)
  31.     el
  32.   )
  33.   (xdrx_begin)
  34.   (if (not #xd_var_global_lw_width)
  35.     (setq #xd_var_global_lw_width 1.0)
  36.   )
  37.   (if (not #xd_var_global_ent_color)
  38.     (setq #xd_var_global_ent_color 7)
  39.   )
  40.   (setq        m_rec_ent nil
  41.         xdir          (getvar "ucsxdir")
  42.   )
  43.   (xdrx_initssget "\n选取添加已有要处理的矩形<不选>:")
  44.   (setq ss (xdrx_ssget '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1))))
  45.   (setq        ents         (xdrx_pickset->ents ss)
  46.         ents-bak ents
  47.   )
  48.   (setq num 0)
  49.   (while
  50.     (and (xd::doc:setosnap 547)
  51.          (if (> num 0)
  52.            (progn (setq info1 "/回退(U)") (xdrx_initget "A W C U"))
  53.            (progn (setq info1 "") (xdrx_initget "A W C"))
  54.          )
  55.          (setq info (strcat "\n矩形第一点[设置轴(A)/宽度(W)/颜色(C)"
  56.                             info1
  57.                             "]<退出>:"
  58.                     )
  59.          )
  60.          (xdrx_prompt
  61.            "\n当前设置:线宽("             #xd_var_global_lw_width
  62.            ") 颜色("                     #xd_var_global_ent_color
  63.            ")"
  64.           )
  65.          (setq p1 (getpoint info))
  66.          (cond ((= p1 "W")
  67.                 (if (setq val (getreal (xdrx_prompt
  68.                                          "\n输入线宽度<"
  69.                                          #xd_var_global_lw_width
  70.                                          ">:"
  71.                                          t
  72.                                        )
  73.                               )
  74.                     )
  75.                   (progn (setq #xd_var_global_lw_width val)
  76.                          (xdrx_entity_setproperty
  77.                            ents
  78.                            "constantwidth"
  79.                            #xd_var_global_lw_width
  80.                          )
  81.                   )
  82.                 )
  83.                 t
  84.                )
  85.                ((= p1 "C")
  86.                 (setq #xd_var_global_ent_color
  87.                        (acad_colordlg
  88.                          #xd_var_global_ent_color
  89.                        )
  90.                 )
  91.                 (xdrx_entity_setproperty
  92.                   ents
  93.                   "color"
  94.                   #xd_var_global_ent_color
  95.                 )
  96.                 t
  97.                )
  98.                ((= p1 "U")
  99.                 (if (/= num 0)
  100.                   (progn (vl-cmdf "undo" 2)
  101.                          (setq num (1- num))
  102.                          (setq ents (_clear ents-bak))
  103.                          (if (= num 0)
  104.                            (princ "\r所有操作已经回退完毕!")
  105.                          )
  106.                   )
  107.                 )
  108.                 t
  109.                )
  110.                ((= p1 "A")
  111.                 (if (and (setq p_1 (getpoint "\n轴线第一点<退出>:"))
  112.                          (setq p_2 (getpoint p_1 "\n轴线第二点<退出>:"))
  113.                     )
  114.                   (progn (setq xdir (xdrx_vector_normalize
  115.                                       (mapcar '- (trans p_2 1 0) (trans p_1 1 0))
  116.                                     )
  117.                                xdir (if        (minusp (car xdir))
  118.                                       (setq xdir (xdrx_vector_negate xdir))
  119.                                       xdir
  120.                                     )
  121.                          )
  122.                   )
  123.                 )
  124.                 t
  125.                )
  126.                ((= (type p1) 'LIST) t)
  127.          )
  128.          (progn
  129.            (and        (= (type p1) 'LIST)
  130.                 (setq p2 (xd::doc:getcorner p1 "\r矩形第二点<退出>:" 7 xdir))
  131.                 (> (abs (xdrx_points_area (cadr p2))) 0.0)
  132.                 (xdrx_undostart)
  133.                 (setq e1 (xdrx_polyline_make (xd::pnts:ucs2wcs (cadr p2)) t))
  134.                 (progn (foreach n ents (_process e1 n))
  135.                        (setq num (1+ num))
  136.                        (setq ents     (cons e1 ents)
  137.                              ents-bak (cons e1 ents-bak)
  138.                              ents     (_clear ents)
  139.                        )
  140.                        (xdrx_entity_setproperty
  141.                          ents
  142.                          "constantwidth"
  143.                          #xd_var_global_lw_width
  144.                          "color"
  145.                          #xd_var_global_ent_color
  146.                         )
  147.                        (xdrx_undoend)
  148.                        (setq e1 nil)
  149.                 )
  150.            )
  151.            t
  152.          )
  153.     )
  154.   )
  155.   (xdrx_sysvar_pop)
  156.   (xdrx_end)
  157.   (princ)
  158. )


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

已领礼包: 384个

财富等级: 日进斗金

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

使用道具 举报

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2018-9-6 19:23:12 | 显示全部楼层
命令加载不了  

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2018-9-6 20:40:33 | 显示全部楼层

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

使用道具 举报

已领礼包: 4583个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2018-9-6 21:40:08 | 显示全部楼层
newer 发表于 2018-9-6 20:40
加载不了,说明你得多在论坛看看帖子

第二版的我都能用   第三版就不行  我的XDRX API是20180905版本的  求解答

点评

你加载不了,和什么版本的API没关系,肯定是你没拷贝和保存好代码 [attachimg]80060[/attachimg]  详情 回复 发表于 2018-9-6 21:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2018-9-6 21:49:10 | 显示全部楼层
江南十笑 发表于 2018-9-6 21:40
第二版的我都能用   第三版就不行  我的XDRX API是20180905版本的  求解答

你加载不了,和什么版本的API没关系,肯定是你没拷贝和保存好代码

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

使用道具 举报

已领礼包: 6050个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2018-9-7 10:58:09 | 显示全部楼层
TIM图片20180907105602.png 我看到的咋和你贴出来的不一样呢?

点评

哪地方不一样了,我就是从帖子拷贝的 你用鼠标全选中,按CTRL+C [attachimg]80072[/attachimg]  详情 回复 发表于 2018-9-7 11:07
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2018-9-7 11:07:00 | 显示全部楼层
江南十笑 发表于 2018-9-7 10:58
我看到的咋和你贴出来的不一样呢?

哪地方不一样了,我就是从帖子拷贝的

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

使用道具 举报

已领礼包: 22个

财富等级: 恭喜发财

发表于 2018-11-24 02:45:51 | 显示全部楼层
在这张图中有些怪问题,主要是改变轴后。
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:12#.rar 
下载次数:0  文件大小:1.67 MB 
下载权限: 不限 以上  [免费赚D豆]



录制_2018_11_24_02_39_35_959.gif


点评

去更新 通用LISP函数库, 解压拷贝到SYS目录覆盖 http://bbs.xdcad.net/thread-669133-1-1.html 再试试  详情 回复 发表于 2018-11-24 12:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2018-11-24 12:08:48 | 显示全部楼层
alnhny 发表于 2018-11-24 02:45
在这张图中有些怪问题,主要是改变轴后。

去更新 通用LISP函数库, 解压拷贝到SYS目录覆盖

http://bbs.xdcad.net/thread-669133-1-1.html

再试试

点评

更新后试了,不行,在这张图中只有轴方向为±X时才正常,其它方向画出的矩形都不对。  详情 回复 发表于 2018-11-24 13:55
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 22个

财富等级: 恭喜发财

发表于 2018-11-24 13:55:10 | 显示全部楼层
XDSoft 发表于 2018-11-24 12:08
去更新 通用LISP函数库, 解压拷贝到SYS目录覆盖

http://bbs.xdcad.net/thread-669133-1-1.html

更新后试了,不行,在这张图中只有轴方向为±X时才正常,其它方向画出的矩形都不对。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2021-3-8 19:34 , Processed in 0.214965 second(s), 46 queries , Gzip On, WinCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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