au-s 发表于 2022-7-6 14:21:14

领导者mtext。。口齿不清打断

该代码在ACAD2008中工作,但在ADT2008中,当我创建leader并尝试编写文本时,该代码停止。
 
拜托,有什么想法吗??
 
 

(defun LDR:SetLayer (skala)
(setq lagerDel1 "A-------D3-------")
(cond
   ((= skala "1") (setq lagernamn (strcat lagerDel1 "A")))
   ((= skala "2") (setq lagernamn (strcat lagerDel1 "J")))
   ((= skala "5") (setq lagernamn (strcat lagerDel1 "B")))
   ((= skala "10") (setq lagernamn (strcat lagerDel1 "C")))
   ((= skala "20") (setq lagernamn (strcat lagerDel1 "D")))
   ((= skala "50") (setq lagernamn (strcat lagerDel1 "E")))
   ((= skala "100") (setq lagernamn (strcat lagerDel1 "F")))
   ((= skala "200") (setq lagernamn (strcat lagerDel1 "G")))
   ((= skala "400") (setq lagernamn (strcat lagerDel1 "K")))
   ((= skala "500") (setq lagernamn (strcat lagerDel1 "H")))
)
(if (tblsearch "layer" lagernamn)
   (command "_layer" "s" lagernamn "")
   (command "_layer" "m" lagernamn "c" 1 "" "")
)
)


(defun LDR:SkapaLDRstilPILText ()
(setq dimtyp   "PilText-")
(setq DimNamnPiltext (strcat "AIX_" dimtyp skala))
(IF (tblsearch "dimstyle" DimNamnPiltext)
   (command "dimstyle" "r" DimNamnPiltext)
   (progn
   (setvar "dimtxt" 3)
(setvar "DIMCLRD" 1)
   (setvar "textsize" (* 3.0 (atoi skala)))
   (setvar "dimasz" 3.25)
   (setvar "dimtxsty" "AIX_ISO")
   (setvar "dimgap" 1.5)
   (setvar "dimldrblk" "_Open90")
   (setvar "dimscale" (atoi skala))
   (command "_dimstyle" "s" DimNamnPiltext)
(setvar "DIMCLRT" 1)
(setvar "DIMCLRD" 1)
   )
)
)

(defun c:AIX:LDRPil_Text (/ skala p1 p2 p3 oldlay)
(setq oldlay (getvar "clayer"))
(Load "K:\\CAD\\AIX-meny-2008\\Lisp\\alla\\AIX_PopupSkala.lsp")
(PopupSkala)
(LDR:SetLager skala)

(LDR:SetLager skala)

(IF (NOT (TBLSEARCH "Style" "AIX_ISO"))
   (AIX:ISO)
)
(LDR:SkapaLDRstilPilText)
(setq p1 (getpoint "\nStart Point: ")
p2 (getpoint p1 "\nSecond point: ")
)
(grdraw p1 p2 1 1)
(setq p3 (getpoint p2 "\nTextplacement: "))
(command "_leader" p1 p2 p3 "" "" "" "")
(setvar "clayer" oldlay)
(redraw)
)

au-s 发表于 2022-7-6 14:36:58

简单得多
 
(defun c:ldr (/p1 p2 p3 oldlay)
(setq oldlay (getvar "clayer"))


(setq        p1 (getpoint "\nStart Point: ")
p2 (getpoint p1 "\nSecond point: ")
)
(grdraw p1 p2 1 1)
(setq p3 (getpoint p2 "\nText Placement: "))

(command "_leader" p1 p2 p3 "" "" "" "")
(setvar "clayer" oldlay)
(redraw)
)
 
ADT中断??为什么?

jammie 发表于 2022-7-6 14:40:25

ADT中的引线提示是否与ACAD08中的相同?
 
有时,在Lisp中使用命令函数时,OSNAP可能会出现问题
 
 
 
(defun c:ldr (/p1 p2 p3 oldlay os)
(setq oldlay (getvar "clayer")
       os (getvar "osmode"))


(setq        p1 (getpoint "\nStart Point: ")
p2 (getpoint p1 "\nSecond point: ")
)
(grdraw p1 p2 1 1)
(setq p3 (getpoint p2 "\nText Placement: "))

(setvar "osmode" 0)
(command "_leader" p1 p2 p3 "" "" "" "")
(setvar "clayer" oldlay)
(setvar "osmode" os)
(redraw)
)

au-s 发表于 2022-7-6 14:47:01

你也许是对的。
 
如果他们不同,那就糟糕了。我需要让lisp在两个程序上工作,ACAD2008和ADT2008。
 
对于Thanx的建议,它并没有解决问题。。。
我正在
 
起点:
第二点:
文本位置:无
 
所以它在文本放置后中断

Lee Mac 发表于 2022-7-6 14:57:27

你能不能成为领导者?

au-s 发表于 2022-7-6 15:08:07


(entmake
(list
(cons 0 "LEADER")
)
)


(defun c:ldr (/p1 p2 p3 oldlay os)
(setq oldlay (getvar "clayer")
       os (getvar "osmode"))
(setq leader (entlast)
   elist (entget leader))



(setq    p1 (getpoint "\nStart Point: ")
   p2 (getpoint p1 "\nSecond point: ")
)
(grdraw p1 p2 1 1)
(setq p3 (getpoint p2 "\nText Placement: "))

(setvar "osmode" 0)
(command "_leader" leader p1 p2 p3 "" "" "" "")
(setvar "clayer" oldlay)
(setvar "osmode" os)
(redraw)
)
 
这是一个好看整洁的代码吗?至少目前有效。

Lee Mac 发表于 2022-7-6 15:17:08

我认为有更好的方法检查此>
http://www.theswamp.org/index.php?topic=29245.0
 
[或者直接使用它]

au-s 发表于 2022-7-6 15:23:06

 
是 啊
我试过了,但没用。
Lisp可以工作,但它就像一个领导者和多行文字分开。
它只选择文本在一侧。如果我抓取文本并移动它,“leader”不会像真正的acad leader那样跟随。
 
上述中断也。。。
页: [1]
查看完整版本: 领导者mtext。。Lisp程序打断