DuanJinHui 发表于 2022-7-5 18:39:30

使用“引线”替换“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]
查看完整版本: 使用“引线”替换“LWPOLL”