if语句询问acadiso中是否存在线型“DASHED2.5”(第一选择)。林。
如果是,则加载它。
Else加载“hidden2”(第二选择)
至少我是这么想的 请尝试以下操作:
(defun ltload ( typ lin )
(eval
(list 'defun 'ltload '( typ lin )
(list 'vl-catch-all-apply ''vla-load
(list 'list
(vla-get-linetypes (vla-get-activedocument (vlax-get-acad-object)))
'typ
'lin
)
)
'(tblsearch "ltype" typ)
)
)
(ltload typ lin)
)
(cond
( (ltload "DASHED2.5" "acadiso.lin")
(princ "\nLoaded DASHED2.5 linetype.")
)
( (ltload "HIDDEN2" "acadiso.lin")
(princ "\nLoaded HIDDEN2 linetype.")
)
( (princ "\nUnable to load HIDDEN2 linetype."))
) 来吧,非常感谢李。
为了测试,我在一个新的绘图中运行了它&它加载了dashed2.5
然后,我从acadiso中删除dashed2.5,保存它,清除图形并重新运行lisp
宾果,它加载了hidden2
我猜:
( (princ "\nUnable to load HIDDEN2 linetype."))是条件T吗?
欢迎你,哈比人-该方法基本上与我的Load Linetypes函数使用的方法相同,尽管正如你已经知道的那样,该方法非常简洁。线型所在的lin文件。
您是正确的-如果程序未能加载任何一种线型,则将计算此表达式,因此前面的测试表达式返回了nil。
注意,对于这个最终条件,不需要显式的“t”作为测试表达式,因为第一个表达式(测试表达式)将始终被计算。 在post#9中,我试图使用IF语句来确定代码是否返回T。显然,这是错误的做法。
现在我已经将您的defun ltload(作为一个子函数)插入到主lisp中,作为主列表中的一个writing和cond函数,它工作得非常好
非常非常感谢李
给伦敦那个永远乐于助人的家伙打上最高分
无论如何,您仍然可以使用一系列IF语句编写代码(通常,任何COND表达式都可以作为一系列嵌套的IF表达式编写),例如:
(if (ltload "DASHED2.5" "acadiso.lin")
(princ "\nLoaded DASHED2.5 linetype.")
(if (ltload "HIDDEN2" "acadiso.lin")
(princ "\nLoaded HIDDEN2 linetype.")
(princ "\nUnable to load HIDDEN2 linetype.")
)
)
我只是觉得康德在这种情况下更清楚。
很高兴听到,谢谢你的好话和感激之情。
李 不用了,李,我宁愿每次都用康德。即使使用vlide,它也比嵌套的“if-then-else”语句清晰得多。我甚至考虑更新我早期在lisp上的一些尝试(大约12个月前),用cond替换ifs。
如果我能找到时间的话。
页:
1
[2]