CAD二次开发自定义编程.docx
《CAD二次开发自定义编程.docx》由会员分享,可在线阅读,更多相关《CAD二次开发自定义编程.docx(81页珍藏版)》请在冰点文库上搜索。
CAD二次开发自定义编程
CAD二次开发自定义编程
CAD中自定义填充图案
在AutoCAD制图中,HATCH(图案填充)命令的使用较为频繁。
CAD自带的图案库虽然内容丰富,但有时仍然不能满足我们的需要,这时我们可以自定义图案来进行填充。
AutoCAD的填充图案都保存在一个名为acad.pat的库文件中,其缺省路径为安装目录的\Acad2000\Support目录下。
我们可以用文本编辑器对该文件直接进行编辑,添加自定义图案的语句;也可以自己创建一个*.Pat文件,保存在相同目录下,CAD均可识别。
下面,我们就以新创建一个菱形花纹钢板图案库文件为例,来说明AutoCAD2000中自定义图案的方法。
首先,在CAD中按国标作出菱形花纹图案,并标注各部分尺寸(见图,可点击放大)。
参看下面的库文件标准格式:
*pattern-name[,description]
angle,x-origin,y-origin,delta-x,delta-y[,dash-1,dash-2,...]
第一行为标题行。
星号后面紧跟的是图案名称,执行HATCH命令选择图案时,将显示该名称。
方括号内是图案由HATCH命令的“?
”选项显示时的可选说明。
如果省略说明,则图案名称后不能有逗号。
第二行为图案的描述行。
可以有一行或多行。
其含义分别为:
直线绘制的角度,填充直线族中的一条直线所经过的点的X、Y轴坐标,两填充直线间的位移量,两填充直线的垂直间距,dash-n为一条直线的长度参数,可取正负值或为零,取正值表示该长度段为实线,取负值表示该段为留空,取零则画点。
好了,我们可以开始编辑了。
打开记事本,书写下如下:
*custom,steelplateGB/T3277-1991
68.4667,0,0,-9.8646,25,30.0213,-6.59
111.5333,0,0,9.8646,25,30.0213,-6.59
68.4667,-11.0191,27.926,-9.8646,25,30.0213,-6.59
111.5333,11.0191,27.926,9.8646,25,30.0213,-6.59
本例中的四行图案描叙行分别对应图一中的线段a、b、c、d。
对照图文,各项取值应不难理解。
这里只着重讲叙一下delta-x与delta-y的取值规则,为方便理解,我们如图示设置UCS坐标系,确定原点与X轴正方向。
线段a、e在Y轴上的垂直间距25构成delta-y,也相当于AutoCAD中的offset命令的取值25;如果线段e是由线段a经offset而来,这时线段e同时还相对于线段a沿X轴负方向移动了9.8646,这段位移也就是delta-x。
下面还有几个注意事项:
图案定义文件的每一行最多可包含80个字符。
AutoCAD忽略空行和分号右边的文字。
根据这一条,我们可以在文件中添加版权信息、备注或者是我们想加入的任何内容。
例如:
;Copyright(c)2000byeveryone.Allrightsreserved.
最后,将文件保存,取名custom.Pat。
注意,文件名必须与图案名相同。
到此,相信各位朋友已经掌握了自定义图案的方法。
现在,只需一点点耐心,你就可以编辑出非常复杂的图案了。
CAD提供的填充图案文件保存在ACAD.PAT和ACADISO.PAT两个文件中。
用户可以在该文件中添加填充图案定义,也可以创建自己的文件。
值得注意的是设计填充图案定义要求具备一定的知识、经验和耐心。
举个列子,ANSI31的填充图案,并且其定义为:
*ANSI31,ANSIIron,Brick,Stonemasonry
45,0,0,0,.125
在第一行中,图案名称是*ANSI31,其后是说明:
ANSIIron,Brick,Stonemasonry。
这种简单的图案定义指定以45度角绘制直线,填充线族中的第一条直线要经过图形原点(0,0),并且填充线之间的间距为0.125个图形单位。
还有一种方法用的是EXPRESSTOOLS这个CAD插件,下载一个适合你的CAD版本的EXPRESSTOOLS工具安装,一般现在CAD2007\CAD2008\CAD2009在安装CAD时都有选择这个工具的安装选项,安装好后,在"EXPRESS"菜单"DRAW"-"SUPERHATCH"这个命令可以自定义的填充图案.附教程于下
使用“bhatch”命令绘制填充图案,同线型一样,AutoCAD中的填充图案也是以图案文件(也称为图案库)的形式保存的,其类型是以“.pat”为扩展名的ASCII文件。
可以在AutoCAD中加载已有的图案文件,并从中选择所需的填充图案;也可以修改图案文件或创建一个新的图案文件。
同线型文件一样,在AutoCAD2002版本中也提供了两个图案文件,即AutoCAD主文件夹的“SUPPORT”子文件夹中的“acad.pat”和“acadiso.pat”,这两个文件分别包含有69种填充图案(包括8种ANSI图案,14种ISO图案和47种其它预定义图案)。
以“acad.pat”文件为例来介绍填充图案的定义和定制。
提示 AutoCAD2000i和2002中提供的填充图案在AutoCAD2000的基础上增加了一种名为“GRAVEL”的图案。
32.2.2 填充图案的定义
1.填充图案定义格式
与线型定义类似,填充图案的定义由标题行和模式行两部分组成。
(1) 标题行:
由填充图案名称和填充图案描述组成,标题行以“*”为开始标记,填充图案名称和描述由逗号分开,其格式为:
*pattern-name[,description](“填充图案名称[,填充图案描述])
(2) 模式行:
由图案直线定义和填充线的控制信息组成,一个填充图案中可以定义多种类型的图案直线(AutoCAD对图案直线的数量没有限制。
),其格式为:
angle,x-origin,y-origin,delta-x,delta-y[,dash-1,dash-2,...]
其中各项意义如下(见图32-5):
angle:
填充线图案直线与水平方向的夹角。
x-origin、y-origin:
第一条图案直线经过的坐标点。
delta-x:
相邻的两条图案直线沿画线方向上的偏移值。
delta-y:
相邻的两条图案直线之间的偏移值。
dash-1,dash-2,...:
图案直线的规格说明,与上节中简单线型的定义相同。
图32-5 填充图案定义
当用户使用一个填充图案,AutoCAD首先生成一条通过由x-origin和y-origin指定点的图案直线,然后根据偏移距离delta-x和delta-y来产生其余的图案直线,生成具有无限平行直线的直线族,并使用所有选定的填充边界对这些图案直线进行裁剪。
如果在填充图案定义中包括多种类型的图案直线,则AutoCAD通过上述方式对每种图案直线依次绘制,并叠加在一起产生较复杂的图形。
例如:
在acad.pat文件中对SQUARE图案的定义如下:
*SQUARE,Smallalignedsquares
0,0,0,0,.125,.125,-.125
90,0,0,0,.125,.125,-.125
注意 图案定义文件的每一行最多可包含80个字符。
AutoCAD忽略空行和分号右边的文字。
32.2.3 填充图案的创建
由于填充图案文件也是ASCII格式的,因此用户可以在AutoCAD环境外使用任一文本编辑器直接打开或创建填充图案文件,并对其内容进行补充和修改。
实例3 创建“USER”填充图案
(1) 使用Windows附件中的“记事本”程序创建一个新的文本文件。
(2) 在该文件中添加如下内容,如图32-6所示。
*USER,thecustompatternbyuser
0,0,0,0,1,1,-1
0,0,0.5,0,2,1,-1
90,0,0,0,1,1,-1
90,0.5,0,0,2,1,-1
图32-6 “user.pat”文件
(3) 将该文件保存在AutoCAD主文件夹的“SUPPORT”子文件夹中,并命名为“user.pat”。
(4) 进入AutoCAD2002,打开“BoundaryHatch(边界填充图案)”对话框,在“Type(类型)”下拉列表中选择“Custom(自定义)”项,对话框中将自动显示出用户定义的“USER”填充图案的信息,如图32-7所示。
图32-7 使用自定义填充图案
选择“Custompattern(自定义图案)”下拉列表右侧的按钮,弹出“HatchPatternPalette(填充图案调色板)”对话框,在“Custom(自定义)”标签中显示了用户定制填充图案的示例和其所在的库文件路径,如图32-8所示。
注意 AutoCAD系统对用户所创建的填充图案文件有如下以下要求:
(1) 一个文件中仅含有一种填充图案定义。
(2) 填充图案名称必须与文件名相同。
为AutoCAD开发填充图案定义需要一些知识、实践和耐心,以及一个文本编辑器。
可将图案加入库文件acad.pat或将它单独保存在一个文件中。
将图案单独保存时,文件名必须与图案名相同。
例如,名为PIT的图案必须保存在文件pit.pat中。
不管定义保存在什么文件中,其格式都是一样的。
它包括如下格式的标题行:
*pattern-name[,description]
还包括一行或多行如下形式的说明:
angle,x-origin,y-origin,delta-x,delta-y[,dash-1,dash-2,...]
例如,图案L45用间隔为0.5图形单位的45度直线进行填充,其定义如下:
*L45,45degreelines
45,0,0,0,0.5
这个简单图案指定:
直线按45度角绘制,填充直线族中的第一条直线穿过图形原点(0,0),且填充直线之间的距离为0.5图形单位。
L45
是图案的名称,这里的说明字段是图案由HATCH命令的“?
”选项显示时的可选说明。
(如果省略说明,则图案名后不能有逗号。
)
图案定义文件的每一行最多可包含80个字符。
AutoCAD忽略空行和分号右边的文字。
除了使用提供的预定义填充图案外,还可以设计并创建自己的自定义填充图案。
设计填充图案定义要求具备一定的知识、经验和耐心。
只有熟悉填充图案的用户才能自定义填充图案,因此建议新用户不要进行此操作。
AutoCAD提供的填充图案保存在acad.pat和
acadiso.pat文本文件中。
用户可以在该文件中添加填充图案定义,也可以创建自己的文件。
无论将定义存储在哪个文件中,自定义填充图案都具有相同的格式。
即包括一个带有名称(以星号开头,最多包含31个字符)和可选说明的标题行。
*pattern-name,description
还包括一行或多行如下形式的说明:
angle,x-origin,y-origin,delta-x,delta-y,dash-1,dash-2,...
“边界图案填充”对话框中显示的默认填充图案ANSI31具有如下效果:
并且其定义为:
*ANSI31,ANSIIron,Brick,Stonemasonry
45,0,0,0,.125
在第一行中,图案名称是*ANSI31,其后是说明:
ANSIIron,Brick,Stonemasonry。
这种简单的图案定义指定以45度角绘制直线,填充线族中的第一条直线要经过图形原点(0,0),并且填充线之间的间距为0.125个图形单位。
填充图案定义遵循以下规则:
图案定义中的每一行最多可以包含80个字符。
可以包含字母、数字和以下特殊字符:
下划线(_)、连字号(-)和美元符号($)。
但是,图案定义必须以字母或数字开头,而不能以特殊字符开头。
AutoCAD将忽略空行和分号右边的文字。
每条图案直线都被认为是直线族的第一个成员,是通过应用两个方向上的偏移增量生成无数平行线来创建的。
增量x的值表示直线族成员之间在直线方向上的位移。
它仅适用于虚线。
增量y的值表示直线族成员之间的间距;也就是到直线的垂直距离。
直线被认为是无限延伸的。
虚线图案叠加于直线之上。
图案填充的过程是将图案定义中的每一条线都拉伸为一系列无限延伸的平行线。
所有选定的对象都被检查是否与这些线中的任意一条相交;如果相交,将由填充样式来控制填充线的打开和关闭。
生成的每一族填充线都与穿过绝对原点的初始线平行从而保证这些线完全对齐。
如果要创建的图案填充密度过高,AutoCAD可能拒绝此图案填充并显示指示填充比例太小或虚线长度太短的信息。
可以通过使用SETENV设置MaxHatch系统注册表变量来更改填充线的最大数目。
创建简单填充图案的步骤
在以ASCII格式保存的文本编辑器(例如Microsoft®Windows记事本)中打开acad.pat文件或acadiso.pat文件。
创建包括星号和图案名称的标题行。
填充图案的名称最多可以包含31个字符。
(可选)要在标题行中包含说明,请在图案名称后面附加逗号和说明文字。
创建包括以下内容的描述符行
绘制直线的角度
原点坐标X,Y
增量x为0
增量y为任意值
要定义虚线图案,用户可以在直线定义项目末尾加上虚线长度项目。
要定义虚线图案,用户可以在直线定义项目末尾加上虚线长度项目。
每个虚线长度项目都指定组成直线的线段的长度。
如果长度为正值,则将绘制落笔线段。
如果长度为负值,则线段为提笔线段,并且无法绘制。
图案的第一条线段从原点开始,后面的线段是以循环方式继续。
划线长度为0将绘制一点。
每条图案直线上最多可以指定六个划线长度。
“边界图案填充”对话框中显示的填充图案ANSI33具有如下效果:
并且其定义为:
*ANSI33,ANSIBronze,Brass,Copper
45,.176776695,0,0,.25,.125,-.0625
例如,要将图案修改为45度的直线,以绘制长度为0.5个单位并且间距也为0.5个单位的虚线,则直线定义为:
*DASH45,Dashedlinesat45degrees
45,0,0,0,.5,.5,-.5
这与填充图案定义概述中显示的45度图案一样,但末尾加上了虚线规格。
落笔长度为0.5个单位,提笔长度为0.5个单位,符合规定的目标。
如果要绘制0.5个单位的划线、0.25个单位的空移、一个点、0.25个单位的空移以及下一划划线,则定义为
*DDOT45,Dash-dot-dashpattern:
45degrees
45,0,0,0,.5,.5,-.25,0,-.25
下例显示了虚线族上增量x规格的效果。
首先考虑以下定义:
*GOSTAK
0,0,0,0,.5,.5,-.5
这样可以绘制一系列直线,其间距为0.5个单位,且每条直线都等分为划线和空移。
由于增量x为零,所以每条直线上的划线都是齐平的。
使用此图案填充的区域具有如下效果:
现在请将图案更改为
*SKEWED
0,0,0,.5,.5,.5,-.5
这个定义除了将增量x设置为0.5以外,与上一个定义完全一样。
这将使每个连续的族成员沿直线方向(本例中为与X轴平行)偏移0.5个单位。
由于直线是无限延伸的,因此虚线图案也将随之滑过指定的长度。
填充区域的效果如下所示:
创建包含虚线的填充图案的步骤
在以ASCII格式保存的文本编辑器(例如记事本)中打开acad.pat文件或acadiso.pat文件。
创建包括星号和图案名称的标题行。
填充图案的名称最多可以包含31个字符。
(可选)要在标题行中包含说明,请在图案名称后面附加逗号和说明文字。
创建包括以下内容的描述符行
绘制直线的角度
原点坐标X,Y
如果要偏移直线族中的替换直线,则增量x为任意值。
增量y为任意值
划线长度值
点长度值
不同划线长度的第二个值(可选)
不同点长度的第二个值(可选)
并非所有填充图案都使用原点0,0。
复杂的填充图案可以使用距离该原点有一定偏移的原点,并且可以包含多个直线族成员。
构造较为复杂的图案时,需要谨慎地指定起点、偏移和每个直线族的虚线图案,以便正确构造填充图案。
“边界图案填充”对话框中显示的默认填充图案ANSI31具有如下效果:
其定义如下所示(图案包含多条直线):
*AR-B816,8x16Blockelevationstretcherbond
0,0,0,0,8
90,0,0,8,8,8,-8
下图显示了成倒U形的图案(向上画一条线,横着画一条线,然后向下画一条线)。
每隔一个单元重复一次图案,每个单元的高度和宽度都是0.5。
此图案的定义为:
*IUS,InvertedU's
90,0,0,0,1,.5,-.5
0,0,.5,0,1,.5,-.5
270,.5,.5,0,1,.5,-.5
第一条线(向上的直线)是简单的虚线,其原点为0,0。
第二条线(顶部横线)应该从向上的直线的终点开始,因此其原点为0,.5。
第三条线(向下的直线)必须从顶部横线的终点开始,其相对于图案的第一个实例的坐标为.5,.5,因此该点就是其原点。
图案的第三条线可以定义为:
90,.5,0,0,1,.5,-.5
或
270,.5,1,0,1,-.5,.5
虚线图案从原点开始,并按指定的角度向矢量方向延伸。
因此,成反向180度的两族虚线是不一样的。
而两族实线是一样的。
以下图案创建了六点星形。
此样例有助于提高图案定义方面的技能。
(提示:
0.866是60度的正弦。
)
以下是AutoCAD对此图案的定义:
*STARS,StarofDavid
0,0,0,0,.866,.5,-.5
60,0,0,0,.866,.5,-.5
120,.25,.433,0,.866,.5,-.5
创建包含多条直线的填充图案的步骤
在以ASCII格式保存的文本编辑器(例如记事本)中打开acad.pat文件或acadiso.pat文件。
创建包括星号和图案名称的标题行。
填充图案的名称最多可以包含31个字符。
(可选)要在标题行中包含说明,请在图案名称后面附加逗号和说明文字。
创建包括以下内容的描述符行
绘制直线的角度
原点坐标X,Y
如果要偏移直线族中的替换直线,则增量x为任意值。
增量y为任意值
划线长度值
点长度值
不同划线长度的第二个值(可选)
不同点长度的第二个值(可选)
创建第二条直线,其中包含上一步骤中的所有参数。
(可选)创建其他直线以完成多线填充图案。
CAD设计填充图案定义要求具备一定的知识、经验和耐心。
因为自定义填充图案需要对填充图案比较熟悉,建议新用户不要这样做。
可以下载一些填充图案,将下载的填充图案文件复制到CAD安装目录下的Support文件夹下即可。
或者直接下载填充图案插件。
如果选择自行设计填充图案,简单的说就是修改UserDataCache\Support目录下面的acad.PAT文件。
AutoCAD提供的填充图案存储在acad.pat和acadiso.pat文本文件中。
用户可以在该文件中添加填充图案定义,也可以创建自己的文件。
无论将定义存储在哪个文件中,自定义填充图案都具有相同的格式。
即包括一个带有名称(以星号开头,最多包含31个字符)和可选说明的标题行。
*pattern-name,description
还包括一行或多行如下形式的说明:
angle,x-origin,y-origin,delta-x,delta-y,dash-1,dash-2,…
“边界图案填充”对话框中显示的默认填充图案ANSI31具有如下效果:
并且其定义为:
*ANSI31,ANSIIron,Brick,Stonemasonry
45,0,0,0,.125
第一行中的图案名为*ANSI31,后跟说明ANSIIron,Brick,Stonemasonry这种简单的图案定义指定以45度角绘制直线,填充线族中的第一条直线要经过图形原点(0,0),并且填充线之间的间距为0.125个图形单位。
填充图案定义遵循以下规则:
图案定义中的每一行最多可以包含80个字符。
可以包含字母、数字和以下特殊字符:
下划线(_)、连字号(-)和美元符号($)。
但是,图案定义必须以字母或数字开头,而不能以特殊字符开头。
AutoCAD将忽略分号右侧的空行和文字。
每条图案直线都被认为是直线族的第一个成员,是通过应用两个方向上的偏移增量生成无数平行线来创建的。
增量x的值表示直线族成员之间在直线方向上的位移。
它仅适用于虚线。
增量y的值表示直线族成员之间的间距;也就是到直线的垂直距离。
直线被认为是无限延伸的。
虚线图案叠加于直线之上。
图案填充的过程是将图案定义中的每一条线都拉伸为一系列无限延伸的平行线。
所有选定的对象都被检查是否与这些线中的任意一条相交;如果相交,将由填充样式来控制填充线的打开和关闭。
生成的每一族填充线都与穿过绝对原点的初始线平行从而保证这些线完全对齐。
如果创建高密度的图案填充,AutoCAD可能会拒绝该图案填充并显示一条信息,指出填充比例太小或其划线太短。
可以通过使用(setenvMaxHatchn)设置MaxHatch系统注册表变量来修改填充直线的最大数目,其中n是100到10,000,000(一千万)之间的数字。
新建TXT文件,输入以下内容:
***MENUGROUP=工具
***POP1
[我的二次开发]
[1]^C^C_1
[--]
[2]^C^C_2
[--]
[->3]