您正在寻找一种编程方法来更改给定维度的精度,但还需要检查/修改维度的“superss trailing zeros”属性。
考虑这些LISP示例。。。
键盘快捷键:
- (defun c:ChgDimPrec (/ ss prec)
- ;; © RenderMan 2011, CADTutor
- (princ "\rCHANGE DIMENSION PRECISION ")
- (vl-load-com)
- (if (and (setq ss (ssget '((0 . "DIMENSION"))))
- (not (initget 7 "1 2 3 4 5 6 7 8"))
- (setq prec (getint "\nEnter DIM precision [1/2/3/4/5/6/7/8]: ")))
- (progn
- (vla-startundomark
- (cond (*activeDoc*)
- ((setq *activeDoc*
- (vla-get-activedocument
- (vlax-get-acad-object))))))
- (if (/= prec (getvar 'dimdec))
- (setvar 'dimdec prec))
- (vlax-for oDim (setq ss (vla-get-activeselectionset *activeDoc*))
- (if (= :vlax-true (vla-get-suppresstrailingzeros oDim))
- (vla-put-suppresstrailingzeros oDim :vlax-false))
- (vla-put-primaryunitsprecision oDim prec))
- (vla-endundomark *activeDoc*)
- (vla-delete ss))
- (cond (ss (prompt "\n** Invalid color entered ** "))
- (T (prompt "\n** Nothing selected ** "))))
- (princ))
接受精度参数的函数(用于工具栏宏):
- (defun ChgDimPrec (prec / ss color)
- ;; © RenderMan 2011, CADTutor
- ;; Example: (ChgDimPrec 0)
- (princ "\rCHANGE DIMENSION PRECISION ")
- (vl-load-com)
- (if (setq ss (ssget '((0 . "DIMENSION"))))
- (progn
- (vla-startundomark
- (cond (*activeDoc*)
- ((setq *activeDoc*
- (vla-get-activedocument
- (vlax-get-acad-object))))))
- (if (/= prec (getvar 'dimdec))
- (setvar 'dimdec prec))
- (vlax-for oDim (setq ss (vla-get-activeselectionset *activeDoc*))
- (if (= :vlax-true (vla-get-suppresstrailingzeros oDim))
- (vla-put-suppresstrailingzeros oDim :vlax-false))
- (vla-put-primaryunitsprecision oDim prec))
- (vla-endundomark *activeDoc*)
- (vla-delete ss))
- (cond (ss (prompt "\n** Invalid color entered ** "))
- (T (prompt "\n** Nothing selected ** "))))
- (princ))
|