找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2795|回复: 15

[研讨] 后面的点监视器部分如何写

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2016-5-22 16:16:27 | 显示全部楼层 |阅读模式

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

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

×

看到一个画线标注演示,想用 XDRXAPI 实现一个,写了一部分,后面的动态部分如何写呢?欢迎探讨补充

  1. (defun c:tt (/ _print p1 d flag p2 pts callback vec p)
  2.   (defun myerr (msg)
  3.     (xdrx_pointmonitor)
  4.     (princ)
  5.   )
  6.   (defun _getoffsetpoints (d p1 p2 /)
  7.     (xdrx_points_offset
  8.       (- ((if (minusp d)
  9.             +
  10.             -
  11.           )
  12.            d
  13.            (xd::symbol:get 'dimension_space)
  14.          )
  15.       )
  16.       p1
  17.       p2
  18.     )
  19.   )
  20.   (defun callback (pt / p11 p21)
  21.     (redraw)
  22.     (xdrx_grdraw 1 p1 p2)
  23.     (setq d (car (trans (mapcar '- pt p1) 0 vec)))
  24.     (mapcar 'set
  25.             '(p11 p21)
  26.             (_getoffsetpoints d p1 p2)
  27.     )
  28.     (xdrx_grdraw 6 p11 p21)
  29.   )
  30.   (defun _print        ()
  31.     (princ (strcat "\n当前设置: "
  32.                    (cond
  33.                      ((zerop (xd::symbol:get 'dimension_mode))
  34.                       "水平; "
  35.                      )
  36.                      ((= (xd::symbol:get 'dimension_mode) 1)
  37.                       "垂直; "
  38.                      )
  39.                      (t "任意角度; ")
  40.                    )
  41.                    "距离 :"
  42.                    (rtos (xd::symbol:get 'dimension_space) 2 3)
  43.            )
  44.     )
  45.   )
  46.   (if (not (xd::symbol:get 'DIMENSION_LAYER))
  47.     (xd::symbol:put 'DIMENSION_LAYER (getvar "clayer"))
  48.   )
  49.   (if (not (xd::symbol:get 'DIMENSION_SpaCE))
  50.     (xd::symbol:put
  51.       'DIMENSION_SpaCE
  52.       (/ (getvar "viewsize") 5.0)
  53.     )
  54.   )
  55.   (if (not (xd::symbol:get 'DIMENSION_Mode))
  56.     (xd::symbol:put 'DIMENSION_Mode 0)
  57.   )
  58.   (setq flag t)
  59.   (while (and flag
  60.               (progn
  61.                 (_print)
  62.                 (initget 128 "C D V H A")
  63.                 (setq p1 (getpoint
  64.                            "\n第一点[设置图层(C)/设置距离(D)/水平(H)/垂直(V)/任意角度(A)]: "
  65.                          )
  66.                 )
  67.               )
  68.          )
  69.     (cond
  70.       ((= p1 "C")
  71.        (if (setq e (car (entsel "\n拾取标准实体图层: ")))
  72.          (xd::symbol:put
  73.            'DIMENSION_LAYER
  74.            (xdrx_getpropertyvalue e "layer")
  75.          )
  76.        )
  77.       )
  78.       ((= p1 "D")
  79.        (if (setq d (getdist "\n距离: "))
  80.          (xd::symbol:put 'DIMENSION_SAPCE d)
  81.        )
  82.       )
  83.       ((= p1 "H") (xd::symbol:put 'dimension_mode 1))
  84.       ((= p1 "V") (xd::symbol:put 'dimension_mode 0))
  85.       ((= p1 "A") (xd::symbol:put 'dimension_mode 2))
  86.       ((= (type p1) 'LIST) (setq flag nil))
  87.       (t)
  88.     )
  89.   )
  90.   (if (= (type p1) 'LIST)
  91.     (progn
  92.       (if (= (xd::symbol:get 'dimension_mode) 2)
  93.         (xdrx_sysvar_push '("orthomode" 0))
  94.         (xdrx_sysvar_push '("orthomode" 1))
  95.       )
  96.       (if (setq p2 (getpoint p1 "\n第二点: "))
  97.         (progn
  98.           (mapcar 'set
  99.                   '(p1 p2)
  100.                   (if (>= (angle p1 p2) (/ pi 2))
  101.                     (list p2 p1)
  102.                     (list p1 p2)
  103.                   )
  104.           )
  105.           (if (setq ss (ssget "F"
  106.                               (list p1
  107.                                     p2
  108.                               )
  109.                               (list (cons 8 (xd::symbol:get 'dimension_layer))
  110.                                     '(0 . "*line")
  111.                               )
  112.                        )
  113.               )
  114.             (progn
  115.               (xdrx_pointmonitor)
  116.               (setq pts        (mapcar        (function (lambda (x) (last (last x))))
  117.                                 (ssnamex ss)
  118.                         )
  119.                     vec        (mapcar '- p2 p1)
  120.                     p        (car (_getoffsetpoints
  121.                                (* 2 (xd::symbol:get 'dimension_space))
  122.                                p1
  123.                                p2
  124.                              )
  125.                         )
  126.               )
  127.               (if pts
  128.                 (setq elst (mapcar '(lambda (x y)
  129.                                       (xdrx_dimension_makerotate x y p (angle p1 p2))
  130.                                     )
  131.                                    pts
  132.                                    (cdr pts)
  133.                            )
  134.                 )
  135.               )
  136.               (xdrx_pointmonitor "callback")
  137.               (getpoint)
  138.               (xdrx_pointmonitor)
  139.             )
  140.           )
  141.         )
  142.       )
  143.     )
  144.   )
  145.   (princ)
  146. )
dim.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 51个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2016-5-22 16:30:41 | 显示全部楼层
或者 给 标注点距离和界线长度两个参数,拖动的是MOVE,不过这样也不用拖动了:P,这样适合直接画,更快。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2016-5-22 16:32:03 | 显示全部楼层
Lispboy 发表于 2016-5-22 16:28
给个 标注点 和 最下面的实体的 距离参数吧,拖动的是基线的位置

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2016-5-22 16:32:38 | 显示全部楼层
还有一个, 给定 标注点距离和界线长度, 拖动的是上下翻转, 上面标或者下面标。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2016-5-22 16:33:11 | 显示全部楼层
Lispboy 发表于 2016-5-22 16:30
或者 给 标注点距离和界线长度两个参数,拖动的是MOVE,不过这样也不用拖动了,这样适合直接画,更快。

基线拖动时标注可能会有合并或者增加情况

点评

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2016-5-22 16:35:26 | 显示全部楼层
st788796 发表于 2016-5-22 16:33
基线拖动时标注可能会有合并或者增加情况

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2016-5-22 16:36:36 | 显示全部楼层
Lispboy 发表于 2016-5-22 16:34
哈哈,你也想写这个了,我本想的,让给你吧,我不写这个了,我写了一个另外的一个**标注的,一会发上来。

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2016-5-22 16:37:04 | 显示全部楼层
标注方向按当前UCS X轴, X轴就是个丁字尺,什么方向让用户设置UCS来定。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2016-5-22 16:39:57 | 显示全部楼层
Lispboy 发表于 2016-5-22 16:37
标注方向按当前UCS X轴, X轴就是个丁字尺,什么方向让用户设置UCS来定。


基线位置不同会有不同的 F 交点
20160522163319.jpg

点评

向**拷贝那样,别定红线了,不方便,API支持一键回车了,用关键字, 翻转,移动。让用户自己灵活控制。 用户定界线长度, 加个选择判断是否加第二排全长标注。我觉得做个函数比较好,第一排,第二排参数控制。命令  详情 回复 发表于 2016-5-22 16:45
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2016-5-22 16:45:19 | 显示全部楼层
st788796 发表于 2016-5-22 16:39
基线位置不同会有不同的 F 交点

向**拷贝那样,别定红线了,不方便,API支持一键回车了,用关键字, 翻转,移动。让用户自己灵活控制。
用户定界线长度, 加个选择判断是否加第二排全长标注。我觉得做个函数比较好,第一排,第二排参数控制。命令直接调函数。方便以后修改功能。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2016-5-22 16:48:29 | 显示全部楼层
另外,要支持图块、无边界的填充啊,用图块的轮廓线和直线相交求交点。上面这些都是我以前想的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2016-5-23 08:03:05 | 显示全部楼层
Lispboy 发表于 2016-5-22 16:48
另外,要支持图块、无边界的填充啊,用图块的轮廓线和直线相交求交点。上面这些都是我以前想的。

经测试 填充只能用 XdGe 来求交点了,另外 填充 如果有孔洞的需要哪些交点?
图块用平行 UCS 的 BOX 边界交点?

点评

拉长线 标注这些应该都是标最大的轮廓的,填充标注个最大的边界就行了,要细部标注填充另外在提供工具吧。 插件论坛不是有个求块的轮廓线的吗,别用BOX,用轮廓和线的交点,API有个SEARCHOUTLINE吧。  详情 回复 发表于 2016-5-23 08:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-5-23 08:19:44 | 显示全部楼层
st788796 发表于 2016-5-23 08:03
经测试 填充只能用 XdGe 来求交点了,另外 填充 如果有孔洞的需要哪些交点?
图块用平行 UCS 的 BOX 边 ...

拉长线 标注这些应该都是标最大的轮廓的,填充标注个最大的边界就行了,要细部标注填充另外在提供工具吧。
插件论坛不是有个求块的轮廓线的吗,别用BOX,用轮廓和线的交点,API有个SEARCHOUTLINE吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 08:57 , Processed in 0.523124 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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