在multilea上交换箭头
我有一个关于交换多重引线箭头的快速问题。例如,其中一个代码只交换到整数符号,另一个代码交换到点。我注意到的一件事是,除非图形中已经有另一个具有相同箭头的多重引线,否则它不起作用。我不确定这是否与图形中实际不存在的块有关,或者是其他原因。我的一个密码是(defun c:mleaderdot (/ ss cnt obj *error*)
(defun *error* (msg)
(if (not
(member msg '("Function cancelled" "quit / exit abort"))
)
(princ (strcat "\nError: " msg))
)
(princ)
)
(if (setq ss (LM:ssget "\nSelect MLEADERS to put dot"
'(((0 . "MULTILEADER")))
)
)
(progn
(setq cnt 0)
(repeat (sslength ss)
(setq obj (vlax-ename->vla-object (ssname ss cnt)))
(setq cnt (+ cnt 1))
(vla-put-ArrowheadBlock obj "_dot")
)
)
)
(princ)
) 我在尝试使用时发现相同的“未找到密钥”错误
(vla-put-arrowheadtype ent "_dot")
然而,我成功地用
(vla-put-arrowheadtype xEnt 3)
一旦我使用了箭头类型,我就可以放置箭头块“U点”。
好的,这里有一种(有点混乱)的方法,允许您根据块名称选择箭头。该方法迭代一个最大为19的整数,该整数是可用的箭头数(或至少vla put ARROWSHEADTYPE 20未找到错误)。每个箭头类型都应用于选择图元和从vla get ARROWSHEADTYPE中拾取的块名称。潜在箭头列表打印到控制台。循环完成后,选定多重引线的箭头将恢复到其原始状态。最后,邀请用户输入表示所需箭头块名称的整数。
(vl-load-com)
(defun c ()
(setq ent (car(entsel))
xEnt (vlax-ename->vla-object ent)
aht (vla-get-arrowheadtype xEnt)
i -1)
(while (< (setq i (+ i 2)) 18)
(setq str (strcat
(rtos i 2)
". "
(vla-get-arrowheadblock xEnt)
" "
(rtos (1+ i))
". "))
(vla-put-arrowheadtype xEnt (1+ i))
(princ (strcat
str
(vla-get-arrowheadblock xEnt)
"\n")))
(princ (strcat
"19. "
(vla-get-arrowheadblock xEnt)
"\n"))
(vla-put-arrowheadtype xEnt aht)
(vla-put-arrowheadtype xEnt (getint "Enter the id of the arrow head you're looking for:"))
)
使用“属性”可以选择多个引线并设置“点”等。不知道为什么需要lisp? 谢谢你的帮助!有趣的是,它得到了这个错误,但整数方法可以工作。我会用这个角色代码,谢谢你的帮助!BigAL,我从来没有真正打开过属性对话框,除非我必须使用它,否则我不会使用它,因为我发现它比使用命令行慢得多。 漂亮的线!也许这将有助于与VLA一起打造新的mleaderstyle。
当我尝试制作新的mleaderstyles时,每个人都应该包含每种standart箭头类型,但此时失败了。
页:
[1]