你好,朋友们
这是一个简单的引线尺寸,使用“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)
- )
|