明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 210|回复: 6

[提问] 请教:论坛上找的调整标注基本尺寸单位小数位数的程序,为何要选择两次?

[复制链接]
发表于 2024-6-9 16:44 | 显示全部楼层 |阅读模式
20明经币
请教:论坛上找的调整标注基本尺寸单位小数位数的程序,为何要选择两次?
使用时命令行提示如下:



命令: tt
请输入精度<保留小数点的位数>[0位,1位,2位,3位,4位,5位,6位,7位,8位]0
选择对象: 指定对角点: 找到 4 个
选择对象:
选择对象:
nil


希望达到效果:
1. 先选择标注对象,再输入命令“tt”时不再提示选择对象;
2. 先输入命令“tt”再先择对象时只需回车一次且命令行无“nil”提示

肯请大佬帮助

;;代码如下:

(defun c:tt (/ ss n cnt# enlst)
        (vl-load-com)
        (setq jidulst (list 'acDimPrecisionZero
                'acDimPrecisionOne
                'acDimPrecisionTwo
                'acDimPrecisionThree
                'acDimPrecisionFour
                'acDimPrecisionFive
                'acDimPrecisionSix
                'acDimPrecisionSeven
                'acDimPrecisionEight
        ))
        (initget 5 "0 1 2 3 4 5 6 7 8")
        (setq int# (getint "\n请输入精度<保留小数点的位数>[0位,1位,2位,3位,4位,5位,6位,7位,8位]"))
        (while (setq ss (ssget '((0 . "DIMENSION"))))
                (setq n (sslength  ss )
               
                      cnt# n
        )
               
                (repeat n
                (setq ename^ (ssname ss (setq cnt# (1- cnt#))))
                (setq enameobj  (vlax-ename->vla-object ename^ ))
                (vlax-put-property enameobj 'PrimaryUnitsPrecision (eval (nth int# jidulst))))
        )
      
      
  )



最佳答案

查看完整内容

或者这样吧 (defun c:tt (/ cnt# ename^ enameobj enlst int# jidulst n ss) (vl-load-com) (setq ss (cadr (ssgetfirst))) (setq jidulst (list 'acDimPrecisionZero 'acDimPrecisionOne 'acDimPrecisionTwo 'acDimPrecisionThree 'acDimPrecisionFour 'acDimPrecisionFive 'acDimPrecisionSix 'acDimPrecisionSeven 'acDimPrecisionEi ...
发表于 2024-6-9 16:44 | 显示全部楼层
或者这样吧
(defun c:tt (/ cnt# ename^ enameobj enlst int# jidulst n ss)
        (vl-load-com)
        (setq ss (cadr (ssgetfirst)))       
        (setq jidulst (list 'acDimPrecisionZero
                                                                        'acDimPrecisionOne
                                                                        'acDimPrecisionTwo
                                                                        'acDimPrecisionThree
                                                                        'acDimPrecisionFour
                                                                        'acDimPrecisionFive
                                                                        'acDimPrecisionSix
                                                                        'acDimPrecisionSeven
                                                                        'acDimPrecisionEight
                                                                ))
        (initget 5 "0 1 2 3 4 5 6 7 8")
        (setq int# (getint "\n请输入精度<保留小数点的位数>[0位,1位,2位,3位,4位,5位,6位,7位,8位]"))                       
        (if(and
                         (or ss (setq ss (ssget '((0 . "DIMENSION")))))       
                         (setq i -1)
                 )
                (progn
                        (while(setq s1 (ssname ss (setq i (1+ i))))               
                                (setq enameobj  (Vlax-Ename->Vla-Object s1))
                                (vlax-put-property enameobj 'PrimaryUnitsPrecision (eval (nth int# jidulst)))
                        )
                )               
  )
        (princ)
)
回复

使用道具 举报

发表于 2024-6-9 16:58 | 显示全部楼层
(defun c:tt (/ cnt# ename^ enameobj enlst int# jidulst n ss)
        (vl-load-com)
        (setq ss (cadr (ssgetfirst)))       
        (setq jidulst (list 'acDimPrecisionZero
                                                                        'acDimPrecisionOne
                                                                        'acDimPrecisionTwo
                                                                        'acDimPrecisionThree
                                                                        'acDimPrecisionFour
                                                                        'acDimPrecisionFive
                                                                        'acDimPrecisionSix
                                                                        'acDimPrecisionSeven
                                                                        'acDimPrecisionEight
                                                                ))
        (initget 5 "0 1 2 3 4 5 6 7 8")
        (setq int# (getint "\n请输入精度<保留小数点的位数>[0位,1位,2位,3位,4位,5位,6位,7位,8位]"))       
        (if (and
                                (or ss (setq ss (ssget '((0 . "DIMENSION")))))
                                (setq n (sslength  ss )                                       
                                        cnt# n
                                )
                        )
                (progn
                        (repeat n
                                (setq ename^ (ssname ss (setq cnt# (1- cnt#))))
                                (setq enameobj  (vlax-ename->vla-object ename^ ))
                                (vlax-put-property enameobj 'PrimaryUnitsPrecision (eval (nth int# jidulst))))
                )
               
        )       
        (princ)
)
回复

使用道具 举报

 楼主| 发表于 2024-6-9 17:16 | 显示全部楼层
xj6019 发表于 2024-6-9 17:04
或者这样吧
(defun c:tt (/ cnt# ename^ enameobj enlst int# jidulst n ss)
        (vl-load-com)

感谢大佬,两个都可以
大神可以再把精度改成默认为"0"吗
回复

使用道具 举报

发表于 2024-6-9 21:48 | 显示全部楼层
这个意思?直接回车确定,默认为0?

(defun c:tt (/ cnt# ename^ enameobj enlst int# jidulst n ss)
        (vl-load-com)
        (setq ss (cadr (ssgetfirst)))      
        (setq jidulst (list 'acDimPrecisionZero
                                                                        'acDimPrecisionOne
                                                                        'acDimPrecisionTwo
                                                                        'acDimPrecisionThree
                                                                        'acDimPrecisionFour
                                                                        'acDimPrecisionFive
                                                                        'acDimPrecisionSix
                                                                        'acDimPrecisionSeven
                                                                        'acDimPrecisionEight
                                                                ))
        (initget  "0 1 2 3 4 5 6 7 8")       
        (setq int# (getint "\n请输入精度<保留小数点的位数>[0位,1位,2位,3位,4位,5位,6位,7位,8位]"))
        (if (not int#)
                (setq int# 0)
                int#
        )   
        (if (and
                                (or ss (setq ss (ssget '((0 . "DIMENSION")))))
                                (setq n (sslength  ss )                                       
                                        cnt# n
                                )
                        )
                (progn
                        (repeat n
                                (setq ename^ (ssname ss (setq cnt# (1- cnt#))))
                                (setq enameobj  (vlax-ename->vla-object ename^ ))
                                (vlax-put-property enameobj 'PrimaryUnitsPrecision (eval (nth int# jidulst))))
                )
               
        )      
        (princ)
)
回复

使用道具 举报

 楼主| 发表于 2024-6-10 00:24 | 显示全部楼层
xj6019 发表于 2024-6-9 21:48
这个意思?直接回车确定,默认为0?

(defun c:tt (/ cnt# ename^ enameobj enlst int# jidulst n ss)

是这效果,再次感谢大佬
回复

使用道具 举报

发表于 2024-6-10 08:39 | 显示全部楼层
xj6019 发表于 2024-6-9 21:48
这个意思?直接回车确定,默认为0?

(defun c:tt (/ cnt# ename^ enameobj enlst int# jidulst n ss)

挺好用的,感谢分享
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-21 13:36 , Processed in 0.141095 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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