CAD使用心得连载之七
——CAD与其他软件的交互
一、Sketchup
二、3dMax
CAD中的平立面图,在3dmax的建模过程中都需要,导入过程都比较简单,不多说。不过有一点要注意,图层设置合理,图元绘制精确的cad图纸导入3dmax要比图层设置随意的图节省建模者很多时间。
三、CorelDraw
四、Photoshop
六、Word
七、Excel
CAD使用心得连载之七
——CAD与其他软件的交互
一、Sketchup
二、3dMax
CAD中的平立面图,在3dmax的建模过程中都需要,导入过程都比较简单,不多说。不过有一点要注意,图层设置合理,图元绘制精确的cad图纸导入3dmax要比图层设置随意的图节省建模者很多时间。
三、CorelDraw
四、Photoshop
六、Word
七、Excel
CAD使用心得连载之六
——绘图与打印比例控制、套用图框、标注命令
图纸绘制完毕后,要做的就是套图框。每个公司都有自己的图框,而且不同的图幅应该都有。图框在制作时,大多都会按照1:1的比例:A0—1194X840;A1—840X597;A2—597X420;A3—420X297;A4—297X210。其中,A1和A2图幅的还经常要用到竖图框。还有,当需要用到加长图框时,应该是在图框的长边方向,按照图框长边1/4的模数增加。每个图框不管图幅是多少,按照一定的比例打印出来时,图签栏的大小都应该是一样的。我们把不同大小的图框按照我们要出图的比例Scale大,将图套在其中即可。
CAD使用心得连载之六
——绘图与打印比例控制、套用图框、标注命令
图纸绘制完毕后,要做的就是套图框。每个公司都有自己的图框,而且不同的图幅应该都有。图框在制作时,大多都会按照1:1的比例:A0—1194X840;A1—840X597;A2—597X420;A3—420X297;A4—297X210。其中,A1和A2图幅的还经常要用到竖图框。还有,当需要用到加长图框时,应该是在图框的长边方向,按照图框长边1/4的模数增加。每个图框不管图幅是多少,按照一定的比例打印出来时,图签栏的大小都应该是一样的。我们把不同大小的图框按照我们要出图的比例Scale大,将图套在其中即可。
CAD使用心得连载之五
——图层控制命令、视图命令、图元选择方式
laycur (将图层设置设置为当前层):改变所选择图元的所属层为当前层。
layoff (图层关闭):关掉选择层;
Layiso* (图层隔离):图面显示仅保留所选层(孤立层);
Layon* (打开所有图层):打开所有层。
laylck (锁定图层):锁定选择层;
layulk (图层解锁):解开选择的锁定层;
layerp:恢复至上一个图层状态
laymch (图层匹配):改变选择图元所属层为最后选择的图元的层(类似于matchprop,但选择图元的顺序正好相反)
第一类:redraw (redrawall) 重画,regen 重生成。常用的是redraw,在一些辅助显示点、辅助显示线用redraw(快捷命令是RE)无法清除时,可以用regen试试看。
第二类:视图缩放类。这一类主要是围绕着zoom的各个分支命令。常用的有:
zoom-默认 实时缩放(快捷命令是Z)
zoom-p 回到上一次视图范围
zoom-d 动态缩放视图
zoom-a 显示全部视图
zoom-w 显示所选择窗口的视图范围
第三类:视图平移类。就是pan和其分支命令。(快捷命令是P)
为了方便的进行视图控制,还经常使用透明命令。在00版本以上的AUTOCAD和三键鼠标(中键为滚轴)出现后,视图的缩放和平移,使用鼠标的滚轴中键就基本可以满足要求了。鼠标中键上下滚动就是zoom的实时缩放,中键按下后就是pan。这些都是透明命令,可以插在其它命令进行过程中执行的命令。利用三键鼠标来进行的视图控制,一定要熟练掌握。
P – previous:选择上一次操作的图元
R – remove:去除已选择图元
A – add:增加选择图元(用于使用了remove后)
这两种方式都关系到同样的一些和鼠标使用有关的地方。
鼠标左键:用来选择物体,一是直接左键点取图元;二是鼠标左键点下后,向右上或右下侧拖动鼠标,然后松开,出现实线选择框,只有完全处于实线框内的图元才能被选中;
三是鼠标左键点下后,向左上或左下侧拖动鼠标,然后松开。这时出现的是虚线选择框,只要有一部分处于虚线框内的图元,都能被选中。
鼠标右键:先改一下AUTOCAD的系统配置。在“用户系统配置“中,有个“自定义右键单击”的选项。在“默认模式”和“编辑模式”中,选择“重复上一个命令”;在命令模式中,选择“确认”。
当提示选择对象时,输入?号,可以看到更多的选择选项,如果能记住,可以提高在一些特殊状态下的选择效率。
键盘中的回车键和空格键同样可以达到上述功能,但在速度上肯定要慢于用鼠标右键。
CAD使用心得连载之四
——常用命令与快捷键设置原则
第一类,绘图类。常用命令有:
Line 直线
xline 构造线(用来画辅助线)
mline 双线(在画墙线时常用到,也可自己定义使用其它线型)
pline 多义线(大部分由线段组成的图元,能够定义为多义线的就定义为多义线,这样在选择时比较方便)
rectang 矩形(实际上就是四段围合的多义线)
arc 圆弧
circle 圆
hatch 填充(要注意填充图案的比例)
boundary 边界(在计算面积、填充等情况会用到)
block 定义块(需将准备用于定义块的所有图元放到0层,其它所有属性均改为bylayer)
insert 插入快(与-insert相比较,一个会调出对话框,一个不会)
第二类,编辑类。常用命令有:
Matchprop 特性匹配(相当于word中的格式刷,常用于将正在操作的图元刷成正确的图层)
Hatchedit 填充图案编辑(鼠标左键双击填充的图案即可)
Pedit 多义线编辑(也可用于将几段首尾相接的线段连接成多义线)
Erase 擦除
Copy 拷贝
Mirror 镜像
Offset 平移
Array 阵列
Move 移动
Rotate 旋转
Scale 缩放
Stretch 拉伸
Lengthen 拉长(不常用,但在需要延长非水平或垂直的线段时很方便;!也可实现同样的功能,可以自己先琢磨琢磨)
Trim 裁减
Extend 延伸
Break 打断
Fillet 倒圆角
Explode 打碎(可用于炸开块、多义线、双线等)
Align 对齐(不常用,但在画一些倾斜的图形时很有用,可以把图对正了画,画好了再调整回原来的角度。和UCS是两个概念)
Properties 属性(Ctrl+1,可调出属性表,在其中可查看和修改该图元的几乎所有属性,很有用)
第三类,设置类。前面讲了很多,不再重复。
第四类,其它。这里面的内容又有很多,再分别描述。
如何自定义快捷键
快捷键的定义是保存在*cad.pgp文件中,AutoCAD 2004版(也可能是2002版)后改变了放置的目录,可在windows里面搜索得知。浩辰CAD或其他与AutoCAD兼容的软件也有快捷键文件,名字类似,例如icad.pgp。通常可以在菜单里直接编辑:工具》自定义》编辑程序参数。
快捷键是根据每个人的喜好而自由定义。但是为了方便操作,也不应随便设置,最好遵循以下原则:
一、不产生歧义,尽量不采用完全无关的字母。
二、根据各个命令的出现频率来定义快捷键。定义时,依次采用“1个字母—1个字母重复两遍—两个相邻或相近字母—其它”的原则。
如果根据这样的原则来定义快捷键,经过1~2天的练习,一定能提高不少的效率。
CAD使用心得连载之三
——字体、标注的设置与CAD模版文件
在定义字体时,还有一些要注意。
首先,同样是在够用情况下越少越好的原则。这一点适用于CAD中所有的设置。不管什么类型的设置,都是设置越多,CAD文件就越大,在运行软件时可能会给运算速度带来影响。更为关键的是,设置越多越容易在图元的归类上发生错误。
标注的设置(Dimstyle)
标注定义里面的选项比较多,不过要注意的地方并不多。一般情况下可以定义一种设置,
对于有特殊的情况,可以单独修改其属性,然后其它的用格式来刷。介绍一下笔者常用的标注定义的设置(1:100比例出图)。
直线和箭头:所有颜色和线宽的选择均为Bylayer,箭头大小1.5,其它几个数据一般在100~200。这样的标注设置是整张图纸的所有标注的基础设置,在绘制不同比例的图纸时,需要将其中的“标注全局比例”根据出图比例进行调整。1:100出的图,需要将其“标注全局比例”调整为100;1:150出的图,需要将其“标注全局比例”调整为150。这点在后面的第六部分还会详细讲道。
如果在每次画图之前都进行以上的定义,比较麻烦,所以CAD提供了一个非常好的办法,就是dwt模版。每次在新建一张图纸的时候,CAD软件都会让我们打开一张dwt模版文件,默认的是*cad.dwt。而在创建好自己的一套习惯设置后,就可以建立自己的模版文件,以保存所有的设置和定义。有的设计师dwt模版是精心选择的一些图,包括有简单的平面图、立面图、剖面图、楼梯大样各一张,常用的图块几十个(当然是归类整理好的)。这样,这样每次新做一个项目时,就可以打开这张模块,开始工作了。可能会有人问道如何创建dwt文件,很简单,在保存文件时,选择另存为,然后在文件类型中选择dwt就可以了。
Purge这个命令可以清除图中所有没有用到的设置、图块等信息,建议多多使用,最好是每次存盘前Purge一下。
CAD使用心得连载之二
——图层的设置
第一,在够用的基础上越少越好。不管是什么专业、什么阶段的图纸,图纸上所有的图元可以按照一定的规律来组织整理。比如说,建筑专业的平面图,就按照柱、墙、轴线、尺寸标注、一般汉字、门窗看线、家具等来定义图层,然后在画图的时候,分别应该在哪个类别的,就把该图元放到相应得图层中去。
第二,0层的使用。很多人喜欢在0层上画图,因为0层是默认层,白色是0层的默认色,因此,有时候看上去,屏幕上白花花一片。这样做不可取。不建议在0层上是随意画图。而建议用来定义块。定义块时,先将所有图元均设置为0层(有特殊时除外),然后再定义块。这样,在插入块时,插入时是哪个层,块就是那个层了。
第三,图层颜色的定义。图层的设置有很多属性,在设置图层时,除了图名,还应该定义好相应的颜色、线形、线宽。但是如果根据自己的爱好,喜欢什么颜色就用什么颜色,这样做也不合理。图层的颜色定义要注意两点:一是不同的图层一般来说要用不同的颜色。这样当我们在画图时,才能够在颜色上就很明显的进行区分。如果两个层是同一个颜色,那么在显示时,就很难判断正在操作的图元是在哪一个层上。二是颜色的选择应该根据打印时线宽的粗细来选择。打印时,线形设置越宽的图层,颜色就应该选用越亮的;反之,如果在打印时,线的宽度仅为0.09mm,那么该图层的颜色就应该选用8号或类似的颜色。为什么要这样?这样可以在屏幕上就直观的反映出线形的粗细。举个例子:柱子层(ZU)和墙层(WA)打印出来是最粗的,那么一个用黄色,一个用青色,这两个颜色在CAD中是比较亮的。填充层(h)和家具层(fur)在打印时线宽定义为0.13mm,那么,在选择颜色时也用较暗的8号和83号色。这样做的好处,大家在使用中慢慢体会。另外,白色是属于0层和DEFPOINTS层的,我们不要让其它层使用白色。
第四,线形和线宽的设置。在图层的线形设置前,先提到LTSCALE这个命令。一般来说,LTSCALE的设置值均应设为1,这样在进行图纸交流时,才不会乱套。常用的线形有三种,一是Continous连续线,二是*CAD_IS002W100点划线,三是*CAD_IS004W100虚线。一张图纸是否好看、清晰,线宽的设置是其中重要的因素之一,这关系到是否层次分明。一张图里,有 0.13的细线,有0.25的中等宽度线,有0.35的粗线,这样就丰富了。打印出来的图纸,一眼看上去,也就能够根据线的粗细来区分不同类型的图元,哪里是墙,哪里是门窗,哪里是标注。
因此,我们在线宽设置时,一定要将粗细明确。另外还有一点要注意,现在打图有两种规格,一是按照比例打印,这时候,我们的线宽可以用0.13\0.25\0.4这种粗细规格。如果是不按照比例打印A3规格,则线宽设置要比按比例的小一号0.09\0.15\0.3,这样才能使小图看上去清晰分明。在画图时也还有一点要注意,就是所有图元的各种属性(比如线型、颜色)等都尽量与所在图层表示的含义一致。这样有助于我们图面的清晰、准确和效率的提高。
很多CAD的教材,如果对照着学习的话,确实都能够在一定程度上掌握这个软件,如果到工作岗位,也都能勉勉强强的开始画图。但是,这远远不够,从书本到实战,还有一大段距离。因此,将收集的有关于使用CAD的一系列心得体会发出来与大家分享。
CAD使用心得连载之一
——CAD使用的三个基本方面:清晰、准确、高效
不知大家认为,使用CAD画图最重要的是什么?对这个问题,每个人都有可能理解不同,但在我看来,最重要的是时时刻刻记住自己使用CAD画图的目的是什么。
清晰,就是需要表达的东西必须清楚明了。好的图纸,看上去一目了然。构件表达、尺寸标注、文字说明清清楚楚,互不重叠……除了图纸打印效果清晰以外,在屏幕上的显示也必须清晰。图面清晰除了能清楚表达设计思路和设计内容外,也是提高绘图速度的基础。
准确,就是标注不能错误,指示不能模糊。制图准确不仅是为了好看,更重要的是可以直观的反映一些图面问题,对于提高绘图速度也有重要的影响,特别是在图纸修改时。我们在使用CAD绘图时,无时无刻都应该把以上两点铭刻在心。只有做到这两点,才能说在绘图方面基本过关。
一、遵循一定的作图原则
为了提高作图速度,用户最好遵循如下的作图原则:
1.作图步骤:设置图幅→设置单位及精度→建立若干图层→设置对象样式→开始绘图。
2.绘图始终使用1:1比例。为改变图样的大小,可在打印时设置不同比例或者利用图纸空间内设置不同比例的视口。
在绘图前要确定好打印比例,这样觉得按相应比例设置字高、标注样式、图块比例、多段线宽度等,保证不同比例图纸打印效果一致。
3.为不同类型的图元对象设置不同的图层、颜色及线宽,而图元对象的颜色、线型及线宽都应由图层控制(BYLAYER)。对象的颜色和线宽属性可以影响打印效果,因此要合理规划,以保证打印时能得到合理效果。
4.需精确绘图时,可使用栅格捕捉功能,并将栅格捕捉间距设为适当的数值。更多情况下使用对象捕捉或在绘制时直接输入长度或相对坐标。
5.可以直接在模型空间中将图框和图形绘在一起,也可以在布局空间中插入图框,利用视口排布模型空间的图形。如果用布局空间,建议一个布局只放一个图框,并设置并保存好合理的页面设置,以后打印时就不必再重复设置了。
6.对于有名对象,如视图、图层、图块、线型、文字样式、打印样式等,命名时不仅要简明,而且要遵循一定的规律,以便于查找和使用。
7.将一些常用设置,如图层、标注样式、文字样式、栅格捕捉等内容设置在一图形模板文件中(即另存为*.dwt文件),以后绘制新图时,可在创建新图形向导中单击“使用模板”来打开它,并开始绘图。
1.生成直线或线段
(1)在CAD中,使用LINE、XLINE、RAY、PLINE、MLINE命令均可生成直线或线段,但LINE命令使用的频率最高,也最为灵活,根据需要使用合适的命令。
(2)为保证物体三视图之间”长对正、宽相等、高平齐”的对应关系,应选用XLINE和RAY命令绘出若干条辅助线,然后再用TRIM剪截掉多余的部分。机械制图中经常会使用这种方法,由于建筑设计中经常会采用轴网,浩辰建筑、天正建筑等软件中均可以通过输入进深和开间值快速创建轴网,后续绘图可以轴网为尺寸基准。
(3)欲快速生成一条封闭的填充边界,或想构造一个面域,则应选用PLINE命令。用PLINE生成的线段可用PEDIT命令进行编辑。
(4)当一次生成多条彼此平行的线段,且各条线段可能使用不同的颜色和线型时,可选择MLINE命令。多线编辑起来不如其他线型方便,也可以用PL线,然后通过偏移(offset)生成。
2.文本
(1)在使用文本注释时,如果注释中的文字具有同样的格式,注释又很短,则选用TEXT(DTEXT)命令。
(2)当需要书写大段文字,且段落中的文字可能具有不同格式,如字体、字高、颜色、专用符号、分子式等,则应使用MTEXT命令。
3.复制图形或特性
(1)在同一图形文件中,若将图形只复制一次,则应选用COPY命令。
(2)在同一图形文件中,将某图形随意复制多次,则应选用COPY命令;或者,使用Ctrl+C复制或基点复制命令将需要的图形复制到剪贴板,然后再使用PASTECLIP(普通粘贴)或PASTEBLOCK(以块的形式粘帖)命令粘帖到多处指定的位置。
(3)在同一图形文件中,如果复制后的图形按一定规律排列,如形成若干行若干列,或者沿某圆周(圆弧)均匀分布,则应选用ARRAY(阵列)命令。
(4)在同一图形文件中,欲生成多条彼此平行、间隔相等或不等的线条,或者生成一系列同心椭圆(弧)、圆(弧)等,则应选用OFFSET(偏移)命令。
(5)在同一图形文件中,如果需要复制的数量相当大,为了减少文件的大小,或便于日后统一修改,则应把指定的图形用BLOCK命令定义为块,再选用INSERT或MINSERT命令将块插入即可。
(6)在多个图形文档之间复制图形,可采用两种办法。其一,使用命令操作。先在打开的源文件中使用Ctrl+C或COPYBASE命令将图形复制到剪贴板中,然后在打开的目的文件中用Ctrl+V粘贴、粘贴为块或选择性到原点三者之一将图形复制到指定位置。这与在快捷菜单中选择相应的选项是等效的。其二,用鼠标直接拖拽被选图形。注意:在同一图形文件中拖拽只能是移动图形,而在两个图形文档之间拖拽才是复制图形。拖拽时,鼠标指针一定要指在选定图形的图线上而不是指在图线的夹点上。同时还要注意的是,用左键拖拽与用右键拖拽是有区别的。用左键是直接进行拖拽,而用右键拖拽时会弹出一快捷菜单,依据菜单提供的选项选择不同方式进行复制。
(7)在多个图形之间复制图形特性,应选用特性匹配(格式刷)命令。
三、使用扩展工具(EXPRESS TOOLS)
所谓扩展工具,实际上是为用户设计并随CAD一起免费提供的实用工具库。国产CAD,例如浩辰CAD提供的扩展工具比AutoCAD更丰富,在AutoCAD基础上增加了大量实用工具。扩展工具在图层管理、对象选择、尺寸标注样式的输入/输出、图形的编辑修改等众多方面对CAD进行了功能扩展,使用起来方便快捷,故能明显提高你绘图的工作效率。
确认AutoCAD安装时选择了Express tools,浩辰CAD等国产CAD安装时扩展工具会自动安装上。
四、打开或关闭一些可视要素
图形的复杂程度影响到CAD执行命令和刷新屏幕的速度。打开或关闭一些可视要素(如填充、宽线、文本、标示点、加亮选择等)能够增强CAD的性能。
(1)关闭宽线显示。宽线增加了线条的宽度。宽线在打印时按实际值输出,但在模型空间中是按象素比例显示的。在使用CAD绘图时,可通过状态条上的LWT(线宽)按钮将线宽显示关闭,以优化其显示性能。系统变量LWDISPLAY也控制着当前图形中的宽线显示。
(2)如果把QTEXT设为ON,文本会被显示为方框。这样,在图样中新添加的文本会被隐匿起来只显示一个边框,打印输出时也是如此。该设置对已有文本的影响效果,可使用REGEN命令进行显示。另外,系统变量QTEXTMODE也控制着文本是否显示。这在图样中的文本较多时,对系统性能的影响是很明显的。
(3)禁止显示标示点。所谓标示点,是在选择图形对象或定位一点时出现在CAD绘图区内的一些临时标记。它们能作为参考点,能用REDRAW或REGEN命令清除,但打印输出时并不出现在图纸上。欲禁止标示点显示,可将BLIPMODE设为OFF,以增强CAD的性能。
(4)取消加亮选择。在缺省情况下,CAD使用”加亮”来表示当前正被选择的图形。然而,将系统变量HIGHLIGHT的值从1改为0,取消加亮选择时,也可增强CAD的性能。
(5)顺便一提的是,将系统变量REGENMODE的值设为0,或者将REGENAUTO设为OFF,可以节省图形自动重新生成的时间。
(6)如果把FILL设为OFF,则关闭实体填充模式,新画的迹线、具有宽度的多义线、填充多边形等,只会显示一个轮廓,它们在打印时不被输出。而填充模式对已有图形的影响效果,可使用REGEN命令显示出来。另外,系统变量FILLMODE除控制填充模式之外,还控制着所有阴影线的显示与否。你如果在图中画填充显示不出来,需要检查一下FILL参数的设置。
当然现在硬件性能越来越好,如果图纸不大,象填充、文字、选择亮显这些还是保留比较好。
五、及时清理图形
在一个图形文件中可能存在着一些没有使用的图层、图块、文本样式、尺寸标注样式、线型等无用对象。这些无用对象不仅增大文件的尺寸,而且能降低CAD的性能。用户应及时使用PURGE(清理)命令进行清理。由于图形对象经常出现嵌套,清理是可勾选“清理嵌套项目”。
六、使用命令别名和加速键
CAD为一些比较常用的命令或菜单项定义了别名和加速键。使用命令别名和加速键可以明显节省访问命令的时间。命令别名是在acad.pgp文件(浩辰CAD是icad.pgp)中定义的。用任何文本编辑器打开并编辑该文件,就可以添加、删除或更改命令别名。用这种方法定义的别名,当重新进入CAD时即可使用。浩辰CAD不必退出就可以利用菜单中:工具>自定义>编辑程序参数重新定义命令别名,定义后就直接可以使用。AutoCAD的扩展工具也提供了类似的工具,但需要在第一次使用新定义的别名之前,执行REINIT命令以对软件重新初始化。
命令加速键是在cui文件中定义的。欲添加、删除或更改命令加速键,用户可以用自定义界面工具对界面cui文件进行编辑,老版本也可以用文本编辑器对*cad.mnu文件进行编辑修改。修改过的*.mnu文件必须用MENU或MENULOAD命令加载并编译后,新定义的命令加速键方可使用。
以上只是总结了一些常规的技巧,熟话说得好:孰能生巧,当你长时间使用CAD后都会发现一些非常适合自己的操作技巧,利用这些技巧可以成倍提高工作效率,也希望也能写出来供大家分享。
图形的复杂程度影响到CAD执行命令和刷新屏幕的速度。打开或关闭一些可视要素(如填充、宽线、文本、标示点、加亮选择等)能够增强CAD的性能。
(1)关闭填充显示。如果输入Fill命令,设为OFF(或0),则关闭实体填充模式,新画的迹线、具有宽度的多义线(包括标注的箭头)、填充多边形等,只会显示一个轮廓,它们在打印时不被输出,如下图所示。系统变量Fillmode和命令Fill的作用是相同的,“选项”对话框(op)的“显示”选项卡中的“应用实体填充”的选项设置的就是Fill参数。
(2)关闭线宽显示。图层和图形都可以设置线宽,在图中显示的线宽是按象素比例显示的,可以大致了解线宽设置,但这些并不是准确的线宽值。线宽值通常是毫米设置的,他的主要作用控制打印的线宽值。在CAD绘图时,可通过底部状态条上的LWT(或线宽)按钮,即可关闭线宽显示。如果不需要在绘图过程中检查线宽的设置,最好不要显示线宽,以优化其显示性能。对于建筑工程设计,通常用颜色或多段线宽度来控制打印输出的线宽,根本没有必要在图中显示线宽。
(3)将文字显示为方框。如果把Qtext设为ON(或1),则打开快显文本模式。这样,图中的文字都会显示为一个方框,不会显示内容,打印输出时也是如此。当图中的文字很多时,尤其使用TTF字体(操作系统自带的字体)时,文字显示对显示速度和操作速度会有非常大的影响。当我们在处理其他图形,不关注文字内容时,可以将文字显示为方框,这样缩放、平移、编辑图纸的速度都会快很多。
(4)禁止显示标示点。所谓标示点,是在选择图形对象或定位一点时出现在CAD绘图区内的一些临时标记。它们能作为参考点,能用REDRAW或REGEN命令清除,但打印输出时并不出现在图纸上。欲禁止标示点显示,可将Blipmode设为Off(或1),以增强CAD的性能,目前CAD版本默认都关闭此变量。
(5)取消选择预览显示。在默认状态下,在CAD中将光标移动到图形上,图形会亮显及加粗,这成为选择预览,也就提示将会被选中的对象。预览会给我们提供很多方便,但同时也会影响操作的速度。很多建筑图里会将整个或部分平面图做成一个复杂的图块,当光标停留到这类图块上,可以看到图形是逐渐亮显的,可以明显感觉到选择预览是会占用系统资源的。如果想关掉选择预览或设置选择预览的效果,可以输入OP,打开“选项”对话框,在“选择”选项卡内设置取消勾选“选择预览”相关选项,或点“视觉效果设置”。如下图所示:
浩辰CAD等国产CAD的设置类似,但可能没这么多选项。
(6)取消选择区域指示。在CAD中,从左向右或从右向左分别表示交叉(cross)和窗口(window)选择,会CAD的基本都知道,高版本CAD为了更明确这两种区别,用颜色进行了区分,默认状态下用蓝色表示窗口选择,绿色表示交叉选择。如果你对CAD了解的话,这些提示显然是没有必要的,你可以关掉颜色指示效果。在上面的视觉效果设置对话框中就可以看到“指示选择区域”的勾选项。
(7)取消选定图形亮显。被选中的图形通常会亮显(虚线显示),如果将系统变量Highlight值从1改为0,取消选择亮显时,选中对象后将只显示夹点。
(8)控制圆弧显示精度。在CAD中圆都是以多边形的方式显示的,CAD会自动根据圆在视图中的大小决定显示的边数,当将一个小圆突然放大很多倍时,可以明显看出是一个多边形,这种情况下,RE(重画)一下就可以恢复正常。圆弧的精度也是有参数控制的,变量是viewres,在“选项”对话框中的“显示”选项卡中也可以设置此参数。有些设计人员为了圆在放大和缩小的时候都显示得比较圆,将此参数设置得特别大,例如15000,这显然是没有必要的,因为图纸显示效果并不重要,只要打印效果能保证就可以了,而无论VIEWRES只要合理设置,CAD默认值为100,打印时圆都不会出现打印成多边形的现象。而如果将此参数设置得过大,图中每个圆都要用更多段数去显示,如果图中的圆很多,会对显示性能和操作速度有比较明显的影响。
(9)重画(redraw)和重生成(regen)。重画通常用得并不多,主要用在当 BLIPMODE 打开时,将从所有视口中删除编辑命令留下的点标记。但重生成却始终会在绘图过程经常用到,例如当圆突然放大变成多边形时,输入RE命令就会变圆,当我们缩放图纸到一定程度,CAD会提示无法继续缩放,输入RE命令就可以继续缩放。重生成就是从图形数据重新生成显示数据的过程,重生成速度对图纸打开速度和操作速度都有明显的影响。CAD在绘图过程中会进行一些优化,并不会随时进行重生成,或只对部分对象重生成。有些人为了让图形随时更新保证显示效果,打开系统变量REGENAUTO或REGENMODE的值设为1,打开自动重生成,这样虽然效果好了,但由于增加了显示数据显示的次数,对操作速度会有比较明显的影响,因此建议不要打开自动重生成。
(10)其他可影响显示性能的选项。输入OP命令,打开选项对话框,进入“显示”选项卡,可以看到右下角有“显示性能”相关选项,除了上面提到的填充、文字相关的选项外,还有关于光栅图象、实体、曲面显示的控制选项。
总之,在图面上显示的细节越多,显示数据越多,显示和操作性能都会相应下降。
DWG
AutoCAD创立的一种图纸保存格式,已经成为二维CAD的标准格式,浩辰CAD及很多其他CAD为了兼容AutoCAD,也直接使用DWG作为默认工作文件。
DXF
CAD的另一种图形保存格式,主要用于与其他软件进行数据交互。保存的文件可以用记事本打开,看到保存的各种图形数据。
DWT
CAD模板文件,可在新建图形时加载一些格式设置,除CAD提供的模板文件外,自己也可以创建符合自己需要的模板文件,可以直接替换CAD自带的模板文件,也可以重新命名。
DWF
用与网络交换的图形文件格式,可以用发布功能或DWF虚拟打印机输出,用CAD无法打开,但可以用AutoCAD提供的DWF浏览器查看。在AutoCAD高版本和浩辰CAD 2012中提供了DWF参考底图功能,可以将DWF作为底图插入到图纸中,并可以进行捕捉辅助定位其他图形。
MNU、MNC、MNL、MNS
是CAD低版本使用的菜单文件,高版本也可以加载。其中MNU使用较多,是菜单的源代码,可以直接用记事本编辑,各类专业软件和插件通常利用MNU文件来加载菜单。
CUI
CAD高版本使用的自定义界面文件,可以在CAD和专用工具编辑,无法直接用记事本打开。AutoCAD和浩辰CAD高版本支持此类文件,在加载MNU文件后会自动生成CUI文件,
SHX
AutoCAD、浩辰CAD等CAD采用的字体文件,也叫形文件,其源码文件为*.SHP,可以自行定义后在AutoCAD中编译成SHX文件。SHX文件分三类,一类是符号形,保存了一些用于制作线型或独立调用的符号;一类是普通字体文件,支持字母、数字及一些单字节符号;一类是大字体文件,支持中文、日文、韩文等双字节文字。
PAT
AutoCAD、浩辰CAD等CAD采用的填充图案文件,纯文本文件,可以用记事本编辑。可以自己编写或将收集的PAT文件复制粘贴到CAD的填充目录或填充文件中。
LIN
AutoCAD、浩辰CAD等CAD采用的线型文件,可定义虚线\点划线等各种线型。纯文本文件,可以自己编写,收集的线型文件中线型可以直接浏览加载。
SCR
脚本文件,可批量执行保存命令,完成绘图工作。纯文本文件,可以手动编辑,也可以利用CAD的记录脚本功能记录操作过程。一些专业测绘软件利用脚本来绘制断面图或一些表格。
CTB
颜色相关打印样表,设置了每种索引色所对应打印输出的颜色、线宽及其他效果,是一种常用的控制打印输出的文件。CAD通常都附带了很多预设的打印样式表,有单色、灰度、彩色的,可以直接调用或简单做简单编辑。
STB
命名打印样式表,设置一些打印输出设置的样式,可以设置不同图层使用不同的打印样式。在早期版本和一些单位使用比较多,个人很少使用。
PCP
旧版本使用的打印设置文件。
PC3
打印机和绘图仪配置文件,是CAD中保存打印驱动及相关设置的文件
HDI
HDI(Heidi® 设备接口)驱动程序用于与硬拷贝设备进行通信。 这些驱动程序可分为三类:文件格式驱动程序、HDI 非系统驱动程序和 HDI 系统打印机驱动程序。
PLT
打印输出文件。如果使用打印机驱动时勾选“打印到文件”,将不直接输出到打印机,而是生成PLT文件,此PLT文件可以无需CAD就可以直接输出到打印机。一些设计单位统一出图或到打印社出图通常都输出为PLT文件,这样避免出现缺少字体、版本不兼容导致图纸显示和打印不正常。
DWS
图层标准文件,可保存一些图层定义及图层映射表,主要用于图层转换(laytrans)。浩辰CAD等软件不支持此格式,但可以将图层映射表保存为DWG文件,效果相同。
LAS
图层状态文件,可以将设置好的图层的开关、冻结、锁定等状态保存下来,以后需要时在当前图或其他图中加载恢复保存的状态。
LSP 、DCL、FAS、VLX
AutoCAD及浩辰CAD等的一种二次开发工具AutoLisp的程序文件,后续增加了一些对VBA控件的调用,并提供了编辑器,被称为Visual lisp(Vlisp)。原始的LISP程序通常为纯文本文件,可以用CAD提供的工具编辑,也可以直接用记事本编写。LISP可以加密,加密后扩展名认为LSP,但无法用记事本打开,但仍可加载。FAS和VLX是经过编译和打包的文件
DVB
AutoCAD针对VB提供的开发工具生成的文件,类似与WORD和EXCEL中的宏。浩辰CAD及其他软件无法加载DVB,只能加载VBI,但代码基本兼容,进入两款软件的VBA编辑器,将代码复制过来,简单编辑就能用。
ARX
AutoCAD这对C++提供的开发工具,现在一些复杂的程序通常使用ARX开发的,ARX程序的运行效率比较高。浩辰CAD等其他CAD也提供了类似ARX的接口:GRX。ARX程序通常都是编译过的,因此无法直接在不同版本的CAD中加载。
BAK
自动备份文件,通常在保存文件时,会将上次保存的文件修改成BAK格式,避免保存出错,可以直接将BAK改成DWG来恢复之前的版本。AutoCAD和浩辰CAD默认都会生成这个文件,在“选项”(OP)对话框的“打开和保存”选项卡中可以设置是否生成此文件。
SV$
自动保存文件,在“选项”对话框中可以设置自动保存的时间间隔,CAD会按此间隔自动对当前图纸进行保存,以防在编辑文件时出现异常。SV$通常会保存在系统的临时文件目录下,当然也可以在选项对话框执行设置。如果出现异常情况,可以用CAD提供的图形管理器直接绘图图纸,或者直接将找到的文件扩展名改回DWG打开。浩辰CAD等自动保存文件的恢复方法相同。
AC$
临时文件,在“选项”对话框中可以设置扩展名,我们在CAD中复制(CTRL+C)或剪切(CTRL+V)时会生成一个临时文件,这个临时文件等于记录剪切内容,可以复制粘贴到其他文件。临时文件通常保存在当前用户的临时文件夹下,也可以自己设置其他路径。如果临时文件路径不可写的话,就会导致无法复制粘贴。
ARG
配置文件,在CAD中设置好“选项”对话框的各类选项后,可以输出为*.arg文件,这样可以将配置分享给其他人。一些专业软件通常使用配置文件来加载自己的相关设置。
暂时就想到这么多,如果还有遗漏,或者描述中有什么错误希望大家提醒!
CAD最高效的操作方式就是左手键盘,右手鼠标,两只手各司其职、相互配合。但CAD很多快捷键需要用到右手,对操作效率有些影响,因此有些精益求精的设计人员会将快捷键都设置到左手。
“左手键”快捷命令表
| A | *ARC | 创建圆弧 |
| AD | *ATTEDIT | 改变属性信息 |
| AA | *AREA | 计算对象或指定区域的面积和周长 |
| AG | *ALIGN | 将对象与其他对象对齐 |
| AP | *APPLOAD | 加载或卸载应用程序 |
| AR | *ARRAY | 阵列 |
| AT | *MATCHPROP | 将选定对象的特性应用到其他对象 |
| ATT | *ATTDEF | 创建属性定义 |
| AV | *DSVIEWER | 鸟瞰视图 |
| B | *BLOCK | 创建块 |
| BD | *BOUNDARY | 从封闭区域创建面域或多段线 |
| BR | *BREAK | 打断选定对象 |
| C | *CIRCLE | 创建圆 |
| CA | *CAL | 计算算术和几何表达式 |
| CC | *COPY | 复制对象 |
| CF | *CHAMFER | 为对象的边加倒角 |
| CT | *CUTCLIP | 剪切图形 |
| CR | *COLOR | 设置新对象的颜色 |
| D | *DIMSTYLE | 创建和修改标注样式 |
| DA | *DIMANGULAR | 创建角度标注 |
| DB | *DIMBASELINE | 从上一个标注或选定标注的基线处创建标注 |
| DC | *DIMORDINATE | 创建坐标点标注 |
| DD | *DIMDIAMETER | 创建圆和圆弧的直径标注 |
| DE | *DIMLINEAR | 创建线性标注 |
| DG | *DIMALIGNED | 创建对齐线性标注 |
| DR | *DIMRADIUS | 创建圆和圆弧的半径标注 |
| DT | *DIST | 测量两点之间的距离和角度 |
| DV | *DVIEW | 定义平行投影或透视视图 |
| DZ | *LEADER | 创建连结注释与几何特征的引线 |
| E | *ERASE | 从图形中删除对象 |
| ED | *DDEDIT | 编辑文字、标注文字、属性定义和特征控制框 |
| ES | *ELLIPSE | 创建椭圆 |
| EG | *LENGTHEN | 修改对象的长度和圆弧的包含角 |
| EX | *EXTEND | 延伸对象 |
| ER | *LAYER | 管理图层和图层特性 |
| EE | *LINETYPE | 加载、设置和修改线型 |
| F | *FILLET | 倒圆角 |
| FC | *POLYGON | 创建闭合的等边多段线 |
| FD | *OPEN | 打开现有的图形文件 |
| FE | *EXPORT | 以其他文件格式输出 |
| FF | *LINE | 创建直线段 |
| FG | *PLINE | 创建二维多段线 |
| FGE | *PEDIT | 编辑多段线和三维多边形网格 |
| FW | *LWEITH | 设置线宽、线宽显示选项线宽单位 |
| FS | *OFFSET | 偏移 |
| FT | *FILTER | 为对象选择创建过滤器 |
| FV | *MOVE | 移动对象 |
| FX | *PROPERTIES | 控制现有对象的特性 |
| G | *GROUP | 对象编组 |
| R | *PAN | 在当前视口中移动视图 |
| RW | *REDRAW | 刷新当前视口中的显示 |
| RA | *RAY | 画射线 |
| RD | *REDO | 撤销前面UNDO 或 U 命令的效果 |
| RE | *REGEN | 从当前视口重生成整个图形 |
| REE | *RENAME | 修改对象名 |
| REC | *RECTANG | 绘制矩形多段线 |
| RT | *ROTATE | 旋转 |
| RR | *RENDER | 渲染 |
| SA | *SAVEAS | 另存为 |
| SV | *SAVE | 保存 |
| SC | *SCALE | 按比例放大或缩小对象 |
| SD | *DDSELECT | 选项设置 |
| SS | *HATCH | 用无关联填充图案填充区域 |
| ST | *STYLE | 创建、修改或设置命名文字样式 |
| T | *TRIM | 修剪对象 |
| TB | *TOOLBAR | 显示、隐藏和自定义工具栏 |
| TE | *TOLERANCE | 创建形位公差 |
| TT | *TEXT | 创建单行文字对象 |
| TTT | *MTEXT |
创建多行文字对象 |
| V | *UNDO | 撤消命令 |
| VV | *UNITS | 控制坐标和角度的显示格式并确定精度 |
| W | *WBLOCK | 将对象或块写入新的图形文件 |
| WW | *MIRROR | 镜像 |
| WE
|
*WEDGE
|
创建三维实体并使其倾斜面沿 X 轴方向 |
| X | *EXPLODE | 将合成对象分解成它的部件对象 |
| XA | *XATTACH | 将外部参照附着到当前图形 |
| XB | *XBIND | 将外部参照依赖符号绑定到当前图形中 |
| XC | *XCLIP | 定义外部参照或块剪裁边界,并且设置前剪裁面和后剪裁面 |
| XX | *XLINE | 创建无限长的直线(即参照线) |
| Z | *ZOOM | 放大或缩小视图中对象的外观尺寸 |
| ZA | *ZOOMALL | 缩放全部 |
| ZD | *ZOOMDYNAMIC | 动态缩放 |
| ZE | *ZOOMEXTENTS | 缩放范围 |
“左手键”命令别名
A,
AD,
AA,
AG,
AP,
AR,
AT,
ATT,
AV,
B,
BD,
BR,
C,
CA,
CC,
CF,
CT,
CR,
D,
DA,
DB,
DC,
DD,
DE,
DG,
DR,
DS,
DT,
DV,
DZ,
E,
ED,
ES,
EG,
EX,
ER,
EE,
F,
FC,
FD,
FE,
FF,
FG,
FGE,
FW,
FS,
FT,
FV,
FX,
G,
R,
RW,
RA,
RD,
RE,
REE,
REC,
RT,
RR,
SA,
SV,
SC,
SD,
SS,
ST,
T,
TB,
TE,
TT,
TTT,
V,
VV,
VW,
W,
WW,
WE,
X,
XA,
XB,
XC,
XX,
Z,
ZA,
ZD,
ZE,
熟练使用快捷键,可以减少鼠标操作,可以提高绘图速度,下面将AutoCAD和浩辰CAD中常用的一些快捷键列出来,希望对大家有所帮助。
F1: 获取帮助
F2: 切换图形窗口和文本窗口(命令历史记录)
F3: 打开或关闭对象捕捉
F4: 数字化仪控制(数字化仪是一个设备,如果没有此设备,就不用记这个快捷键)
F5: 等轴测平面切换。当栅格设置为“等轴测捕捉”模式,利用栅格捕捉绘图时,按F5键可切换轴测平面)
F6: 控制状态行上坐标的显示方式
F7: 栅格显示模式控制
F8: 正交模式控制
F9: 栅格捕捉模式控制
F10: 极轴模式控制
F11: 对象追踪模式控制
Ctrl+1: 打开关闭属性对话框
Ctrl+2: 打开关闭设计中心
Ctrl+3: 打开关闭工具选项板
Ctrl+4: 打开关闭图纸集管理器(浩辰CAD无)
Ctrl+6: 打开关闭图象数据源(浩辰CAD无)
Ctrl+7: 打开关闭标记集管理器(浩辰CAD无)
Ctrl+8: 打开关闭计算器
Ctrl+9: 打开关闭命令行窗口
Ctrl+A: 选择所有对象
Ctrl+B: 栅格捕捉模式控制(F9) (浩辰CAD仅支持F9)
Ctrl+C: 将选择的对象复制到剪切板上
Ctrl+F: 控制是否实现对象自动捕捉(F3)(浩辰CAD仅支持F3)
Ctrl+G: 栅格显示模式控制(F7)(浩辰CAD仅支持F7)
Ctrl+I:控制状态栏中坐标的更新。0 :指定点时更新, 1:连续更新绝对坐标,2:连续更新绝对坐标,且当要求输入距离和角度时,显示与最后一点的角度
Ctrl+J: 重复执行上一步命令 (浩辰CAD为CTRL+M)
Ctrl+K: 超级链接 (浩辰CAD不支持)
Ctrl+N: 新建图形文件
Ctrl+M: 打开选项对话框 (浩辰CAD为重复命令)
Ctrl+P: 打开打印对说框
Ctrl+S: 保存文件
Ctrl+U: 极轴模式控制(F10) (浩辰CAD仅支持F10)
Ctrl+v: 粘贴剪贴板上的内容
Ctrl+W: 对象追踪式模式控制(F11) (浩辰CAD仅支持F11)
Ctrl+X: 剪切所选择的内容
Ctrl+Y: 重做
Ctrl+Z: 取消前一步的操作
本文档虽然是转载自其他文档,但我进行了检查和整理。如果有谁发现其中问题,请留言,我会马上修改。
第一部分 常用功能及参数命令
10,20(绝对直角坐标)﹫10,20(相对直角坐标)
距离<角度(绝对极坐标)﹫距离<角度(相对极坐标)
adcenter(Ctrl+2) 设计中心
align(AL) 对齐标注
appload 加载应用程序
arc(A) 弧
arctext 弧形文本
area 面积
array(AR) 阵列
attedit 编辑属性
attout/attin 导出/导入属性值
bextend 延伸至块图元(扩展工具功能)
bhatch 填充
blipmode 显示标志
block(B) 创建块
blockreplace 替换图块(扩展工具功能)
blocktoxref 图块参照(扩展工具功能)
boundary(BO) 边界
break(BR) 打断
breakline 折断线
btrim 用块图元修剪
burst 分解属性为文字 (扩展工具功能)
chamfer(cha) 倒角
change 属性修改
circle(C) 圆
close 关闭图形(文件——退出)
config=options(OP) 选项
copy(CO/CP) 复制
copyclip(Ctrl+C) 复制到剪贴板
copym 多重复制
ddattdef=attdef 定义属性
ddatte(ATE) 编辑图块属性
ddedit(ED) 文本编辑、改变属性定义
ddgrips 夹点设置/绘图设置(显示)
ddim(D) 标注样式
ddinsert/insert、divide、measure 插入图块
ddptype 点样式
ddunits=units (图形)单位
dimangular 角度标注
dimbaseline(dimbase)基线标注
dimcenter 圆心标记
dimcontinue 连续标注
dimdiameter(dimdia)直径标注
dimedit、ddedit、dimtedit 尺寸标注编辑
dimex/dimim 标注样式输出和输入
dimleader 引线标注
dimlinear(dimlin) 线性标注
dimordinate 坐标标注
dimradius(dimrad) 半径标注
dist(DI) 距离
divide(DIV) 定数等分
donut(DO) 圆环系统变量Fillmode、fill
draworder 绘图顺序
ellipse(EL) 椭圆系统变量Pellipse
end 端点 (确定点位置时输入的捕捉选项)
erase(E)、delete键 删除
explode(X) 分解
extend(EX) 延伸
fill 填充显示
fillet(F) 圆角
grid
hatch(H) 图形填充
help
highlight 选择高亮显示
image 图像管理器
imageadjust 图像调整
imageattach 插入光栅图像
imagequality 图像质量
insertobj 创建新的嵌入对象
join 连接
layer(LA) 图层
lengthen(LEN)编辑长度/修改长度/拉长
limits 图形界限
line(L) 线
linetype 线型管理器
list 查图形信息、列表显示
measure(ME) 定距等分
mirror(MI) 镜像
mocoro 移动、复制、旋转
move(M) 移动
mslide 生成快照
mtext(MT) 多行文本标注
mview 创建多个浮动视口
ncopy 复制嵌套图元 (扩展工具功能)
new 创建新图形系统变量Startup会影响是否弹出相应对话框
offset(O) 偏移
open (CTRL+O)
ortho 正交 F8
osnap 目标捕捉/对象捕捉 F3
pan 平移
pasteclip 粘贴
pedit(PE) 编辑多段线
pline(PL) 多段线
pmspace 图纸空间与模型空间之间的转换
point(PO) 点(只能绘制单个点)
polygon(POL) 正多边形可精确绘3~1024条边
print、plot (Ctrl+P)打印
qdim 快速标注
qlattach、qldetachset、qlattachset 引线、分离、附加(扩展工具功能)
qleader 快速引线
qsave 保存
qtext 快显文本
quit、exit 退出
ray 射线
rectangle(REC) 矩形
redraw/redrawall(R)图形重画
regen/regenall(RE)重新生成(系统设置Regenauto,可设置自动重生成,不建议设置)
revcloud 云线
rotate(RO) 旋转
rtzoom(Z)
saveas(CTRL+SHIFT+S)另保存
scale(SC) 缩放
select 选择对象
settings 草图设置-捕捉和栅格
sketch 徒手画线
snap(SN) 草图设置-光标捕捉 F9
solid(SO) 区域或二维填充
spline(SPL) 样条曲线
stopscript 停止记录脚本
stretch(S) 拉伸
style/ddstyle(ST) 文字样式
tbconfig 工具栏
tcase 文本形态
tcircle 文本外框
tcount 自动编号
text/dtext(DT) 单行文本标注
textfit 调整文本
textmask 文本屏蔽
textunmask 解除屏蔽
tjust 对齐文本
tolerance 公差标注
torient 旋转文本
trace 迹线宽线系统变量tracewid(设置迹线宽度)
trim(TR) 修剪
ucs 用户坐标系统
viewports/vports 新建视口
vsnapshot 观看快照
wblock 写块
xattach 附着外部参照
xline(XL) 构造线
xref 外部参照管理
zoom(Z) 缩放
第二部分 默认的快捷键
F1: 获取帮助
F2: 实现作图窗和文本窗口的切换
F3: 控制是否实现对象自动捕捉
F4: 数字化仪控制
F5: 等轴测平面切换
F6: 控制状态行上坐标的显示方式
F7: 栅格显示模式控制
F8: 正交模式控制
F9: 栅格捕捉模式控
F10: 极轴模式控制
F11: 对象追 踪式控制
Ctrl+0: 图形窗口最大化,AutoCAD支持,浩辰CAD及其他CAD暂不支持。
Ctrl+1: 打开特性对话框
Ctrl+2: 打开设计中心
Ctrl+3:打印工具选项板
Ctrl+4: 打开图纸集管理器(浩辰及其他CAD暂不支持)
Ctrl+5: 打开信息选项板(浩辰及其他CAD暂不支持)
Ctrl+6: 打开数据库连接管理器(浩辰及其他CAD暂不支持)
Ctrl+7: 打开标记集管理器(浩辰及其他CAD暂不支持)
Ctrl+8: 打开计算器
Ctrl+9: 打开关闭命令行
Ctrl+A:全选
Ctrl+B: 栅格捕捉模式控制(F9)
Ctrl+C:复制到剪贴板
Ctrl+D:打开关闭动态UCS (浩辰及其他CAD暂不支持)
Ctrl+F: 控制是否实现对象自动捕捉(f3)
Ctrl+G: 栅格显示模式控制(F7)
Ctrl+H: 切换PICKSTYLE变量,确定是否使用编组
Ctrl+K: 超链接
Ctrl+L: 正交开关
Ctrl+N: 新建图形文件
Ctrl+O:打开文件
Ctrl+P: 打开打印对话框
Ctrl+Q: 退出CAD
Ctrl+S: 保存文件
Ctrl+U: 极轴模式控制(F10)
Ctrl+V: 粘贴剪贴板上的内容
Ctrl+W: 对象追踪式控制(F11)
Ctrl+X: 剪切所选择的内容
Ctrl+Y: 重做
Ctrl+Z: 取消前一步的操作
A: 绘圆弧
B: 定义块
C: 画圆
D: 尺寸资源管理器
E: 删除
F: 倒圆角
G: 对相组合
H: 填充
I: 插入
S: 拉伸
T: 文本输入
W: 定义块并保存到硬盘中
L: 直线
M: 移动
X: 炸开
V: 设置当前坐标
U: 恢复上一次操做
O: 偏移
P: 移动
Z: 缩放
AA: 测量区域和周长(area)
AL: 对齐(align)
AR: 阵列(array)
AP: 加载*lsp程系
AV: 打开鸟瞰视图对话框(dsviewer)
SE: 打开捕捉和栅格设置对话框
ST: 打开字体设置对话框(style)
SO: 绘制二维面( 2d solid)
SP: 拼写检查(spell)
SC: 缩放比例 (scale)
SN: 栅格捕捉模式设置(snap)
DT: 文本的设置(dtext)
DI: 测量两点间的距离
OI: 插入外部对相
第三部分 个性化自定义设置
为了尊重用户的一些固定习惯,CAD软件甚至可支持已有的*.pgp文件导入,免去用户重复设置的麻烦。
通过CAD的工具菜单中的自定义选项,可对软件的命令简称和快捷方式进行自定义设置。
点击工具-自定义-编辑程序参数,弹出记事本文档,在里面修改快捷键,根据自己情况自定义快捷键。
通常将自己使用频率最高的命令设为一个字母,次之的设置为两个字母,例如默认设置中圆用C字母,复制用CO,但显然复制比圆的命令用得更多,很多人愿意将复制改为C,将圆定义为CI。另外考虑到左手键盘、右手鼠标的操作习惯,可以将一些常用命令设置到左手边,例如有的设计师认为直线L命令用着就很蛋疼,把L,*LINE修改为F,*LINE这样,直线命令就变为了F,很顺手。
AutoCAD、浩辰CAD等软件基本类似。
一、基本概念,基本操作
二、快捷键及绘图准备
三、15个基本命令
四、为什么要记这15个命令
五、附我的自定义命令
一、需要知道的概念,以及基本操作
1、CAD是由很多命令组成,命令的执行方式多种多样,基本上有两种:
一种是先输入命令(或选择命令按钮)再执行操作,另外一种是先选择,然后在执行命令。有许多命令这两种操作都是可以的。
例:删除一个物体的时候可以先选择删除命令,然后再选择物体,也可以先把物体选中再选择删除命令,两种操作的结果都是一样的。(键盘输入E 空格 选择物体 空格或者选择物体 输入E 空格,结果都是一样的)
2、透明命令
大部分命令执行的过程是单一的,也就是说在执行的过程中只能执行完,或者中途取消。但也有些命令是在一个命令的执行过程中可以执行另外一个命令,也就是说A命令执行的过程中可以执行B命令,B命令执行完后,继续执行A命令,直至结束。这样的命令叫“透明命令”
3、选择物体的方式。
有两种一种是从左上到右下选择,一种是从右下到左上选择,两种方式的选择结果是不同的,第一种:左上到右下;只能选择到被拉出来的框完全包围的物体;第二种:右下到左上;凡是和虚框相交的所有物体(包括包围了的物体)。
4、相对坐标
相对于当前点(或者你制定的点)的位置,这个非常重要!!!比如你要画一条1000mm的线,选择命令,然后从屏幕上任意取一点,然后给一个方向(移动鼠标到你想的方向,如果是水平或者竖直的线,可按F8打开正交)输入1000回车(或者空格)就得到了一条1000mm的线,这是最简单的相对坐标。比如你想画一个1000X1000的正方形,那你就需要先选择命令,然后在屏幕上任意取一点,然后输入“@1000,1000”然后回车(或空格)就得到了一个正方形。“@”就代表了相对坐标。再有,假如你想画一条1000mm长和水平方向夹角37度的线,那么你就选择线命令,然后再屏幕上任意取一点,然后输入“@1000<37”回车。OK了。这两种方式必须要记住,必须的!
5、键盘操作:
6、鼠标操作:
CAD入门及提高(15个命令走天下)
1、F8 打开/关闭 正交状态:
打开正交状态,这时候只能画水平线或者数值线,移动或者复制物体的时候也只能水平移动或者数值移动。画直线的时候非常有用,所以要习惯用F8来切花,这非常重要。
2、F3 打开/关闭 自动捕捉:
打开的时候,当把鼠标移动到物体上时会有各种形状的黄色的符号,不同的符号代表不同的位置,比如□代表端点 △代表中点,要熟记这些标记,这非常重要。
3、设置捕捉:
屏幕下方有“对象捕捉”四个字,在上边按鼠标右键选择“设置”,可以看到各种符号的意义,选择你需要的,或者全部选择。点“确定”就设置好了捕捉。按左键功能和F3一样,是打开和关闭自动捕捉的状态!
4、快捷按钮的显示
假如你用另外一台电脑的时候突然发现他的CAD没有快捷按钮,或者没有标注按钮,那你可以自己调出来,是这样的,在黑色区域外围的灰色区域点鼠标右键会看到ACAD菜单立面一大串,有的打√,有的没大,打勾的,说明屏幕上有,假如你没有标注的菜单,那你就找到标注在他上面点一下,标注就出来了。然后移动到你喜欢的位置就OK!
5、CTRL+S 保存
操作方式:按住CTRL不松开,点S键,比如用左手小指点CTRL键,用左手中指点S然后松开,要养成一个习惯,做完每一个操作都要习惯的保存一下,因为你不能保证下一刻电脑不死机,也不能保证下一刻不停电,也不能保证下一刻CAD不出现“致命错误”,假设你不保存,那么你可能半个小时或者更长时间的工作就白费了!所以,养成这个习惯很重要!!!当然你也可以点上边的保存按钮,但我觉得那样麻烦!养成习惯后你不会有这个操作的意识,呵呵,感觉不到!记住,这非常重要!!!
6、自定义命令。
首先要记住基本命令,但也要有自定义命令,定义方法,工具—自定义—编辑自定义文件—程序参数acad.pgp前边有很多都是以“;”开头的,第一个不以“;”开头的就是命令的开始,一般“3A, *3DARRAY”下边的命令是我们要编辑的部分,其他不懂的不要动。比如这个 3A表示的是快捷键 *号后边是命令的完整名称 也就是说输入 3A 和输入 3DARRAY作用是一样的。修改后保存,关闭CAD,重新打开CAD你自定义的命令就可以使用了。
7、ESC 在任何时候按ESC键,取消正在执行的命令。
三、15个 基本命令
1、 线
命令:line
快捷命令:L
操作方式:输入L→空格→屏幕上点第一点→点第二点 点第三点 空格 完毕,当然你也可以无休止的画下去
2、 复制
命令:copy
快捷命令:CO(有的CAD是C)
操作方式:输入CO→空格→选择物体→空格→选择基准点→选择要复制到什么地方→空格结束(CAD2004如果要连续复制,可在选择基准点之前按一个M然后再选择基准点,就可以连续复制了,CAD2004以后的版本都直接可以连续复制)如果要复制这个物体距离1000mm,那么这样操作“CO→空格→选择物体→空格→选择基准点→输入相对坐标→空格(如果是水平或者竖直方向,那么按F8打开正交,用移动鼠标给个方向,然后输入1000然后空格)
3、 移动
命令:MOVE
快捷命令:M
操作方式:和复制一样
4、 圆
命令:CIRCLE
快捷命令:C(不同的版本稍有不同也有的是CI CR)
操作方式:输入 C 空格 点一点 输入直径 空格或者拉鼠标,点左键确定
5、 偏移
命令OFFSET
快捷命令:O
操作方式:输入O,空格,输入偏移的距离,空格(或者在屏幕上指定距离用两点的方式),选择要偏移的物体,在要偏移的方向上点鼠标。
6、 格式刷
命令MATCHPROP
快捷命令:MA
操作方式:输入MA,空格,选择基准物体,选择要刷的物体
7、 查看属性
命令PROPERTIES
快捷命令:MO(Ctrl+1)
操作方式 :输入mo,选择物体,(可以看到该物体的属性,图层颜色 几何尺寸等)
8、 阵列
命令:array
快捷命令:AR
操作步骤输入AR,空格,出现对话框,假如你想生成一个3行4列的图形,那么行里写3列里写4,下边的“偏移距离和方向”里按你自己的需要填写。
9、 延长
命令:EXTEND
快捷命令:EX
操作方式:输入EX,空格,选择想延长到那儿,空格,选择被延长的线
提示:线的前边有,有可能相交的线或物体
小技巧:输入EX,空格,空格(将图中所有线作为延伸边界),点被延长的物体,可直接延长到最近的一个物体,继续点该线,可以继续延长到下个物体。
10、 剪切
命令:TRIM
快捷命令:TR
操作方式:同,延长,同样的小技巧
11、 删除
命令:ERASE
快捷命令:E
操作方式: 输入E,空格,选择物体,空格(或者选择物体按E,空格,或者选择对象后按Delete键)
12、 撤销
命令:U
操作方式:输入U,空格,只要CAD没关过,可以一直撤销到打开图纸时的状态
13、 炸开
命令:EXPLODE
快捷命令:X
操作方式:输入X,空格,选择物体(或者选择物体输入X 空格)
提示:如果是块也许需要炸很多此才能炸开,也有的东西是炸不开的
14、 拉伸
命令:STRETCH
快捷命令:S
操作方式:输入S,用右下、左上的方式拉出一个框,让方框包围需要拉伸的部分图形,空格,选择一个基本点,输入距离或者指定下一点。
如果框选了整个对象,拉伸时整个对象会被移动。
15、 镜像
命令:MIRROR
快捷命令:MI
操作方式: 输入MI 选择要镜像的物体,选择“镜子“的第一点,选择”镜子“的第二点,空格,得到了一个以你选择的两点为对称轴的图像三、为什么要记这15个命令:因为会CAD操作的人很多,你要与众不同,你需要更快的操作才可以比别人强,用键盘看起来很酷,作一个牛X的人需要熟练的键盘操作。只会用鼠标在屏幕上点,不能说会CAD。呵呵!
CAD功能非常强大,操作也可以非常的灵活,要画一个图形,操作方式多种多样,比如画一个正方形
其他的命令可以用按钮或者菜单里找,这15个命令一定要用键盘输入!
五、附我的自定义命令
因为原则上CAD采用左手键盘、右手鼠标的方式最方便,因此将一些常用命令都定义为左手键,这样也可以提高绘图效率。
ff, *line
ww, *move
a, *MATCHPROP
q, *PROPERTIES
c, *copy (把圆的命令改为CC)
我这样定义不替换原来的命令(C 复制命令除外,因为画圆的命令不常用),又增加了命令的可操作性,解放了右手和眼睛,右手只用鼠标,眼睛只盯着屏幕就可以了!
AcDbText* BrefAttrToText(AcDbAttribute* pAttr)
{
AcDbText* pText=new AcDbText;
SameEntityAttr(pText,pAttr);
pText->setHeight(pAttr->height());
pText->setHorizontalMode(pAttr->horizontalMode());
pText->setVerticalMode(pAttr->verticalMode());
pText->setNormal(pAttr->normal());
pText->setOblique(pAttr->oblique());
pText->setPosition(pAttr->position());
pText->setAlignmentPoint(pAttr->alignmentPoint());
pText->setRotation(pAttr->rotation());
TCHAR* lpStr=pAttr->textString();
pText->setTextString(lpStr);
acutDelString(lpStr);
pText->setTextStyle(pAttr->textStyle());
pText->setThickness(pAttr->thickness());
pText->setWidthFactor(pAttr->widthFactor());
return pText;
}
//功能: 设置int型环境变量
Acad::ErrorStatus SetCADIntVar(CString sMode,int nRet)
{
Acad::ErrorStatus es=Acad::eOk;
resbuf *pNewRb=acutBuildList(RTSHORT,nRet,0);
acedSetVar(sMode,pNewRb);
acutRelRb(pNewRb);
return es;
}
//功能: 获取int型环境变量
Acad::ErrorStatus GetCADIntVar(CString sMode,int &nRet)
{
Acad::ErrorStatus es=Acad::eOk;
resbuf *pRb=acutBuildList(RTSHORT,23,0);
acedGetVar(sMode,pRb);
if(pRb==NULL)
{
acutRelRb(pRb);
return Acad::eNullHandle;
}
nRet=pRb->resval.rint;
acutRelRb(pRb);
return es;
}
下载地址:http://yun.baidu.com/share/link?shareid=711270525&uk=721859502
修正了属性转成文字的BUG
解决了AutoCAD2014加载时添加信任的问题
下载地址:http://yun.baidu.com/share/link?shareid=372510910&uk=721859502
增加了新功能:
1:定位当前文件
2:临时隐藏
3:恢复显示
4:删除重叠线,删除完全重叠和被压盖的曲线
大家好,软件发布最新体验版本V1.0.5.20131216
下载地址:http://yun.baidu.com/share/link?shareid=236984765&uk=721859502
修正了部分电脑无法获取机器码的bug,可能导致用户以前的注册码无效,请在申请之前,联系作者获取新的注册码。
批量修改功能做了比较大的升级
注意:需要在
BOOL CTextCompareCppApp::InitInstance()
加上
AfxInitRichEdit2();
否则CRichEditCtrl 无法使用
// TextCompareCppDlg.h : 头文件
//
#pragma once
// CTextCompareCppDlg 对话框
class CTextCompareCppDlg : public CDialog
{
// 构造
public:
CTextCompareCppDlg(CWnd* pParent = NULL); // 标准构造函数
// 对话框数据
enum { IDD = IDD_TEXTCOMPARECPP_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
HICON m_hIcon;
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
void ChangeColor(int leftStart, int leftEnd, int rightStart, int rightEnd,bool bSame);
CRichEditCtrl richTextBox1;
CRichEditCtrl richTextBox2;
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedButton1();
};
// TextCompareCppDlg.cpp : 实现文件
//
#include “stdafx.h”
#include “TextCompareCpp.h”
#include “TextCompareCppDlg.h”
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
struct IndexPair
{
int l;
int r;
IndexPair()
{
l=0;
r=0;
}
};
COLORREF ColorNew = RGB(253,0,0);
COLORREF ColorDelete =RGB(254,0,0);
COLORREF ColorModify = RGB(255,0,0);
COLORREF ColorSame = RGB(0,0,0);//黑色
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// 对话框数据
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// CTextCompareCppDlg 对话框
CTextCompareCppDlg::CTextCompareCppDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTextCompareCppDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CTextCompareCppDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX,IDC_RICHEDIT21,richTextBox1);
DDX_Control(pDX,IDC_RICHEDIT22,richTextBox2);
}
BEGIN_MESSAGE_MAP(CTextCompareCppDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON1, &CTextCompareCppDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
// CTextCompareCppDlg 消息处理程序
BOOL CTextCompareCppDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 将“关于…”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
SetDlgItemText(IDC_EDIT1,_T(“CAD工具之家(www.cadgj.com)XX“));
SetDlgItemText(IDC_EDIT2,_T(“CAD工具(cbd_gj.com)”));
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CTextCompareCppDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CTextCompareCppDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() – cxIcon + 1) / 2;
int y = (rect.Height() – cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标显示。
//
HCURSOR CTextCompareCppDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void RichEditCtrlSelect(CRichEditCtrl* pCtrl,int start, int length)
{
if(length-1<0)
{
return;
}
pCtrl->SetSel(start,start+length);
}
void RichEditCtrlChangeTextColor(CRichEditCtrl* pCtrl,COLORREF& col)
{
if(col==ColorDelete)
{
CHARFORMAT2 cf;
pCtrl->GetSelectionCharFormat(cf);
cf.crTextColor=col;
cf.dwEffects&=~CFE_AUTOCOLOR;
cf.dwMask|=CFM_COLOR;
cf.dwEffects|=CFE_STRIKEOUT;
pCtrl->SetSelectionCharFormat(cf);
}
else if(col==ColorModify)
{
CHARFORMAT2 cf;
pCtrl->GetSelectionCharFormat(cf);
cf.crTextColor=col;
cf.dwEffects&=~CFE_AUTOCOLOR;
cf.dwMask|=CFM_COLOR;
cf.dwEffects&=~CFE_STRIKEOUT;
pCtrl->SetSelectionCharFormat(cf);
}
else if(col==ColorNew)
{
CHARFORMAT2 cf;
pCtrl->GetSelectionCharFormat(cf);
cf.crTextColor=RGB(0,0,255);
cf.dwEffects&=~CFE_AUTOCOLOR;
cf.dwMask|=CFM_COLOR;
cf.dwEffects&=~CFE_STRIKEOUT;
pCtrl->SetSelectionCharFormat(cf);
}
else if(col==ColorSame)
{
CHARFORMAT2 cf;
pCtrl->GetSelectionCharFormat(cf);
cf.crTextColor=RGB(0,0,0);
cf.dwEffects&=~CFE_AUTOCOLOR;
cf.dwMask|=CFM_COLOR;
cf.dwEffects&=~CFE_STRIKEOUT;
pCtrl->SetSelectionCharFormat(cf);
}
}
void CTextCompareCppDlg::ChangeColor(int leftStart, int leftEnd, int rightStart, int rightEnd,bool bSame)
{
int leftLen = leftEnd – leftStart + 1;
int rightLen = rightEnd – rightStart + 1;
if(leftLen==0&&rightLen==0)
{
return;
}
if (leftLen > rightLen)
{
//删除了内容,长度为(leftLen – rightLen)
RichEditCtrlSelect(&richTextBox1,leftStart, leftLen – rightLen);
RichEditCtrlChangeTextColor(&richTextBox1,ColorDelete);
if (rightLen > 0)
{
//修改了内容,长度为(rightLen)
RichEditCtrlSelect(&richTextBox2,rightStart, rightLen);
RichEditCtrlChangeTextColor(&richTextBox2,bSame ? ColorSame : ColorModify);
RichEditCtrlSelect(&richTextBox1,leftStart + leftLen – rightLen – 1+1, rightLen);
RichEditCtrlChangeTextColor(&richTextBox1,bSame ? ColorSame : ColorModify);
}
}
else if (leftLen == rightLen)
{
//修改了内容,长度为(leftLen)
RichEditCtrlSelect(&richTextBox2,rightStart, rightLen);
RichEditCtrlChangeTextColor(&richTextBox2,bSame ? ColorSame : ColorModify);
RichEditCtrlSelect(&richTextBox1,leftStart, leftLen);
RichEditCtrlChangeTextColor(&richTextBox1,bSame ? ColorSame : ColorModify);
}
else
{
//增加了内容,长度为(rightLen-leftLen)
RichEditCtrlSelect(&richTextBox2,rightStart, rightLen – leftLen);
RichEditCtrlChangeTextColor(&richTextBox2,ColorNew);
if (leftLen > 0)
{
//修改了内容,长度为(leftLen)
RichEditCtrlSelect(&richTextBox1,leftStart, leftLen);
RichEditCtrlChangeTextColor(&richTextBox1,bSame ? ColorSame : ColorModify);
RichEditCtrlSelect(&richTextBox2,rightStart + rightLen – leftLen – 1+1, leftLen);
RichEditCtrlChangeTextColor(&richTextBox2,bSame ? ColorSame : ColorModify);
}
}
}
void CTextCompareCppDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString leftText,rightText;
GetDlgItemText(IDC_EDIT1,leftText);
richTextBox1.SetWindowText(leftText);
GetDlgItemText(IDC_EDIT2,rightText);
richTextBox2.SetWindowText(rightText);
WCHAR* left=new WCHAR[leftText.GetLength()+1];
memset(left,0,(leftText.GetLength()+1)*sizeof(WCHAR));
//特别注意,一定要转换为宽字节的,不然对比出错
#ifdef _UNICODE
lstrcpy(left,leftText);
#else
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, leftText, leftText.GetLength(), left, leftText.GetLength() + 1);
#endif
WCHAR* right=new WCHAR[rightText.GetLength()+1];
memset(right,0,(rightText.GetLength()+1)*sizeof(WCHAR));
#ifdef _UNICODE
lstrcpy(right,rightText);
#else
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, rightText, rightText.GetLength(), right, rightText.GetLength() + 1);
#endif
int leftLen = lstrlenW(left);
int rightLen = lstrlenW(right);
if(leftLen==0&&rightLen==0)
{
//都是空的内容
delete[] left;
delete[] right;
return;
}
else if(leftLen==0&&rightLen>0)
{
//全部都是新增的
RichEditCtrlSelect(&richTextBox2,0, rightLen);
RichEditCtrlChangeTextColor(&richTextBox2,ColorNew);
delete[] left;
delete[] right;
return;
}
else if(leftLen>0&&rightLen==0)
{
//全部都被删除了
RichEditCtrlSelect(&richTextBox1,0, leftLen);
RichEditCtrlChangeTextColor(&richTextBox1,ColorDelete);
delete[] left;
delete[] right;
return;
}
bool** V=new bool*[leftLen];//申请一个动态的二维数组
int l = 0;
int r = 0;
for(l=0;l<leftLen;l++)
{
V[l]=new bool[rightLen];//申请动态一维数组
}
for (l = 0; l < leftLen; l++)
{
WCHAR c1 = left[l];
for (r = 0; r < rightLen; r++)
{
WCHAR c2 = right[r];;
if (c1 == c2)
{
V[l][r] = true;
}
else
{
V[l][r] = false;
}
}
}
int nMax = 0;
int** N = new int*[leftLen];//申请动态二维数组
for(l=0;l<leftLen;l++)
{
N[l]=new int[rightLen];//申请动态一维数组
}
for (l = leftLen – 1; l >= 0; l–)
{
for (r = rightLen – 1; r >= 0; r–)
{
if (l == leftLen – 1 && r == rightLen – 1)
{
if (V[l][r])
{
N[l][r] = 1;
}
else
{
N[l][r] = 0;
}
}
else if (l == leftLen – 1)
{
if (V[l][r])
{
N[l][r] = 1;
}
else
{
N[l][r] = N[l][r+1];
}
}
else if (r == rightLen – 1)
{
if (V[l][r])
{
N[l][r] = 1;
}
else
{
N[l][r] = N[l+1][r];
}
}
else
{
N[l][r] = max(max(N[l+1][r], N[l][r+1]), V[l][r] ? N[l+1][r+1] + 1 : N[l+1][r+1]);
}
if (N[l][r] > nMax)
{
nMax = N[l][r];
}
}
}
if (nMax == 0)
{
//未找到任何匹配
ChangeColor(0, leftLen – 1, 0, rightLen – 1,false);
//释放二维数组V
for(l=0;l<leftLen;l++)
{
delete[] V[l];
}
delete[] V;
//释放二维数组N
for(l=0;l<leftLen;l++)
{
delete[] N[l];
}
delete[] N;
delete[] left;
delete[] right;
return;
}
CArray<IndexPair> pairList;
for (l = leftLen – 1; l >= 0; l–)
{
for (r = rightLen – 1; r >= 0; r–)
{
if (N[l][r] == nMax && V[l][r])
{
//起始点
IndexPair pair;
pair.l = l;
pair.r = r;
pairList.Add(pair);
}
}
}
IndexPair firstIndex;
//寻找最优路径
int nMin = -1;
int** D = new int*[leftLen];//申请动态二维数组
for(l=0;l<leftLen;l++)
{
D[l]=new int[rightLen];//申请动态一维数组
}
for (l = leftLen – 1; l >= 0; l–)
{
for (r = rightLen – 1; r >= 0; r–)
{
if (l == leftLen – 1 && r == rightLen – 1)
{
if (V[l][r])
{
D[l][r] = 1;
}
else
{
D[l][r] = 0;
}
}
else if (l == leftLen – 1)
{
if (V[l][r])
{
D[l][r] = 1;
}
else
{
if (D[l][r + 1] > 0)
{
D[l][r] = D[l][r + 1] + 1;
}
else
{
D[l][r] = 0;
}
}
}
else if (r == rightLen – 1)
{
if (V[l][r])
{
D[l][r] = 1;
}
else
{
D[l][r] = D[l + 1][r];
}
}
else
{
if (V[l][r])
{
D[l][r] = D[l + 1][r + 1] + 1;
}
else
{
if (N[l][r + 1] > N[l + 1][r])
{
D[l][r] = D[l][r + 1] + 1;
}
else
{
D[l][r] = D[l + 1][r];
}
}
}
}
}
for (int i = 0; i < pairList.GetCount(); i++)
{
IndexPair& pair = pairList.GetAt(i);
if (D[pair.l][pair.r] < nMin || nMin < 0)
{
nMin = D[pair.l][pair.r];
firstIndex = pair;
}
}
pairList.RemoveAll();
pairList.Add(firstIndex);
while (true)
{
//寻找下一个合理的点
IndexPair& lastIndex = pairList.GetAt(pairList.GetCount() – 1);
if (lastIndex.l == leftLen – 1 || lastIndex.r == rightLen – 1)
{
//找到边缘了
if (V[lastIndex.l][lastIndex.r])
{
IndexPair newPair;
newPair.l = lastIndex.l;
newPair.r = lastIndex.r;
pairList.Add(newPair);
break;
}
else
{
if (lastIndex.r != rightLen – 1)
{
for (r = lastIndex.r + 1; r <= rightLen – 1; r++)
{
if (V[lastIndex.l][r])
{
IndexPair newPair;
newPair.l = lastIndex.l;
newPair.r = r;
pairList.Add(newPair);
break;
}
}
}
else if (lastIndex.l != leftLen – 1)
{
for (l = lastIndex.l; l <= leftLen – 1; l++)
{
IndexPair newPair;
newPair.l = l;
newPair.r = lastIndex.r;
pairList.Add(newPair);
break;
}
}
break;
}
}
if (V[lastIndex.l][lastIndex.r])
{
IndexPair newPair;
newPair.l = lastIndex.l + 1;
newPair.r = lastIndex.r + 1;
pairList.Add(newPair);
}
else
{
if (N[lastIndex.l][lastIndex.r + 1] > N[lastIndex.l + 1][lastIndex.r])
{
IndexPair newPair;
newPair.l = lastIndex.l;
newPair.r = lastIndex.r + 1;
pairList.Add(newPair);
}
else
{
IndexPair newPair;
newPair.l = lastIndex.l+1;
newPair.r = lastIndex.r;
pairList.Add(newPair);
}
}
}
for (int i = pairList.GetCount() – 1; i >= 0; i–)
{
IndexPair pair = pairList.GetAt(i);
if (!V[pair.l][pair.r])
{
pairList.RemoveAt(i);
}
}
for (int i = pairList.GetCount() – 2; i >= 0; i–)
{
IndexPair& pair1 = pairList.GetAt(i+1);
IndexPair& pair2 = pairList.GetAt(i);
for (int j = pair1.r – 1; j >= pair2.r + 1; j–)
{
if (right[j] == right[pair2.r])
{
pair2.r = j;
pairList.SetAt(i,pair2);
break;
}
}
}
int leftLast = 0;
int rightLast = 0;
IndexPair pair0 = pairList.GetAt(0);
IndexPair pairTmp = pair0;
//left的pair0.l和right的pair0.r匹配
ChangeColor(0, pair0.l – 1, 0, pair0.r – 1, false);
RichEditCtrlSelect(&richTextBox1,pair0.l, 1);
RichEditCtrlChangeTextColor(&richTextBox1,ColorSame);
RichEditCtrlSelect(&richTextBox2,pair0.r, 1);
RichEditCtrlChangeTextColor(&richTextBox2,ColorSame);
for (int i = 1; i < pairList.GetCount(); i++)
{
IndexPair pair1 = pairList.GetAt(i – 1);
IndexPair pair2 = pairList.GetAt(i);
if (pair2.l – pair1.l == 1 &&
pair2.r – pair1.r == 1)
{
}
else
{
ChangeColor(pair1.l + 1, pair2.l – 1, pair1.r + 1, pair2.r – 1, false);
}
RichEditCtrlSelect(&richTextBox1,pair2.l, 1);
RichEditCtrlChangeTextColor(&richTextBox1,ColorSame);
RichEditCtrlSelect(&richTextBox2,pair2.r, 1);
RichEditCtrlChangeTextColor(&richTextBox2,ColorSame);
if (i == pairList.GetCount() – 1)
{
ChangeColor(pair2.l + 1, leftLen – 1, pair2.r + 1, rightLen – 1, false);
}
}
//释放二维数组V
for(l=0;l<leftLen;l++)
{
delete[] V[l];
}
delete[] V;
//释放二维数组N
for(l=0;l<leftLen;l++)
{
delete[] N[l];
}
delete[] N;
//释放二维数组D
for(l=0;l<leftLen;l++)
{
delete[] D[l];
}
delete[] D;
delete[] left;
delete[] right;
}