ucuc2003 发表于 2013-1-1 22:10:48

标注值改为等分格式,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:06

只有围观了,,

ucuc2003 发表于 2013-1-1 22:31:28

xiabin68 发表于 2013-1-1 22:27 static/image/common/back.gif
只有围观了,,

等大侠来解答...
页: [1]
查看完整版本: 标注值改为等分格式,5币求一段代码[源码]