找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 16123|回复: 64

[标注] 智能标注

  [复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-9-29 12:01:32 | 显示全部楼层 |阅读模式
  • 插件名称 : 智能标注
  • 作  者 : st788796
  • 运行环境 :XDRX API 
  • 发布时间 :2014-10-01
  • 命令名称 :XDTB_AutoDim
  • 插件介绍 :智能标注
  • 备  注 : (点击图片可以放大)
    演示是借用的,功能一样
    第4版
(点击图片可以放大)

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

插件详细内容

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

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

×
本帖最后由 st788796 于 2014-10-1 19:53 编辑

  1. (defun c:XDTB_AutoDim (/          _getdimline                _setrotation
  2.                        _getpoint  callback   bp1        bp2
  3.                        an1          an2             dm                _highlight
  4.                        myerr
  5.                       )
  6.   (defun myerr (msg)
  7.     (princ "\n*取消*")
  8.     (xdrx_pointmonitor)
  9.     (if        dm
  10.       (xdrx_entity_delete dm)
  11.     )
  12.     (mapcar '(lambda (x)
  13.                (if x
  14.                  (xdrx_pickset_highlight (cadr x) t)
  15.                )
  16.              )
  17.             (list an1 an2)
  18.     )
  19.     (setq *error* olderr
  20.           myerr          nil
  21.     )
  22.     (princ)
  23.   )
  24.   (defun _getdimline (p msg / ss e _result)
  25.     (defun _result (line /)
  26.       (list (rem (xdrx_getpropertyvalue line "angle") pi)
  27.             line
  28.       )
  29.     )
  30.     (if        (setq ss (xdrx_pickset_getatpoint p '((0 . "line"))))
  31.       (cond
  32.         ((= (sslength ss) 1)
  33.          (_result (ssname ss 0))

  34.         )
  35.         ((> (sslength ss) 1)
  36.          (xdrx_pickset_highlight ss)
  37.          (if (setq e (xdrx_entsel msg '((0 . "line"))))
  38.            (progn
  39.              (xdrx_pickset_highlight ss t)
  40.              (_result (car e))
  41.            )
  42.          )
  43.         )
  44.         (t nil)
  45.       )
  46.     )
  47.   )
  48.   (defun _highlight (e e0 mod)
  49.     (if        mod
  50.       (mapcar '(lambda (x)
  51.                  (if x
  52.                    (xdrx_pickset_highlight x t)
  53.                  )
  54.                )
  55.               (list e e0)
  56.       )
  57.       (progn
  58.         (if e0
  59.           (xdrx_pickset_highlight e0)
  60.         )
  61.         (if e
  62.           (xdrx_pickset_highlight e t)
  63.         )
  64.       )
  65.     )
  66.   )
  67.   (defun _setrotation (dPnt         thisPnt   ortherPnt lineAng
  68.                        ent         ent1           /             pan
  69.                        _dimstatus
  70.                       )
  71.     (defun _dimstatus (e1 e2 mod col ang /)
  72.       (_highlight e1 e2 mod)
  73.       (_highlight e2 e1 mod)
  74.       (xdrx_entity_setcolor dm col)
  75.       (xdrx_setpropertyvalue dm "rotation" ang)
  76.     )
  77.     (if        lineAng
  78.       (progn
  79.         (setq pan (rem (angle thisPnt dPnt) pi))
  80.         (cond
  81.           ((equal pan lineAng 0.1)
  82.            (_dimstatus ent ent1 nil 1 (+ (/ pi 2) lineAng))
  83.           )
  84.           ((equal (abs (- pan lineAng)) (/ pi 2) 0.1)
  85.            (_dimstatus ent ent1 t 1 lineAng)
  86.           )
  87.           ((equal (abs (- pan (angle thisPnt ortherPnt))) (/ pi 2) 0.1)
  88.            (_dimstatus ent ent1 t 3 (angle thisPnt ortherPnt))
  89.           )
  90.           ((equal pan 0.0 0.1)
  91.            (_dimstatus ent ent1 t 4 (/ pi 2))
  92.           )
  93.           ((equal pan (/ pi 2) 0.1)
  94.            (_dimstatus ent entl t 5 0.)
  95.           )
  96.           (t)
  97.         )
  98.       )
  99.     )
  100.   )
  101.   (defun callback (dynpt /)
  102.     (if        (< (distance dynpt bp1) (distance dynpt bp2))
  103.       (_setrotation dynpt bp1 bp2 (car an1) (cadr an1) (cadr an2))
  104.       (_setrotation dynpt bp2 bp1 (car an2) (cadr an2) (cadr an1))
  105.     )
  106.     (xdrx_setpropertyvalue dm "dimlinepoint" dynpt)
  107.   )

  108.   (defun _getpoint (pnt lst bp / pnt an)
  109.     (if        (and (setq p (if bp
  110.                        (getpoint bp "\n标注点: ")
  111.                        (getpoint "\n标注点: ")
  112.                      )
  113.              )
  114.              (progn
  115.                (setq an (_getdimline p "\n对齐线: "))
  116.                t
  117.              )
  118.         )
  119.       (progn
  120.         (set pnt p)
  121.         (set lst an)
  122.         t
  123.       )
  124.     )
  125.   )
  126.   (setq        olderr        *error*
  127.         *error*        myerr
  128.   )
  129.   (xdrx_begin)
  130.   (if (and (_getpoint 'bp1 'an1 nil)
  131.            (_getpoint 'bp2 'an2 bp1)
  132.       )
  133.     (progn
  134.       (setq dm (xdrx_dimension_makerotate
  135.                  bp1
  136.                  bp2
  137.                  (polar bp1 0. (* (distance bp1 bp2) 0.1))
  138.                  0.0
  139.                )
  140.       )
  141.       (xdrx_pointmonitor "callback" dm)
  142.       (getpoint "\n位置: ")
  143.       (xdrx_pointmonitor)
  144.       (xdrx_entity_setcolor dm 0)
  145.       (_highlight (cadr an1) (cadr an2) t)
  146.     )
  147.   )
  148.   (xdrx_end)
  149.   (setq        *error*        olderr
  150.         myerr        nil
  151.   )
  152.   (princ)
  153. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 19个

财富等级: 恭喜发财

发表于 2014-9-29 12:20:05 | 显示全部楼层
{:soso_e142:} 在2005下试了,好强{:soso_e179:}, 看下我做的演示。

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

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 149个

财富等级: 日进斗金

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

使用道具 举报

发表于 2014-9-30 15:18:56 | 显示全部楼层
为什么在选位置的时候取消时,会无限弹错误。

点评

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-9-30 15:26:33 | 显示全部楼层
elfjack 发表于 2014-9-30 15:18
为什么在选位置的时候取消时,会无限弹错误。

你加载 XDRX API了吗?

点评

貌似我下载的xdrxapi包里只有xdrx_begin 二没有XD::begin  详情 回复 发表于 2014-9-30 16:51
加载了。一开始还能智能标注,后来在选位置的时候取消就无限弹错误,现在干脆不智能标注了。。。  详情 回复 发表于 2014-9-30 15:34
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-9-30 15:34:27 | 显示全部楼层
XDSoft 发表于 2014-9-30 15:26
你加载 XDRX API了吗?

加载了。一开始还能智能标注,后来在选位置的时候取消就无限弹错误,现在干脆不智能标注了。。。

点评

作者程序里面没加错误处理部分,提供的是主要的功能。等作者在完善吧。  详情 回复 发表于 2014-9-30 15:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-9-30 15:46:04 | 显示全部楼层
elfjack 发表于 2014-9-30 15:34
加载了。一开始还能智能标注,后来在选位置的时候取消就无限弹错误,现在干脆不智能标注了。。。

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-9-30 15:53:05 来自手机 | 显示全部楼层
执行(xdrx_pointmonitor)一次

点评

我执行了好像也没啥用啊。还是不能智能标注。  详情 回复 发表于 2014-9-30 16:01
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-9-30 16:01:33 | 显示全部楼层
st788796 发表于 2014-9-30 15:53
执行(xdrx_pointmonitor)一次

我执行了好像也没啥用啊。还是不能智能标注。

点评

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

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-9-30 16:11:40 来自手机 | 显示全部楼层
elfjack 发表于 2014-9-30 16:01
我执行了好像也没啥用啊。还是不能智能标注。

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

使用道具 举报

发表于 2014-9-30 16:51:51 | 显示全部楼层
XDSoft 发表于 2014-9-30 15:26
你加载 XDRX API了吗?

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-9-30 16:53:25 | 显示全部楼层
elfjack 发表于 2014-9-30 16:51
貌似我下载的xdrxapi包里只有xdrx_begin 二没有XD::begin

这个在 xd-lisp-lib.vlx 函数库

点评

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

使用道具 举报

发表于 2014-9-30 17:19:22 | 显示全部楼层
st788796 发表于 2014-9-30 16:53
这个在 xd-lisp-lib.vlx 函数库

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 13:15 , Processed in 0.552684 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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