AutoCAD线型和填充图案的二次开发.docx
《AutoCAD线型和填充图案的二次开发.docx》由会员分享,可在线阅读,更多相关《AutoCAD线型和填充图案的二次开发.docx(39页珍藏版)》请在冰点文库上搜索。
AutoCAD线型和填充图案的二次开发
第二章AutoCAD的线型及充填图案开发
AutoCAD提供了标准线型库(文件)ACAD.LIN和标准图案库(文件)ACAD.PAT,在绘图时,可根据需要选择其中的线型或图案来设置要画的线型或充填图案。
但当这些线型库或图案库满足不了用户的要求时,就需要对AutoCAD进行二次开发,以生成满足用户特殊要求的线型和图案。
第一节AutoCAD应用于地质绘图的局限
AutoCAD提供的标准线型是由名为ACAD.LIN的标准线型库文件定义的。
标准线型库文件中包含有通用线型、ISO线型和复合线型三大类线型。
AutoCADR14标准线型库中所定义的线型数量及特性如下:
库中含通用线型25种,除连续线外的24种可分为8类,每类有3种不同的线段长度和间隔,其线型名分别是“类名”、“类名2”和“类名X2”,其中后两种线型的线段长度和间隔分别是前一种的一半和两倍。
ISO线型按ISO128标准且笔宽为1mm时定义,共有14种。
当将其用于ISO预定义的其他线型时,可通过改变相应的线型比例LTSCALE的数值来得到。
另外,AutoCAD标准线型库提供的复合线型为7种。
虽然AutoCADR14标准线型库文件ACAD.LIN提供了如此多的线型,但是我们知道,AutoCAD最初是为建筑和机械绘图而设置的。
当用AutoCAD绘制地质图件时,许多地质方面的线型AutoCAD都不能提供。
例如,我们在绘制剖面图时,地表第四系的绘制就比较麻烦。
当然,我们可以把第四系作成块的方式来插入,当地表起伏不大时,可通过“阵列”命令来较快地实现第四系的绘制,如图:
但是当地表起伏较大时,我们就只能把第四系以块的形式一个一个插入,以实现第四系的绘制,这样就会很浪费时间。
如果我们把第四系作成复合线型的方式,就能很快实现第四系的绘制。
第四系的复合线型如图:
另外AutoCAD提供的标准图案库文件ACAD.PAT中的图案,远远不能满足绘制地层柱状图和剖面图的需要。
例如,地层柱状图中常用的砂岩、泥岩、粉砂岩等,AutoCAD标准图案库文件是不能提供的,更不用说其他的如硅质岩、黄铁矿、铝土矿、火山角砾岩等图案了。
虽然,AutoCAD中具有灰岩的图案,我们可以直接加以引用,但是当绘制剖面图时引用灰岩图案就会遇到难题。
因为在剖面图中,灰岩随深度的变化而上下起伏,直接用AutoCAD标准图案库提供的灰岩充填时,虽可调节灰岩的角度,但终不能达到随深度变化而变化的要求,所以不能直接用来充填。
从以上分析可以看出,AutoCAD若不进行二次开发,它在绘制地质图件方面存在很大的局限性。
第二节AutoCAD的线型开发方法
一、线型文件的格式
线型文件是一种纯ASCII码格式的文本文件,一个线型文件可以定义多种线型。
每一种线型的定义在线型文件中占两行。
空行和分号后面(注释)的内容都被忽略。
每一线型的定义如下:
*线型名[,线型描述]
Alignment,dash-1,dash-2,dash-3,...
例如:
*推测整合地层界限,128-----
A,3,-1
描述是选择项,除可为点、间隔及短划线的组合序列外,还可以是对线型的说明,如“Usethislinetypeforhiddenlines”(此线型用于表示隐藏线),用户对线型的描述不能超过47个字符。
线型描述是可选项,即允许省略,此时线型后不能有逗号。
Alignment字段为线型对齐方式。
目前AutoCAD只支持一种对齐方式,即通过在字段开头输入“A”来指定。
使用A型对齐,AutoCAD将保证直线的端点处为短划线。
这种对齐方式,首短划线的值应大于等于0(即下笔段或点),第二个短划线的值应小于0(提笔段),并从第一个短划线说明开始,至少有2个短划线结构说明。
线型说明中的短划线序列,将从第一个到最后一个相继画出来,然后再从第一个说明的短划线开始重复这个序列。
dash-n字段指定组成线型的线段的长度。
若长度为正,则表示是下笔段,即为要画出的线段;若长度为负,则表示为一提笔段(间隔);长度为零则画出一个点。
在.LIN文件中,每个线段定义应限制在80个字符以内,R14版本最多可允许280个字符。
即使在最多80个字符行中,用户可为每个线型确定12个线段,12个点以及12个间隔。
对于一般的线型定义,这已足够了。
二、线型的开发方法
AutoCAD既提供了在某系统内部生成新线型的命令,又允许用户用文本编辑程序在AutoCAD之外生成线型文件。
用户定义的新线型即可以加在标准线型文件ACAD.LIN中,又可以自己定义新的线行文件。
(一)、在AutoCAD内部用“-LINETYPE”命令生成新线型
进入AutoCAD后,可以通过“-LINETYPE”命令随时定义开发新线型。
具体过程如下:
命令(Command):
-LINETYPE
?
/Create/Load/Set:
C(回车)
Nameoflinetypetocreate:
(线型名)
此时,屏幕出现“SleetLinetypeFile(选择线型文件)”对话框。
这时,用户有两中选择:
一是在原有文件(如ACAD.LIN)中增加新线型;二是建立新线型文件来定义新线型。
现分析如下。
原有线型文件中增加新线型
在选择对话框中的某一文件名,则屏幕提示如下信息:
Wait,checkingiflinetypealreadydefined...
(稍侯,正在检查是否线型已经定义过...)
这是AutoCAD提供的安全措施,其目的是防止用户定义的线型名与原有的线型名重复而覆盖原有的线型。
如果发现用户输入的线型名已在所选择的线型文件中,则显示线型文件中该线型的定义内容并提示:
Overwrite(Y/N)〈N〉?
(覆盖吗)
此时按空格键或回车,则不覆盖原有的同名线型。
系统会提示用户输入另外的线型名和线型文件名。
若输入“Y”并回车,则系统将用新生成线型覆盖原有的同名线型。
接下来的操作如下:
Descriptivetext:
(线型描述)
在此提示下,键入表示线型的下划线、空格和点的组合。
Enterpaten(onnextline):
(在下一行输入线型的具体参数)
在此提示下,键入所定义线型的具体参数。
?
/Create/Load/Set:
(回车)
到此,新线型即已加载在原有的线型文件中。
若要继续增加新线型,则可输入“C”重复上述过程。
否则回车,结束-LINETYPE命令,回到“命令(Command):
”提示符下。
建立新线型文件
在“选择线型文件”对话框中的“文件名”一栏中输入新线型文件名并回车,则AutoCAD会生成一个扩展名为.LIN的线型文件,此时屏幕提示如下信息:
Descriptivetext:
(此处用户需键入线型描述)
Createnewfile
Enterpattern(onnextline):
A,(此处用户应键入所定义线型的具体参数)
Newdefinitionwrittentofile.
?
/Create/Load/Set:
(回车)
到此,新线型即已定义在新的线型文件中。
若要继续增加新线型,则可输入“C”重复上述过程。
否则回车,结束-LINETYPE命令,回到“命令(Command):
”提示符下。
(二)、直接编辑线型文件来生成新线型
用文本编辑程序生成新线型的方法较简单,用户不必进入AutoCAD系统而是通过在已有线型文件中增加新的线型定义或修改原有线型定义来建立新的线型,用户也可以借助于建立新的线型文件来增加新线型。
无论是编辑已有线型文件还是建立新的线型文件,都必须注意线型扩展名一定为.LIN。
另外,在已有的线型文件中增加新线型时,还应注意增加的新线型定义不能插在已有定义的两行之间。
线型文件编辑完成后存盘,即可在AutoCAD中调试和使用新线型。
三、复合线型的定义格式
复合线型定义的语法格式与前述简单线型基本相同,不同之处在于复合线型在定义中增加了用方括号括起来的特殊参数,用以告诉AutoCAD如何潜入文本或形。
复合线型定义的具体格式如下:
*线型名[,线型描述]
Alignment,dash-1,dash-2,dash-3,...[嵌入的文本字符串或形定义],dash-n,...
其中,嵌入文本字符串的定义语法为:
[“string”,style,R=n,A=n,S=n,X=n,Y=n]
例如:
*断层下盘,389----x----
A,20,-2,["×",standard,s=2.5,x=-1.4,y=-1.4],-2
嵌入的形定义语法是:
[shapename,shape-file,R=n,A=n,S=n,X=n,Y=n]
例如:
*煤厚为零点边界,52-------。
-------
A,30,-0.1,[circ1,ltypeshp.shx,s=0.75,r=0,x=-0.1,y=-0.1],-1.35
string是双引号中的由一个或多个字符组合的文本字符串,shapename是shape-file文件中的形名。
shape-file文件中必须有形,否则AutoCAD不允许用户使用此线型。
AutoCAD系统提供的形如下:
TRACK1ZIGBOXCIRC1BAT。
Style是文本式样的名字,shape-file为AutoCAD的.SHX形文件。
如果当前图形中没有style,AutoCAD则不允许使用此线型。
如果shape-file文件没有位于库搜索路径中,AutoCAD会提示并要求用户选择另一个.SHX文件。
在shape-file文件中可以包括路径。
其余五个字段R=、A=、S=、X=、和Y=为可选择的转换分类。
每个转换分类后面的n表示所需数字。
R=n表示文本文字或形相对于当前线段方向的转角。
缺省时为0,表示AutoCAD文本或形的方向所与所给线段方向一致。
当给定一定的角度时,文本文字或形就会以此角度相对于当前线段方向旋转。
例如,断层下盘线,当R=0时,如下图:
当R给定一角度时,如R=45时,如下图:
A=n表示文本或形相对与世界坐标系的X轴的绝对的转角。
当希望文本或形总是以水平方式出现而与线段的方向无关时,可采用A=0(如上图)。
用户可以指定R和A,但两者不能同时指定值。
如果两个都没有指定值,则AutoCAD采用R=0。
如下图:
R和A以度为单位。
如果希望以弧度或剃度作为单位,那么数字后面必须加R和G。
S=N确定文本或比例系数。
如果使用固定高度的文本式样,AutoCAD会将此高度乘以n。
如果使用的是变高度的式样,AutoCAD则会把n看作绝对高度。
对于形而言,S=缩放系数会使形从其缺省缩放系数1.0按此值放大或缩小。
在任何情况下,AutoCAD通过S=缩放系数与LTSCALE和CELTSCALE的乘积来确定高度或缩放系数。
因此,应该将S=确定成正常LTSCALE(例如0.5)下以1:
1为输出比例是所对应的值时,这些文本或形在图纸上以相对应的尺寸出现。
由于S的值的不同,线型的表示形式也不同。
以煤矿占地边界线为例,当S=0.5、1、1.5时,分别表示如下:
X=n和Y=n为可选项,它们确定相对与线型分类中的当前的偏移量。
缺省时AutoCAD将文本字符串的左下角点或形的插入点方在此当前点。
两个偏移量分别沿着当前线段方向(对于X)和沿着当前线段方向垂直方向(对于Y)度量,就象有一个局部坐标系,它的X轴从当前线段的第一个端点指向第二个端点。
因此正的X便移量会使文本或形朝着当前线段的第二个端点方向移动,正的Y便移量使文本或形沿着正X方向的90°方向(逆时针)移动。
这两个偏移量将使文本或形的定位更加精确。
以煤矿占地边界线为例,当X=0.1、1、2,Y=0.1、1、2时,分别表示如下:
复合线型的创建
与简单线型不同的是,复合线型的创建不能采用在AutoCAD内部以命令行添加线型码的方式,而只能通过编辑已有线型文件或建立新的线型文件来生成新线型。
第三节据于矿地质测量图例开发地质线型
根据中华人民共和国能源部制订的《煤矿地质测量图例》的要求,通过文本编辑器—记事本在AutoCAD之外生成纯ASCII码格式的地质线型文本文件。
为了便于识别和调用,所有线型的名称均为此线型所表示的地质名称。
例如:
断层上盘线型的名称为“断层上盘”;井田边界线型的名称为“井田边界”等。
后面的编号为其在煤矿地测图例中的编号。
在编辑地质线型时,不包含具体地质线型的线宽,因为在通过AutoCAD来调用地质线型时,可以用“PLINE”命令来设置线宽。
所编辑的地质线型文件如下:
*可采边界,51-------------------
A,40,-2,3,-2
*煤田边界,46--------.--------
A,10,-1,3,-1
*推测整合地层界限,128-----
A,3,-1
*基岩露头线,133....
A,0,-1
*层位连线,134--.---.---
A,7,-1.5,0,-1.5
*伽玛伽玛,330(HGG)---..---
A,6,-0.7,0,-0.6,0,-0.7
*密度,331(HM)---..---
A,6,-0.7,0,-0.6,0,-0.7
*选择伽玛伽玛,332(HGS)--..--
A,3,-0.7,0,-0.6,0,-0.7
*中子伽玛,333(HZG)-.-
A,3,-1,0,-1
*中子中子,334(HZZ)-.-
A,3,-1,0,-1
*自然伽玛,335(HG)---.---
A,6,-1,0,-1
*声速,336(SV)----
A,6,-2
*声幅,337(SF)---
A,3,-2
*自然电位,346(DZM)....
A,0,-1
*电极电位,347(DSW)---
A,2,-1
*人工电位,348(DGW)---
A,2,-1
*激发电位,349(DFW)---
A,2,-1
*轴线,373-------
A,20,-2,2,-2
*采区边界,50-------
A,40,-2,["●",standard,s=1.2,x=0,y=-0.6],-3
*断层上盘,389----.----
A,20,-2,["●",STANDARD,S=1,X=0,Y=-0.5],-2.5
*断层下盘,389----x----
A,20,-2,["×",standard,s=2.5,x=-1.4,y=-1.4],-2
*储量块段界线,409--------
A,4,-1
*等水压线,-----.-----
A,5,-1,0,-1
*承压水顶板或底板等深线,447-----.------
A,10,-1,0,-1
*咸水顶板或淡水底板等深线,448-----..-----
A,10,-1,0,-1,0,-1
*水质类型分区界线,456-----------
A,10,-1,2,-1
*富水性界线,457--------------
A,8,-3
*矿化度界线,458------
A,5,-1
*防水危险区警戒线,518-----x-----
A,15,-2,["×",standard,s=1,r=0,x=-0.1,y=-0.5],-3
*井下冒顶线,41------
A,2,-1
*矿区边界,47--------||--------
A,40,-2.5,[track1,ltypeshp.shx,S=2,X=0,Y=0],-0.125,[track1,ltypeshp.shx,S=2,X=0,Y=0],
-0.125[track1,ltypeshp.shx,S=2,X=0,Y=0],-0.125,[track1,ltypeshp.shx,S=2,X=0,Y=0],
-3,[track1,ltypeshp.shx,S=2,X=0,Y=0],-0.125,[track1,ltypeshp.shx,S=2,X=0,Y=0],
-0.125,[track1,ltypeshp.shx,S=2,X=0,Y=0],-2.5
*勘探区边界,48--------|--------
A,40,-2.5,[track1,ltypeshp.shx,s=2,x=0,y=0],
-0.125,[TRACK1,LTYPESHP.SHX,S=2,X=0,Y=0],
-0.125,[TRACK1,LTYPESHP.SHX,S=2,X=0,Y=0],
-0.125,[TRACK1,LTYPESHP.SHX,S=2,X=0,Y=0],
-0.125,[TRACK1,LTYPESHP.SHX,S=2,X=0,Y=0],-2.5
*井田边界,49---------+---------
A,40,-2,2,[TRACK1,LTYPESHP.SHX,s=2,x=0,y=0],
-0.125,[TRACK1,LTYPESHP.SHX,S=2,X=0,Y=0],
-0.125,[TRACK1,LTYPESHP.SHX,S=2,X=0,Y=0],
-0.125,[TRACK1,LTYPESHP.SHX,S=2,X=0,Y=0],
-0.125,[TRACK1,LTYPESHP.SHX,S=2,X=0,Y=0],2,-2
*煤厚为零点边界,52-------。
-------
A,30,-0.1,[circ1,ltypeshp.shx,s=0.75,r=0,x=-0.1,y=-0.1],-1.35
*煤矿占地边界,54------。
------
A,50,-0.1,[circ1,ltypeshp.shx,s=0.5,r=0,x=-0.1,y=-0.1],-0.85
*流量曲线,455----。
----
A,8,[circ1,ltypeshp.shx,s=0.75,r=0,x=-0.1,y=-0.1],-1.5
*排水管路,524------->------->-------
A,20,[zig,ltypeshp.shx,s=1,r=-90,x=0.5,y=0.8],-0.000000000001
*隐伏断裂,387--------------------
A,20,-2
*性质不明断层,384------?
------
A,20,-2,["?
",STANDARD,S=2,R=0,X=-0.1,Y=-1],-2
*最高洪水位线,4440--.--
A,20,-1,0,-1,20,[CIRC1,LTYPESHP.SHX,S=1.5,R=0,X=-0.1,Y=-0.5],-3
*平衡表外储量边界,53-----///-----///-----
A,8,["/",STANDARD,S=4,X=0,Y=0.3],1,["/",STANDARD,S=4,R=0,X=0,Y=0.3],1,
["/",STANDARD,S=4,R=0,X=0,Y=0.3]
*河道,----|||----|||----
A,1,[TRACK1,LTYPESHP.SHX,S=1,X=0,Y=1],1,[TRACK1,LTYPESHP.SHX,S=0.5,X=0,
Y=0.5]
*实测陷落柱线,397
A,9,[TRACK1,LTYPESHP.SHX,S=0.5,X=0,Y=0.5],1,[TRACK1,LTYPESHP.SHX,S=0.5,X=0,
Y=0.5]
*推断陷落柱线,398
A,4,[TRACK1,LTYPESHP.SHX,S=0.5,X=0,Y=-0.5],1,
[TRACK1,LTYPESHP.SHX,S=0.5,X=0,Y=-0.5],4,-3
*底鼓,399
A,1.5,[TRACK1,LTYPESHP.SHX,S=0.5,X=0,Y=0.5],1,[TRACK1,LTYPESHP.SHX,S=0.5,
X=0,Y=0.5],1.5,-1
*天然焦界线,401
A,2.75,[TRACK1,LTYPESHP.SHX,S=1,X=0,Y=1],1,[TRACK1,LTYPESHP.SHX,S=1,X=0,
Y=1],1.5,[TRACK1,LTYPESHP.SHX,S=1,X=0,Y=1],0.125,[TRACK1,LTYPESHP.SHX,S=1,
X=0,Y=1],0.125,[TRACK1,LTYPESHP.SHX,S=1,X=0,Y=1],
1.5,[TRACK1,LTYPESHP.SHX,S=1,X=0,Y=1],1,[TRACK1,LTYPESHP.SHX,S=1,X=0,
Y=1],2.75,-3
*连续分布的多年冻土界线,451
A,0.5,[TRACK1,LTYPESHP.SHX,S=0.5,X=0,Y=0.5],1,[TRACK1,LTYPESHP.SHX,S=0.5,X=0,
Y=0.5],0.5,-2
*陡坎,00
A,12,[TRACK1,LTYPESHP.SHX,S=0.75,X=0,Y=0.8],-0.000000001
*馈电线路,541
A,15,["<",STANDARD,S=1,X=0,Y=-0.5],1.5,["<",STANDARD,S=1,X=0,Y=-0.5],4,["○",
STANDARD,S=0.5,X=0,Y=-0.25],4,[">",STANDARD,S=1,X=0,Y=-0.5],
1,[">",STANDARD,S=1,X=0,Y=-0.5]
*实测逆断层,376
A,20,[TRACK1,LTYPESHP.SHX,S=0.5,X=0,Y=0.5],1,[TRACK1,LTYPESHP.SHX,S=0.5,X=0,
Y=0.5],2.5,["↓",STANDARD,S=2,X=0,Y=-2.2],5.5,
[TRACK1,LTYPESHP.SHX,S=0.5,X=0,Y=0.5],1,[TRACK1,LTYPESHP.SHX,S=0.5,X=0,
Y=0.5]
*实测正断层,374
A,20,[TRACK1,LTYPESHP.SHX,S=0.5,X=0,Y=0.5],3.5,["↑",
STANDARD,S=2,X=0,Y=0.2],6.5,[TRACK1,LTYPESHP.SHX,S=0.5,X=0,Y=0.5]
*灰岩
A,6,[TRACK1,LTYPESHP.SHX,S=0.75,X=0,Y=0.75],6,[TRACK1,LTYPESHP.SHX,S=0.75,
X=0,Y=-0.75]
*第四系,09
A,8.89,["/",STANDARD,S=1,R=-12,X=0,Y=-0.97],0.8,["/",STANDARD,S=0.8,R=-12,X=0,
Y=-0.82],0.7,["\",STANDARD,R=12,S=0.8,X=0,Y=-0.87],
0.72,["\",STANDARD,S=1,R=12,X=0,Y=-1.05],9.6,["▲",STANDARD,S=1,R=60,X=0,
Y=-1.156]
地质线型名称、符号及AutoCAD线型文件见附图(煤矿地测图例与AutoCAD线型、填充图案文件对比图)。
对于上述地质线型,在通过记