olyswen 发表于 2022-7-6 08:59:27

在特定位置绘制的引线lisp

我刚开始一份新工作,我的老板希望所有的领导者要么是直的,要么是直的,要么是以15度角向右或15度角向左绘制,这取决于文本在哪一边。因此,我要么复制以前绘制的其他引线,并修改它们以用于特定注释,要么使用捕捉角度然后使用透明捕捉,以在有角度的引线上获得直接返回(这两个选项都不理想且耗时:哎哟:)。我不擅长编写lisp例程,但我想也许有人写了一个我可以用的例程?我附上一张autocad 2007图纸来说明我在说什么。
 
谢谢
杰夫:D
领导者。图纸

Tharwat 发表于 2022-7-6 09:20:18

这是我刚刚为你写的,我希望它能满足你的需要。
 
您的图形应具有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

Lee Mac 发表于 2022-7-6 09:36:41

使用多重引线。
 
此选项已可用于在样式中设置:
 

olyswen 发表于 2022-7-6 09:50:03

感谢您的回复,
 
李,我以前试过Mleaders,但没有得到我想要的结果,但我会继续努力。
 
Tharwat,谢谢你的lisp例程,它非常接近我想要的,除了有没有办法为领头羊选择第一秒和第三点,而不是每次都选择相同的大小?我只是好奇你花了多长时间写Lisp程序,非常感谢你的时间!
 
谢谢
杰夫:)

Lee Mac 发表于 2022-7-6 10:10:42

 
杰夫-很值得坚持。我相信其他人会同意,MLeader比旧的Leader/QLeader实体强大得多。
页: [1]
查看完整版本: 在特定位置绘制的引线lisp