loudy000 发表于 2022-7-5 17:02:15

多重引线角度问题

https://www.cadtutor.net/forum/attachment.php?attachmentid=59631&cid=1&stc=1
 
我一直在努力理解这段代码,在Tedg和Lee Mac的帮助下,我能够达到我想要的结果,但是我很难理解为什么当我插入Lee在我之前的帖子中提供的额外代码时,另一边的角度不能正常工作。如果没有代码(突出显示),例程工作正常(考虑到“设置着陆距离”未选中,但我需要这些代码取消选中并在命令后进行检查。我需要一些帮助,代码哪里出错了?我不是很好的lisp,我只是从各种代码中缝合它们,所以我不确定这是否是正确的方法。提前谢谢大家,干杯!
 
(defun c:mm (/ nm p1 p2 ateblk p3)
(setq l_ang 90)
(setq l_ang1 -270)
(defun MLeaderstyle ( sty flg / dic )
   (and (setq dic (dictsearch (namedobjdict) "acad_mleaderstyle"))
      (setq dic (dictsearch (cdr (assoc -1 dic)) sty))
      (entmod (subst (cons 43 ((if flg + -) (abs (cdr (assoc 43 dic))))) (assoc 43 dic) dic))
   )
)
(MLeaderLandingDistance (getvar 'cmleaderstyle) nil)
(command "cmdecho" "0")
(setq osm (getvar "osmode"))
(setq ort (getvar "orthomode"));
(command "osmode" "15359")
(setq p1 (getpoint "\nPick origin point:)"))
(command "osmode" "0")
(command "orthomode" "0")
(setq p2 (getpoint "\nPick target" p1))
(princ)
(if (< (car p1) (car p2))
   (progn
   (if (< (cadr p1) (cadr p2))
   (setq p3d (- (cadr p1) (cadr p2)))
   )
   (if (< (cadr p2) (cadr p1))
   (setq p3d (- (cadr p2) (cadr p1)))
   )
   (if (< (cadr p2) (cadr p1))
   (progn
   (setq p3 (polar p2 (+ 0.0 (dtr (- l_ang))) (* p3d 1.00)))
   )
   )
   (if (< (cadr p1) (cadr p2))
   (progn
   (setq p3 (polar p2 (+ 0.0 (dtr l_ang)) (* p3d 1.00)))
   )
   )
   )
)
(if (< (car p2) (car p1))
   (progn
   (if (< (cadr p1) (cadr p2))
   (setq p3d (- (cadr p1) (cadr p2)))
   )
   (if (< (cadr p2) (cadr p1))
   (setq p3d (- (cadr p2) (cadr p1)))
   )
   (if (< (cadr p2) (cadr p1))
   (progn
   (setq p3 (polar p2 (+ 0.0 (dtr (- l_ang1))) (* p3d 1.00)))
   )
   )
   (if (< (cadr p1) (cadr p2))
   (progn
   (setq p3 (polar p2 (+ 0.0 (dtr l_ang1)) (* p3d 1.00)))
   )
   )
   )
)
(command "_mleader" "L" "H" "o" "m" "2" "x" p2 p3 p1 "XX-XX")
(MLeaderLandingDistance (getvar 'cmleaderstyle) t)
(command "osmode" osm)
(command "orthomode" ort)
)
;
(defun dtr (a)
(* pi (/ a 180.0))
)
;               
      

loudy000 发表于 2022-7-5 17:11:22

我不知道如何删除它被贴了3倍对不起

Lee Mac 发表于 2022-7-5 17:19:27

下面是一个相对基本的示例,可以帮助您找到正确的方向:
(defunc:MLE示例(/mld pt1 pt2 tmp)(if(和[setqpt1(getpoint)(setqpt2(getpoint“\n为箭头指定点:pt1))。()(progn(setqmld(vlax invoke(vlax get property(vla get activedocument(vlax get acad object)(if(=1(getvar'cvport))“paperspace”modelspace))“addmleader(append[(trans[pt2 1 0)(trans[(list[(car[pt2)(cadr[pt1 0))(vla put text string[mld“XX-XX”(vla put textrotationmld 0.0)(vla put dogleglengthmld(abs(-(carpt1)(carpt2))(if[/color

loudy000 发表于 2022-7-5 17:24:04

 
非常感谢李。另一个伟大的代码。总是最好的

Grrr 发表于 2022-7-5 17:29:14

很好的代码李,一如既往。

Lee Mac 发表于 2022-7-5 17:33:13

 
不客气!
 
 
谢谢

loudy000 发表于 2022-7-5 17:40:41

 
嗨,李,再次感谢我刚才注意到的代码,当我在模型空间中时,我无法控制,但在纸张空间中,它工作得很好。

Lee Mac 发表于 2022-7-5 17:49:34

 
该程序在Modelspace中运行良好-你能提供一个示例吗?

Grrr 发表于 2022-7-5 17:51:37

 
我也试过了。

loudy000 发表于 2022-7-5 17:59:39

 
嗨,李,这是我在模型空间的结果
页: [1] 2
查看完整版本: 多重引线角度问题