找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1912|回复: 11

[编程申请] 求完善下高版本CAD的QDIM命令

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

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

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

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

×
本帖最后由 marting 于 2016-5-5 17:43 编辑

如图是2015下的QDIM命令,但是箭头位置的标注明显是不符合习惯的,能不能功能也想QDIM一样,但是把这种遮挡在后面的DIM不标呢?

搜狗截图20160505171508.png

搜狗截图20160505173546.png

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

已领礼包: 859个

财富等级: 财运亨通

发表于 2016-5-5 19:13:20 | 显示全部楼层
没看到 DIM 啊

点评

[attachimg]53111[/attachimg] 拖动时候看不到DIM的,所以截图看不到,画出来就是这样的,中间第二个标注应该不要的。你试试红色的图形用QDIM标注下。  详情 回复 发表于 2016-5-5 19:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

 楼主| 发表于 2016-5-5 19:58:41 | 显示全部楼层

搜狗截图20160505195338.png

拖动时候看不到DIM的,所以截图看不到,画出来就是这样的,中间第二个标注应该不要的。你试试红色的图形用QDIM标注下。

点评

低版本的qdim没有中间的? 每日插件中有个三视图节点投影,类似吧,所有实体的stretchpoint 到 线投影交点  详情 回复 发表于 2016-5-5 20:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2016-5-5 20:25:44 来自手机 | 显示全部楼层
marting 发表于 2016-5-5 19:58
拖动时候看不到DIM的,所以截图看不到,画出来就是这样的,中间第二个标注应该不要的。你试试红色的 ...

低版本的qdim没有中间的?
每日插件中有个三视图节点投影,类似吧,所有实体的stretchpoint 到 线投影交点

点评

我们的CAD版本最低是2012,没用过再低的,不知道低版本什么样。大师能不能写一个,以前看过的类似的帖子的都是不能过滤掉应该遮挡在后面不标注的。  详情 回复 发表于 2016-5-5 22:24
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

 楼主| 发表于 2016-5-5 22:24:16 | 显示全部楼层
iLisp 发表于 2016-5-5 20:25
低版本的qdim没有中间的?
每日插件中有个三视图节点投影,类似吧,所有实体的stretchpoint 到 线投影交 ...

我们的CAD版本最低是2012,没用过再低的,不知道低版本什么样。大师能不能写一个,以前看过的类似的帖子的都是不能过滤掉应该遮挡在后面不标注的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2016-5-6 00:24:32 | 显示全部楼层
本帖最后由 csharp 于 2016-5-6 01:08 编辑

适合封闭 lwPolyline

  1. (defun polylines:project (ss p1 p2 / polyline:project lst retlst)
  2.   (defun polyline:project (cv p1 p2 / v lst vl start end mid i retlst)
  3.     (setq v        (mapcar '- p2 p1)
  4.           i        -1
  5.           lst        (mapcar        '(lambda (x / vv)
  6.                            (setq vv (trans (mapcar '- x p1) 0 v))
  7.                            (list (car vv) (last vv) (setq i (1+ i)))
  8.                          )
  9.                         (xdrx_entity_getstretchpoint cv)
  10.                 )
  11.           vl        (vl-sort lst '(lambda (l1 l2) (< (cadr l1) (cadr l2))))
  12.           start        (car vl)
  13.           end        (last vl)
  14.           mid        (car (vl-sort lst '(lambda (l1 l2) (< (car l1) (car l2)))))
  15.           lst        (mapcar        '(lambda (x / p)
  16.                            (setq p (xdrx_curve_getpointatparam cv x))
  17.                            (list (distance p p1) p)
  18.                          )
  19.                         (xd::geom:numdiv
  20.                           (caddr start)
  21.                           (caddr end)
  22.                           (list (xdrx_polyline_numverts cv) 1.0)
  23.                         )
  24.                 )
  25.     )
  26.     (foreach x lst
  27.       (if retlst
  28.         (cond
  29.           ((> (car x) (caar retlst))
  30.            (setq retlst (cons x retlst))
  31.           )
  32.           ((< (car x) (caar retlst))
  33.            (setq retlst (cons x (cdr retlst)))
  34.           )
  35.           (t)
  36.         )
  37.         (setq retlst (cons x retlst))
  38.       )
  39.     )
  40.     (reverse retlst)
  41.   )
  42.   (setq        lst (mapcar '(lambda (x) (polyline:project x p1 p2))
  43.                     (xdrx_pickset->ents ss)
  44.             )
  45.         lst (vl-sort lst '(lambda (x1 x2) (< (caar x1) (caar x2))))
  46.   )
  47.   (foreach x lst
  48.     (foreach a x
  49.       (if retlst
  50.         (if(> (car a) (caar retlst))
  51.            (setq retlst (cons a retlst)))          
  52.         (setq retlst (cons a retlst))
  53.       )
  54.     )
  55.   )
  56.   (reverse (mapcar 'cadr retlst))
  57. )
  58. (defun c:tt (/ ss p1 p2 pts)
  59.   (if (and (setq ss (ssget '((0 . "lwpolyline") (-4 . "&=") (70 . 1))))
  60.            (setq p1 (getpoint "\nBase point: "))
  61.            (setq p2 (getpoint p1 "\nDirection point: "))
  62.       )
  63.     (progn
  64.       (setq pts        (polylines:project ss p1 p2)
  65.             an        (angle p1 p2)
  66.       )
  67.       (mapcar '(lambda (x y)
  68.                  (xdrx_dimension_makerotate x y p1 an)
  69.                )
  70.               pts
  71.               (cdr pts)
  72.       )
  73.     )
  74.   )
  75.   (princ)
  76. )
20160506002142.jpg

点评

谢谢大师,测试了下,还有点问题,帮忙看看。 1, 在WCS下 [attachimg]53118[/attachimg] 2. 在UCS下 [attachimg]53117[/attachimg]  详情 回复 发表于 2016-5-6 08:31

评分

参与人数 1D豆 +5 收起 理由
marting + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

 楼主| 发表于 2016-5-6 08:31:19 | 显示全部楼层
csharp 发表于 2016-5-6 00:24
适合封闭 lwPolyline

谢谢大师,测试了下,还有点问题,帮忙看看。
1, 在WCS下

搜狗截图20160506082524.png

2. 在UCS下

搜狗截图20160506082345.png

点评

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

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2016-5-6 23:44:44 | 显示全部楼层
本帖最后由 csharp 于 2016-5-6 23:58 编辑
marting 发表于 2016-5-6 08:31
谢谢大师,测试了下,还有点问题,帮忙看看。
1, 在WCS下

再试试

  1. (defun polylines:project (ss p1 p2 / polyline:project lst retlst)
  2.   (defun polyline:project (cv p1 p2 / v lst vl start end mid i retlst an)
  3.     (setq v        (mapcar '- p2 p1)
  4.           i        -1
  5.           lst        (mapcar        '(lambda (x / vv)
  6.                            (setq vv (trans (mapcar '- x p1) 0 v))
  7.                            (list (setq i (1+ i)) (car vv) (last vv))
  8.                          )
  9.                         (xdrx_entity_getstretchpoint cv)
  10.                 )
  11.           vl        (vl-sort lst '(lambda (l1 l2) (< (last l1) (last l2))))
  12.           start        (car vl)
  13.           end        (last vl)
  14.           mid        (car
  15.                   (vl-sort lst
  16.                            '(lambda (l1 l2) (< (abs (cadr l1)) (abs (cadr l2))))
  17.                   )
  18.                 )
  19.           parms        (xd::geom:numdiv
  20.                   (car start)
  21.                   (car end)
  22.                   (if (or (< (car start) (car mid) (car end))
  23.                           (< (car end) (car mid) (car start))
  24.                       )
  25.                     1.0
  26.                     (list (xdrx_polyline_numverts cv) 1.0)
  27.                   )
  28.                 )
  29.     )
  30.     (if        (not (member (car mid) parms))
  31.       (setq parms (apply 'xd::geom:numdiv
  32.                          (append (vl-sort (list (car start) (car end)) '<) '(1.0))
  33.                   )
  34.       )
  35.     )
  36.     (if        (not (= (car parms) (car start)))
  37.       (setq parms (reverse parms))
  38.     )
  39.     (setq lst (mapcar '(lambda (x / p)
  40.                          (setq p (xdrx_curve_getpointatparam cv x))
  41.                          (list (cdr (assoc x lst)) p)
  42.                        )
  43.                       parms
  44.               )
  45.     )
  46.     (foreach x lst
  47.       (if retlst
  48.         (progn
  49.           (while (and retlst (< (cadar x) (cadaar retlst)))
  50.             (setq retlst (cdr retlst))
  51.           )
  52.           (setq retlst (cons x retlst))
  53.         )
  54.         (setq retlst (cons x retlst))
  55.       )
  56.     )
  57.     (reverse retlst)
  58.   )
  59.   (setq        lst (mapcar '(lambda (x) (polyline:project x p1 p2))
  60.                     (xdrx_pickset->ents ss)
  61.             )
  62.         lst (vl-sort lst
  63.                      (function (lambda (x1 x2 / l1 l2)
  64.                                  (setq l1 (caar x1)
  65.                                        l2 (caar x2)
  66.                                  )
  67.                                  (if (equal (cadr l1) (cadr l2) 0.00001)
  68.                                    (< (car l1) (car l2))
  69.                                    (< (abs (cadr l1)) (abs (cadr l2)))
  70.                                  )
  71.                                )
  72.                      )
  73.             )
  74.   )
  75.   (foreach x lst
  76.     (foreach a x
  77.       (if retlst
  78.         (progn
  79.           (while (and retlst
  80.                       (< (cadar a) (cadaar retlst))
  81.                       (< (abs (caar a)) (abs (caaar retlst)))
  82.                  )
  83.             (setq retlst (cdr retlst))
  84.           )
  85.           (if (> (cadar a) (cadaar retlst))
  86.             (setq retlst (cons a retlst))
  87.           )
  88.         )
  89.         (setq retlst (cons a retlst))
  90.       )
  91.     )
  92.   )
  93.   (reverse (mapcar 'cadr retlst))
  94. )
  95. (defun c:tt (/ ss p1 p2 pts)
  96.   (if (and (setq ss (ssget '((0 . "lwpolyline") (-4 . "&=") (70 . 1))))
  97.            (setq p1 (getpoint "\nBase point: "))
  98.            (setq p2 (getpoint p1 "\nDirection point: "))
  99.       )
  100.     (progn
  101.       (setq pts        (polylines:project ss (trans p1 1 0) (trans p2 1 0))
  102.             an        (angle (trans p1 1 0) (trans p2 1 0))
  103.       )
  104.       (mapcar '(lambda (x y)
  105.                  (xdrx_dimension_makerotate x y (trans p1 1 0) an)
  106.                )
  107.               pts
  108.               (cdr pts)
  109.       )
  110.     )
  111.   )
  112.   (princ)
  113. )
20160509.gif

点评

另外,能否向QDIM一样,不用用户去选择起始点和方向,就平行于当前的X轴和Y轴,然后也能动态拖动,这样好实现吗?  详情 回复 发表于 2016-5-7 13:39
谢谢大师,基本很完美了呢,但是下面这个图形出现点瑕疵,您看看 [attachimg]53130[/attachimg]  详情 回复 发表于 2016-5-7 13:38
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

 楼主| 发表于 2016-5-7 13:38:28 | 显示全部楼层

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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

 楼主| 发表于 2016-5-7 13:39:43 | 显示全部楼层

另外,能否向QDIM一样,不用用户去选择起始点和方向,就平行于当前的X轴和Y轴,然后也能动态拖动,这样好实现吗?

点评

四个方向标注,xd::entity:box 需要用修改的版本,动态后续再加  详情 回复 发表于 2016-5-8 01:10
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2016-5-8 01:10:35 | 显示全部楼层
marting 发表于 2016-5-7 13:39
另外,能否向QDIM一样,不用用户去选择起始点和方向,就平行于当前的X轴和Y轴,然后也能动态拖动,这样好 ...


四个方向标注,xd::entity:box 需要用修改的版本,动态后续再加

  1. (defun xd::pnt:Quadrant        (p pbox / pbox por a a1 a2 a3 a4)
  2.   (setq        por (mapcar '*
  3.                     '(0.5 0.5 0.0)
  4.                     (mapcar '+ (car pbox) (caddr pbox))
  5.             )
  6.         a1  (angle por (caddr pbox))
  7.         a2  (angle por (last pbox))
  8.         a3  (angle por (car pbox))
  9.         a4  (angle por (cadr pbox))
  10.         a   (angle por p)
  11.   )
  12.   (cond
  13.     ((or (> a a4) (<= a a1)) 1)
  14.     ((or (> a a1) (<= a a2)) 2)
  15.     ((or (> a a2) (<= a a3)) 3)
  16.     (t 4)
  17.   )
  18. )
  19. (defun polylines:project (ss p1 p2 / polyline:project lst retlst)
  20.   (defun polyline:project (cv p1 p2 / v lst vl start end mid i retlst an)
  21.     (setq v        (mapcar '- p2 p1)
  22.           i        -1
  23.           lst        (mapcar        '(lambda (x / vv)
  24.                            (setq vv (trans (mapcar '- x p1) 0 v))
  25.                            (list (setq i (1+ i)) (car vv) (last vv))
  26.                          )
  27.                         (xdrx_entity_getstretchpoint cv)
  28.                 )
  29.           vl        (vl-sort lst '(lambda (l1 l2) (< (last l1) (last l2))))
  30.           start        (car vl)
  31.           end        (last vl)
  32.           mid        (car
  33.                   (vl-sort lst
  34.                            '(lambda (l1 l2) (< (abs (cadr l1)) (abs (cadr l2))))
  35.                   )
  36.                 )
  37.           parms        (xd::geom:numdiv
  38.                   (car start)
  39.                   (car end)
  40.                   (if (or (< (car start) (car mid) (car end))
  41.                           (< (car end) (car mid) (car start))
  42.                       )
  43.                     1.0
  44.                     (list (xdrx_polyline_numverts cv) 1.0)
  45.                   )
  46.                 )
  47.     )
  48.     (if        (not (member (car mid) parms))
  49.       (setq parms (apply 'xd::geom:numdiv
  50.                          (append (vl-sort (list (car start) (car end)) '<) '(1.0))
  51.                   )
  52.       )
  53.     )
  54.     (if        (not (= (car parms) (car start)))
  55.       (setq parms (reverse parms))
  56.     )
  57.     (setq lst (mapcar '(lambda (x / p)
  58.                          (setq p (xdrx_curve_getpointatparam cv x))
  59.                          (list (cdr (assoc x lst)) p)
  60.                        )
  61.                       parms
  62.               )
  63.     )
  64.     (foreach x lst
  65.       (if retlst
  66.         (progn
  67.           (while (and retlst
  68.                       (< (cadar x) (cadaar retlst))
  69.                       (< (abs (caar x)) (abs (caaar retlst)))
  70.                  )
  71.             (setq retlst (cdr retlst))
  72.           )
  73.           (setq retlst (cons x retlst))
  74.         )
  75.         (setq retlst (cons x retlst))
  76.       )
  77.     )
  78.     (reverse retlst)
  79.   )
  80.   (setq        lst (mapcar '(lambda (x) (polyline:project x p1 p2))
  81.                     (xdrx_pickset->ents ss)
  82.             )
  83.         lst (vl-sort lst
  84.                      (function (lambda (x1 x2 / l1 l2)
  85.                                  (setq l1 (caar x1)
  86.                                        l2 (caar x2)
  87.                                  )
  88.                                  (if (equal (cadr l1) (cadr l2) 0.00001)
  89.                                    (< (car l1) (car l2))
  90.                                    (< (abs (cadr l1)) (abs (cadr l2)))
  91.                                  )
  92.                                )
  93.                      )
  94.             )
  95.   )
  96.   (foreach x lst
  97.     (foreach a x
  98.       (if retlst
  99.         (progn
  100.           (while (and retlst
  101.                       (< (cadar a) (cadaar retlst))
  102.                       (< (abs (caar a)) (abs (caaar retlst)))
  103.                  )
  104.             (setq retlst (cdr retlst))
  105.           )
  106.           (if (> (cadar a) (cadaar retlst))
  107.             (setq retlst (cons a retlst))
  108.           )
  109.         )
  110.         (setq retlst (cons a retlst))
  111.       )
  112.     )
  113.   )
  114.   (reverse (mapcar 'cadr retlst))
  115. )
  116. (defun c:tt (/ ss pucsbox pwcsbox pbox)
  117.   (if (setq ss (ssget '((0 . "lwpolyline") (-4 . "&=") (70 . 1))))
  118.     (progn
  119.       (setq pucsbox (xd::entity:box ss)
  120.             pwcsbox (xd::pnts:ucs2wcs pucsbox)
  121.             pbox    (apply 'xdrx_points_offset
  122.                            (cons 100. (xd::pnts:close pwcsbox))
  123.                     )
  124.       )
  125.       (mapcar
  126.         (function
  127.           (lambda (p1 p2 / pts)
  128.             (setq pts (polylines:project ss p1 p2))
  129.             (mapcar '(lambda (x y)
  130.                        (xdrx_dimension_makerotate x y p1 (angle p1 p2))
  131.                      )
  132.                     pts
  133.                     (cdr pts)
  134.             )
  135.           )
  136.         )
  137.         pbox
  138.         (cdr (xd::pnts:close pbox))
  139.       )
  140.     )
  141.   )
  142.   (princ)
  143. )

点评

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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

 楼主| 发表于 2016-5-17 09:08:31 | 显示全部楼层
csharp 发表于 2016-5-8 01:10
四个方向标注,xd::entity:box 需要用修改的版本,动态后续再加

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 16:22 , Processed in 0.318836 second(s), 64 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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