找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4766|回复: 37

[求助] 修改标注精度

[复制链接]

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-8-12 12:09:27 | 显示全部楼层 |阅读模式
悬赏50D豆已解决
求两个小lisp程序,修改标注精度与标注还原
修改标注精度:不修改标注样式,即时修改,运行命令后提示
->请输入标注的新精度(最大为8位) <2>: 
输入精度位数后,可框选标注


标注还原:
运行命令后:请选择对象:
框选标注 无论是内容替换,添加过前后缀,还是用上面程序修改过标注精度,都还原
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2014-8-12 12:09:28 | 显示全部楼层
lucas3 发表于 2014-8-13 00:31
大师,您好!感谢你的回复,能不能改精度与标注恢复使用两个不同的命令?因为标注恢复并不是针对恢复改过 ...

  1. (defun c:t1 (/ n)
  2.   (fy:begin)
  3.   (if (and (ssget '((0 . "DIM*")))
  4.            (setq n (getint "\n精度: "))
  5.            (<= 0 n 8)
  6.       )
  7.     (vlax-for dim (fy:cset)
  8.       (vla-put-PrimaryUnitsPrecision dim n)
  9.     )
  10.   )
  11.   (fy:end)
  12.   (princ)
  13. )
  14. (defun c:t2 ()
  15.   (fy:begin)
  16.   (if (ssget '((0 . "DIM*")))
  17.     (vlax-for dim (fy:cset)
  18.       (vla-put-TextOverride dim "");_恢复默认文字
  19.       (vla-put-PrimaryUnitsPrecision
  20.         dim
  21.         (cdr
  22.           (assoc 271 (tblsearch "dimstyle" (vla-get-stylename dim)))
  23.         )
  24.       ) ;_恢复默认样式标注精度
  25.     )
  26.   )
  27.   (fy:end)
  28.   (princ)
  29. )

点评

谢谢Free-Lancer大师,您的程序完美解决了我的问题,还有一点小小的请求,就是角度标注的精度,如果原程序中增加对角度标注精度的修改最好,如果不行那能否增加一个?命令t3用于修改角度标注精度。  详情 回复 发表于 2014-8-13 16:21
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-8-12 12:48:43 | 显示全部楼层
本帖最后由 newer 于 2014-8-12 12:50 编辑

两种功能合并到一起了,回车恢复默认。

  1. (defun c:XDTB_DimTol ()
  2.   (princ "\n请选取要改变标注精度的尺寸标注 <退出>: ")
  3.   (if (setq ss (ssget' ((0 . "DIMENSION"))))
  4.     (progn
  5.       (initget 4)
  6.       (setq n (getint "\n请输入保留小数位数<恢复默认>: "))
  7.       (setq n (cond
  8.                 ((not n)
  9.                   -1
  10.                 )
  11.                 ((> n 8)
  12.                   8
  13.                 )
  14.                 (n)
  15.               )
  16.       )
  17.       (xdrx_begin)
  18.       (xdrx_setsstodb ss 0)
  19.       (while (setq e (xdrx_getentdata 0))
  20.         (setq cna (last (xdrx_getpropertyvalue e "CLASSNAME")))
  21.         (cond
  22.           ((or
  23.              (= "AcDbAlignedDimension" cna)
  24.              (= "AcDbRotatedDimension" cna)
  25.            )
  26.             (if (= -1 n)
  27.               (xdrx_dimension_removeoverride e 271)
  28.               (xdrx_dimension_setOverride e 271 n)
  29.             )
  30.           )
  31.           ((or
  32.              (= "AcDb3PointAngularDimension" cna)
  33.              (= "AcDb2LineAngularDimension" cna)
  34.            )
  35.             (if (= -1 n)
  36.               (xdrx_dimension_removeOverride e 179)
  37.               (xdrx_dimension_setOverride e 179 n)
  38.             )
  39.           )
  40.         )
  41.       )
  42.       (xdrx_end)
  43.     )
  44.   )
  45.   (princ)
  46. )

点评

谢版主,恢复默认不好使,加了后缀后恢复不了,文字替代还存在,比如加%%D 文字替代下还是:%%d 另外不喜欢API,因为时间限制,经常还没怎么使用,就提示过期要更新,  详情 回复 发表于 2014-8-12 13:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-12 13:00:34 | 显示全部楼层
newer 发表于 2014-8-12 12:48
两种功能合并到一起了,回车恢复默认。

谢版主,恢复默认不好使,加了后缀后恢复不了,文字替代还存在,比如加%%D 文字替代下还是:<>%%d

另外不喜欢API,因为时间限制,经常还没怎么使用,就提示过期要更新,

点评

帮你贴个全的吧,下面的程序可以修改 [比例-0/字高-1/标值-2/精度-3/翻转-4/归位-5/颜色-6]  详情 回复 发表于 2014-8-12 16:21
你要恢复文字替代的,要修改下代码,这个文字替代的没修改精度的必要。  详情 回复 发表于 2014-8-12 16:19
这个程序是修改按实际长度标注的尺寸。 修改过尺寸文字的尺寸就没改精度的必要了,因为实际数值已经没了,被你用固定的文字替代了,你这个文字没精度。  详情 回复 发表于 2014-8-12 16:17
把你修改完的尺寸的图贴上来看看,我这里没问题。 另外,API现在好像是半年过期吧,够用了,API更新快,你可以随时来网站下载更新的版本。  详情 回复 发表于 2014-8-12 14:40
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-8-12 14:40:53 | 显示全部楼层
lucas3 发表于 2014-8-12 13:00
谢版主,恢复默认不好使,加了后缀后恢复不了,文字替代还存在,比如加%%D 文字替代下还是:%%d

另外不 ...

把你修改完的尺寸的图贴上来看看,我这里没问题。

另外,API现在好像是半年过期吧,够用了,API更新快,你可以随时来网站下载更新的版本。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-8-12 16:17:22 | 显示全部楼层
lucas3 发表于 2014-8-12 13:00
谢版主,恢复默认不好使,加了后缀后恢复不了,文字替代还存在,比如加%%D 文字替代下还是:%%d

另外不 ...

这个程序是修改按实际长度标注的尺寸。

修改过尺寸文字的尺寸就没改精度的必要了,因为实际数值已经没了,被你用固定的文字替代了,你这个文字没精度。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-8-12 16:19:29 | 显示全部楼层
lucas3 发表于 2014-8-12 13:00
谢版主,恢复默认不好使,加了后缀后恢复不了,文字替代还存在,比如加%%D 文字替代下还是:%%d

另外不 ...

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-8-12 16:21:34 | 显示全部楼层
本帖最后由 newer 于 2014-8-12 16:23 编辑
lucas3 发表于 2014-8-12 13:00
谢版主,恢复默认不好使,加了后缀后恢复不了,文字替代还存在,比如加%%D 文字替代下还是:%%d

另外不 ...

帮你贴个全的吧,下面的程序可以修改
[比例-0/字高-1/标值-2/精度-3/翻转-4/归位-5/颜色-6]

  1. (defun $XDLSP_SSGET (ts filter)
  2.   (prompt (strcat "\n" ts))
  3.   (apply
  4.     'ssget
  5.     filter
  6.   )
  7. )



  1. (defun c:XDTB_DIMMod (/ ang cna e h n scl ss tf)
  2.   (if (not $XDTB_DIM_VAR)
  3.     (setq $XDTB_DIM_VAR "0")
  4.   )
  5.   (initget "0 1 2 3 4 5 6")
  6.   (if (not (setq tf (getkword (strcat "\n[比例-0/字高-1/标值-2/精度-3/翻转-4/归位-5/颜色-6]<"
  7.                                       $XDTB_DIM_VAR ">:"
  8.                               )
  9.                     )
  10.            )
  11.       )
  12.     (setq tf $XDTB_DIM_VAR)
  13.     (setq $XDTB_DIM_VAR tf)
  14.   )
  15.   (cond
  16.     ((= tf "0")
  17.       (if (not (setq ss ($XDLSP_SSGET "选取要修改的尺寸标注<全选>:"
  18.                                       (list '((0 . "dim*")))
  19.                         )
  20.                )
  21.           )
  22.         (setq ss (ssget "x" '((0 . "dim*"))))
  23.       )
  24.       (setq scl (getreal "\n新比例<恢复默认>:"))
  25.       (xdrx_setsstodb ss 0)
  26.       (while (setq e (xdrx_getentdata 0))
  27.         (if scl
  28.           (xdrx_dimension_setoverride e 40 scl)
  29.           (xdrx_dimension_removeOverride e 40)
  30.         )
  31.       )
  32.     )
  33.     ((= tf "1")
  34.       (if (not (setq ss ($XDLSP_SSGET "选取要修改的尺寸标注<全选>:"
  35.                                       (list '((0 . "dim*")))
  36.                         )
  37.                )
  38.           )
  39.         (setq ss (ssget "x" '((0 . "dim*"))))
  40.       )
  41.       (setq h (getreal "\n新字高<恢复默认>:"))
  42.       (xdrx_setsstodb ss 0)
  43.       (while (setq e (xdrx_getentdata 0))
  44.         (if h
  45.           (xdrx_dimension_setOverride e 140 h)
  46.           (xdrx_dimension_removeOverride e 140)
  47.         )
  48.       )
  49.     )
  50.     ((= tf "3")
  51.       (princ "\n请选取要改变标注精度的尺寸标注 <退出>: ")
  52.       (if (setq ss (ssget' ((0 . "DIMENSION"))))
  53.         (progn
  54.           (initget 4)
  55.           (setq n (getint "\n请输入保留小数位数<恢复默认>: "))
  56.           (setq n (cond
  57.                     ((not n)
  58.                       -1
  59.                     )
  60.                     ((> n 8)
  61.                       8
  62.                     )
  63.                     (n)
  64.                   )
  65.           )
  66.           (xdrx_begin)
  67.           (xdrx_setsstodb ss 0)
  68.           (while (setq e (xdrx_getentdata 0))
  69.             (setq cna (last (xdrx_object_className e)))
  70.             (cond
  71.               ((or
  72.                  (= "AcDbAlignedDimension" cna)
  73.                  (= "AcDbRotatedDimension" cna)
  74.                )
  75.                 (if (= -1 n)
  76.                   (xdrx_dimension_removeoverride e 271)
  77.                   (xdrx_dimension_setOverride e 271 n)
  78.                 )
  79.               )
  80.               ((or
  81.                  (= "AcDb3PointAngularDimension" cna)
  82.                  (= "AcDb2LineAngularDimension" cna)
  83.                )
  84.                 (if (= -1 n)
  85.                   (xdrx_dimension_removeOverride e 179)
  86.                   (xdrx_dimension_setOverride e 179 n)
  87.                 )
  88.               )
  89.             )
  90.           )
  91.         )
  92.       )
  93.     )
  94.     ((= tf "4")
  95.       (c:xdtb_dimtxtrev)
  96.     )
  97.     ((= tf "5")
  98.       (prompt "\n请选取要文字归位的尺寸实体<退出>:")
  99.       (if (setq ss (ssget '((0 . "dimension"))))
  100.         (progn
  101.           (xdrx_begin)
  102.           (xdrx_setsstodb ss 0)
  103.           (while (setq e (xdrx_getentdata 0))
  104.             (xdrx_dimension_useDefaultTextPosition e)
  105.           )
  106.           (xdrx_end)
  107.         )
  108.       )
  109.     )
  110.     ((= tf "6")
  111.       (xdrx_begin)
  112.       (if (not $XDTB_DimTxtColor_val)
  113.         (setq $XDTB_DimTxtColor_val 7)
  114.       )
  115.       (initget 4)
  116.       (if (setq clr (getint (strcat "\n请输入标注文字的新颜色号(1-256)[1红/2黄/3绿/4青/5蓝/6紫/7白/0默认]<"
  117.                                     (itoa $XDTB_DimTxtColor_val) ">:"
  118.                             )
  119.                     )
  120.           )
  121.         (setq $XDTB_DimTxtColor_val clr)
  122.       )
  123.       (if (setq ss (ssget "x" '((0 . "dimension"))))
  124.         (progn
  125.           (xdrx_setsstodb ss 0)
  126.           (while (setq e (xdrx_getentdata 0))
  127.             (if (= 0 clr)
  128.               (xdrx_dimension_RemoveOverride e 178)
  129.               (xdrx_dimension_setOverride e 178 clr)
  130.             )
  131.           )
  132.         )
  133.       )
  134.       (xdrx_end)
  135.     )
  136.   )
  137.   (princ)
  138. )




点评

感谢版主费心,发布到“插件发布”版块吧,太强大也不是好事,偶也用不上啊,我只是需要那两个功能的纯lisp程序,脱离API的那种  详情 回复 发表于 2014-8-12 17:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-12 17:04:41 | 显示全部楼层
newer 发表于 2014-8-12 16:21
帮你贴个全的吧,下面的程序可以修改
[比例-0/字高-1/标值-2/精度-3/翻转-4/归位-5/颜色-6]

感谢版主费心,发布到“插件发布”版块吧,太强大也不是好事,偶也用不上啊,我只是需要那两个功能的纯lisp程序,脱离API的那种

点评

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

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-8-12 18:36:22 来自手机 | 显示全部楼层
lucas3 发表于 2014-8-12 17:04
感谢版主费心,发布到“插件发布”版块吧,太强大也不是好事,偶也用不上啊,我只是需要那两个功能的纯li ...

啥叫纯lisp?!

点评

说错了,就是不用加载API的,或者其它编译过的函数库的,大师你应该能明白,只是我表达不清  详情 回复 发表于 2014-8-12 19:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-12 19:00:23 | 显示全部楼层

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

使用道具 举报

已领礼包: 10513个

财富等级: 富甲天下

发表于 2014-8-12 21:18:14 | 显示全部楼层
  1. (defun c:tt ()
  2. (setvar "CMDECHO" 0)
  3. (if (setq n (getint "\n请输入保留小数位数<恢复默认>: ")) (progn
  4.   (setvar "DIMDEC" (if (> n 8) 8 n))
  5.   (setvar "DIMZIN" 0)
  6. )
  7.   (setvar "DIMZIN" 8)
  8. )
  9. (command "-DIMSTYLE" "S" (getvar "DIMSTYLE") "Y")
  10. (if (and (princ "\n请选取要改变标注精度的尺寸标注 <退出>: ")
  11.           (setq ss (ssget' ((0 . "DIMENSION")))))
  12.   (command "-DIMSTYLE" "A" ss)
  13. )
  14. (princ)
  15. )

点评

Z版,不行哟,您这是改的标注样式哟,我不是想要改标注样式,只是改框选中的尺寸的精度,另外,标注还原也是还原框选中的标注,就是去除前后缀,去除文字替代  详情 回复 发表于 2014-8-12 22:59
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-12 22:59:42 | 显示全部楼层

Z版,不行哟,您这是改的标注样式哟,我不是想要改标注样式,只是改框选中的尺寸的精度,另外,标注还原也是还原框选中的标注,就是去除前后缀,去除文字替代

点评

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

使用道具 举报

发表于 2014-8-12 23:57:55 | 显示全部楼层
lucas3 发表于 2014-8-12 22:59
Z版,不行哟,您这是改的标注样式哟,我不是想要改标注样式,只是改框选中的尺寸的精度,另外,标注还原 ...


作为使用者也好,自己写也好,只要不做职业作程序,能用就要满足
  1. (defun c:tt (/ n)
  2.   (fy:begin)
  3.   (if (and (ssget '((0 . "DIM*")))
  4.            (progn
  5.              (setq n (getint "\n精度<回车默认>: "))
  6.              t
  7.            )
  8.       )
  9.     (if        n
  10.       (vlax-for        dim (fy:cset)
  11.         (vla-put-PrimaryUnitsPrecision dim n)
  12.       )
  13.       (vlax-for        dim (fy:cset)
  14.         (vla-put-TextOverride dim "")
  15.         (vla-put-PrimaryUnitsPrecision dim (getvar "dimdec"))
  16.       )
  17.     )
  18.   )
  19.   (fy:end)
  20.   (princ)
  21. )

点评

大师,您好!感谢你的回复,能不能改精度与标注恢复使用两个不同的命令?因为标注恢复并不是针对恢复改过精度的,所以作为两个不同的命令比较好!有劳大师了  详情 回复 发表于 2014-8-13 00:31
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-8-13 00:31:19 | 显示全部楼层
Free-Lancer 发表于 2014-8-12 23:57
作为使用者也好,自己写也好,只要不做职业作程序,能用就要满足

大师,您好!感谢你的回复,能不能改精度与标注恢复使用两个不同的命令?因为标注恢复并不是针对恢复改过精度的,所以作为两个不同的命令比较好!有劳大师了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 15:57 , Processed in 0.456589 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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