标注值改为等分格式,5币求一段代码[源码]
本帖最后由 ucuc2003 于 2013-1-1 22:49 编辑;;;;;;;;tt标注值改为等分格式
(defun c:tt (/ dxz dqjd ss i ent txt dtxt aa)
(setvar "cmdecho" 0)
(command "_.undo" "_begin")
(princ " 标注值改为等分格式")
(if (= cl_jd nil) (setq cl_jd 2)) ;设定当前小数精度
(princ (strcat "\n设定当前小数点后精度为<" (rtos cl_jd 2 4) ">"))
;(setq bb (getint))
;(if (= bb nil) (setq bb cl_jd))
;(setq cl_jd bb)
;;;这部分增加记忆等分数dim_df
(if (= dim_df nil) (setq dim_df 2))
(princ (strcat "\n输入要等分的量 <" (rtos dim_df 2 0) ">: "))
(setq aa (getint))
(if (= aa nil) (setq aa dim_df))
(setq dim_df aa)
(while
(setq ss (ssget":s" '((0 . "DIMENSION")(-4 . "<OR")(70 . 32)(70 . 33)(70 . 34)(70 . 37)(-4 .
"OR>"))));setq
(if (/= ss nil)
(progn
(princ (strcat "共选择了" (itoa (sslength ss)) "个标注对象。"))
(setvar "DIMZIN" 8);消除十进制标注中的后续零
(setvar "LUPREC" cl_jd); 此处设定小数精度
(setq i 0)
(repeat (sslength ss)
(setq ent(entget (ssname ss i))
txt(cdr (assoc 42 ent))
dtxt (if (> (cdr (assoc 70 ent)) 33)
(rtos (/ (* txt 180) pi dim_df) 2 0)
(rtos (/ txt dim_df))
)
ent(subst (cons 1 (strcat (itoa dim_df) "x" dtxt "=<>"))
(assoc 1 ent)
ent
)
)
(entmod ent)
(setq i (1+ i))
);repeat
);progn
);if
);while
(command "_.undo" "_end")
(setvar "LUPREC" 5)
(princ)
) ;end
把标注改为等分样式的代码,前段时间在论坛里面看到这个程序,我进行了优化,见上演示。
我想增加一个对话框功能:在刷新标注的时候,还可以随时设置里面分格数的值dim_df和小数点精度的值cl_jd
就像cad中格式刷的那个功能,刷新时候可以随时设置格式刷的特性??
那个大侠帮帮优化下,谢谢了!5明经币奉上!
我是非常想学习下有这段功能的代码!
只有围观了,, xiabin68 发表于 2013-1-1 22:27 static/image/common/back.gif
只有围观了,,
等大侠来解答...
页:
[1]