找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 29370|回复: 65

[标注] 自*由标注插件

  [复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2016-5-22 22:35:15 | 显示全部楼层 |阅读模式
  • 插件名称 : 自*由标注
  • 作  者 : Lispboy
  • 运行环境 :XDRX API 晓东工具箱 
  • 发布时间 :2016-05-22
  • 命令名称 :XDTB_FreeDim
  • 插件介绍 :自*由标注,要写就写最好的,看演示吧。除了选点标注外,也支持在已经标注的实体上继续操作,天正的好像也不行的,真正的**,这个插件除了标注,看演示也能作为尺寸打断来用。
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

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

插件详细内容

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

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

×
自*由标注,要写就写最好的,看演示吧。除了选点标注外,也支持在已经标注的实体上继续操作,天正的好像也不行的,真正的**,这个插件除了标注,看演示也能作为尺寸打断来用。

请下载5月22日更新的XDRX_API 和最新的晓东通用LISP函数库使用,函数里面新用到的几个LISP函数已经发布到开源函数库了,大家去找下下载或者等最新的LISP函数库发布。


XD::Doc:Command
XD::Entity:NearByPnt
XD::DIM:AlignedDimEnts


[sell=30]
  1. (defun c:XDTB_FreeDim (/ ang base baseLines dynpt e ee el el2 eLeft eRight
  2.                          eTemp eTemp4 inEl i**t msg myerr nearEnt nInx nPts
  3.                          olderr p1 p2 p3 p4 pnt pnts ptIn ret tf vdim vlast
  4.                          x xLine1 xLine1Point xLine2 xLine2Point xLines
  5.                       )
  6.   (defun myerr (msg)
  7.     (princ (strcat "\n" msg))
  8.     (xdrx_end)
  9.     (XD::Doc:Command (list "undo" 1))
  10.     (princ)
  11.   )

  12.   (defun _notInDimEnts (pnt / base el2 ret tf)
  13.     (vl-some '(lambda (x)
  14.                 (if (apply
  15.                       'XD::Pnt:IsBetween
  16.                       (cons pnt (xd::dim:basePoints x))
  17.                     )
  18.                   (setq ret x)
  19.                 )
  20.               ) el
  21.     )
  22.     ret
  23.   )
  24.   (defun _callback1 (dynpt)
  25.     (xdrx_setpropertyvalue e "dimlinepoint" dynpt)
  26.   )
  27.   (defun _callback2 (dynpt)
  28.     (if (not (setq ptIn (_notInDimEnts dynpt)))
  29.       (progn
  30.         (if eLeft
  31.           (progn
  32.             (xdrx_entity_delete eLeft)
  33.             (xdrx_entity_delete eRight)
  34.             (xdrx_setpropertyvalue eTemp4 "visibility" t)
  35.             (setq eLeft nil
  36.                   eRight nil
  37.             )
  38.           )
  39.         )
  40.         (setq inEl nil)
  41.         (if (not i**t)
  42.           (progn
  43.             (setq nearEnt (XD::Entity:NearByPnt el dynpt vdim))
  44.             (setq nPts (xdrx_getpropertyvalue nearEnt "stretchpoint"))
  45.             (setq xLine1Point (nth (car (XD::Dim:GetNearInx nearEnt dynpt))
  46.                                    nPts
  47.                               )
  48.             )
  49.             (setq eTemp (xdrx_dimension_makerotate xLine1Point xLine1Point
  50.                                                    p3 ang
  51.                         )
  52.             )
  53.           )
  54.         )
  55.         (setq xLine2Point (car (XD::Pnts:OrthoProject (list dynpt) p1 p2)))
  56.         (xdrx_setpropertyvalue etemp "xLine2Point" xLine2Point)
  57.         (setq i**t t)
  58.       )
  59.       (progn
  60.         (setq xLine1 (xdrx_getpropertyvalue ptIn "xLine1Point")
  61.               xLine2 (xdrx_getpropertyvalue ptIn "xLine2Point")
  62.         )
  63.         (setq xLine2Point (car (XD::Pnts:OrthoProject (list dynpt) p1 p2)))
  64.         (if (not (member ptIn inEl))
  65.           (progn
  66.             (setq inEl (cons ptIn inEl))
  67.             (if (and
  68.                   i**t
  69.                   (entget eTemp)
  70.                 )
  71.               (xdrx_entity_delete eTemp)
  72.             )
  73.             (if eLeft
  74.               (progn
  75.                 (xdrx_entity_delete eLeft)
  76.                 (xdrx_entity_delete eRight)
  77.                 (xdrx_setpropertyvalue eTemp4 "visibility" t)
  78.                 (setq eLeft nil
  79.                       eRight nil
  80.                       eTemp4 nil
  81.                 )
  82.                 (setq inel (xd::list:removeE (cadr inel) inel t))
  83.               )
  84.             )
  85.             (setq eLeft (xdrx_dimension_makerotate xLine1 xLine2Point p3 ang))
  86.             (setq eRight (xdrx_dimension_makerotate xLine2Point xLine2 p3
  87.                                                     ang
  88.                          )
  89.             )
  90.             (xdrx_setpropertyvalue ptin "Visibility" nil)
  91.             (setq eTemp4 ptin)
  92.           )
  93.         )
  94.         (xdrx_setpropertyvalue eLeft "xLine2Point" xLine2Point)
  95.         (xdrx_setpropertyvalue eRight "xLine1Point" xLine2Point)
  96.         (setq i**t nil)
  97.       )
  98.     )
  99.   )
  100.   (if (or
  101.         (setq ee (xdrx_entsel "\n拾取基准尺寸<取点>:" '((0 . "dimension")
  102.                                (-4 . "<or")
  103.                                (70 . 32)
  104.                                (70 . 33)
  105.                                (-4 . "or>")
  106.                               )
  107.                  )
  108.         )
  109.         (and
  110.           (setq p1 (getpoint "\n第一点<退出>:"))
  111.           (setq p2 (getpoint p1 "\n第二点<退出>:"))
  112.         )
  113.       )
  114.     (progn
  115.       (xdrx_begin)
  116.       (setq olderr *error*
  117.             *error* myerr
  118.       )
  119.       (setq inel nil
  120.             i**t nil
  121.       )
  122.       (if ee
  123.         (progn
  124.           (setq el (XD::DIM:AlignedDimEnts (car ee)))
  125.           (setq xLines (mapcar
  126.                          'car
  127.                          (XD::Dim:xLINE (car ee))
  128.                        )
  129.           )
  130.           (setq nInx (apply
  131.                        'xd::dim:getnearinx
  132.                        (list (car ee) (trans (cadr ee) 1 0))
  133.                      )
  134.                 pnts (xdrx_getpropertyvalue (car ee) "stretchpoint")
  135.                 p2 (nth (car nInx) pnts)
  136.                 p1 (car (vl-remove p2 xLines))
  137.                 ang (angle p1 p2)
  138.                 p3 (nth 2 pnts)
  139.           )                               ;           (setq el (XD::Entity:SortOnCurve
  140.                                        ; el (list p1 p2)))
  141.           (setq xLine2Point p2
  142.                 xLine1Point p1
  143.           )
  144.           (setq baseLines (XD::Dim:BasePoints (car ee)))
  145.           (setq e (car ee))
  146.         )
  147.         (progn
  148.           (setq p1 (trans p1 1 0)
  149.                 p2 (trans p2 1 0)
  150.           )
  151.           (setq e (xdrx_dimension_makerotate p1 p2 p2 (setq ang
  152.                                                             (angle p1 p2)
  153.                                                       )
  154.                   )
  155.           )
  156.           (setq xLine2Point p2
  157.                 xLine1Point p1
  158.           )
  159.           (setq baseLines (XD::Dim:BasePoints e))
  160.           (xdrx_pointmonitor "_callback1")
  161.           (if (not (setq p3 (getpoint "\n尺寸线位置<退出>:")))
  162.             (progn
  163.               (exit)
  164.             )
  165.           )
  166.           (setq p3 (trans p3 1 0))
  167.           (setq el nil)
  168.           (setq el (cons e el))
  169.         )
  170.       )
  171.       (setq vdim (xdrx_vector_normalize (mapcar
  172.                                           '-
  173.                                           p2
  174.                                           p1
  175.                                         )
  176.                  )
  177.       )
  178.       (xdrx_pointmonitor "_callback2")
  179.       (while (setq p4 (getpoint (trans xLine2Point 0 1) "\n下一点<退出>:"))
  180.         (setq i**t nil)
  181.         (if eLeft
  182.           (setq el (cons eLeft el)
  183.                 el (cons eRight el)
  184.           )
  185.           (if (not (member (entlast) el))
  186.             (setq el (cons (entlast) el))
  187.           )
  188.         )
  189.         (setq eLeft nil
  190.               eRight nil
  191.         )
  192.         (setq xlines (xdrx_getpropertyvalue (entlast) "xLine2Point"
  193.                                             "xLine1Point"
  194.                      )
  195.         )
  196.         (setq vlast (apply
  197.                       'mapcar
  198.                       (cons '- xlines)
  199.                     )
  200.               vlast (xdrx_vector_normalize vlast)
  201.         )
  202.         (if (not (xdrx_vector_IsCodirectional vdim vlast))
  203.           (progn
  204.             (xdrx_setpropertyvalue (entlast) "xLine1Point" (car xlines)
  205.                                    "xLine2Point" (cadr xlines)
  206.             )
  207.           )
  208.         )
  209.       )

  210.       (if i**t
  211.         (entdel (entlast))
  212.       )
  213.       (if eLeft
  214.         (progn
  215.           (entdel eLeft)
  216.           (entdel eRight)
  217.           (xdrx_setpropertyvalue eTemp4 "visibility" t)
  218.         )
  219.       )
  220.       (xdrx_pointmonitor)
  221.       (setq *error* olderr)
  222.       (xdrx_end)
  223.     )
  224.   )
  225.   (princ)
  226. )


[/sell]

评分

参与人数 1D豆 +10 贡献 +1 收起 理由
XDSoft + 10 + 1

查看全部评分

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

已领礼包: 19个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 2772个

财富等级: 家财万贯

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2016-5-22 23:07:05 来自手机 | 显示全部楼层
创意不错,两个建议
1 标注一定要rotate类型,不要align
2 演示中好像出现了0长度标注,这个不可以有

点评

睡前被震到了,看了里面的代码 [*](setq eTemp (xdrx_dimension_makerotate xLine1Point xLine1Point [*] p3 ang [*] ) [  详情 回复 发表于 2016-5-22 23:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-5-22 23:11:58 | 显示全部楼层
st788796 发表于 2016-5-22 23:07
创意不错,两个建议
1 标注一定要rotate类型,不要align
2 演示中好像出现了0长度标注,这个不可以有

睡前被震到了,看了里面的代码

  • (setq eTemp (xdrx_dimension_makerotate xLine1Point xLine1Point

  •                                
    登录/注册后可看大图
                                                       p3 ang

  •                                
    登录/注册后可看大图
                            )

  •                                
    登录/注册后可看大图
                )










用的是转角标注,0长度应该是拖动过程显示的,用户要点击左键标注才能生成,不应该出现0的情况
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2016-5-22 23:21:07 来自手机 | 显示全部楼层
newer 发表于 2016-5-22 23:11
睡前被震到了,看了里面的代码



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

使用道具 举报

已领礼包: 14个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2016-7-28 10:26:28 | 显示全部楼层
为什么工具箱加载成功了,但是xdtb_freedim总是提示是未知命令啊,跪求大神指导,QQ850152779,不甚感激!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 108个

财富等级: 日进斗金

发表于 2016-12-11 13:08:03 | 显示全部楼层
为什么我的加载不了,都出现 错误: 读入的 (八进制) 字符不正确: 0
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 12:11 , Processed in 0.306486 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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