YF/db 发表于 2012-12-21 23:50:37

各位大侠,能不能帮忙编个等分尺寸的LISP?

比如说,尺寸显示是2800,然后要10等分后,就显示280X10=2800

革天明 发表于 2012-12-22 08:23:30

本帖最后由 革天明 于 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)
)

USER2128 发表于 2012-12-22 08:39:23

;;; 等分尺寸,如尺寸值为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))

adc 发表于 2012-12-22 13:35:22

转一个站内的    ;;自动将标注等分 明经 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)
    )

YF/db 发表于 2012-12-22 18:43:32

USER2128 发表于 2012-12-22 08:39 static/image/common/back.gif


标注的尺寸为什么会显示“未选取实体, 或非尺寸实体”?

USER2128 发表于 2012-12-22 18:56:06

YF/db 发表于 2012-12-22 18:43 static/image/common/back.gif
标注的尺寸为什么会显示“未选取实体, 或非尺寸实体”?

“未选取实体, 或非尺寸实体”,请按字面去理解:请选(并选中)标注尺寸(实体)

YF/db 发表于 2012-12-24 11:33:36

USER2128 发表于 2012-12-22 18:56 static/image/common/back.gif
“未选取实体, 或非尺寸实体”,请按字面去理解:请选(并选中)标注尺寸(实体)

帮忙试下这个DWG的尺寸标注,我用阁下的lsp还会有这样的问题

xiabin68 发表于 2012-12-24 12:35:50

帮顶一个,,,,,,

USER2128 发表于 2012-12-24 18:49:21

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))

YF/db 发表于 2012-12-27 21:13:18

USER2128 发表于 2012-12-24 18:49 static/image/common/back.gif


测试了下,用CAD的标注可以等分,但是用天正标的尺寸无法等分
页: [1] 2
查看完整版本: 各位大侠,能不能帮忙编个等分尺寸的LISP?