因为entmod不成功所以改为entmake方式
注:TT2是创建转角标注对齐方式(=旋转的转角标注),记得开关正交。
- ;;对齐标注转转角标注entmake法Sub function()
- ;;code by edata @ mjtd
- ;;2014-5-24
- (defun sk_align->rote(en / e1 e13 e14 e2 e2list en code)
- (defun sk_dxf(en code)(cdr(assoc code(entget en))))
- (if(= (sk_dxf en 0) "DIMENSION")
- (progn
- (setq e1(entget en)
- e2(entget en '("*"))
- e2list(assoc -3 e2)
- e1(subst(cons 70 32)(assoc 70 e1)e1)
- e13(cdr(assoc 13 e1))
- e14(cdr(assoc 14 e1))
- e1(subst(cons 50 (angle e13 e14))(assoc 50 e1)e1)
- e1(reverse(cons '(100 . "AcDbRotatedDimension")(reverse e1))))
- (entdel en)
- (if e2list(setq e1(cons e2list e1)))
- (entmake e1)
- )
- )
- )
- ;;对齐标注转转角标注main()
- ;;code by edata @ mjtd
- ;;2014-5-24
- (defun c:tt(/ ss en)
- (prompt "\n请选择需要转换为转角标注的对齐标注:")
- (if(setq ss(ssget '((0 . "DIMENSION")(-4 . "<OR")(70 . 1)(70 . 33)(-4 . "OR>"))))
- (while (setq en(ssname ss 0))
- (sk_align->rote en)
- (setq ss(ssdel en ss))
- )
- )
- (princ)
- )
- ;;转角标注(按对齐标注方式)
- (defun c:tt2(/ e1 e13 e14 e2 e2list en en0 p1 p2 sk_dxf code)
- (defun sk_dxf(en code)(cdr(assoc code(entget en))))
- (while (and(setq p1(getpoint "\n指定第一条尺寸界线原点:"))
- (setq p2(getpoint p1 "\n指定第二条尺寸界线原点:")))
- (setq en0(entlast))
- (if(= (getvar "orthomode") 0)
- (progn
- (command "_.DIMALIGNED" p1 p2 pause )
- (setq en(entlast))
- (if (and en0 en (= (sk_dxf en0 5)(sk_dxf en 5)))
- (princ)
- (progn
- (setq e1(entget en)
- e2(entget en '("*"))
- e2list(assoc -3 e2)
- e1(subst(cons 70 32)(assoc 70 e1)e1)
- e13(cdr(assoc 13 e1))
- e14(cdr(assoc 14 e1))
- e1(subst(cons 50 (angle e13 e14))(assoc 50 e1)e1)
- e1(reverse(cons '(100 . "AcDbRotatedDimension")(reverse e1))))
- ;(entmake (list(cons 0 "line")(cons 10 e13)(cons 11 e14)))
- (entdel en)
- (if e2list(setq e1(cons e2list e1)))
- (entmake e1)
- )
- )
- )
- (command "_.DIMLINEAR" p1 p2 pause )
- )
- )
- (princ)
- )
|