如何用.shx形状文件创建AutoCAD自定义线型及报错排查
AutoCAD自定义线型(.shx形状文件)报错解决与参数解析
一、报错原因与修复方案
1. .shx文件加载报错(Error reading shape file)
你用MapExport导出的.shx是GIS领域的形状索引文件,和AutoCAD线型需要的.shx完全不是一回事:
- GIS的.shx是配合.shp/.dbf存储地理数据的,根本不能用于AutoCAD线型;
- AutoCAD要用的是自定义形状编译文件,得用AutoCAD自带流程生成:
- 用
SHAPE命令创建你的"X"交叉线形状,保存成.shp格式的定义文件; - 命令行输入
COMPILE,选中刚才的.shp文件,生成可用于线型的.shx; - 确保这个
.shx和你的.lin文件路径对应,或者先通过LOAD命令加载它。
- 用
2. .lin文件报错(Bad definition...)
你的线型定义存在3个问题:
- 形状名和文件名搞混:括号内第一个参数是形状在.shx里的内部名称,不是文件名,必须和你制作
.shp时的命名一致; - 参数格式有误:括号内必须按
[形状名, 文件路径, s=缩放值, x=X偏移]的格式书写,数值不能有语法错误; - 线型循环段逻辑失衡:最后一个参数写
1会导致线型循环紊乱,改成和开头实线长度一致的.125才合理。
修正后的线型定义示例(假设你定义的形状内部名叫BARB,编译后的文件是fnc-barbwire.shx):
*FNC-BARB,Barbwire ----X----X----X---- A,.125,-.1,[BARB,L:\AutoCAD\Linetypes\fnc-barbwire.shx,s=.1,x=-.1],-.1,.125
二、线型定义参数详细解析
线型里A,开头的是绘制循环段,每个参数按顺序对应:
.125:绘制一段长度为0.125的实线;-.1:空出0.1长度的空白(不绘制);[BARB,...]:插入自定义形状,括号内的子参数:BARB:.shx文件中预先定义的形状内部名称;L:\AutoCAD\Linetypes\fnc-barbwire.shx:形状文件的完整路径;s=.1:将形状缩放至原大小的0.1倍;x=-.1:让形状在X轴向左偏移0.1,用来对齐前后的线段;
- 后面的
-.1和.125:重复空白段和实线段,形成循环的铁丝网样式。
再拆解你提供的示例代码:
*DEMO,Demolition X X X X X A,0,[DEMO,DEMO],-0.3
*DEMO:线型的唯一标识名称;Demolition X X X X X:线型的预览描述文字;A,0,[DEMO,DEMO],-0.3:0:不绘制实线,直接插入形状;[DEMO,DEMO]:插入内部名为DEMO的形状,使用已加载的DEMO.shx文件;-0.3:空出0.3长度的空白,循环此流程。
内容的提问来源于stack exchange,提问作者Gro4Us
相关产品推荐
相关产品推荐

