【AutoLisp】插入块的三种方法

时间:2023-05-02 23:57:32       来源:哔哩哔哩

AutlLisp版本:Visual LISP 2024 (zh)


【资料图】

插入块的方法有三种:

command调用insert

entmake生成图元

vla扩展函数

一、command调用insert

示例:

其中:

[command]为AutoLisp调用AutoCAD操作的命令。

["_.-insert"]表示CutoCAD插入块命令,其前面的 "-" 表示调用该命令的命令行模式,再前面的 "_." 表示调用该命令的原始定义,而非各种再定义、重定义。

[#sBLK]为字符串,表示块名。这里有如下三种情况:

1)逻辑上首先调用图形文件中存在的块名,若图形文件中之前不存在该块的定义,则会从AutoCAD设定(options)中的“支持文件搜索路径”中搜索图形文件名“#sBLK.dwg”,将目标图形文件中的图形作为块插入当前图形文件,并在当前图形文件中添加块定义“#sBLK”。

若要指定目标图形文件“#sBLK.dwg”被作为块插入时的插入基点,请使用如下方式:

可以使用"_.base"命令查询所设定的基点值。

2)“#sBLK”可以为路径,则会从指定路径把目标图形文件作为块插入当前图形文件。

若目标图形文件在AutoCAD“支持文件搜索路径”内,可以采用如下语句获得路径:

3)可以在块名前加 “*”,此时,会插入块分解后的图形,如果图形文件中之前没有该块的定义,这样做也不会添加该块的定义。

[(list 0 0 0)]为插入点坐标。

[#rXSCALE #rYSCALE]为实型数,表示所插入图块x拉伸比例和y拉伸比例。

[#degR]为旋转角度<角度制>。

二、entmake生成图元

示例:

该方法的好处:可以控制插入块的图层,可以获得块的图元名

该方法的缺点:图形文件必须已经有块定义,若没有,需要先通过insert方法生成定义:

先在原点插入一次块,生成了块定义,然后删除该块。

三、vla扩展函数

vla-InsertBlock命令,示例:

其中:#ModelSpace为要插入的空间;#pt为插入点坐标;#sBLKNAME为块名;#rSX #rSY #rsZ为XYZ拉伸比例;#ar为旋转角度<弧度制>。

该方法的好处:代码行数少

该方法的缺点:图形文件必须已经有块定义,若没有,需要先通过insert方法生成定义;无法指定图层;要指定空间,涉及到vla命令。

该方法更详细内容请见官方文档“vla-insertblock”:

https://help.autodesk.com/view/OARX/2023/CHS/?guid=GUID-17F86FDD-B7FC-4F43-9F16-B4958F73A66D

关键词: