guitarguy1685 发表于 2022-7-6 11:30:04

块插入失败

我有一个lisp可以插入块。但是,如果块不存在,autocad将打开该命令窗口并显示其搜索的所有路径。
 
在我的lisp中,我只使用命令行插入。看起来是这样的

(vl-cmdf "-insert" WBIns P1 "1" "1" pause)

 
如果块不存在,lisp将执行此操作
 

Command: _TEST
Enter block name. <test> test2
Specify insertion point
Specify rotation:
"B0101.dwg": Can't find file in search path:
C:\Program Files\Autodesk\Acadm 2007\support\
C:\Program Files\Autodesk\Acadm 2007\fonts\
C:\Program Files\Autodesk\Acadm 2007\help\
C:\Program Files\Autodesk\Acadm 2007\express\
C:\Program Files\Autodesk\Acadm 2007\support\color\
C:\Program Files\Autodesk\Acadm 2007\drv\
C:\Program Files\Autodesk\Acadm 2007\
*Invalid*
Unknown command "1".Press F1 for help.
Unknown command "1".Press F1 for help.


 
“1”是x/y比例因子。在此之后,Lisp程序仍在暂停。我想要的是,如果块不存在,则取消lisp。我该怎么做?

JohnM 发表于 2022-7-6 12:08:45

如果块是外部块(WBLOCK),只需使用findfile函数,如果返回nil,只需退出程序。
如果块是内部块(图形模板中的块),请使用tblsearch函数,如果返回nil,则退出

guitarguy1685 发表于 2022-7-6 12:28:32

很好很好。哇findfile我不知道它的存在谢谢

alanjt 发表于 2022-7-6 12:48:08

试试这个。。。
 
(and (or (tblsearch "block" BLOCKNAME)
      (findfile BLOCKNAME.DWG))
    (vl-cmdf "_.-insert"....
 
仅当它在图形中找到块定义或在支持路径中找到块文件时,才会插入。
页: [1]
查看完整版本: 块插入失败