关闭

关闭

关闭

封号提示

内容

首页 Autocad使用经验分享

Autocad使用经验分享.doc

Autocad使用经验分享

abbs 2010-12-18 评分 0 浏览量 0 0 0 0 暂无简介 简介 举报

简介:本文档为《Autocad使用经验分享doc》,可适用于IT/计算机领域,主题内容包含ATUOCAD经验ATUOCAD经验.在AutoCAD中有时有交叉点标记在鼠标点击处产生用BLIPMODE命令在提示行下输入OFF可消除它。.有的用符等。

ATUOCAD经验ATUOCAD经验.在AutoCAD中有时有交叉点标记在鼠标点击处产生用BLIPMODE命令在提示行下输入OFF可消除它。.有的用户使用AutoCAD时会发现命令中的对话框会变成提示行如打印命令控制它的是系统变量CMDDIA关掉它就行了。.椭圆命令生成的椭圆是以多义线还是以椭圆为实体是由系统变量PELLIPSE决定当其为时生成的椭圆是PLINE。.CMDECHO变量决定了命令行回显是否产生其在程序执行中应设为。.DIMSCALE决定了尺寸标注的比例其值为整数缺省为在图形有了一定比例缩放时应最好将其改为缩放比例。.BREAK将实体两点截开在选取第二点时如用“”来回答可由第一点将实体分开。.CAD的较高版本中提供了形位公差标注但圆度及同轴度中的圆不够圆其实AutoCAD中常见符号定义都在AutoCAD安装目录下SUPPORT子目录下的gdtshp文件中其中号和号字符定义了圆形的形状圆的弧度竟为但不太好改正之(如改为更不好看)。.空心汉字字形如使用AutoCADR中的BONUS功能(一定要完全安装AutoCAD或自定义安装时选了它)有一个TXTEXP命令可将文本炸为线对做立体字十分有用。.AutoCADR的BONUS中有一个ARCTEXT命令可实现弧形文本输出使用方法为先选圆弧再输入文本内容按OK。.BONUS中还有一个有用的命令即MPEDIT用它将多个线一齐修改为多义线再改它的线宽。.image命令在R中代替了R中的BMPIN、PCXIN之类命令它将位图嵌入文件中只用来显示如炸开就成了空框架如何使PCXIN等命令重现?请将R安装目录下的RASTERINEXE拷入R下用appload将其装入然后就可以将位图导入(可编缉可炸开)了。.BREAK命令用来打断实体用户也可以一点断开实体用法是在第一点选择后输入“”。常用一条线一段为点划线另一段为实线时。.AutoCADR中提供了大量的命令缩写许多R中无缩写的命令也有了缩写如:A:ARC,B:Bmake,C:Circle,Z:zoo可大量使用之使用后会发现比鼠标点取快(尤其在s输个字符的速度下)。AutoCADR大量扩充了简化命令不仅增加了以首字母简化的命令(这里不列出)而且增加了用前两个字母简化的命令常用的如:array、copy、dist、donut、dtext、filter、mirror、pline、rotate、trim、scale、snap、style、units等更加提高了用键盘输入命令的速度对熟悉键盘的朋友来说简直是如虎添翼。.AutoCADR的命令缩写也可用在R方法是将AutoCADR下Support子目录下的ACADpgp拷贝至AutoCADR的Support子目录下。.AutoCAD中ACADpgp文件十分重要它记录命令缩写内容用户可自定义它们格式如下:<命令缩写>*命令名称。也可定义系统命令AutoCADR提供了sh命令可执行DOS命令但在Windows下作用不大。AutoCADR中用NOTEPAD、EDIT、DIR、DEL等系统命令笔者认为其中NOTEPAD对自定义CAD用途较大但使用起来会发现屏幕一闪(进了DOS)又返回十分让人不愉快让我们来编一个小程序,取名为notelsp:(defunc:notepad()(startapp"notepad"))先将ACADpgp中的NOTEPAD命令定义行删除重入CAD后再将此程序用命令:(load"note")装入下一次用NOTEPAD命令会有更好效果最好将(load"note")加入Support子目录下的ACADRlsp中。.AutoCADR中打印线宽可由颜色设定这样机械制图中的各种线型不同、线宽不同的线条可放入不同的层在层中定义了线型和颜色而在打印设置中设定线型与颜色的关系效果良好。.AutoCADR的Support中ACADdwt为缺省模板要好好加工它把常用的层、块、标注类型定义好再加上标准图框可省去大量重复工作。.AutoCAD中有不少外部Lisp命令文件可以直接观察它们如果学习开发Lisp应用程序注意:R可是最后一版Lisp文件内容公开的AUTOCAD在CAD中Lisp文件内容是加密的(笔者正在研究解密程序)。.AutoCAD二次开发工具很多Lisp早就有了R提供了ADS(AcadDevelopsystem)R中提供了ADS对实模式下C编译器(如BCMSC)的支持R提供ARX(AcadRuntimeeXtend),R提供了VBAutomation这个Automation使VB编写CAD程序成为可能渴望CAD编程的人有了一个最好的选择不必学习ADS、ARX、ObjectARX和AutoLisp一起加入AutoCAD编程的世界。.用户自定义的Lisp文件一定要自动装入AutoCAD这样就需要在acadrlsp中加入用户Lisp文件的装入语句acadrlsp(早期版本为acadlsp)好似DOS的Autoexecbat一定要好好利用在其中如定义了名为S::STARTUP()的函数可自动运行它(给CAD加个启用画面如何可用STARTUP加startapp函数也可加登录密码)。.将AutoCAD中的图形插入WORD中有时会发现圆变成了正多边形用一下VIEWRES命令将它设得大一些可改变图形质量。.形如H()的标注如何去标注呢请在文本内容中输入“c{H(}{HxS^})”可以实现如嫌太麻烦就编个程序来简化操作。.AutoCAD中文件可当作块插入其他文件中但这样一来过多的块使文件过于庞大用PURGE来清除它们吧一次清一层一定要多用几次呀!.AutoCADR的帮助文件内容十分丰富由很多本“书”组成一层层打开多看它们用处是很大的其中包括了CAD的各方面比任何CAD大全还全你是否想您的帮助加入其中请修改acadcnt加入自己帮助的链接。.在CAD中可按规定编定ahp的CAD帮助文件在R下用ahphlpexe将其转变为hpj的文件和rtf的文件再用HelpWorkshop工具(在VC中有)将其项目打开编译为hlp文件。.在AutoCAD中有一些DOS下的exe文件在R中仍有用途用Slidelibexe可将幻灯片作库mcexe可实现菜单的编译。.在作完零件图进行组装时可将零件图块插入后焊开再用group成组后组装这时用ddselect命令控制组选取处于何种状态取消组选取时可将组内成员删除、剪切、修改要移动零件时再打开组状态。.在AutoCAD中的菜单源文件为mnu文件将其修改可将自己的命令加入菜单中再用menu命令装入可参加AutoCAD帮助了解菜单文件格式。图标工具条中加入自己的命令相对简单可在工具条上点右键在toolbar对话中点new按钮输入工具条后一个新工具条产生再选Customize按钮选定custom将空按钮拖入工具条中再在空按钮上按右键这样就可定义自己的按钮图标和命令。.AutoCAD的状态行也可自定义用DIESEL语言可以访问它最简单的方法用modemacro命令后输入$(getvar,clayer)以后当前层名就显示在状态行上用户化可谓无孔不入吧!.AutoCAD的图形格式为dwg也可导出为bmp及wmf或eps、dxf、ds如果用render命令可存为pcx、tga、tif格式AutoCAD还可将文件直接存为这几种格式要为系统装一个名为“Rasterfileexport”的打印机用它打印到文件ACAD还可将文件存为JPG格式。.render进行着色时render无关闭按钮用户可用:(arxunload"render")因为它是ARX文件扩展的功能。.dimzin系统变量最好要设定为这时尺寸标注中的缺省值不会带几个尾零用户直接接受缺省值十分方便快捷。.如遇到快捷键失效如^o失去作用变为正交模式切换的情况请用menu将当前使用菜单的mnu菜单源文件重装一遍即可。.在多行文字(mtext)命令中使用Word编辑文本。Mtext多行文字编辑器是AutoCADR中的新增功能它提供了Windows文字处理软件所具备的界面和工作方式它甚至可以利用Word的强大功能编辑文本这一功能可以用如下方法实现:打开“Tools”菜单选“Preferences”命令“Preferences”对话框弹出后打开“FilesTextEditorDictionaryandFontFileNameTextEditorApplicationInternal”双击“Internal”出现“Selectafile”对话框接着找到“Winwordexe”应用程序文件击“打开”钮最后单击“OK”返回。完成以上设置后用户如再使用mtext命令时系统将自动调用我们熟悉的Word应用程序为AutoCAD中的文本锦上添花。.巧用工具按钮自定义。AutoCAD中有许多lsp文件能为我们提供非常实用的命令如chtextlsp就是一个很好的文字修改命令尤其适用于大批文字的修改但在使用这样的命令之前必须先把lsp文件载入。一般你可以通过选取“Tools”菜单中“LoadApplication”选项再利用对话框打开AutoCADRSupport下的Chtextlsp文件然后击“Load”钮或者也可以直接在命令行中键入“(load“chtext”)”以达到载入的目的如此做总有些繁琐。下面我们用自定义工具按钮的方式解决这个问题右击任意工具钮弹出“Toolbars”对话框击“Customize”钮在“Categories:”中选“Custom”项将出现的空按钮拖到工具条中目标位置击“Close”钮返回接着右击空按钮出现“ButtonProperties”对话框在“Name:”栏中为命令钮命名“Help:”栏中你可写入或不写入内容然后在“Macro:”中键入“(load“chtext”)cht”至于“ButtonIcon",用户可选系统提供的图标也可以点“Edit”自行绘制或者直接调用已有的bmp文件最后点“Apply”钮并依次关闭对话框返回。这样你自己的工作按钮就做成了。由于在后面增加了“cht”(注意:前面要有空格)所以你只要按下工具钮便可以直接去选择要编辑的目标文件。“Stretch”命令也是一个常用命令但输入命令后系统总要提示“selectobjecttostretchbycrossingwindowor crossingpolygon”要求你再输入一个“C”后才能用鼠标去选择目标。为了使操作简化用户只需将系统提供的工具按钮做些小小的修改即可。右击任意工具按钮弹出“Toolbars”对话框再右击“stretch”工具钮弹出“ButtonProporties”对话框在“Macro:”框中的“^c^cstretch”后键入空格和“C”。以后你再点击处理后的工具钮就可以直接选择目标进行操作。.AutoCADR用户通常均采用系统给出的缺省格式存盘这种格式存盘的缺点是文件所占空间大不能用低版本的应用程序(如:AutoCADR、AutoCADR)打开为避免磁盘空间的浪费你可以在“SaveDrawingAs”对话框的“保存类型”中选“AutoCADRLTDrawing”格式存盘。例如:同一dwg文件用两种方式存盘它们的大小分别是KB、KB。可见差别还是很可观的。而且后者文件可以在R、R版本的应用程序中打开。这种方法对配置较低的用户尤为实用。.有时在打开dwg文件时系统弹出“AutoCADMessage”对话框提示“Drawingfileisnotvalid”告诉用户文件不能打开。这种情况下你可以先退出打开操作然后打开“File”菜单选“DrawingUtilitiesRecover”命令或者在命令行直接用键盘输入“recover”接着在“SelectFile”对话框中输入要恢复的文件确认后系统开始执行恢复文件操作。.汉化菜单。将support目录下的acadmnu文件复制为chinesemnu。用写字板打开chinesemnu。仔细观察会发现其中有许多类似“***POP”的条目每一条目定义了一列下拉菜单。将引号中的英文命令名称改为中文存盘退出。再在R中输入“menu”命令将chinesemnu菜单文件装入下拉菜单就变成了中文。还可以再装入acadmnu文件将菜单还原。.R默认的“命令取消”键是“ESC”键如果你已经习惯了R的“Ctrl+C”怎么办呢?点击菜单ToolspreferencescompatibilitypriorityforacceleratorkeysautoCADclassic然后就可以用“Ctrl+C”取消命令了同时“ESC”键仍然有效。  .trim命令中提示选取要剪切的图形时不支持常用的window和crossing选取方式。当要剪切多条线段时要选取多次才能完成。这时可以使用fence选取方式。当trim命令提示选择要剪除的图形时输入“f”,然后在屏幕上画出一条虚线回车这时被该虚线接触到的图形全部被剪切掉。单击“ObjectPropertys”工具条上的“Makeobjects'layercurrent”按钮然后在作图区选择要去的图层上的任一图形当前层立刻变换到选取的图形所在层。用R打开R的文件时即使正确地选择了汉字字形文件还是会出现汉字乱码原因是R与R采用的代码页不同。可到AutoDesk公司主页下载代码页转换工具wnewcp。运行wnewcp后首先选中“R/R”复选框再单击“Browse”按钮选择要转换的文件或目录然后选择新的代码页ANSI或GB均可单击“StartConversion”即开始转换。转换后在R中就能正确地显示汉字。AutoCADR的菜单定制技术雷立宏 中国建筑科学研究院电子计算中心    菜单文件结构及菜单格式  为了保护用户及开发商的既有积累使产品的过渡较为平缓又能充分的挖掘Microsoft最新技术的潜力AutoCADR既保留了原有的菜单结构又对其进行了新的扩展使得用户和开发商都能充分使用WindowsNT平台的图形用户界面(GUI)定制技术对R的用户界面进行方便的定制。因此AutoCADR菜单不仅包括有原来的各类设备菜单、下拉菜单、光标菜单及屏幕菜单等还增加并加强了工具条按钮菜单的用户化功能。菜单文件结构  根据AutoCADR交互界面的不同区域菜单文件被分为不同节每一节中包含了许多菜单项。用户可以按自己的需求描述不同节和菜单项而不一定按照AutoCAD的菜单文件那样描述所有的节和项。为了实现R中加载和卸载分部菜单的功能菜单文件还应包括菜单组名。因此菜单文件的格式如下:  ***MENUGROUP菜单文件组名如果用户未写则以菜单文件全路径名为组名  ***AUXn系统定点设备按钮菜单(如鼠标键定义)  ***POPn下拉菜单或光标菜单  ***TOOLBARS工具条按钮菜单  ***IMAGE图象菜单  ***SCREENn屏幕菜单  ***TABLETn数字化仪板菜单  ***HELPSTRINGS下拉菜单、光标菜单或工具条按钮的状态行帮助信息  ***ACCELERATORS加速键定义注释行。  其中带"*"的菜单节是R新增加的内容。菜单项格式  R的菜单项格式为:  nametaglabel menumacro  名称标识标签 菜单宏  这个格式对所有的菜单节都是统一的只是图象菜单项中没有nametag而且对于不同的菜单节label的含义也有所不同。其中nametag是菜单文件中每个菜单项的唯一标识符其作用是()将下拉菜单和工具条按钮同相应的状态行帮助联系起来()将下拉菜单同其相应加速键联系起来()用于控制菜单项的状态(如可用或不可用)  label是放在中的显示给用户的有关信息例如对于TOOLBARS中的内容定义了工具条的名称、状态(浮动、隐藏或可见等)、位置及所用的图标等  menumacro就是该菜单项或按钮所要执行的动作可以是AutoCAD命令、AutoLISP程序、ADSARX程序等。例如:  ***TOOLBARS  **TBABD  **ABD  定义工具条。  IDABDToolbar("ABD墙体",Floating,Show,,,)  定义工具条按钮。  IDABDButton("绘制墙体","ICONbmp","ICONbmp")^C^CABDWALL:  ***HELPSTRINGS  IDABD墙体绘制和编辑  IDABD直接绘制双线墙体:  如果在菜单源文件中包含以上片段经过编译调用时将会出现名为"ABD墙体"的工具条其中包含一个名为"绘制墙体"按钮。当用户把光标移动到工具条上时"墙体绘制和编辑。"的帮助信息就出现在窗口的状态行当用户把光标移动到按钮上时"直接绘制双线墙体。"的帮助信息就出现在窗口的状态行同时光标箭头处还有"绘制墙体"的提示。菜单文件组成  要满足用户对菜单定制的新要求就必须对原有的菜单进行扩充这不仅表现在菜单结构的变化还表现在菜单文件组成的变化。R之前AutoCAD的菜单原文件为*MNU其编译文件为*MNX在R中*MNX已不存在取而代之的是其它几类文件AutoCADR的菜单文件组成如下:  *MNUAutoCADR菜单模板文件(文本格式)  *MNCAutoCADR编译菜单文件(二进制格式)  *MNS由AutoCADR编译产生的菜单源文件(文本格式)  *MNRAutoCADR菜单中所用的资源文件(二进制格式)  *MNL同名菜单加载的AutoLISP程序文件(文本格式)用户菜单文件编制过程  ()以文本文件方式按AutoCAD要求的格式编写菜单模板文件*MNU及其所调用的AutoLISP程序文件*MNL如果有工具条菜单还需同时制作相应的图标文件(小图标*点大图标*点)  ()使用MENU命令编译已经写好的菜单模板文件(选择文件的对话框中的文件类型需要用户自己切换*MNU)AutoCADR将自动生成*MNC、*MNS和*MNR文件  ()使用交互方式增加和编辑工具条菜单AutoCADR会自动更新*MNS文件如果用户想要保留新增工具条菜单避免再次编译*MNU时丢失就必须手工将*MNS中的有关内容复制到*MNU中之后才能使用MENU命令再次编译*MNU。R菜单调用的检索顺序  当用户使用交互方式调用菜单或者使用编程方式调用菜单AutoCADR以如下的文件检索顺序调用菜单:  AutoCADR除了能以MENU命令调用菜单还可以用MENULOAD命令将其它菜单文件中的菜单调入当前图形编辑环境并且部分或者全部替换当前使用的菜单。在程序中可以使用(MENUCMD)函数和菜单标识来控制菜单的状态。工具条按钮  AutoCADR的菜单中大部分内容同原来的菜单相差无几不再赘述。这里主要介绍工具条的定制方法。工具条按钮简介  工具条按钮是Windows系统平台中的一种很方便的交互控制手段特别是WindowsNT平台上工具条的使用更加灵活和方便并能由用户快速的进行用户化从而深受广大Windows系统用户的喜好。AutoCADR也充分使用了工具条按钮并且允许使用多种方法定制工具条。其特点是:()定制方便()能显示多种提示和帮助信息工具条按钮的定制()直接文件法  用户可以按照R的菜单文件格式要求将工具条按钮直接写入菜单模板文件*MNU中或者菜单原文件*MNS中重新编译调用菜单时工具条按钮将按用户的要求显示出来()交互法  菜单中原先没有工具条按钮时使用TOOLBAR命令启动工具条管理程序进行工具条按钮的创建和修改  菜单中原先已有部分工具条按钮时只要将鼠标移到任一工具条按钮上按下鼠标右键便可启动工具条管理程序然后进行工具条按钮属性的修改和编辑。()新建工具条按钮的步骤  启动工具条按钮管理程序  新建工具条并输入工具条的有关属性  在新建的工具条中增加按钮在新按钮上按"鼠标右键"输入按钮的有关属性  编辑按钮的图标(ICON)。结束语  AutoCADR为用户及开发商提供了一个更为方便的菜单定制机制。特别是工具条按钮菜单的定制技术使用灵活定制方便在应用软件中可以广泛使用。AutoCAD的二次开发主要涉及以下内容:()​ 编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件以及一些DCL文件。()​ 建立符合自己要求的菜单文件一般可在AutoCAD原菜单文件内添加自己的内容对于AutoCAD版本还可增加部分菜单文件然后经交互方式加入到系统中去。()​ 在系统的ACADLSP或类似文件中加入某些内容以便进行各种初始化操作如在启动时立即装入一些文件等。()​ 通过系统对话框设置某些路径。这些操作在程序开发成功后向其它AutoCAD系统上安装应用特别是需要大批安装时需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作如能令上述工作全部自动进行使整个二次开发程序在无人干预的情况下嵌入系统将大大提高工作效率。为此笔者用VC开发了一套自动安装程序使原本需要五、六分钟的人工操作在十几秒内即可自动完成。一、基本思路整个安装程序遵循以下思路:)首先获得所在机器AutoCAD系统的安装路径)寻找菜单文件AutoCADsupportacadmnu打开文件并将要添加的内容加至末尾)寻找LISP文件AutoCADsupportacaddoclsp打开文件并将要添加的内容加至末尾)创建一个预先命名的子目录将所有二次开发形成的各类文件拷入)给出信息框告知安装成功如有问题则告知安装失败。需要指出的是在添入acaddoclsp的内容中须有如下语句:(command“menu”(strcat(getvar"menuname")"mnu"))目的是为了强制执行菜单文件装入命令将改动后的acadmnu文件编译后装入。另外在添入acaddoclsp的内容中还有一赋值语句将准备创建的包含所有二次开发生成文件的子目录全路径名赋予一全局变量以供二次开发程序在需要时调用从而避免了在AutoCAD环境下交互设定路径的麻烦。二、实现方式及关键函数为获得AutoCAD的安装路径需要利用WINDOWS系统注册表的有关功能。首先通过RegOpenKey函数打开注册表:HKEYhKeyLONGret=RegOpenKey(HKEYLOCALMACHINE,"SoftwareAutodeskAutoCADRACAD:",hKey)其中第一参数HKEY_LOCAL-MACHINE为注册表中预定义的主键句柄第二参数为注册表中HKEY_LOCAL_MACHINE下的子键内容第三参数hKey将返回一子键句柄用于接下来的键值查询。若该函数运行成功将返回一长整型数ERROR_SUCCESS。接下来利用RegQueryValueEx函数进行键值查询:DWORDdwType=REGSZBYTEszDataDWORDdwSize=sizeof(szData)If(ret=ERRORSUCCESS)ret=RegQueryValueEx(hKey,"AcadLocation",,dwType,szData,dwSize)其中第一参数hKey为由RegOpenKey函数获得的欲查询的子键句柄第二参数“AcadLocation”为欲查询的键值名第三参数为保留项要求添第四参数为键值数据类型第六参数为键值缓冲器容量最关键的是第五参数szData欲查询的键值结果将由其带回该键值即为所需要的AutoCAD的安装路径。以上涉及到的有关注册表中主键、子键、键值名、及键值的关系可通过下列方法由WINDOWS系列注册表查出:单击“开始”――“运行”――添入“regedit”――“确定”――“HKEYLOCALMACHINE”――“Software”――“Autodesk”――“Autocad”――“R”――“ACAD:”――“AcadLocation”――“e:autocad”。其中的键值名“AcadLocation”所对应的键值为“e:autocad”就是AutoCAD的安装路径在不同的机器上可能内容不同。键值查询函数若运行成功将返回长整型数ERROR_SUCCESS。下面可利用szData带回的路径名与已知路径名组合成全路径从而打开菜单文件acadmnu添加内容:charszRootName=supportacadmnuif(ret=ERRORSUCCESS)strcat((char*)szData,szRootName)现在szData中装有acadmnu的全路径以下操作将打开该文件并添入内容:HANDLEhfile=CreateFile((char*)szData,GENERICREAD|GENERICWRITE,,,OPENEXISTING,FILEATTRIBUTENORMAL,)If(hfile!=INVALIDHANDLEVALUE){if(xFFFFFFFF!=SetFilePointer(hfile,,,FILEEND)){charszBuf="n***POPn**CAMnCAMn>基本参数n卡盘原点^c^cchuckdatamn换刀原点^c^ctooldatamn<毛坯参数^c^cstockn工步设计^c^cstepsn仿真加工^c^csimulationn代码生成^c^cgencoden代码存盘^c^ccodesaven工艺存盘^c^csaveinfn工艺装入^c^cloadinfn>刀具管理n《创建新刀》^c^ccreatenewtooln<刀库增删^c^ctoolmanagen"DWORDdwWrite=BRet=WriteFile(hfile,szBuf,Lstrlen(szBuf),dwWrite,)If(!bRet)Printerror()}CloseHandle(hfile)}上述操作中用CreateFile函数打开文件SetFilePointer函数将指针移至文件末尾字符串数组szBuf中装有欲添加的内容以WriteFile函数写入PrintError为自编的错误处理函数。以同样的方法可以找到acaddoclsp文件并添入内容。以下操作将创建一个名为“C:hkcam”的子目录并将事先准备好的本程序所在目录下的所有文件拷贝进去:Cstringnam,namBOOLbCreate=CreateDirectory("C:hkcam",)创建子目录CfileFindfinder//创建类对象BOOLbWorking=finderFindFile("**")利用类函数搜索所有文件While(bWorking)循环搜索及文件拷贝{bWorking=finderFindNextFile()nam=finderGetFileName()获得文件名nam="c:hkcam"nam=namnam组成全路径BOOLbCopy=CopyFile(nam,nam,FALSE)文件拷贝}所有操作成功后以信息框告知:MessageBox(“安装成功请按OK钮继续”“安装结果”MB_OK)整个程序以MFC静态链接库创建。上述所有内容可以写入一个源文件内这里称其为Appendcpp。为使最终执行文件尽可能小应删去程序框架中所有不需要的内容。为此源文件中只保留AppendcppAppendrc及StdAfxcpp几项而头文件中只有AppendhResourceh及StdAfxh几项。所定义的唯一派生类为classCappendApp:publicCwinApp置于Appendh之内。三、结束语在VC环境下利用有关WINDOWS系统注册表操作函数获得AutoCAD系统的安装路径从而找出并改写AutoCAD有关文件创建子目录并拷入各种二次开发形成文件由此实现了AutoCAD二次开发程序与AutoCAD系统的自动衔接与嵌入。文中程序已由实践验证完全可用于AutoCAD二次开发程序的自动安装。AutoCAD内常用术语的自动标注方法 摘要HTSS本文提出了一种用对话框实现AutoCAD内常用术语自动标注的方法。用这种方法可方便地将各种常用术语标注在图中为CAD应用提供了方便。一、引言  汉字的标注在CAD设计制图中是一个重要的部分也是一个较为繁琐、困难的部分。目前在AutoCAD内汉字的输入大多采用拼音方式对拼音不熟悉的人来说汉字的输入就很困难。如果能将设计中常用的文字术语直观地显示出来供设计人员调用将会极大地提高工作效率。本文就此进行研究提出了一种用对话框(下图)将常用术语显示并供调用的方法同时给出了源程序供大家参考。该程序已应用于我院的实际生产中。二、原理及方法  AutoCAD对话框结构包含有多种构件如editbox(编辑框)、listbox(列表框)、radiobutton(多选一按钮)等利用这些工具可以开发出界面友好的实用程序。  左图就是用这种方法实现的。将常用词组分类分别存于不同的文件中。根据多选一按钮中所驱动的分组号分别打开不同的文件将文件内容读入并显示于列表框内供设计人员使用。同时设有一个编辑框可将所点取的词组显示于编辑框中便于用户对词组进行适当的修改如删除或增加字符等。这种方法有一个优点用户可十分方便地根据自己需要修改或添加词组内容。对话框文件及驱动程序分别见#CALDCL及#CALLSP。三、程序使用方法先用WPS、EDIT等编辑程序分类建立词组库(注意需要存成纯文本格式)每个词组占一行。程序要求将"常用术语"、"图纸名称"、"房间名称"等各分类所对应的词组库文件名分别为$TXTDAT、$TXTDAT、$TXTDAT厖。除第一个文件不能少外其它文件可空缺但当点取该分类项时系统会提示有关文件不存在的信息。然后将所建立的词组库文件及所提供的程序#TXTLSP和对话框文件#TXTDCL拷贝到AutoCAD所能找到的目录(环境变量ACAD所设置的任一目录如ACADSUPPORT或当前目录)中在Command:命令下键入(LOAD"#TXT")进行程序的加载即可象其它AutoCAD内部命令一样使用#TXT了。也可在所使用的菜单文件(如ACADMNU)中的下拉式菜单或屏幕菜单部分加上下面一行:[常用词组]^C^C^P(if(c:#txt)(load"#txt"))#txt以后可直接从菜单中驱动该程序。在COMMAND:状态下键入#TXT后系统弹出一个对话框根据需要点取所需的词组类别再从列表框内选择所需词组。所点取的词组会在编辑框[所选词组]中显示。用户可以在此对词组进行必要的修改点取[OK]后根据提示输入字高及起点即可把词组写到图中。需要说明的是本程序中是将文字以"HZ"字型写到图中要求字体为TXTSHX及HZTXTSHX。若您的软件中无这两种字体可将其它字体改名为该两种字体(要求一个为英文字体一个为中文字体)或将程序修改为您所具有的字体。但需要注意也许您的字体在用于设置字型时会多一个选项询问是否垂直书写文字此时可将字型设置一句改为:(command"STYLE""HZ""txt,hztxt""n""n""n")即可。本程序在AutoCADRFORDOS及FORWINDOWS版上均调试通过。(defunc:#txt(oldcmdolderroktxttbtxtdclidstyfpnnhtpttxterrdiaginitwrtxtoldnn)定义错误处理子程序(defuntxterr(s)(if(and(=s"consolebreak")(=s"Functioncancelled")(=s"quitexitabort"))(princ(strcat"nError:"s)))(ifolderr(setq*error*olderr))恢复原系统设置(ifoldcmd(setvar"cmdecho"oldcmd))(princ))对话框显示及驱动程序(defundiag(i)(if(>(setqdclid(loaddialog"#txt")))加载对话框文件(progn(if(newdialog"filetext"dclJX*id)显示对话框(prognstartlist"what")将词组显示到列表框内(mapcar'addlisttxttb)(endlist)(setqi)(repeatnn点取词组分类项后的操作(actiontile(strcat"c"(itoai))"(wrtxt)")(setqi(i)))(actiontile"what""(setqi(atoi$value))选中词组(setqtxt(nthitxttb))(settile"selok"txt)")(actiontile"selok""(setqtxt$value)")(actiontile"accept""(setqokT)(donedialog)(unloaddialogdclid)")(actiontile"cancel""(unloaddialogdclid)")(startdialog))(prompt"n无法显示对话框FILETEXT!请检查对话框内容!")))(prompt"n无法加载对话框文件#TXTDCL!请检查文件是否存在及路径是否正确!")))初始化程序,把第个分组项中的词组读入表txttb中(defuninit(fnamefptxt)(setqfname(findfile"$txtdat"))(if(notfname)(progn(princ"n文件$TXTDAT不存在!")(exit))文件不存在,则退出)(setqfp(openfname"r"))(setqtxttb'())(while(setqtxt(readlinefp))(setqtxttb(constxttxttb)))(closefp)(setqtxttb(reversetxttb))(setqoldnn)记录索引号)更换列表框内词组显示内容(defunwrtxt(fnamefnamefptxti)(setqi)(while(<=inn)判别哪个词组项被点中(if(=(gettile(strcat"c"(itoai)))"")(setqfname(strcat"$txt"(itoai)"dat")inn))(setqi(i)))(if(setqfname(findfilefname))查找文件是否存在(progn(setqoldnn(atoi(substrfname)))记录索引号(setqfp(openfname"r"))(setqtxttb'())(while(setqtxt(readlinefp))依次读出各词组(setqtxttb(constxttxttb)))(closefp)(setqtxttb(reversetxttb))(startlist"what")在列表框内显示词组内容(mapcar'addlisttxttb)(endlist))progn(progn(alert(strcat"文件"fname"不存在!"))(settile(strcat"c"(itoaoldnn))"")恢复原记录号))if)主程序开始(setqolderr*error**error*txterroldcmd(getvar"cmdecho"))(setvar"cmdecho")命令不回显(setqnn)词组分类数(init)初始化(diag)驱动对话框(if(andoktxt)(progn(if(or(=(setqsty(tblsearch"STYLE""HZ"))nil)"HZ"字型是否存在(=(cdr(assocsty)))字高是否为定值(=(getvar"TEXTSTYLE")"HZ")当前字型是否为"HZ")(command"STYLE""HZ""txt,hztxt""n""n")设置"HZ"字型)(initget())下面的输入值要求大于(setqht(getreal"n请输入字高<>:"))(if(notht)(setqht))(setqpt(getpoint"n请点取文字起点:"))(command"text"pthttxt)))(setq*error*olderr)恢复原设置(setvar"cmdecho"oldcmd)(princ))#txtdcl供#txtlsp调用filetext:dialog{对话框名称label="常用词组"对话框标识:row{:boxedcolumn{label="索引":radiobutton{label="常用术语"多选一按钮key="c"value=""初始值为"",表示选中}:radiobutton{label="图纸名称"key="c"}:radiobutton{label="房间名称"key="c"}:radiobutton{label="卫生器具"key="c"}:radiobutton{label="管材配件"key="c"}:radiobutton{label="器材仪表"key="c"}:radiobutton{label="常用设备"key="c"}:radiobutton{label="构筑物"key="c"}:radiobutton{label="其它"key="c"}}:listbox{label="词组内容"key="what"height=width=allowaccept=true可双击鼠标选取}}spacer:editbox{编辑框label="所选词组:"key="selok"}spacer增加间距okcancel}AutoCAD下绘制直线对称中心线的方法  AutoCAD是目前国内应用最广范的CAD系统之一AutoCAD功能强大是一个通用的CAD平台但是如果不根据本专业的需要进行二次开发使用起来是很不方便的。画对称中心线是机械设计中经常遇到的一个问题。  笔者用AutoLISP依据国家标准开发了两个程序可以很方便地解决直线对称中心线的问题。  第一个程序适用于两条边是连续直线的情况。使用方法是:用LOAD命令装入GLSLSP运行C:GSL依据屏幕提示分别选择两边自动绘制出中心线。GSLLSP:(defunmid(ptpt)计算两点之中点的功能函数(setqpt(mapcar'ptpt))(setqpt(mapcar'pt'())))(defunc:gslmclclcleptptptptpta) (SETQM) (WHILEM  (SETQCL(ENTSEL"n选择第一条直线"))  (cond   ((notcl) (prompt"n没有发现实体"))  ((="LINE"(cdr(assoc(setqe(entget(carcl))))))(prompt"n所选不是直线")  )  (t(prompt"找到了第一条直线”)   (setqmnil)退出循环  ) ))(setqcl(ssget(nth(cdrcl))))取得第一条直线的实体数据(SETQM)(WHILEM (SETQCL(ENTSEL"n选择第二条直线")) (ifcl  (if(ssmemb(carcl)cl)    (progn     (princ"n选择重复重新选择")     (setqclnil)    )  ) ) (cond  ((notcl)(prompt"没有发现实体或重复")) ((/="LINE"(cdr(assoc(setqe(entget(carcl))))))     (prompt"n所选不是直线")  )  (t(prompt"n两条直线已经选择完毕")   (setqmnil)退出循环  ) ) )取得第一直线两端点的坐标 (setqpt(cdr(assoce))pt(cdr(assoce))) (setqe(entget(carcl)))取得第二条直线的实体数据取得第二直线两端点的坐标 (setqpt(cdr(assoce))pt(cdr(assoce)))调整端点 (if(intersptptptptt)  (setqptpt     ptpt    ptpt  ) )计算两端中点坐标 (setqpt(midptpt)) (setqpt(midptpt)) (setqa(angleptpt))计算中心线的倾角 (setqpt(polarpta))计算中心线的第一个端点 (setqpt(polarpt(+pia))) (command"layer""SET""")设置中心线层 (command"line"ptpt"")画出中心线)(princ"nC:GSLhasloaded")(Princ"nforsymmetryline")(princ)  第二个程序适用于阶梯轴阶梯孔等各种情况。使用方法是:用LOAD命令装入GLSLSP运行C:GSL依据屏幕提示分别选择两边的端点自动绘制出中心线。GSLLSP(defunmid(ptpt)  (setqpt(mapcar'ptpt))  (setqpt(mapcar'pt'())))(defunc:gsl(ppppa) 保存环境变量 (setqos(getvar"osmode")) (setqcm(getvar"cmdecho")) 设置环境变量 (setvar"osmode") (setvar"cmdecho") 依次读取两条直线的端点 (initget) (setqp(getpoint"n选择第一条直线的第一个点")) (initget) (setqp(getpoint"n

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +1积分

资料评分:

/59
0下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部

举报
资料