iCAx开思网

标题: 【转帖】告诉你几则AutoCAD的小技巧 [打印本页]

作者: caog    时间: 2003-7-23 10:38
标题: 【转帖】告诉你几则AutoCAD的小技巧
告诉你几则AutoCAD的小技巧  
  
在计算机辅助设计软件中,AutoCAD无疑是最普遍的,每个工程技术人员都或多或少有一些自己的使用经验,可是有些是很难从书籍或全靠自己的摸索得来的,下面就介绍几则小技巧(剩下的还得你自己来发现噢!)。这些小招式在实际的绘图中往往会起到很大的辅助作用。  
  
  多边形的绘制  
  
  AutoCAD 能创建边数为3到1024条的等边多边形,画图时可以选择多边形是内接圆方式或外切圆方式,一般我们是直接输入边长的数值或选择端点的方式完成。实际上,我们还可以通过指定多边形某条边的两个端点来绘制,这特别适用于已画出一部分图形的情况下,这就要用到“Polygon”命令中的“Edge”参数了,当我们在点击“多边形”按钮或输入“Polygon”命令后,首先需要根据提示输入多边形的边数,接下来就要选择“Edge”参数(可只输入首字母“E”),然后捕捉两个端点就可以完成多边形的绘图,这样可以大大节省我们的作图时间。  
  
  利用好平行关系命令  
  
  Offset(平行关系)命令可将对象平移指定的距离,创建一个与原对象类似的新对象,它可操作的图元包括直线、圆、圆弧、多义线、椭圆、构造线、样条曲线等,当平移一个圆时,它还可创建同心圆;当平移一条闭合的多义线时,也可建立一个与原对象形状相同的闭合图形,正因为如此,Offset命令才成了AutoCAD 编辑命令中使用频率最高的一条命令。在使用Offset时,用户可以通过两种方式创建新线段,一种是输入平行线间的距离,这也是我们最常使用的方式;另一种是指定新平行线通过的点,选择参数“Through”(可简写为“T”)后,捕捉某个点作为新平行线的通过点,这样就不用输入平行线之间的距离了,而且还不易出错。  
  
  快速作出相切圆  
  
  平面图形中某个图形元素光滑地过渡到另一个图形元素的连接关系就是相切,记得笔者刚刚开始学习AutoCAD软件时,总是很笨拙地运用半径相加或半径相减的方法来画出相切圆,现在想来真是太愚蠢了。实际上,我们在运用画圆命令时,只要使用参数“Ttr”指定作相切的圆,然后分别选择相切对象A和B圆,再输入过渡圆半径就可以很方便地作出相切圆了。  
  
  特殊符号的输入  
  
  我们知道表示直径的“Ф”、表示地平面的“±”、标注度符号“°”都可以用控制码%%C、%%P、%%D来输入,但是如要输入其他符号怎么办呢?我们可以通过“字符映射表”来输入特殊字符,具体步骤如下:  
  
  1、输入“MText”命令,然后建立一个文本框,之后就会打开“Multiline Text Editor”对话框,在这个对话框中,我们可以看到右侧四个按钮中有一个是[Symbol]按钮;  
  
  2、单击这个按钮右下角的箭头,打开一个下拉列表,我们可以看到有“Degress %%d”、“Plus/Minus %%p”、“Diameter %%c”、“Non-breaking Space”、“Other”四个选项,选择前三个的某一选项可直接输入“°、”、“±”、“Φ”符号,这样就免去了我们记不住特殊控制码的苦处。  
  
  3、单击“Other”时,会打开“字符映射表”对话框,该对话框包含更多的符号供用户选用,其当前内容取决于用户在“字体”下拉列表中选择的字体,它的界面完全是我们所熟悉的中文界面,相信各位应该没有什么问题。  
  
  4.在“字符映射表”对话框中,选择要使用的字符,然后双击被选取的字符或单击[选择]按钮,再单击[复制]按钮,将字符拷贝到剪贴板上,点[关闭]返回原来的对话框,将光标放置在要插入字符的位置,用“Ctrl+V”就可将字符从剪贴板上粘贴到当前窗口中。
  
原作者:王志军
作者: caog    时间: 2003-7-23 10:38
设置AutoCAD的系统变量  
  
一般情况下,我们无需对AutoCAD的系统变量值作修改和设置,取其缺省值就能正常工作。但在有特殊要求时,就必须修改相关的系统变量。如果我们能熟练地掌握一些常用系统变量的使用方法和功能,就能使我们的工作更为便利、顺畅,大大地提高我们的绘图水平和工作效率。现将一些常用的系统变量的用法和功能展示出来,供各位同仁参考。  
  
  系统变量的设置方法  
  
  在命令行Command:_中输入命令set(或setvar),进入系统变量设置状态,输入变量名和相应的设置值(注:在输入变量名时代之以“?”,可以查看所有的系统变量及其缺省值)。  
  
  常用的系统变量及功能  
  
  1、pickbox 和 cursorsize:这二个变量用于控制十字光标和拾取框的尺寸,绘图时可以适当修改其大小以适应我们的视觉要求。pickbox 缺省值为3,取值范围为0~32767;cursorsize 缺省值为5,取值范围为1~100。  
  
  2、aperture: 用于控制对象捕捉(Object SNAP)靶区大小,在进行对象捕捉时,其取值越大,就越可以在较远的位置捕捉到对象,当图形线条较密时,应设置得小一些;反之,设置得大一些方便操作。缺省值为10,取值范围为1~50。  
  
  3、ltscale 和 celtscale:全局线型比率因子和局部线型比率因子,用于控制非连续线型的输出比率(即短线的长度和空格的间距),该变量的值越大,间距就越大。其中,ltscale对所有的对象有效,celtscale只对新对象有效。对于某一对象来说:线型比率=ltscale*celtscale。这二个变量的缺省值均为1,取值为正实数。  
  
  4、surftab1 和 surftab2:用于控制三维网格面的经、纬线数量,该值越大,图形的生成线越密,显示就越精确。缺省值为6,取值范围为2~32766。  
  
  5、isolines: 三维实体显示分格线控制,其值越大,分格线越多,显示越精确。缺省值为4,取值范围为0~2047
  
  6、facetres: 用于控制三维实体在消隐、渲染时表面的棱面生成密度,其值越大,生成的图像越光滑。缺省值为0.5,取值范围为0.01~10。  
  
  注意:  
  
  isolines、facetres的值取得太大时,图形生成、消隐或渲染所用的时间就会越长。
  
原作者:王志军
作者: caog    时间: 2003-7-23 10:41
AutoCAD 2000的一些实用技巧  
  
---- AutoCAD 是目前国内外使用最广泛的CAD软件,AutoCAD R14 丰富的绘图命令,强大的编辑功能,三维造型功能和良好的用户界面深受广大工程技术人员的普遍欢迎。在AutoCAD R14基础上,Autodesk公司又推出更具震撼力、可相互协作的新一代设计产品AutoCAD 2000。笔者在进行AutoCAD教学和软件开发时,获得一些体验,现总结出,以供大家使用AutoCAD 2000时参考。  
  
1、 十字光标尺寸改变  
  
---- 工程图绘制时,要按投影规律绘图。为了便于“长对正,高平齐,宽相等”,绘图时,可调整十字光标尺寸。即用options命令或选择下拉菜单 Tools(工具)/ Options(系统配置),打开Options 对话框,找到Display(显示)选项卡,通过修改Crosshair Size(十字光标大小)区中的光标与屏幕大小的百分比或拖动滑块,可改变缺省值5%,使绘图窗口十字光标尺寸变大。  
  
2、 画粗实线  
  
---- 技术制图国家标准对机械图样中的线型有规定。用AutoCAD 2000画粗实线有多种办法,最简便的办法是使用lweight命令。此命令可在命令行直接键入,或选择下拉菜单Format(格式)/Lineweight(线宽),在出现的对话框中,设置所需线宽,缺省线宽为0.25mm,并可用滑块调整屏幕上线宽显示比例,该命令为透明命令。也可单击对象属性工具栏工具图标layers,在图层特性管理对话框中如同设置颜色、线型一样来设置线宽。因此在绘图仪出图时,不用再调整笔宽或线宽。  
  
3、 画曲线  
  
---- 在绘制图样时,经常遇到画截交线、相贯线及其他曲线的问题。手工绘制很麻烦,要找特殊点和一定数量一般点,且连出的曲线误差大。用AutoCAD 2000绘制平面曲线或空间曲线却很容易。  
  
---- 方法一:用Pline命令画2D图形上通过特殊点的折线,经Pedit命令中Fit或Spline曲线拟合,可变成光滑的平面曲线。用3Dpoly命令画3D图形上通过特殊点的折线,经Pedit命令中Spline曲线拟合,可变成光滑的空间曲线。  
  
---- 方法二:用Solids命令创建三维基本实体(长方体、圆柱、圆锥、球等),再经Boolean(布尔)组合运算:交、并、差和干涉等获得各种复杂实体,然后利用下拉菜单View(视图)/3D Viewpoint(三维视点),选择不同视点来产生标准视图,得到曲线的不同视图投影。  
  
4、 控制实体显示  
  
---- AutoCAD 2000 常用键盘输入三个系统变量控制实体的显示。  
  
ISOLINES:缺省时实体以线框方式显示,实体上每个曲面以分格线的形式表述。分格线数目由该系统变量控制,有效值为0—2047,初始值为4。分格线数值越大,实体越易于观察,但是等待显示时间加长。  
  
DISPSILH:该变量控制实体轮廓边的显示,取值0或1,缺省值为0,不显示轮廓边,设置为1,则显示轮廓边。  
  
FACETRES:该变量调节经HIDE(消隐)、SHADE(着色)、RENDER(渲染)后的实体的平滑度,有效值为0.01—10.0,缺省值为0.5。其值越大,显示越光滑,但执行HIDE、SHADE、RENDER命令时等待显示时间加长。通常在进行最终输出时,才增大其值。  
5、 同时打开多个图形文件  
---- 绘图过程中,用户需要同时观察多个图形文件,AutoCAD 2000提供了在一个窗口中同时打开多个图形文件的功能(见图5)。选择下拉菜单Window(窗口)并选择重叠、水平或垂直排列图形文件即可。还提供了一个图形文件中的图形可直接用鼠标拖到另一个图形文件中, 极大地方便了设计工作。  
  
6、 修改图形属性  
  
---- 绘图中,利用特性窗口,可容易方便地修改图形中某一对象的属性。用properties命令或选择下拉菜单 Tools(工具)/ Properties(特性),也可用热键Ctrl+1,打开Properties 对话框,按表选择修改项修改。  
  
7、 设计中心管理  
  
---- 用AutoCAD 2000进行设计工作, 借助全新的设计中心管理, 可方便地进行预览、选择、查找、利用已有的全部设计成果,即可从你的已有文件、局域网甚至互联网上获得所需的图形图像资源放到设计中心或直接拖至当前图形。可用adcenter命令或选择下拉菜单 Tools(工具)/ AutoCAD DesignCenter(AutoCAD设计中心),也可用热键Ctrl+1,打开设计中心管理窗口  
  
---- AutoCAD 2000不但提供了object ARX,具有面向对象特征的C++应用程序编程接口,还提供了Microsoft Visual Basic for Applications (VBA),可使开发人员用来开发相应模块,以定制和扩充AutoCAD功能。(请参阅AutoCAD帮助中的 ActiveX and VBA Developer's Guide)。并比Autocad R14具有更强的三维造型、编辑、修改功能和网络功能。  
  
原作者:长沙电力学院  郭 克 希
作者: caog    时间: 2003-7-23 10:43
利用VBA编程实现从EXCEL表到AUTOCAD表转换
  
一、前言  
  
---- Microsoft Excel 软件具有十分强大的制表、表格计算等功能,是普通人员常用的制表工具。可以通过其内嵌的VBA语言可以控制Microsoft Excel 的整个操作过程。  
  
---- AutoCAD是由AutoDesk公司的工程绘图软件,是CAD市场的主流产品,功能十分强大,是工程制图人员常用的软件之一。AutoDesk公司从R14版以后,为其提供了VBA语言接口。  
  
---- 在工程制图中,常常需要在图中插入绘制表格,一般有两种方法。其一,是利用剪贴板,将Microsoft Excel表格拷贝至剪贴板中,然后打开AutoCAD文件,再将剪贴板中的文件粘贴至所需位置。这种方法十分简单,但有其固有的缺点。①在保存文件必须将.xls和.dwg文件保存在一起,一旦缺少excel环境,则再对表格继续修改。②同时打开多个表格操作,需要占据较大的内存空间。③文件体积变得很大,表格有时在.dwg文件中以图标形式显示,不便于观察。  
  
---- 第二种方法,即利用Microsoft Excel、AutoCAD都提供的VBA功能,编制程序进行转换,将Microsoft Excel表格按原来样子转换,即把Microsoft Excel表格中的文字和线条信息全部读取出来,在AutoCAD文件里按照一一对应的方式写出来,确保转换后的表格与原表格一致。这样彻底避免了前种方法的缺点,便于表格内容编辑。本文着重介绍此方法。  
  
---- 二、表格转换工作机理分析及具体实现方法  
  
---- 1.表格转换工作机理分析  
  
---- 在制表过程中,经常遇到两个概念,表和方格。  
  
---- 在Microsoft Excel中,与表对应的对象是工作表(Sheet或Worksheet),与每一个表格方格相对应的对象是单元格区域(range),它可以仅包括一个单元格(cell),也可以由多个单元格合并而成。  
  
---- 在AutoCAD中,没有与表对应的对象,但表可以理解由若干条线和文字对象组合而成。  
  
---- 根据上述分析,可以发现如下的转换方法:  
  
---- 读取Microsoft Excel文件中的最小对象----单元格区域(range)的主要信息---线条和文字,然后在AutoCAD文件里在指定图层、位置画线条,书写文字。通过循环,遍历所有单元格区域(range),边读边写,最终完成表格的转换。转换过程中,保持线条、文字及其相关属性不发生改变。  
  
---- 下面就转换工作的两个主要对象表格线条和表格文字进行讨论。  
  
---- 2、表格线条的转换  
  
---- Microsoft Excel 中内嵌的VBA为我们获取Excel文件信息提供了极大便利。通常,通过访问range对象,可以获得许多信息。访问分析表格的属性应从分析range开始。每一个range包括许多对象和属性,例如,font对象可以返回range的字体信息。通过遍历,即可获得整个表格信息。获取表格信息的目的在于准确地按照位置画表格线,同时确定文字位置。  
  
---- 在获取表格信息时,存在一个最佳算法问题。以下就画线问题为例,阐明问题和解决方法。  
  
---- 假设表格由a(a>=1)行b(b>=1)列组成,x,y为循环变量, 表格完全由单元格组成,由于在每个单元格都有4条边,让x从1开始循环到a, 再y从1开始循环到b,读取每个单元格的4条边,会读取a*b*4次,重复读取a*b*2次。当x=1时,读取上边;当y=1时读取,左边,其余情况读取右边,下边。共读取a+b+ a*b*2次。以3行4列为例,共读取3+4+3*4*2=31次,与实际表格的边数相同,没有重复读取。  
  
---- 对合并单元格信息的读取是个难点。因为如果按照单元格的位置依次读取,那么由a行b列个单元格(cell)合并而成的单元格区域(range)仅有4条边,采用上述计算方法,需要读取a+b+ a*b*2次,重复读取a+b+ a*b*2 - 4次。以以3行4列为例,共读取3+4+3*4*2=31次,重复读取31 - 4=27次。算法有重复。如果按照行号,列号读取,合并单元格的行号、列号只有一个,其值为最靠左、靠上的那个单元格的行号、列号。例如,将A2:E5的单元格合并后,其行号为2,列号为A。这样由多个合并单元格组合后的表格行号、列号有间断,不连续,无法进行循环读取信息。笔者通过研究发现,函数address()和单元格的mergearea属性可以获得合并单元格的准确信息。具体方法为:读取cells(x,y)单元格时,用address()判断包含cells(x,y)单元格的合并单元格区域c.mergearea的绝对地址,如果前4个字符与cells(x,y) 单元格的地址相同,为cells(x,y)单元格为合并单元格区域最靠上、靠左的那个合并单元格,读取其4条边信息,否则不读取。这样,彻底避免了重复读取,同时提高了整个读取和画线速度。  
  
---- 在AutoCAD中,线条有多种,考虑能够方便控制线条属性,选用了多义线。具体命令如下: RetVal = object.AddLightWeightPolyline(VerticesList)  
  
---- 下面的程序演示表格线条读取和画表格线的具体过程。  
  
Sub hxw()
Dim a as interger ‘表格的最大行数
Dim b as interger ‘表格的最大列数
Dim xinit as double ‘插入点x坐标
Dim yinit as double ‘插入点y坐标
Dim zinit as double ‘插入点z坐标
Dim xinsert as double ‘当前单元格的左上角点的x左标
Dim yinsert as double ’当前单元格的左上角点的y左标
Dim ptarray (0 to 2) as double
Dim x as integer
Dim y as integer
For x =1 to a
For y=1 to b
Set c = xlsheet.Range(zh(y) + Trim(Str(x)))  
‘以行号、列号获得单元格地址
Set ma = c.MergeArea
‘求出单元格C的合并单元格地址
If Left(Trim(ma.Address), 4) = Trim(c.Address) Then
假如c.mergearea的绝对地址,如果前4个字符与c单元格的地址相同
xl = "A1:" + ma.Address
xh = xlsheet.Range(ma.Address).Width  
yh = xlsheet.Range(ma.Address).Height  
Set xlrange = xlsheet.Range(xl)
xinsert = xlrange.Width - xh
yinsert = xlrange.Height - yh
xpoint = xinit + xinsert
ypoint = yinit - yinsert
If x = 1 Then
If ma.Borders(xlEdgeTop).LineStyle
<> xlNone Then
ptArray(0) = xpoint  
‘第一点坐标(数组下标 0 and 1)
ptArray(1) = ypoint
ptArray(2) = xpoint + xh  
‘第二点坐标(数组下标 2 and 3)
ptArray(3) = ypoint
End If
  
Lineweight lwployobj, ma.Borders(xlEdgeTop).Weight
End If  
If ma.Borders(xlEdgeBottom).LineStyle  
< > xlNone Then
ptArray(0) = xpoint + xh  
‘第三点坐标(数组下标 0 and 1)
ptArray(1) = ypoint - yh
ptArray(2) = xpoint  
‘第四点坐标(数组下标 2 and 3)
ptArray(3) = ypoint – yh
Lineweight lwployobj,
ma.Borders(xlEdgeBottom).Weight
End If
If y = 1 Then
If ma.Borders(xlEdgeLeft).LineStyle
< > xlNone Then
ptArray(0) = xpoint  
‘第四点坐标(数组下标 0 and 1)
ptArray(1) = ypoint - yh
ptArray(2) = xpoint  
‘第一点坐标(数组下标 2 and 3)
ptArray(3) = ypoint
End If
Lineweight lwployobj, ma.Borders(xlEdgeLeft).Weight
End If  
If ma.Borders(xlEdgeRight).LineStyle
< > xlNone Then
ptArray(0) = xpoint + xh  
‘第二点坐标(数组下标 0 and 1)
ptArray(1) = ypoint
ptArray(2) = xpoint + xh  
‘第三点坐标(数组下标 2 and 3)
ptArray(3) = ypoint – yh
Lineweight lwployobj,
ma.Borders(xlEdgeRight).Weight
End If  
Set lwployobj = moSpace.AddLightWeightPolyline(ptArray)  
‘在AutoCAD文件里画线
With lwployobj
.Layer = newlayer.name ‘指定lwployobj所在图层
.Color = acBlue ‘指定lwployobj的颜色
End With  
Lwployobj.Update  
Next y
Next x
End Sub
‘下面程序控制线条粗细
Sub Lineweight(ByVal line As Object, u As Integer)
Select Case u
Case 1
Call line.SetWidth(0, 0.1, 0.1)
Case 2
Call line.SetWidth(0, 0.3, 0.3)
Case -4138
Call line.SetWidth(0, 0.5, 0.5)
Case 4
Call line.SetWidth(0, 1, 1)
Case Else
Call line.SetWidth(0, 0.1, 0.1)
End Select  
End Sub
‘下面程序完成列号转换
Function zh(pp As Integer) As String
If pp < 26 Then
zh = Chr(64 + pp)
Else
zh = Chr(64 + Int(pp / 26)) + Chr(64 + pp Mod 26)
End If
End Function
  
                        
  
-- 3、表格文字转换  
  
---- 表格文字转换包括表格文字本身转换和表格文字在表格中位置的转换两个部分。  
  
---- 在AutoCAD中,文字标注的形式有多种,与Microsoft Excel 单元格区域多行文本内容相对应的是多行文本命令。AutoCAD提供的VBA添加多行文本的命令语句是:  
  
RetVal = object.AddMText(InsertionPoint, Width, Text)
  
---- 通过修改RetVal的属性可以控制表格文字在表格中的位置。  
  
---- (1).表格文字本身的转换  
  
---- 分析AddMText命令可以得出:表格文字所在位置、文字内容宽度,文字内容,均可通过此命令来添加。然而表格文字字体,大小,下划线、上下脚标,倾斜,加粗等却不能。一般的方法是采用修改字体形文件的方法来实现,方法烦琐,不便于实现,而且仅对修改过形文件的字体有效。况且当同一文字块内的不同文字的字体,大小,下划线、上下脚标,倾斜,加粗不同时,使用修改字体形文件的方法也无法实现。本文介绍一种直接利用Mtext命令提供的方法进行转换。  
  
---- 在AddMText命令中,影响文字内容和文字属性的参数Text。在具体文字前加上一定的控制符号可以控制文字的文字属性,具体控制符号可以参阅AutoCAD帮助文件。例如,{\F宋体;\Q18;\W1.2;ABCDEFG}把“ABCDEFG”设置成宋体、向右倾斜18度,每个字的宽度是正常宽度1.2倍。  
  
---- 本程序具体采用的方法是:读取Microsoft Excel文件某一单元格区域里的某第j个字符属性(字体,大小,下划线、上、下脚标,倾斜,加粗),读取Microsoft Excel文件某一单元格区域里的某第j+1个字符属性,如果与第j个字符相同,则二者采用同样的控制符号;若不同,则从第j+1个字符开始,重复前面的工作。  
  
Sub wz ( )
Char = RTrim(Left(c.Characters.Caption, 256))
If Char < > Empty Then
textStr = ""
For j = 1 To Len(Char)
If c.Characters(j, 1).Font.Underline =
xlUnderlineStyleNone Then
cpt = c.Characters(j, 1).Caption
sonstr = ForeFontStr(c, j)
tempstr = ""
Do While j + 1 < = Len(Char)
sonstr1 = ForeFontStr(c, j + 1)
If sonstr1 = sonstr Then
j = j + 1
tempstr = tempstr + c.Characters(j,  
1).Caption
Else
Exit Do
End If
Loop
textStr = textStr + "{" + sonstr + cpt
+ tempstr + "}"
Else
cpt = c.Characters(j, 1).Caption
sonstr = ForeFontStr(c, j)
tempstr = ""
Do While j + 1 < = Len(Char)
sonstr1 = ForeFontStr(c, j + 1)
If sonstr1 = sonstr Then
j = j + 1
tempstr = tempstr + c.Characters(j,
1).Caption
Else
Exit Do
End If
Loop
textStr = textStr + "{\L" +
sonstr + cpt + tempstr + "\l}"
End If
Next j
End If
End Sub  
‘下面函数控制字体本身属性
Function ForeFontStr(m As Range, u As Integer) As String
a1 = "\F" + m.Characters(u, 1).Font.Name + ";" ‘字体
a2 = IIf(m.Characters(u, 1).Font.Superscript =  
True, "\H0.33x;\A2;", "") '上脚标
a3 = IIf(m.Characters(u, 1).Font.Subscript =  
True, "\H0.33x;\A0;", "") '下脚标
a4 = IIf(m.Characters(u, 1).Font.FontStyle =  
"倾斜", "\Q18;", "") '倾斜
a5 = IIf(m.Characters(u, 1).Font.FontStyle =
"加粗", "\W1.2;", "") '加粗
a6 = IIf(m.Characters(u, 1).Font.FontStyle =  
"加粗 倾斜", "\W1.2;\Q18;", "") ' 加粗倾斜  
ForeFontStr = a1 + a2 + a3 + a4 + a5 + a6
End Function
  
---- (2).表格中表格文字位置的转换  
  
---- 对文字对象的属性的直接控制来实现,通过with….end with 结构可以很容易地控制文字的高度、图层、颜色、书写方向。由于Mtext文字提供支持的排列位置分为9种,必须根据Microsoft Excel表格文字的排列方式加以合适的判定,然后进行转换。其具体的实现方法详见下面的程序。  
  
Sub kz( )
With textObj ‘文字对象
.Height = textHgt
.Layer = newlayer.Name ‘设置图层
.Color = acRed ‘设置颜色
.DrawingDirection = 1 ‘设置书写方向
If (ma.VerticalAlignment = xlTop _
Or ma.VerticalAlignment = xlGeneral) _
And (ma.HorizontalAlignment = xlLeft _
Or ma.HorizontalAlignment = xlGeneral) _
Then .AttachmentPoint = 1 'acAttachmentPointTopLeft
If (ma.VerticalAlignment = xlTop _
Or ma.VerticalAlignment = xlGeneral) _
And (ma.HorizontalAlignment = xlCenter _
Or ma.HorizontalAlignment = xlJustify _
Or ma.HorizontalAlignment = xlDistributed) _
Then .AttachmentPoint = 2 'acAttachmentPointTopCenter
If (ma.VerticalAlignment = xlTop _
Or ma.VerticalAlignment = xlGeneral) _
And ma.HorizontalAlignment = xlRight _
Then .AttachmentPoint = 3 'acAttachmentPointTopRight
If (ma.VerticalAlignment = xlCenter _
Or ma.VerticalAlignment = xlJustify _
Or ma.VerticalAlignment = xlDistributed) _
And (ma.HorizontalAlignment = xlLeft _
Or ma.HorizontalAlignment = xlGeneral) _
Then .AttachmentPoint = 4 'acAttachmentPointMiddleLeft
If (ma.VerticalAlignment = xlCenter _
Or ma.VerticalAlignment = xlJustify _
Or ma.VerticalAlignment = xlDistributed) _
And (ma.HorizontalAlignment = xlCenter _
Or ma.HorizontalAlignment = xlJustify _
Or ma.HorizontalAlignment = xlDistributed) _
Then .AttachmentPoint = 5 'acAttachmentPointMiddleCenter
If (ma.VerticalAlignment = xlCenter _
Or ma.VerticalAlignment = xlJustify _
Or ma.VerticalAlignment = xlDistributed) _
And ma.HorizontalAlignment = xlRight _
Then .AttachmentPoint = 6 'acAttachmentPointMiddleRight
If ma.VerticalAlignment = xlBottom _
And (ma.HorizontalAlignment = xlLeft _
Or ma.HorizontalAlignment = xlGeneral) _
Then .AttachmentPoint = 7 'acAttachmentPointBottomLeft
If ma.VerticalAlignment = xlBottom _
And (ma.HorizontalAlignment = xlCenter _
Or ma.HorizontalAlignment = xlJustify _
Or ma.HorizontalAlignment = xlDistributed) _
Then .AttachmentPoint = 8 'acAttachmentPointBottomCenter
If ma.VerticalAlignment = xlBottom _
And ma.HorizontalAlignment = xlRight _
Then .AttachmentPoint = 9 'acAttachmentPointBottomRight
End With
textObj.Update
End Sub
  
---- 三、功能与特点介绍  
  
---- 该程序可将Excel表格中的所有单元格全部按原来大小、风格转换到AutoCAD文件中来。在转换过程中,表格线条的转换和文字转换是重点。文字转换采用了直接利用AddMtext命令提供的属性进行转换,避免了已往修改形文件来进行文字标注的方法,直接控制表格文字字体、大小、下划线、上下脚标,倾斜,加粗等,使每个文字的风格均可以得到很好的控制,极大提高了文字标注的灵活性。  
  
---- 本程序采用Visual BASIC编制,需要Microsoft Excel 2000和AutoCAD R14运行环境,编译后通过。  
  
原作者:新疆交通科学研究所  查拥军
作者: caog    时间: 2003-7-23 10:44
谈AutoCAD中线型的定制和使用  
  
线型的多样性,是地形图绘制的特色之一,可以说掌握了地形图中线型的定制和使用,就等于掌握了AutoCAD线型定制的全部内容。地(形)图行政区界线、道路、管线等都是用特殊的线型表示的,虽然在AutoCAD中很少有可供使用的专用的地形图线型,但通过由AutoCAD提供的线型自定义功能,处理这些特殊线型也并不是一件困难的事。本文通过对地形图中典型线型的定制和使用的介绍,以帮助初学者掌握AutoCAD中线型的定制及使用。 在这里把地形图中的线分为两大类:一类是普通意义上的线,象等高线、小路,输电线、长城线等,这样的自定义线尽管有的外形较复杂,但都把它归为同一类,因为它们在使用上是一致的,由同样的方式调用,同样可供line、pline这样的命令使用,是“真正的线”;另一类是所谓多线(或多重线)Multiline。多重线实质上是由多条线平行构置而成,对其定义好后,由多重线绘制命令mline,一次就可以把多条不同样式的平行线绘制成。Multiline(多线)作为一种“线”,比起用Offset(偏移)等命令来,在使用上自然有作为“线”的优越之处。  
  
---- 一、 如何定制各种通用的性型  
  
---- 可以把普通线型的分为三类:简单线型、带形(Shape)的线型、带文本字符串的线型。  
  
---- (一)、 如何编辑和调用线型文件  
  
---- 线型文件是以.lin为扩展名的文本文件,可使用任何ASCII文本编辑器来编辑,如WINDOWS的NOTEPAD记事本。将线型文件编辑好后最好保存在AutoCAD的路径中,如AutoCAD安装目录下的\SUPPORT子目录中,这样就可以进入AutoCAD的缺省调用路径中。在线型文本中,可插入任何说明,只需在行首加上双分号“;;”。  
  
---- 在AutoCAD中要调用自定义的线型,只需在线型调用对话框中,将待输入的线型文件名,能过浏览路径,选择确认自定义的.lin文件即可。  
  
---- (二)、 如何定义象行政分界线这类简单的线型。  
  
---- 这类线型是由重复使用的虚线、空格、点组成,如:  
  
*县界(宽.2), -.-.-.-.-.-.-
A,2.0,-1.0,0,-1.0
  
---- 第一行中*号为标示符,标志一种线型定义的开始。“县界”为线型名,宽.2用以提示线宽为0.2mm。在AutoCAD 2000中增加了线宽选择的工具条,就放在线型选择条的旁边,这是一个很有用的功能,通过它可以方便地设定所绘线的宽度,所以在线型名中设置宽度提示也更有意义。AutoCAD 2000上新增的线宽设置功能,在缺省状态下只用于打印输出,如要在绘制时就能显示出来,需进入“Format”菜单,对“Lineweight”进行设置,选择“Display Lineweight”。同时还有一个有趣的设置“Adjust Display Scale”,即调节线宽显示的粗细倍数,这一设置,使得对于线宽的设置,仅在打印输出时是精确的,而在屏幕显示时是示意性的,使带宽度线条有更好的屏幕显示效果。  
---- 线型名之后是用字符对线型形状的粗略图示描绘,表示县界线是点划线的形状。(描绘是示意性的,不对实际线型的形状产生影响)。第二行必须以A开头,表示对齐类型。正数2.0表示绘2个单位的短划线,负数-1.0表示一个单位的空格,数字0表示点。  
  
---- 关于线型名,从AutoCAD R14开始,就完全可以使用汉字作为线型名称,但在R14版中一般不要中英文混用,使用中文名后,如一定要使用字母或数字,只能用全角字符格式。在AutoCAD 2000中就没有这些限制了。限于AutoCAD工具条中线型框显示的宽度,线型名不要超过10个汉字。  
  
---- (三)、 如何定义象高压线、城墙这类带形(Shape)定义的线型。  
  
---- 在简单线型的定义中,插入形单元,则组成带形定义的线型。如高压线线型定义为:  
  
*高压线, ----< -.- >---
A,.001,[CIRCLE,map.shx,s=0.4],-0.4,1.8,
[ARROW,map.shx,s=1] ,11.0,
[ARROW,map.shx,s=1.0,R=180],1.8
  
---- 第二行至第四行本为一行,是为了书写方便才作换行处理的。方括号内为形定义部分,三次引用了共两个形单元,CIRCLE为一个单位圆形,ARROW为箭头,两个形单元均放在名为map.shx的形文件中。  
---- [ARROW,map.shx,s=1.0,R=180]的含义是这样的:ARROW为形名(Shape name),指箭头,map.shx为存放ARROW的型文件名(Shape file name),放在AutoCAD的执行路径中,s即scale factor(比例缩放因子),s=1.0就是将ARROW保持形定义中的大小,R即Rotation angle(旋转角度),R=180就是在ARROW插入时转向180度。 形单元的完整定义如下:  
  
[Shape_name,Shape_file_name,S=scale_factor,
R=rotation_angle,X=x_offset,Y=y_offset]
  
---- x_offset和y_offset是形插入点在x和y方向上的偏移量,在定义地图线型时一般缺省不用,按0外理。此外R的缺省值为0,S为1,只有Shape_name和Shape_file_name是不能缺省的。  
---- 具体叙述高压线的定义。第二行A后的数字0.001,是为了在形绘出过程中,将绘图笔移至开始,即落笔点一短线。接着绘一个半径为0.4的圆形单元。绘过圆形后,数字-0.4的作用是留一个0.4绘图单位的空格,以使笔触移过圆形,后面的绘制不在圆形上重叠。接着绘1.8长的短线,再绘一个箭头-形单元。箭头后面是11个单位长的短线,再是一个转向180度的箭头和1.8个单位的短线。  
  
---- (四)、 如何定义带文本字符串的线型  
  
---- 在简单的线型中插入文本字串,就构成了带文本字符串的线型。这种方式在地形图的处理中用得不多。下面的例子比较典型地体现了其定义方法,S、R、X、Y的意义和上文中对形单元的引用相同。在AutoCAD 2000中,文本字串可以使用中文,但在使用线型之前必须在所绘的图形中定义好所使用的中文字体。  
  
*分界线, ---- 分界线 ---- 分界线 ----
A,20,-.5,["分界线",中等线体,S=1,R=0.0,X=0,Y=-.5],-5
  
---- (五)、 生成形(Shape)的捷径  
---- 1. 形的定义过程中,前后有两种文件形式:.shp和.shx。.shp是文本文件,可以使用任何文本编辑器来编辑形的定义的.shp文件。在AutoCAD的命令行中用compile命令可将.shp文件编译成.shx文件。.shx文件是形供AutoCAD直接调用的文件,在用load命令调入.shx文件后,使用shape命令就可以像使用块一样插入形所描绘的图形。  
  
---- 2. 下一段落的三行文字,是绘制地图时定义的形文件(Map.shp)中关于城跺的定义,第一行双分号后是说明文字,可以任意使用中英文或字符。第二行*号表示一个定义的开始,*号所在的行是关于形的一般信息的标题行,其中“2”为城跺的形定义在Map.shp中的排序号,“6”为数字描述行的字节长度,“GWALL”为形的名称。从第三行开始是数字描述行,这些数字支配着一支“虚拟的笔”, 控制着它的移动和起落,靠它来把形“绘制”出来。  
  
;; 城跺
*2,6,GWALL
003,5,034,040,03C,0
  
---- 3. 自定义形比定义线型要复杂一些,AutoCAD中有详细的介绍,看起来当然比较费劲,全面学会它还得下点功夫不可。不过这里有一条捷径,我已调试好一个公开的LISP程序make_shape.zip,它能将绘制的DWG图形自动转换为形文件,放在站点https://personal.xfol.com/~7color上与各位朋友私下共享。不过使用AutoCAD 2000的朋友就用不着这个程序了,因为AutoCAD2000的“Express”就自带制作形的功能。“Express”是R14中“bonus”的升级版,“Make shape”就在其“Tools”中。  
---- 二、 如何绘制高速公路这样的多重线(Multiline)  
  
---- 象公路和高速公路这样的线体,是由几种不同颜色的线组成的,这种线型就很适合用Multiline来绘制。  
  
---- 多重线的操作方法如下:  
  
---- 1. 在菜单“Format”栏下选多线风格“Multiline Styles”,进入其对话框。  
  
---- 2. 在“Multiline Styles”对话框中,第一项是“Current”,显示着现有的多重线名,这个被显示的多重线将被作为新建多重线的模板,因此应按“下三角”从已有的线型中选择最合式的一个,缺省的是“STANDARD”。在“Name”中,缺省显示的名称是所选定的模板线型的名称,应输入一个新的名称,并在“Description”中输入适当的描述和说明文字。  
  
---- 3. 按“Add(添加)”钮后,就将此线名加入到目前库中了。下面就开始进行多重线的设置。  
  
---- 4. 按“Element Properties...”,进入“Element Properties(元素属性)”对话框,设置多线中的各元素。  
  
---- 5. 在该对话框中,用鼠标选择已存在的元素(线条),就可对其Color(颜色)、Linetype(线型)、Offset(偏移)三个参数进行更改,其中“偏移”是指所选定的(线)元素离中心线的距离,在中心之上为正,之下为负值。  
  
---- 6. 在AutoCAD R14中,增强了在此指定Linetype(线型)的功能,这是一个很有用的功能,按此功能钮后,进入“Select Linetype”选择线型,如果当前的可选线型少,还可以通过“load...”调入自定义的各种线型。能调用自定义线型这一功能,使得多重线实际上具有了绘制图案条带和花边的功能,而这在以往是只有通过编程才能实现的。  
  
---- 7. 要增加元素(即线条),按“Add”钮,并随即指定其偏移量、颜色、线型三个参数值。所有的线设置好后,就可以“OK”退出,返回到主界面“Multiline Styles”,进入“Multiline Properties...”的设置。  
  
---- 8. 在多重线属性“Multiline Properties”中,“Caps”的一些选项主要决定线头的形状。很有价值的一项功能是“Fill(填充)”,选中“On”,然后设置填充颜色“Color”,所选定的颜色将作为背景色充填在多线中。  
  
---- 9. 实例:定义“高速公路”线型,使用四条黑色连续线,偏移量分别是9.5、8.5、-8.5、-9,再用棕色填充即可。  
  
---- 10. 保存。按“Save”钮后,选择一个.mli多线库文件,即可将此线型添入到此mli库中。注意:应该每建一个线型保存一次,因为每次“Save”的都是当前所建的线型。  
  
---- 11. 使用。在菜单“Format”栏下选“Multiline Styles”,进入其对话框,在“Current”中选中所要使用的线型名,若所要的线型不在列表中,可通过“Load...”调入按钮,选择mli库文件,调入预先定义的线型。在“Current”中显示的线型就是当前缺省的线型,使用Multiline工具钮或“mline”命令就可以进行绘制了。        
  
原作者:姜士文
作者: cpit    时间: 2003-7-23 14:32
3K
  

作者: LUODANYAN    时间: 2003-7-24 16:29
2、单击这个按钮右下角的箭头,打开一个下拉列表,我们可以看到有“Degress %%d”、“Plus/Minus %%p”、“Diameter %%c”、“Non-breaking Space”、“Other”四个选项,选择前三个的某一选项可直接输入“°、”、“±”、“Φ”符号,这样就免去了我们记不住特殊控制码的苦处。  
  
可是现在的AUTOCAD2004好像没有了这个功能,让我很生气,如果有谁找到的话,告之一下,我定会感激!
作者: pse_liu    时间: 2003-7-25 09:42
很全面,谢谢!
AutoCAD的特殊符号功能是通过右键实现的。在字符输入处单击右键就可看到。AutoCAD通过组合方式省略了很多快捷键。
作者: LUODANYAN    时间: 2003-7-26 09:38
pse_liu wrote:
很全面,谢谢!  
  AutoCAD的特殊符号功能是通过右键实现的。在字符输入处单击右键就可看到。AutoCAD通过组合方式省略了很多快捷键。

  
谢谢,又学了一招::K::K::K
作者: baiyears    时间: 2003-7-26 10:44
LUODANYAN wrote:
2、单击这个按钮右下角的箭头,打开一个下拉列表,我们可以看到有“Degress %%d”、“Plus/Minus %%p”、“Diameter %%c”、“Non-breaking Space”、“Other”四个选项,选择前三个的某一选项可直接输入“°、”、“±”、“Φ”符号,这样就免去了我们记不住特殊控制码的苦处。   
  
  可是现在的AUTOCAD2004好像没有了这个功能,让我很生气,如果有谁找到的话,告之一下,我定会感激!

  
玉环的xiao mm 看你怎么感谢我?
作者: ptc    时间: 2003-7-28 22:18
我的cad2002不能打开“其他‘,提示我”“无法调用下列命令 Charmap.exe"
作者: liwenbao_1999    时间: 2003-7-29 08:52
好啊,支持




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3