画了这么多年图,我遇到过最让人头大的一类问题,不是画不出图形,而是图画完了、线型不对。去年帮一位做市政管网的同行收拾一张竣工图,他那边画完的燃气管线,发到审图方电脑上打开,管线上那串标示介质的字母全没了,只剩一排光秃秃的线;再一看,围墙的符号也变成了普通实线。图纸本身没坏,坏的是线型——自定义线型没有跟着图纸一起走,或者根本没在自己机器上定义过。这件事之后我就把 AutoCAD 和 CASS 里的自定义线型彻底梳理了一遍,从.lin文件的语法结构,到复杂线型里嵌文字、嵌形,再到 CASS 里线型跟图层、跟地物编码怎么绑,以及最坑人的比例因子换算,全部重新过了一遍。这篇内容就是那段时间的整理结果,偏向实操:怎么手写一个能用的线型定义、怎么加载验证、怎么把线型比例算对、怎么保证图纸交出去不变样。适合已经能熟练画图、但从来没打开过线型文件的人,也适合被甲方要求“按行业标准线型出图”、却不知道怎么下手的同行。里面涉及参数的地方我都把计算过程写出来了,你可以直接照着套。
1. 先搞清楚:CAD 线型到底是怎么被“认出来”的
很多人对线型的理解停留在“线型管理器里点一下就行”,这没错,但那只解决了一小半问题。线型在 CAD 里其实是一条完整的链路:磁盘上的定义文件 → 加载进当前图形的线型表 → 图层或对象引用这个线型名 → 显示和打印时按比例因子把定义里的长度换算成图面长度。这四步里任何一步断了,你看到的就是实线。
1.1 线型文件的本质与加载链路
线型定义文件是纯文本,扩展名.lin,里面一条一条写着线型长什么样。AutoCAD 装完之后自带一个主文件,CASS 安装目录下也有成套的线型文件,测绘行业常用的那些围墙、栅栏、陡坎、管线符号,基本都在里面。你新建一个.lin或者在已有文件里追加一段,本质上就是在给软件多提供几个“线型模板”。
关键在于“加载”这个动作。.lin文件躺在硬盘上,CAD 是不知道的,必须通过线型管理器把它读进当前图形的线型表。注意是“当前图形”,不是“整个软件”——这是很多人第一次踩坑的地方。你在 A 图里加载了自定义线型,画得漂漂亮亮,新建一个 B 图,线型管理器里空空如也,因为线型表是跟着图形文件(.dwg)存的,不是全局配置。想让新图自动带上,得靠样板文件(.dwt)或者把定义写进默认加载的那个.lin里。
再往下一层,图形文件里存的其实只是“线型名 + 定义内容”的副本。你把.dwg发给别人,理论上定义是跟着走的,但前提是对方打开时能找到定义里引用的字体文件和形文件。复杂线型一旦引用了外部的.shx,而对方机器上没有同名文件,线型就会退化显示,甚至直接报错。这就是开头那位同行遇到的情况——字母是嵌在复杂线型里的文字,文字样式指向的字体在对方机器上不存在,整段文字就消失了。
所以整条链路可以这么理解:.lin是菜谱,加载是把菜谱抄进这家店的点菜单,图层和对象是点了这道菜,比例因子决定这道菜做多大份。四个环节,缺一不可。
1.2 为什么默认线型总是不够用
自带的那十几种线型,应付方案图和普通建筑图够用,一旦进入专业出图就不行了。测绘行业对线性地物的表达有明确约定:管线要在线中间周期性地出现介质代号,围墙要带小方块或者短竖线,陡坎要带朝坡向的短线,行树要按株距排布树冠符号。这些东西不是靠“虚线改个间距”能凑出来的,必须自定义。
还有一类需求来自制图规范的统一性。一个项目几个人协作,如果每个人自己调线型比例、自己用近似线型凑,最后拼起来的图线宽、间距、符号密度全不一样,打印出来像拼贴画。这种情况下正确的做法是把项目要用的线型在.lin里定死,连比例因子都写进样板图,所有人从同一个底图开始画。前期多花半小时,后期省掉几小时的返工。
第三类是符号复用的问题。有些线性地物其实就是一个图形按固定间隔重复,比如铁丝网、绿篱、栏杆。这类东西完全可以用“形(shape)”的方式塞进线型定义里,画一条线,整排符号自动跟着走,改线长度的时候符号数量自动增减。这比手动一个个复制粘贴高效得多,也更不容易出错。
1.3 CASS 中线型体系的额外一层
CASS 跑在 AutoCAD 上面,所以 AutoCAD 那套线型机制它全都有,LINETYPE命令照样能用,.lin文件照样能加载。但它自己又加了一层封装:地物符号体系。在 CASS 里画一条围墙,你选的是“围墙”这个地物,软件自动把它放到对应图层、赋予对应线型、按设定的比例显示。也就是说线型名、图层名、地物编码三者是绑定关系。
这层封装带来两个后果。好处是你不用每次手动设线型,出图一致性有保障;麻烦在于,你想改线型或者加新线型,不能只改.lin,还得搞清楚它挂在哪一层。有些版本里地物对应的线型是写死在配置文件里的,你改了.lin的定义内容,同名线型会跟着变;但如果你想新增一个线型并让它跟某个地物关联,就得动配置或者在图层上做文章。
还有一个实际差异:CASS 绘制线性地物时,很多时候生成的是“骨架线 + 符号”的组合,线型只是其中一部分表达。比如陡坎,骨架线是那条坎线,上面的短线是线型里的短划或者形。这种情况下你改线型比例,短线密度会变,但骨架线位置不动。理解了这一点,排查问题时才不会把“符号不对”和“线型不对”混为一谈。
2. 动手之前:线型定义的语法与参数拆解
写线型定义不需要编程基础,但必须把语法看明白。整个.lin文件的规则非常简单,难点全在那一行定义里每个数字代表什么。我见过不少人直接抄别人的定义,改数字全靠试,改到能用为止——这样也能出活,但下次换个比例又得重来。把语法吃透,一次就写对。
2.1.lin文件的整体结构
文件是纯文本,一行一条。以分号;开头的是注释行,软件读取时直接跳过,可以随便写说明。每个线型定义以星号*开头,紧跟线型名,然后可以跟一个逗号加描述文字。下一行是对齐方式和具体的图案描述。一个文件里可以放任意多个线型定义,互相独立。
; 项目专用线型定义 *PROJ_DASH,项目虚线 __ __ __ A,12.7,-6.35 *PROJ_CENTER,项目点划线 ____ . ____ A,25.4,-6.35,0,-6.35这里有几个硬性约束必须记住。线型名里不能有空格、逗号、分号、冒号这些字符,长度也有上限,实际用下来控制在 30 个字符以内比较稳妥。描述文字可以写中文,但整个文件的编码要小心,后面讲编码时会细说。每一行的字符数也别太长,控制在 80 个字符以内,超了某些版本会截断。
文件命名随意,但建议一个项目一个文件,或者按专业分类,比如“给排水.lin”“道路.lin”。文件名和线型名都不要用中文,这是血泪教训——中文名在跨机器、跨版本传递时出问题的概率高得多,明明是你自己的机器上好好的,到别人那儿就是加载失败。
2.2 简单线型:正负数和零的含义
简单线型就是只有线段和空白的线型,定义行以字母A开头,后面跟一串用逗号分隔的数字。规则只有三条,记住就不会错:
- 正数:画一段实线,数值就是长度,单位是图形单位;
- 负数:留一段空白,数值的绝对值是空白长度;
- 零:画一个点,点的实际长度由当前线宽决定。
A这个字母表示对齐方式,意思是“保证线型的两端都是实线段”,画出来的线首尾不会出现半截空白。目前这个位置只支持A,写别的会报错。
举个例子,想要“画 12.7、空 6.35”的虚线,就是A,12.7,-6.35。想要点划线,就是“画 25.4、空 6.35、一个点、空 6.35”,写成A,25.4,-6.35,0,-6.35。双点划线就在后面再加一组0,-6.35。数字之间的比例决定观感,不决定绝对大小——绝对大小由后面的比例因子控制。
这里有个容易忽略的点:这些数字的单位是图形单位,不是毫米。如果你的图是按 1:1 画的,一个图形单位等于一毫米,那 12.7 就是 12.7 毫米。但如果图纸用的是英寸样板,一个图形单位是一英寸,同样的 12.7 就是 12.7 英寸,差了 25 倍多。所以抄别人的定义之前,先确认两边用的是不是同一套单位。
2.3 复合线型:把文字和形嵌进线里
复合线型是在简单线型的基础上,把“文字”或者“形”作为图案元素插进去。语法上就是在原有的数字序列里插入一个方括号块,方括号里写清楚插什么、怎么插。
文字线型的写法:
*PROJ_GAS,燃气管线 ----GAS---- A,12.7,-2.54,["GAS",标注,S=2.5,R=0,X=0,Y=-1.25],-2.54方括号里的内容依次是:双引号包起来的文字内容、文字样式名、以及一串可选的参数。S是文字高度,R是旋转角度,X和Y是相对于线型基线的偏移量。Y取负值通常是为了让文字压在线条上方或者下方居中,具体取多少要看字高,一般取字高的一半左右。
形线型的写法类似,只是方括号里换成形名和形文件名:
*PROJ_FENCE,栏杆 ----|---- A,6.35,-2.54,[FENCE,MyShapes,S=1.0,R=0,X=0,Y=0],-2.54这里的FENCE是形的名字,MyShapes是形文件的名字(不含扩展名)。形文件需要先用.shp源码写好,再编译成.shx。.shp的写法是另一套语法,一个形定义长这样:
*230,6,FENCE 014,002,01C,021,01C,002星号后面依次是形的编号、字节数、形名,下一行是矢量描述。这个不用手写,AutoCAD 自带的形文件编辑器可以生成,或者直接用COMPILE命令把.shp编译成.shx。实际项目里除非符号特别复杂,否则我更建议用文字线型代替形线型,维护成本低得多。
2.4 一行定义里每个参数到底在管什么
把上面这些参数整理成一张表,写定义的时候对着看,比反复试错快得多。
| 参数位置 | 含义 | 常用取值 | 说明 |
|---|---|---|---|
A | 对齐方式 | 固定A | 目前唯一支持的值,保证首尾为实线 |
| 正数 | 实线段长度 | 6.35、12.7、25.4 | 单位是图形单位,随比例因子缩放 |
| 负数 | 空白长度 | -2.54、-6.35 | 绝对值是空白长度 |
0 | 一个点 | 0 | 实际长度由线宽决定 |
["文字",样式,...] | 嵌入文字 | 见下 | 文字内容用双引号,必须指定文字样式 |
S= | 文字或形的高度 | 2.5、3.5 | 图形单位,不随LTSCALE缩放 |
R= | 旋转角度 | 0 | 0 表示沿线的走向,非 0 会整体旋转 |
X= | 沿线方向偏移 | 0、-1.25 | 正负决定文字前后移动 |
Y= | 垂直方向偏移 | -1.25、-2.5 | 常用负值让文字居中于线条 |
表里有一处需要特别提醒:S=指定的高度不受全局线型比例因子影响。这一点很多人不知道,结果把LTSCALE调到很大,线段间距拉开了,文字还是那么小一枚,挤在长线段中间很难看。正确的做法是让文字高度和线段长度保持固定的比例关系,出图比例变了就一起调整这两个值,或者干脆按最终出图后的图面尺寸来定文字高度,反推线段长度。
3. 实操:从零写一个能用的自定义线型
理论讲完,进入动手环节。我按“建文件、写定义、加载、调比例”四步走,每一步都给具体操作,你照着做一遍就能跑通。建议先在空白图上练手,别直接上正式图纸。
3.1 建文件:编码、扩展名、存放位置
新建文本文件,用记事本或者任意纯文本编辑器都行。写完保存时两个地方要注意:扩展名必须是.lin,不是.txt;编码选 ANSI,不要选 UTF-8。
编码这一条是重点。用 UTF-8 保存的.lin文件,在部分版本里读取时,中文描述和中文线型名会变成乱码,严重的时候整行定义解析失败,线型直接加载不上。如果你实在想在描述里写中文,就老老实实存 ANSI;如果追求稳妥,全英文最省心,反正描述文字只是给人看的注释,不影响功能。
存放位置有两个选择。一是放在项目目录下,随项目文件一起归档,好处是清清楚楚,坏处是每次新图都要手动加载。二是放到软件的支持文件搜索路径里,比如 CASS 安装目录下放线型文件的那个文件夹,这样启动时自动能搜到,但改动了之后要重启软件才生效。我的习惯是项目线型放项目目录,通用线型放系统目录,两边都不耽误。
还有一个容易被忽略的细节:文件放好之后,最好在选项里把所在目录加进“支持文件搜索路径”。这样即使加载时只写了文件名没写全路径,软件也能找到。图纸传给别人的时候,如果对方也在支持路径里配了同样的目录,线型丢失的概率会低很多。
3.2 写定义:三个由浅入深的例子
第一个例子,做一条项目专用的虚线。假设出图比例是 1:500,希望图面上呈现“10 毫米线、4 毫米空”的效果。因为定义里的长度会乘以比例因子,我们在定义里按 1:1 写,比例因子设成 500 就行。定义写成:
*PROJ_DASH,项目虚线 A,10,-4第二个例子,燃气管线的文字线型。要求图面上线长 12 毫米、空 3 毫米,中间嵌一个“GAS”,字高 2.5 毫米,文字垂直居中:
*PROJ_GAS,燃气管线 A,12,-3,["GAS",标注,S=2.5,R=0,X=0,Y=-1.25],-3注意文字样式名“标注”必须是当前图里已经存在的样式,否则加载会失败。稳妥起见,样式名用英文,比如STANDARD或者自己建一个LINETEXT,字体选txt.shx这类形字体。
第三个例子,双点划线,常用于表示边界或者辅助线:
*PROJ_PHANTOM,双点划线 A,25.4,-6.35,0,-6.35,0,-6.35三个例子覆盖了绝大多数场景。写完之后打开线型管理器,点“加载”,选中文件,列表里会出现你定义的所有线型,勾选需要的那个,确定。回到图上,选中对象,在特性面板里把线型改成PROJ_DASH,或者把图层线型设成它。
注意:如果加载时报“线型定义错误”,九成是那行图案描述里的逗号、引号、方括号不配对,或者数字之间用了中文逗号。用记事本写的时候输入法很容易偷偷切换,检查一遍标点。
3.3 加载与验证:一步步确认没写错
加载成功不等于显示正确,还得验证。验证分三步。
第一步,看线型管理器里有没有这个线型,名字对不对,预览图标有没有正常显示图案。预览是实线或者空白,说明定义内容有问题。
第二步,在空白处画一条足够长的线,长度要能让图案重复出现三五次以上,太短的线看不出效果,容易被误判。选中这条线,特性面板确认线型名正确、线型比例是 1、没有勾选“随层”却被图层覆盖。
第三步,用REGEN命令重生成一下视图。有些时候修改线型后画面不刷新,看着像没生效,其实只是显示缓存的问题。
如果三步走完还是不显示,先别怀疑定义,直接调LTSCALE试试。命令行输入LTSCALE,把值从 1 改成 100、500、1000 分别试一下,如果某个值下图案出来了,说明定义没问题,纯粹是比例因子太小。这个排查顺序很重要,先排除比例因素,再去改定义,能省掉大量无效折腾。
3.4 比例因子:LTSCALE、CELTSCALE、PSLTSCALE的关系
比例因子是自定义线型里最容易出错的部分,三个变量绕在一起,很多人用了几年也没完全搞明白。逐个拆开说。
LTSCALE是全局线型比例因子,作用于整张图里所有线型。它解决的问题是:线型定义里的长度是按 1:1 写的,但实际出图要缩放到 1:500,图案也得跟着放大 500 倍,否则打印出来密密麻麻挤成一条实线。
计算关系很直白:图面长度 = 定义长度 × LTSCALE ÷ 出图比例分母。反过来推,想要图面呈现 10 毫米的线段,出图比例 1:500,定义长度写的也是 10,那么10 × LTSCALE ÷ 500 = 10,解得LTSCALE = 500。如果定义长度写的是 0.02(按图面尺寸的千分之一写),那LTSCALE就是 1。两种写法都行,我习惯按 1:1 写、比例因子给大值,因为定义内容看得懂,改起来直观。
CELTSCALE是当前对象的线型比例,作用范围是单个对象,最终效果是LTSCALE × CELTSCALE。它的典型用途是一张图里有不同比例的局部详图,整体LTSCALE设好了,局部想单独调整就用它。平时保持 1 就行,别乱动,否则排查问题时很容易漏掉这个因素。
PSLTSCALE管的是图纸空间。取 0 时,视口里的线型按模型空间的比例显示,同一根线在不同比例视口里图案密度一样;取 1 时,按图纸空间的实际尺寸显示,不同比例视口里图案密度不同但图面尺寸一致。出图阶段一般设成 1,这样各视口的线型看起来协调。
还有两个补充参数值得知道。MSLTSCALE控制模型空间的线型是否跟随注释比例缩放,新版本里默认开着,好处是切换注释比例时线型自动适配,坏处是和老图纸协作时行为不一致。LTSCALE的值是存在图形文件里的,你调好了发给别人,对方打开还是这个值,但如果对方的图纸样板自带一套设定,可能会覆盖掉。
4. CASS 里的线型落地:图层、编码与出图一致性
前面讲的都是通用机制,放到 CASS 里还得考虑它那层封装。做过测绘内业的都知道,CASS 图纸最怕的不是画不出来,是画完了、检查也过了,一到打印或者交付环节符号全乱。这一节讲怎么让自定义线型在 CASS 里稳稳落地。
4.1 CASS 地物与线型的绑定关系
CASS 里每个地物都对应一个编码、一个图层、一套符号表达。线性地物的符号表达,一部分靠线型文件,一部分靠程序绘制。比如画一条通信线,程序可能先画骨架线,再按固定间距插符号;也可能直接给一条线赋一个复杂线型,让图案自己重复。具体走哪条路,取决于这个地物在符号库里的定义方式。
这意味着你改线型能不能生效,得先判断这个地物属于哪种。如果是纯粹的线型驱动,改了.lin里的同名定义,重新加载后图形会跟着变;如果是程序绘制,改线型文件根本没用,得改符号配置。判断方法很简单:选中这条线,看特性面板里显示的线型名是什么,如果是普通线型名,那就是线型驱动;如果显示“随层”且图层线型是 CONTINUOUS,那符号大概是程序画上去的独立实体。
想新增一类自定义线型并按地物方式使用,稳妥的做法分两步:先在.lin里定义好线型,在 AutoCAD 层面加载并验证显示正常;再把这个线型赋给一个专用图层,比如“管线-燃气”图层用PROJ_GAS线型,然后在 CASS 里画这类地物时指定图层,或者改配置让地物默认落到这个图层。这样做的好处是绕开了符号库的复杂配置,坏处是失去了地物编码的自动关联,后续做数据转换时要注意。
4.2 让自定义线型跟着图层走
图层是线型最可靠的载体。把线型绑在图层上,画图时只要图层选对,线型自动就对,不用每次手动设。CASS 里尤其如此,因为它的地物绘制本身就依赖图层体系。
操作上,打开图层特性管理器,选中目标图层,在“线型”那一列点开,选择已经加载的自定义线型。这里有个前提:线型必须先在当前图形里加载过,否则下拉列表里没有。所以标准流程是“先加载线型,再设图层”,顺序反了就得重来。
图层设好之后,还要确认对象的线型是“随层(BYLAYER)”而不是被单独指定过。从别的图里复制过来的对象经常带着自己的线型设定,粘进来之后不随层,看着跟同图层的其他线不一样。批量改的办法是全选该图层的对象,在特性面板里把线型统一改成 BYLAYER。
再进一步,把这套图层配置存进样板文件。CASS 出图一般会用自己的样板,你可以在样板里预设好常用的图层和线型,以后新建图形直接带上。这样团队里每个人拿到的起点一致,不会出现一个人用虚线一个人用实线的情况。样板文件里除了线型,最好连LTSCALE的值一起存进去,这一条能省掉大量“为什么我的线型和你的不一样”的争论。
4.3 出图与交付:线型不丢失的处理办法
图纸交付是线型问题的集中爆发点。本地显示正常,发出去就变样,原因通常有三个:对方没有线型定义、对方没有字体或形文件、对方比例因子不同。
针对第一个原因,最彻底的办法是把线型定义随图打包。AutoCAD 的电子传递功能可以自动收集图形引用的线型文件和字体文件,生成一个压缩包,对方解压后按提示配置就能还原。如果没有这个功能,手动把.lin文件和.shx字体文件一起发过去,并附一句说明放到支持路径里。
针对第二个原因,复杂线型里引用的文字样式要尽量用最通用的形字体,比如txt.shx、simplex.shx,这些几乎是标配。千万别用自己装的第三方字体,也不要用 TrueType 字体——复杂线型里的文字只支持形字体,用了 TrueType 会出现显示异常或者直接不显示,这个限制在帮助文档里写得很清楚,但实际踩坑的人不少。
针对第三个原因,交付前把LTSCALE的最终值记录下来,写进技术说明或者图纸备注里。更稳妥的做法是在出图前把线型“炸”成固定图形——当然这会失去可编辑性,只在最终交付版里做。中间过程稿还是保持线型,方便修改。
还有一种情况是转成其他格式。导出 PDF 时线型一般能正常保留,但导出图片或者某些中间格式时可能丢失,交付前一定要自己打开看一眼。我吃过一次亏,转了 PDF 直接发出去,对方反馈说管线上的字母全是方块,回头一查是字体嵌入没勾选。这类问题只能靠交付前自查。
5. 常见问题与排查实录
这一节是我这几年攒下来的问题清单,基本都是实际操作中撞出来的,按现象分类整理,配上排查顺序。遇到问题照着走一遍,大部分能自己解决。
5.1 加载报错与线型不显示
现象一:加载时提示“线型定义错误”。排查顺序是:先看那一行有没有中文标点,尤其是逗号和引号;再看方括号是否成对;再看数字之间有没有多余空格;最后看行首是不是漏了A。还有一种隐蔽情况是文件里混进了看不见的特殊字符,用记事本打开看不出来,换个编辑器或者重新手打一遍就好。
现象二:加载成功但图形上显示为实线。按顺序排查:LTSCALE是否太小(改成 500 试试);对象的CELTSCALE是否被改过(改回 1);对象线型是否是 BYLAYER 而图层线型是 CONTINUOUS;图层是否被冻结或关闭。这四项排除完,基本就解决了。
现象三:线型预览图标是空白。说明定义内容解析出来是空的。检查定义行是不是只有A后面没跟数字,或者所有数字都是负数(全是空白,当然什么都看不到)。
现象四:线型在模型空间正常,布局里变样。检查PSLTSCALE的取值,以及视口的比例设置。布局里的线型表现跟视口比例强相关,这是正常现象,调整PSLTSCALE到合适值即可。
5.2 文字线型乱码、倒置、偏移
文字线型是问题最集中的地方,因为涉及文字样式、字体、编码、偏移量四五个变量。
乱码。绝大多数是字体不支持。复杂线型里的文字只能用形字体(.shx),用了 TrueType 字体就会出问题。解决办法是把文字样式改成txt.shx或者simplex.shx。如果必须显示中文,得用支持中文的形字体,而且.lin文件的编码也要匹配,这一块比较麻烦,我的建议是线型里的文字尽量用英文或数字,中文走标注。
文字倒置。出现在线条方向相反的时候。线型定义里的R=0是相对线条走向的,线条从左往右画和从右往左画,文字朝向正好相反。解决方式有几种:画线时注意方向统一;用 CASS 的线型换向功能翻转;或者把R设成一个固定角度,牺牲一点自适应性换取方向一致。
文字位置偏。调整X和Y的偏移量。Y控制垂直偏移,要让文字垂直居中于线条,取值大约是负的字高一半,比如字高 2.5,Y=-1.25。X控制沿线方向偏移,一般设 0 就行,设了正值文字往后挪,可能导致和前后线段重叠。调这两个值时,边改边重生成视图,看效果最快。
文字太密或者太疏。这不是文字参数的问题,是线段长度和空白长度的比例问题。文字前后的空白段决定了文字出现的间隔,间隔太小会重叠,太大显得稀疏。调整原则是让文字前后的空白加起来略大于文字本身的宽度。
5.3 图纸换台电脑就变样
这是交付环节最典型的问题,原因前面提过,这里给一套完整的排查动作。
第一步,确认对方打开时有没有弹“未找到线型文件”或者“未找到形文件”的提示。有提示就说明文件缺失,把对应的.lin和.shx发过去。
第二步,让对方打开线型管理器,看自定义线型的名字在不在。不在就是没加载或者文件没找到,在但是显示不对就是定义内容或者字体的问题。
第三步,对比LTSCALE的值。这一步最容易被跳过,因为双方都觉得“我没动过啊”,但样板不同、复制粘贴不同、版本默认值不同,都会导致差异。
第四步,如果都正常但打印出来还是不对,检查打印样式表和线宽设置。线型只决定图案,线宽是另一套东西,有时候看着“线太粗看不出来是虚线”,其实是线宽压过了图案间距。
5.4 问题速查表
把上面的排查逻辑浓缩成一张表,贴在工位上随时对照。
| 现象 | 最可能原因 | 快速验证 | 处理方式 |
|---|---|---|---|
| 加载提示定义错误 | 标点或括号不配对 | 逐字符检查定义行 | 改成英文标点,重写该行 |
| 显示为实线 | LTSCALE过小 | 改成 500 观察 | 按出图比例重算比例因子 |
| 显示为实线 | 对象线型非随层 | 看特性面板线型项 | 改为 BYLAYER |
| 预览图标空白 | 定义内容全为空白 | 检查数字正负号 | 补充正数线段 |
| 文字变方块 | 字体不支持 | 看文字样式用的字体 | 改为.shx形字体 |
| 文字倒置 | 线条绘制方向反了 | 翻转线条观察 | 统一绘制方向或用换向功能 |
| 图案间距过大 | 定义里的空白值偏大 | 对比线段与空白比例 | 调小负数值 |
| 换机器后变样 | 线型或字体缺失 | 看打开时有无提示 | 打包线型与字体文件 |
| 布局里密度不同 | PSLTSCALE设置差异 | 改 0 和 1 对比 | 按出图需求固定取值 |
6. 几条踩过坑才明白的经验
写到这里,技术层面的东西基本都覆盖了。最后分享几条纯经验,都是交了学费换来的,看着不起眼,实际能省很多事。
第一条,线型定义宁简勿繁。刚开始总想把线型做得花哨,线段、点、文字、形全塞进去,结果一处不对整条线型报废。后来我改成一次只加一个元素,加完立刻加载验证,通过了再加下一个。增量式的做法看着慢,实际比推倒重来快得多。
第二条,别在正式图纸上试线型。自定义线型出错时会污染图形,轻则显示异常重则文件打不开。固定开一个空白图做试验田,验证通过了再往正式图里搬。搬的方式也简单,把定义文件加载进去,或者直接把带线型的对象复制过去,线型定义会自动带过去。
第三条,比例因子要写在图纸说明里。不管是内部协作还是对外交付,把最终的LTSCALE值记在技术说明上,能省掉后面无数次的来回确认。我现在的习惯是在图纸的图签或者附属说明里加一行“线型比例因子:500”,简单一行字,沟通成本降一半。
第四条,复杂线型慎用于大面积出图。文字线型、形线型在显示和打印时都比较吃资源,一张图上几百条带文字的线,开图速度和打印速度都会明显变慢。大面积出图时我倾向于把线型转成固定图形,牺牲可编辑性换性能。这个取舍看项目阶段,方案阶段留着线型方便改,竣工阶段转图形保证出图稳定。
第五条,CASS 里改线型前先备份配置。它的地物和线型绑定关系藏在配置文件里,改错了不好回退。动手之前把相关配置目录整个复制一份,出问题直接覆盖回来。这个习惯是被一次误操作逼出来的,当时改了图层配置没备份,导致一批图的地物符号全乱,重新配花了大半天。
第六条,也是最实在的一条:先问清楚对方要什么。甲方说“线型不对”,有时候指的不是线型文件,而是图案风格、颜色、线宽,甚至是符号位置。我现在的做法是拿到需求先要一张参考图,对着参考图反推线型定义,比凭空猜要准得多。参考图上量一下线段长度、空白长度、文字高度,换算成图形单位,定义一次成型,基本不用返工。