明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2069|回复: 6

[求助]帮忙看看修改标注精度的程序错在哪里?

[复制链接]
发表于 2008-5-22 16:49:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2008-5-22 16:52:03 编辑

经常要用到查看某一个标注更精确的标注,一般在属性里改标注的精度,但是找修改精度的位置比较不好找,所以就想写个小程序来设置标注的小数位数,程序一直没有调试成功!求高人指点!谢谢

(defun C:bzjd ()

(VL-LOAD-COM)

;;; 在模型空间中选择标注对象

   (setq dimObj (car (entsel "\n选择要修改精度的尺寸标注: ")))
   (setq str_0 (cdr (assoc 0 (entget dimObj))))

   (while (and (/= str_0 "LWPOLYLINE") (/= str_0 "DIMENSION"))
      (setq dimObj (car (entsel "\n所选对象不是尺寸标注,请重新选择编辑对象: ")))
      (setq str_0 (cdr (assoc 0 (entget dimObj))))
   )

  (setq dimObj (vlax-ename->vla-object dimObj))


  (setq newTolerance (getint "\n输入标注新的公差精度[0~8]: "))
 
  (if (= newTolerance "")

    (setq newTolerance 0)

    (progn

      (COND

       ((= newTolerance 0)(setq newTolerance acDimPrecisionZero))

       ((= newTolerance 1)(setq newTolerance acDimPrecisionOne))

       ((= newTolerance 2)(setq newTolerance acDimPrecisionTwo))

       ((= newTolerance 3)(setq newTolerance acDimPrecisionThree))

       ((= newTolerance 4)(setq newTolerance acDimPrecisionFour))

       ((= newTolerance 5)(setq newTolerance acDimPrecisionFive))

       ((= newTolerance 6)(setq newTolerance acDimPrecisionSix))

       ((= newTolerance 7)(setq newTolerance acDimPrecisionSeven))

       ((= newTolerance 8)(setq newTolerance acDimPrecisionEight))

       (t(progn (princ "标注精度未改变")(VL-EXIT-WITH-VALUE 0)))

      )

    )

   )
  
   (vla-put-TextPrecision dimObj newTolerance)  ; 确定公差精度的改变

;;; 读取并显示替代标注公差精度

  (setq newTolerance (vla-get-TextPrecision dimObj))

  (princ "标注精度已经设定为: ")(princ newTolerance)(princ "位小数")


  (princ)

 )

 楼主| 发表于 2008-5-23 09:09:00 | 显示全部楼层
本帖最后由 作者 于 2008-5-23 9:11:19 编辑

自己顶一下,请知道的高人指点一下!谢谢

说的简单一点就是怎么样用lisp实现改变某一个(不是全部)标注的小数位数!

 楼主| 发表于 2008-5-23 23:19:00 | 显示全部楼层

顶起来!希望高人能看到!

发表于 2008-5-24 09:43:00 | 显示全部楼层
;;你是标注精度吧?如果没有理解错误的话,这样就可以了!
(vla-put-PrimaryUnitsPrecision dimObj newTolerance)  ; 确定公差精度的改变
   (vla-put-SuppressTrailingZeros dimObj :vlax-false)
;;; 读取并显示替代标注公差精度

  (setq newTolerance (vla-get-PrimaryUnitsPrecision dimObj))
 楼主| 发表于 2008-5-25 14:36:00 | 显示全部楼层
谢谢!把vla-put-TextPrecision 函数换成vla-put-PrimaryUnitsPrecision函数就ok了!谢谢xxsheng
发表于 2011-9-11 10:41:02 | 显示全部楼层
楼主,能不能帮我写一个lisp程序,以保证每次打开CAD图纸后自动将线性和角度标注精度修改为0.000,万分感谢!
发表于 2021-3-24 16:59:44 | 显示全部楼层
每次只能选择并修改一个。不能批量选择多个标注。这个使用场景还是有限。希望楼主开发一个批量修改标注精度的lsp。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-16 21:08 , Processed in 0.154200 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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