不知道是不是这个意思,反正改了一下,至少程序能跑了
 - (defun c:TY (/ e1 e13 e14 e2 e2list en en0 p1 p2 sk_dxf code)
- (setq old_lay (getvar "clayer"))
- (setq vv (getvar "osmode"))
- (setq layer "06文字") ;;;;;;;;;;;这个图层你自己改回去
- (COMMAND "clayer" layer)
- (setvar "osmode" 37)
- (defun sk_dxf (en code) (cdr (assoc code (entget en))))
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (setq key T)
- (initget "S ")
- (while
- (and key
- (IF
- (= (setq p1 (getpoint "\n指定第一条尺寸界线原点[样式(S)]:"))
- "S "
- )
- (if P1
- (setq key nil)
- )
- (PROGN
- (command "-DIMSTYLE" "R" "02标注") ;;;;;;;;;;;这个图层你自己改回去
- (initget "S ")
- (setq key T)
- )
- )
- (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)
- )
- )
- (setvar "osmode" vv)
- (setvar "clayer" old_lay)
- (princ)
- )
|