在特定位置绘制的引线lisp
我刚开始一份新工作,我的老板希望所有的领导者要么是直的,要么是直的,要么是以15度角向右或15度角向左绘制,这取决于文本在哪一边。因此,我要么复制以前绘制的其他引线,并修改它们以用于特定注释,要么使用捕捉角度然后使用透明捕捉,以在有角度的引线上获得直接返回(这两个选项都不理想且耗时:哎哟:)。我不擅长编写lisp例程,但我想也许有人写了一个我可以用的例程?我附上一张autocad 2007图纸来说明我在说什么。谢谢
杰夫:D
领导者。图纸 这是我刚刚为你写的,我希望它能满足你的需要。
您的图形应具有Dim样式Dims-96,以使例程按需工作,否则例程将考虑当前活动的Dim样式。
试试看。。。
(defun c:Test (/ *error* acdoc p1 dir str p2 p3 e)
;; == Tharwat 29. 08. 2011 == ;;
(vl-load-com)
(defun *error* (msg)
(or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
(princ (strcat "\n** Error: " msg " **"))
)
(princ)
)
(setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)))
(if
(and
(setq p1 (getpoint "\n Specify Ledaer start Point :"))
(progn (initget 1 "Right Left")
(setq dir (getkword "\n Specify the direction <Right/Left> :"))
)
(setq str (getstring T "\n Enter Your Text :"))
)
(progn
(vla-StartUndoMark acdoc)
(cond
((eq dir "Right")
(progn (setq p2 (list (+ (car p1) 34.5) (+ (cadr p1) 128.7) 0.))
(setq p3 (polar p2 0. 165.)
)
)
((eq dir "Left")
(progn (setq p2 (list (- (car p1) 34.5) (+ (cadr p1) 128.7) 0.))
(setq p3 (polar p2 pi 165.)
)
)
)
(if str
(setq e (entmakex (list '(0 . "TEXT")
'(100 . "AcDbEntity")
'(100 . "AcDbText")
'(410 . "Model")
(cons 10 (trans p3 1 0))
'(40 . 10.5)
(cons 1 str)
'(50 . 0.)
'(210 0.0 0.0 1.0)
)
)
)
)
(entmakex (list '(0 . "LEADER")
'(100 . "AcDbEntity")
'(100 . "AcDbLeader")
'(410 . "Model")
'(8 . "ANNO-TEXT")
'(3 . "Dims-96")
(cons 10 (trans p1 1 0))
(cons 10 (trans p2 1 0))
(cons 10 (trans p3 1 0))
'(71 . 1)
'(72 . 0)
'(73 . 0)
'(74 . 0)
'(75 . 0)
'(40 . 10.5)
'(41 . 7.6)
'(76 . 3)
(cons 340 e)
)
)
)
(princ)
)
(vla-EndUndoMark acdoc)
(princ)
)
Tharwat 使用多重引线。
此选项已可用于在样式中设置:
感谢您的回复,
李,我以前试过Mleaders,但没有得到我想要的结果,但我会继续努力。
Tharwat,谢谢你的lisp例程,它非常接近我想要的,除了有没有办法为领头羊选择第一秒和第三点,而不是每次都选择相同的大小?我只是好奇你花了多长时间写Lisp程序,非常感谢你的时间!
谢谢
杰夫:)
杰夫-很值得坚持。我相信其他人会同意,MLeader比旧的Leader/QLeader实体强大得多。
页:
[1]