找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4880|回复: 15

[编程申请] 检查坐标标注的原点

[复制链接]

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-8-14 09:13:23 | 显示全部楼层 |阅读模式
悬赏50D豆已解决
本帖最后由 lucas3 于 2014-8-14 09:59 编辑


先选择原点,框选标注(只针对坐标标注,过滤其它),检查座标标注的的原点是否在选择的那个原点,如果不是,就改色,(红色或黄色,如果标注是红色,就改黄色……)并显示出信息:有几个标注的原点不在指定的原点位上。

最佳答案

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2014-8-14 09:13:24 | 显示全部楼层
本帖最后由 Free-Lancer 于 2014-8-16 16:15 编辑
lucas3 发表于 2014-8-14 16:13
看起来还挺复杂的呀,

很简单啊!
  1. (defun c:tt (/ p ss i e el pt typ len)
  2.   (if (and (setq p (getpoint "\nBase Point: "))
  3.            (setq ss (ssget '((0 . "Dimension") (-4 . "&=") (70 . 6))))
  4.       )
  5.     (progn
  6.       (setq p (trans p 1 0)
  7.             i (sslength ss)
  8.       )
  9.       (while (setq e (ssname ss (setq i (1- i))))
  10.         (setq el  (entget e)
  11.               pt  (cdr (assoc 13 el))
  12.               typ (cdr (assoc 70 el))
  13.         )
  14.         (if (= (setq len (cdr (assoc 1 el))) "")
  15.           (setq len (cdr (assoc 42 el)))
  16.           (setq len (distof len))
  17.         )
  18.         (if (= 64 (logand 64 typ))
  19.           (if (not (equal len (abs (- (car p) (car pt))) 1e-3))
  20.             (entmod (append el '((62 . 2)))) ;_黄色
  21.             (entmod (append el '((62 . 256)))) ;_恢复图层颜色
  22.           )
  23.           (if (not (equal len (abs (- (cadr p) (cadr pt))) 1e-3))
  24.             (entmod (append el '((62 . 2))))
  25.             (entmod (append el '((62 . 256))))
  26.           )
  27.         )
  28.       )
  29.     )
  30.   )
  31.   (princ)
  32. )

点评

Free-Lancer大师,发现一个BUG啊[attachimg]9382[/attachimg] 如图所示,我使用左下角原点1标注的左边的矩形, 使用右下角原点2标注的右边的矩形 然后使用您的检查程序,基点指定为左下角的原点1,框选标注  详情 回复 发表于 2014-8-16 08:51
再次感谢Free-Lancer大师,又一次帮助了我!谢谢!  详情 回复 发表于 2014-8-14 18:21

评分

参与人数 1D豆 +5 收起 理由
lucas3 + 5 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-8-14 10:20:13 | 显示全部楼层
你用什么工具标注的一般都有检查功能,除非是自己一个个写上去的,另外,坐标一般都应该有自己的图层

点评

怎么检查? 坐标标注同一般标注都属于标注层,坐标标注_dimordinate 以原UCS 0,0 为原点的,移动ucs后,再运行dimordinate标注,它们的原点都不一样了!  详情 回复 发表于 2014-8-14 11:13
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-14 11:13:48 | 显示全部楼层
csharp 发表于 2014-8-14 10:20
你用什么工具标注的一般都有检查功能,除非是自己一个个写上去的,另外,坐标一般都应该有自己的图层

怎么检查? 坐标标注同一般标注都属于标注层,坐标标注_dimordinate 以原UCS 0,0 为原点的,移动ucs后,再运行dimordinate标注,它们的原点都不一样了!

点评

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

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-8-14 11:48:20 来自手机 | 显示全部楼层
lucas3 发表于 2014-8-14 11:13
怎么检查? 坐标标注同一般标注都属于标注层,坐标标注_dimordinate 以原UCS 0,0 为原点的,移动ucs后 ...

把dwg发上来,用图说话

点评

[attachimg]9359[/attachimg]如图所示,使用两个不同原点标注出来的,实际画图中,一张图只有一个座标原点,有时不小心或者他人移动过UCS,标注出来就会出问题,所以想 运行程序后,指定一个原点,框选坐标标注,来  详情 回复 发表于 2014-8-14 13:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-14 13:00:32 | 显示全部楼层
本帖最后由 lucas3 于 2014-8-14 13:01 编辑
csharp 发表于 2014-8-14 11:48
把dwg发上来,用图说话

tt.png 如图所示,使用两个不同原点标注出来的,实际画图中,一张图只有一个座标原点,有时不小心或者他人移动过UCS,标注出来就会出问题,所以想
运行程序后,指定一个原点,框选坐标标注,来判断哪些标注不是基于此原点标注出来的,DWG在附件中,谢谢!





Drawing.rar

11.18 KB, 下载次数: 2

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

使用道具 举报

发表于 2014-8-14 15:12:45 | 显示全部楼层
lucas3 发表于 2014-8-14 13:00
如图所示,使用两个不同原点标注出来的,实际画图中,一张图只有一个座标原点,有时不小心或者他人移动过 ...


  1. (defun c:tt (/ p ss)
  2.   (if (and (setq p (getpoint "\nBase Point: "))
  3.            (setq ss (ssget '((0 . "Dimension") (-4 . "&=") (70 . 6))))
  4.       )
  5.     (progn
  6.       (setq p (trans p 1 0))
  7.       (mapcar '(lambda (x / pt len)
  8.                  (setq pt (xdrx_getpropertyvalue
  9.                            x
  10.                            "DefiningPoint"
  11.                          )
  12.                  )
  13.                  (if (= (xdrx_getpropertyvalue x "DimensionText") "")
  14.                    (setq len (xdrx_getpropertyvalue x "Measurement"))
  15.                    (setq
  16.                      len (distof
  17.                            (xdrx_getpropertyvalue x "DimensionText")
  18.                          )
  19.                    )
  20.                  )
  21.                  (if (xdrx_getpropertyvalue x "IsUsingXAxis")
  22.                    (if (not (equal len (abs (- (car p) (car pt))) 1e-3))
  23.                      (xdrx_entity_setcolor x 2)
  24.                    )
  25.                    (if (not (equal len (abs (- (cadr p) (cadr pt))) 1e-3))
  26.                      (xdrx_entity_setcolor x 2)
  27.                    )
  28.                  )
  29.                )
  30.               (xdrx_pickset->ents ss)
  31.       )
  32.     )
  33.   )
  34.   (princ)
  35. )

点评

大师,是这样的效果,可是又要加载API,能不能不用API呀,用您的函数库,好不?  详情 回复 发表于 2014-8-14 15:31

评分

参与人数 1D豆 +5 收起 理由
lucas3 + 5 乐于助人!

查看全部评分

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

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-14 15:31:56 | 显示全部楼层

大师,是这样的效果,可是又要加载API,能不能不用API呀,用您的函数库,好不?

点评

这个不能用 ActiveX 了,对坐标标注类型在你这个应用中实在没有可用的,只能用 Autolisp 的 DXF 组码,10 是标注点(DefiningPoint),70 运算才可以判断 X 、Y标注类型(IsUsingXAxis),1 是否手动输入(DimensionText  详情 回复 发表于 2014-8-14 16:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2014-8-14 16:08:24 | 显示全部楼层
lucas3 发表于 2014-8-14 15:31
大师,是这样的效果,可是又要加载API,能不能不用API呀,用您的函数库,好不?

这个不能用 ActiveX 了,对坐标标注类型在你这个应用中实在没有可用的,只能用 Autolisp 的 DXF 组码,10 是标注点(DefiningPoint),70 运算才可以判断 X 、Y标注类型(IsUsingXAxis),1 是否手动输入(DimensionText),42 实际测量值(Measurement)

知道了这些,用 ssname 遍历改写上面的程序即可

64 = 坐标类型。这是一个仅通过整数值 6 使用的位值(位 7)。如果设置此位,坐标为 X 类型;如果不设置此位,坐标为 Y 类型


点评

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

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-14 16:13:39 | 显示全部楼层
Free-Lancer 发表于 2014-8-14 16:08
这个不能用 ActiveX 了,对坐标标注类型在你这个应用中实在没有可用的,只能用 Autolisp 的 DXF 组码,1 ...

看起来还挺复杂的呀,{:soso_e109:}{:soso_e109:}{:soso_e109:}

点评

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

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-14 18:21:11 | 显示全部楼层

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

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-16 08:51:05 | 显示全部楼层

Free-Lancer大师,发现一个BUG啊 BUG.png

如图所示,我使用左下角原点1标注的左边的矩形, 使用右下角原点2标注的右边的矩形
然后使用您的检查程序,基点指定为左下角的原点1,框选标注检测,结果是右边图形的Y坐标
变色,这不对啊,无论使用原点1或原点2,Y坐标都是一样的啊,应改是X坐标变色才对
大师,您给看一看

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

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-8-16 09:56:29 | 显示全部楼层
本帖最后由 csharp 于 2014-8-16 10:48 编辑

发现这个标注 标不出 负坐标
你的右侧图形,在右下角为原点时 X 应为 负值,实际标注为正值,这是 CAD  的 BUG
20140816104657.jpg

点评

是的,这个BUG我知道,如果要正负坐标可以用Free-lancer大师的那个文字替代的方式,现在不考虑这个BUG,就拿我那个图片来讲,应该变色的是X轴座标,而不是Y轴座标,因为两个座标原点的Y轴在一条线上  详情 回复 发表于 2014-8-16 15:53
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-16 15:53:31 | 显示全部楼层
csharp 发表于 2014-8-16 09:56
发现这个标注 标不出 负坐标
你的右侧图形,在右下角为原点时 X 应为 负值,实际标注为正值,这是 CAD  的 ...

是的,这个BUG我知道,如果要正负坐标可以用Free-lancer大师的那个文字替代的方式,现在不考虑这个BUG,就拿我那个图片来讲,应该变色的是X轴座标,而不是Y轴座标,因为两个座标原点的Y轴在一条线上

点评

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

使用道具 举报

发表于 2014-8-16 16:16:33 | 显示全部楼层
lucas3 发表于 2014-8-16 15:53
是的,这个BUG我知道,如果要正负坐标可以用Free-lancer大师的那个文字替代的方式,现在不考虑这个BUG,就 ...

有两处搞混了,重新下载

点评

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-20 09:54 , Processed in 0.214071 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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