找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3537|回复: 8

[编程申请] 请求对坐标标注来个小改造

[复制链接]

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-8-15 16:03:05 | 显示全部楼层 |阅读模式
悬赏50D豆已解决
首先说明的是,不需要自动坐标标注,只是对CAD自带的坐标标注做一些小改造
CAD自带的坐标标注,一次只能标一次,要不停重复按空格键才能继续标注

我的想法是,运行命令后,拾取一点可以将XY坐标都标上,可连续标注,不需按空格,
存在的问题是,标注线的长短控制,是否可设定?
标注的方向,分为左上,右上,左下,右下,是否可用按键切换?
sshot-4.png


最佳答案

查看完整内容

标注当前坐标系
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2014-8-15 16:03:06 | 显示全部楼层
本帖最后由 Free-Lancer 于 2014-8-15 21:55 编辑
lucas3 发表于 2014-8-15 19:58
Free-Lancer大师:您好!感谢您的帮助!与我想想的有些差异,您这个有点像自动圆坐标标注
我的想法是
...


标注当前坐标系
  1. (defun c:Tt (/ tf p d px py vx vy per)
  2.   (if (not $globledirct)
  3.     (setq $globledirct "3")
  4.   )
  5.   (if (not $globledimx)
  6.     (setq $globledimx (getvar "textsize"))
  7.   )
  8.   (if (not $globledimy)
  9.     (setq $globledimy (getvar "textsize"))
  10.   )
  11.   (fy:begin)
  12.   (while (progn
  13.            (prompt (strcat "\n当前设置 X = "
  14.                            (vl-princ-to-string $globledimx)
  15.                            "; Y = "
  16.                            (vl-princ-to-string $globledimy)
  17.                            "; 第 "
  18.                            $globledirct
  19.                            " 象限"
  20.                    )
  21.            )
  22.            (initget "X Y S" 128)
  23.            (setq p
  24.                   (getpoint
  25.                     "\n拾取点或[X间隙(X)/Y间隙(Y)/设置标注象限(S)]: "
  26.                   )
  27.            )
  28.            (cond
  29.              ((or (= p "X") (= p "x"))
  30.               (if (setq d (getdist "\n拾取X标注方向间隙: "))
  31.                 (setq $globledimx d)
  32.               )
  33.               (setq tf t)
  34.              )
  35.              ((or (= p "Y") (= p "y"))
  36.               (if (setq d (getdist "\n拾取Y标注方向间隙: "))
  37.                 (setq $globledimy d)
  38.               )
  39.               (setq tf t)
  40.              )
  41.              ((or (= p "S") (= p "s"))
  42.               (initget "1 2 3 4")
  43.               (if (setq
  44.                     kw (getkword "\n标注象限[(1)/(2)/(3)/(4)]: ")
  45.                   )
  46.                 (setq $globledirct kw)
  47.               )
  48.               (setq tf t)
  49.              )
  50.              ((= (type p) 'List) (setq tf t))
  51.              (t (setq tf nil))
  52.            )
  53.            tf
  54.          )
  55.     (if        (= (type p) 'LIST)
  56.       (progn
  57.         (cond ((= $globledirct "1")
  58.                (setq py        (polar p 0 $globledimy)
  59.                      px        (polar p _pi2 $globledimx)
  60.                )
  61.               )
  62.               ((= $globledirct "2")
  63.                (setq px        (polar p _pi2 $globledimx)
  64.                      py        (polar p pi $globledimy)
  65.                )
  66.               )
  67.               ((= $globledirct "3")
  68.                (setq py        (polar p pi $globledimy)
  69.                      px        (polar p _3pi $globledimx)
  70.                )
  71.               )
  72.               (t
  73.                (setq py        (polar p 0 $globledimy)
  74.                      px        (polar p _3pi $globledimx)
  75.                )
  76.               )
  77.         )
  78.         (setq vy  (vla-AddDimOrdinate
  79.                     (fy:acspace)
  80.                     (vlax-3d-point (trans p 1 0))
  81.                     (vlax-3d-point (trans py 1 0))
  82.                     :vlax-false
  83.                   )
  84.               vx  (vla-AddDimOrdinate
  85.                     (fy:acspace)
  86.                     (vlax-3d-point (trans p 1 0))
  87.                     (vlax-3d-point (trans px 1 0))
  88.                     :vlax-true
  89.                   )
  90.               per (vla-get-PrimaryUnitsPrecision vx)
  91.         )
  92.         (vla-put-TextOverride vx (rtos (car p) 2 per))
  93.         (vla-put-TextOverride vy (rtos (cadr p) 2 per))
  94.       )
  95.     )
  96.   )
  97.   (fy:end)
  98.   (princ)
  99. )
444.gif

点评

大师,非常好!谢谢! 只是为什么用您那个《检查坐标标注的原点 》的代码来检测,全部变色了,原点正确也变色,而用dimordinate标注出的,检测就没有问题  详情 回复 发表于 2014-8-15 22:27
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2014-8-15 17:30:44 | 显示全部楼层
本帖最后由 Free-Lancer 于 2014-8-15 17:50 编辑

下载签名下的 lib.vlx , 用到了几个常量定义
  1. (defun c:tt (/ p ss px px1 py py1 vx vy per kw)
  2.   (fy:begin)
  3.   (initget "1 2 3 4" 128)
  4.   (if (not $globlekw)
  5.     (setq $globlekw "3")
  6.   )
  7.   (setq
  8.     kw (getkword
  9.          (strcat "\n[右上(1)/左上(2)/左下(3)/右下(4)]<" $globlekw ">: ")
  10.        )
  11.   )
  12.   (if (or (not kw) (= kw ""))
  13.     (setq kw $globlekw)
  14.     (setq $globlekw kw)
  15.   )
  16.   (if (and (setq p (getpoint "\nBase Point: "))
  17.            (setq ss (ssget '((0 . "CIRCLE"))))
  18.            (setq p (trans p 1 0))

  19.       )
  20.     (vlax-for circle (fy:cset)
  21.       (cond
  22.         ((= kw "1")
  23.          (setq py  (vlax-curve-getpointatparam circle 0)
  24.                py1 (polar py 0 (getvar "textsize"))
  25.                px  (vlax-curve-getpointatparam circle _pi2)
  26.                px1 (polar px _pi2 (getvar "textsize"))
  27.          )
  28.         )
  29.         ((= kw "2")
  30.          (setq px  (vlax-curve-getpointatparam circle _pi2)
  31.                px1 (polar px _pi2 (getvar "textsize"))
  32.                py  (vlax-curve-getpointatparam circle pi)
  33.                py1 (polar py pi (getvar "textsize"))
  34.          )
  35.         )
  36.         ((= kw "3")
  37.          (setq py  (vlax-curve-getpointatparam circle pi)
  38.                py1 (polar py pi (getvar "textsize"))
  39.                px  (vlax-curve-getpointatparam circle _3pi)
  40.                px1 (polar px _3pi (getvar "textsize"))
  41.          )
  42.         )
  43.         (t
  44.          (setq py  (vlax-curve-getpointatparam circle 0)
  45.                py1 (polar py 0 (getvar "textsize"))
  46.                px  (vlax-curve-getpointatparam circle _3pi)
  47.                px1 (polar px _3pi (getvar "textsize"))
  48.          )
  49.         )
  50.       )

  51.       (setq vy        (vla-AddDimOrdinate
  52.                   (fy:acspace)
  53.                   (vlax-3d-point py)
  54.                   (vlax-3d-point py1)
  55.                   :vlax-false
  56.                 )
  57.             vx        (vla-AddDimOrdinate
  58.                   (fy:acspace)
  59.                   (vlax-3d-point px)
  60.                   (vlax-3d-point px1)
  61.                   :vlax-true
  62.                 )
  63.             per        (vla-get-PrimaryUnitsPrecision vx)
  64.       )
  65.       (vla-put-TextOverride vx (rtos (- (car px) (car p)) 2 per))
  66.       (vla-put-TextOverride
  67.         vy
  68.         (rtos (- (cadr py) (cadr p)) 2 per)
  69.       )
  70.     )
  71.   )
  72.   (fy:end)
  73.   (princ)
  74. )

点评

Free-Lancer大师:您好!感谢您的帮助!与我想想的有些差异,您这个有点像自动圆坐标标注 我的想法是 1.不用选择基准点,基准点首先我会先定义好 2.不要选择对象,因为我标注的不会仅仅只是圆,只需要拾取点就  详情 回复 发表于 2014-8-15 19:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-15 19:58:31 | 显示全部楼层
Free-Lancer 发表于 2014-8-15 17:30
下载签名下的 lib.vlx , 用到了几个常量定义

Free-Lancer大师:您好!感谢您的帮助!与我想想的有些差异,您这个有点像自动圆坐标标注
我的想法是
1.不用选择基准点,基准点首先我会先定义好
2.不要选择对象,因为我标注的不会仅仅只是圆,只需要拾取点就行了,
以上两点跟DIMORDINATE没有区别

DIMORDINATE不能连续标注,标注一个坐标(X或Y)后就结束了,需空格或回车再次调用,我的想法是拾取一点,同时标注X与Y座标,
拾取下一点继续这样标注,中间不用按空格或回车。




点评

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

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-15 22:27:49 | 显示全部楼层

大师,非常好!谢谢!
只是为什么用您那个《检查坐标标注的原点 》的代码来检测,全部变色了,原点正确也变色,而用dimordinate标注出的,检测就没有问题
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2014-8-15 22:41:30 | 显示全部楼层
命令标注的自动关联了 UCS ,VLA 只标注 WCS 点,文字用的是 替代,再找找有什么区别

点评

明白了,谢谢大师了!那那个检查程序不能用来检查这个了。  详情 回复 发表于 2014-8-15 23:45

评分

参与人数 1D豆 +5 收起 理由
lucas3 + 5 技术引导讨论和指点奖!

查看全部评分

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

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-15 23:45:01 | 显示全部楼层
Free-Lancer 发表于 2014-8-15 22:41
命令标注的自动关联了 UCS ,VLA 只标注 WCS 点,文字用的是 替代,再找找有什么区别

明白了,谢谢大师了!那那个检查程序不能用来检查这个了。

点评

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

使用道具 举报

发表于 2014-8-16 00:02:18 | 显示全部楼层
本帖最后由 Free-Lancer 于 2014-8-16 00:21 编辑
lucas3 发表于 2014-8-15 23:45
明白了,谢谢大师了!那那个检查程序不能用来检查这个了。


这个实体实在麻烦,这样就 Ok 了
  1. (defun c:Tt (/ tf p d px py vx vy  dim_updata)
  2.   (defun dim_updata (dim / e el)
  3.     (setq e  (vlax-vla-object->ename dim)
  4.           el (entget e)
  5.     )
  6.     (entmod
  7.       (subst (cons 10 (trans '(0 0 0) 1 0)) (assoc 10 el) el)
  8.     )
  9.   )
  10.   (if (not $globledirct)
  11.     (setq $globledirct "3")
  12.   )
  13.   (if (not $globledimx)
  14.     (setq $globledimx (getvar "textsize"))
  15.   )
  16.   (if (not $globledimy)
  17.     (setq $globledimy (getvar "textsize"))
  18.   )
  19.   (fy:begin)
  20.   (while (progn
  21.            (prompt (strcat "\n当前设置 X = "
  22.                            (vl-princ-to-string $globledimx)
  23.                            "; Y = "
  24.                            (vl-princ-to-string $globledimy)
  25.                            "; 第 "
  26.                            $globledirct
  27.                            " 象限"
  28.                    )
  29.            )
  30.            (initget "X Y S" 128)
  31.            (setq p
  32.                   (getpoint
  33.                     "\n拾取点或[X间隙(X)/Y间隙(Y)/设置标注象限(S)]: "
  34.                   )
  35.            )
  36.            (cond
  37.              ((or (= p "X") (= p "x"))
  38.               (if (setq d (getdist "\n拾取X标注方向间隙: "))
  39.                 (setq $globledimx d)
  40.               )
  41.               (setq tf t)
  42.              )
  43.              ((or (= p "Y") (= p "y"))
  44.               (if (setq d (getdist "\n拾取Y标注方向间隙: "))
  45.                 (setq $globledimy d)
  46.               )
  47.               (setq tf t)
  48.              )
  49.              ((or (= p "S") (= p "s"))
  50.               (initget "1 2 3 4")
  51.               (if (setq
  52.                     kw (getkword "\n标注象限[(1)/(2)/(3)/(4)]: ")
  53.                   )
  54.                 (setq $globledirct kw)
  55.               )
  56.               (setq tf t)
  57.              )
  58.              ((= (type p) 'List) (setq tf t))
  59.              (t (setq tf nil))
  60.            )
  61.            tf
  62.          )
  63.     (if        (= (type p) 'LIST)
  64.       (progn
  65.         (cond ((= $globledirct "1")
  66.                (setq py        (polar p 0 $globledimy)
  67.                      px        (polar p _pi2 $globledimx)
  68.                )
  69.               )
  70.               ((= $globledirct "2")
  71.                (setq px        (polar p _pi2 $globledimx)
  72.                      py        (polar p pi $globledimy)
  73.                )
  74.               )
  75.               ((= $globledirct "3")
  76.                (setq py        (polar p pi $globledimy)
  77.                      px        (polar p _3pi $globledimx)
  78.                )
  79.               )
  80.               (t
  81.                (setq py        (polar p 0 $globledimy)
  82.                      px        (polar p _3pi $globledimx)
  83.                )
  84.               )
  85.         )
  86.         (setq vy  (vla-AddDimOrdinate
  87.                     (fy:acspace)
  88.                     (vlax-3d-point (trans p 1 0))
  89.                     (vlax-3d-point (trans py 1 0))
  90.                     :vlax-false
  91.                   )
  92.               vx  (vla-AddDimOrdinate
  93.                     (fy:acspace)
  94.                     (vlax-3d-point (trans p 1 0))
  95.                     (vlax-3d-point (trans px 1 0))
  96.                     :vlax-true
  97.                   )
  98.         )
  99.         (dim_updata vy)
  100.         (dim_updata vx)
  101.       )
  102.     )
  103.   )
  104.   (fy:end)
  105.   (princ)
  106. )

评分

参与人数 1D豆 +5 收起 理由
lucas3 + 5 很给力!谢谢Free-Lancer大师

查看全部评分

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

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-8-16 01:28:57 来自手机 | 显示全部楼层
组码 10 是坐标原点(WCS)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-20 12:04 , Processed in 0.382023 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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