各位大侠,能不能帮忙编个等分尺寸的LISP?
比如说,尺寸显示是2800,然后要10等分后,就显示280X10=2800本帖最后由 革天明 于 2012-12-22 08:40 编辑
我留个位置
;;等分尺寸标注
(defun c:dfbz(/ en ii ent dist str)
(setq en(car(entsel "\请选择要等分的标注:")))
(setq ii(getint "\n请输入要等分的数目:"))
(setq ent(entget en))
(setq dist(cdr(assoc 42 ent)))
(setq str(strcat (rtos (/ dist ii) 2 2) "×" (itoa ii) "=" (rtos dist 2 2)))
(setq ent(subst (cons 1 str) (assoc 1 ent) ent))
(entmod ent)
) ;;; 等分尺寸,如尺寸值为1000,等分5份,写成:200X5=1000;
;;; 程序设计:USER2128 于 2012.12.22
(defun c:tt ( / ss ent dist num txt)
(if (and (setq ss (entsel "\n选择尺寸:"))
(ssget (cadr ss) '((0 . "DIMENSION")))
(setq ent (entget (car ss)))
(setq dist (cdr (assoc 42 ent)))
)
(progn
(initget 6 "Number")
(setq num (getreal "\n输入等分距离/<回车输入等分数量N>: "))
(if num
(setq txt (/ dist num)
txt (strcat (rtos num 2) "X" (rtos txt 2) "=<>")
)
(progn (initget 7)
(setq num (getreal "\n输入等分数量: ")
txt (/ dist num)
txt (strcat (rtos txt 2) "X" (rtos num 2) "=<>")
))
)
(setq ent (subst (cons 1 txt) (assoc 1 ent) ent))
(entmod ent)
)
(princ "\n未选取实体, 或非尺寸实体!")
)
(princ))
转一个站内的 ;;自动将标注等分 明经 ZZXXQQ
(defun c:test ()
(if (setq ss (ssget '((0 . "DIMENSION")(-4 . "<OR")(70 . 32)(70 . 33)(70 . 34)(70 . 37)(-4 . "OR>")))) (progn
(setvar "DIMZIN" 8)
(setvar "LUPREC" 1) ; 此处设定小数精度
(setq i 0)
(setq div (getint "\n输入要等分的量: "))
(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 div) 2 0)(rtos(/ txt div)))
ent (subst (cons 1 (strcat (itoa div) "x" dtxt "=<>")) (assoc 1 ent) ent))
(entmod ent)
(setq i (1+ i))
)
))
(princ)
) USER2128 发表于 2012-12-22 08:39 static/image/common/back.gif
标注的尺寸为什么会显示“未选取实体, 或非尺寸实体”? YF/db 发表于 2012-12-22 18:43 static/image/common/back.gif
标注的尺寸为什么会显示“未选取实体, 或非尺寸实体”?
“未选取实体, 或非尺寸实体”,请按字面去理解:请选(并选中)标注尺寸(实体) USER2128 发表于 2012-12-22 18:56 static/image/common/back.gif
“未选取实体, 或非尺寸实体”,请按字面去理解:请选(并选中)标注尺寸(实体)
帮忙试下这个DWG的尺寸标注,我用阁下的lsp还会有这样的问题
帮顶一个,,,,,, YF/db 发表于 2012-12-24 11:33 static/image/common/back.gif
帮忙试下这个DWG的尺寸标注,我用阁下的lsp还会有这样的问题
;;; 等分尺寸,如尺寸值为1000,等分5份,写成:200X5=1000;
;;; 程序设计:USER2128 于 2012.12.24
(defun c:tt ( / ss ent dist num txt)
(defun num2txt (num n / txt)
(setq txt (rtos num 2 n))
(if (= (substr txt (- (strlen txt) 1)) ".0")
(setq txt (substr txt 1 (- (strlen txt) 2)))
(setq txt txt)
))
(if (and (setq ss (entsel "\n选择尺寸:"))
(ssget (cadr ss) '((0 . "DIMENSION")))
(setq ent (entget (car ss)))
(setq dist (cdr (assoc 42 ent)))
)
(progn
(initget 6 "Number")
(setq num (getreal "\n输入等分距离/<回车输入等分数量N>: "))
(if num
(setq txt (/ dist num)
txt (strcat (num2txt num 1) "X" (num2txt txt 1) "=<>")
)
(progn (initget 7)
(setq num (getreal "\n输入等分数量: ")
txt (/ dist num)
txt (strcat (num2txt txt 1) "X" (num2txt num 1) "=<>")
))
)
(setq ent (subst (cons 1 txt) (assoc 1 ent) ent))
(entmod ent)
)
(princ "\n未选取实体, 或非尺寸实体!")
)
(princ))
USER2128 发表于 2012-12-24 18:49 static/image/common/back.gif
测试了下,用CAD的标注可以等分,但是用天正标的尺寸无法等分
页:
[1]
2