使用“引线”替换“LWPOLL”
你好,朋友们这是一个简单的引线尺寸,使用“LWPOLYLINE”。
可以用“leader”这样做吗?2点创建引线并使用grread。
(defun c:test (/ *error* dd dimtxt gr kd mode name1 name2 name3 p1 pt1 pt2 pt3 tbl txt ty val)
(defun *error* (msg)
(entdel name1)
(entdel name2)
(if name3 (entdel name3))
(princ "error: ")
(princ msg)
)
(setq ty (getvar "TEXTSTYLE"))
(setq txt "t=")
(setq val (getdist "\nSpecify the thickness: "))
(setq dimtxt (strcat txt (vl-princ-to-string val)))
(setq tbl (caadr (textbox (list '(0 . "text")(cons 1 dimtxt)(cons 40 2.5)(cons 41 0.7)(cons 7 ty)))))
;;(setq pt1 (cadr (entsel "\nPick the obj:")))
;;(setq pt1 (getpoint "\nEnter the base point:"))
(if (not (setq pt1 (cadr (entsel "\nPick the obj:"))))
(setq pt1 (cadr (grread t 15 0)))
)
(setq dd t)
(while dd
(setq gr (grread t 4 1)
mode (car gr)
pt2 (cadr gr)
)
(setq kd (+ tbl 2))
(if (and (listp pt2) (>= (car pt2) (car pt1)))
(progn
(setq pt3 (polar pt2 0 kd))
(setq p1 (polar pt2 0 (/ (- kd tbl) 2)) p1 (polar p1 (angtof "90") 1))
)
)
(if (and (listp pt2) (< (car pt2) (car pt1)))
(progn
(setq pt3 (polar pt2 pi kd))
(setq p1 (polar pt3 0 (/ (- kd tbl) 2)) p1 (polar p1 (angtof "90") 1))
)
)
(if (= mode 5)
(progn
(if name1 (entdel name1))
(entmake
(list
'(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
'(90 . 3)
(cons 10 pt1)
(cons 10 pt2)
(cons 10 pt3)
)
)
(setq name1 (entlast))
(if name2 (entdel name2))
(entmake
(list
'(0 . "text")
(cons 1 dimtxt)
(cons 40 2.5)
(cons 41 0.7)
(cons 10 p1)
(cons 7 ty)
)
)
(setq name2 (entlast))
(if name3 (entdel name3))
);_end_progn
);_end_if
(if (= mode 3)
(setq dd nil)
)
(if (or (= mode 2) (= mode 25))
(progn
(setq dd nil)
(entdel name1)
(entdel name2)
(if name3 (entdel name3))
)
)
);_end_while
(princ)
)
页:
[1]