wf_1980 发表于 2004-9-21 13:20:00

<FONT face=宋体><B>(转帖)AUTOCAD</B><B>系列批量处理程序</B><B>


</B></FONT>



<FONT face=宋体>笔者在AUTOCAD中编辑大量图形时,发现仅用AUOTCAD本身提供的命令,效率实在太低,故编写系列批量处理程序以提高工作效率、工作质量。               


</FONT>



<FONT face=宋体>1.批量修改POLYLINE的线宽(CH_w):</FONT><FONT face=宋体> <BR>  我们知道编辑一条POLYLINE的线宽可以通过Pedit命令来完成,如果需要编辑多条POLYLINE时还使用Pedit命令则不但需要选择目标,还要输入线宽,实在有点不方便,而且还可能漏选。其实编写个小小的LISP程序便可一次性完成。程序CH_W.LSP如下:


</FONT>



<FONT face=宋体>  (DEFUN C:CH_W( / wid ent_ss n_ss ent_n j ent_a)


</FONT>



<FONT face=宋体>     (PRINC "\n请选择目标(W C WP CP F)")


</FONT>



<FONT face=宋体>     (SETQ ENT_SS (SSGET) WID (GETREAL"\n请输入线宽&lt;0.3&gt;:"))


</FONT>



<FONT face=宋体>     (if (= wid nil) (setq wid 0.3))


</FONT>



<FONT face=宋体>     (IF (/= ENT_ss nil)


</FONT>



<FONT face=宋体>       (PROGN


</FONT>



<FONT face=宋体>         (SETQ N_SS (SSLENGTH ENT_SS)  J 0)


</FONT>



<FONT face=宋体>         (REPEAT N_SS


</FONT>



<FONT face=宋体>       (SETQ ENT_N (SSNAME ENT_SS J) ent_a (cdr (assoc 0 (entget ent_n)))


</FONT>



<FONT face=宋体>                   J  (1+ J))


</FONT>



<FONT face=宋体>          (if (or (= ent_a "POLYLINE") (= ent_a "LWPOLYLINE"))


</FONT>



<FONT face=宋体>  


</FONT>



<FONT face=宋体>            (COMMAND "PEDIT" ENT_N "w" wid "" COMMAND))


</FONT>



<FONT face=宋体>         );ENDREP


</FONT>



<FONT face=宋体>       );ENDPROGN


</FONT>



<FONT face=宋体>     ) ;ENDIF


</FONT>



<FONT face=宋体>  ) ;enddefun


</FONT>



<FONT face=宋体>2. 批量打印出图</FONT><FONT face=宋体>(Mplot) <BR>  在AUTOCAD中用PLOT命令每次只能打印一张图纸,如果在一个图形文件内有多张大小一样的图纸成纵向排列,间距M_d=500mm。通过Mplot只需调试一张,便可打印所有图纸。程序如下:


</FONT>



<FONT face=宋体>  (defun c:Mplot()


</FONT>



<FONT face=宋体>    (setq p_1 (getpoint"\n\tFirst CORNER:")


</FONT>



<FONT face=宋体>       P_2 (getPOINT"\n\tOther CORNER:")


</FONT>



<FONT face=宋体>       n (getint"\n\t总张数:&lt;1&gt;"))


</FONT>



<FONT face=宋体>    (if (= n nil) (setq n 1))


</FONT>



<FONT face=宋体>    (setq m_d 500)


</FONT>



<FONT face=宋体>   (REPEAT n


</FONT>



<FONT face=宋体>       (command"plot" "w" P_1 P_2 "n" COMMAND) &lt;/P&lt; p&gt;


</FONT>



<FONT face=宋体> (setq p_1 (polar p_1 (/ pi 2) m_d) p_2 (polar p_2 (/ pi 2) m_d))


</FONT>



<FONT face=宋体>  )


</FONT>



<FONT face=宋体>   ) ;enddef


</FONT>



<FONT face=宋体>3. 批量调整实体角度</FONT><FONT face=宋体>(M_ang) <BR>  在AUTOCAD中有时图块、文字等需要调整角度,如果您觉得单个旋转太费事,可以试试笔者编写的一个程序,只要选择目标、输入角度即可批量完成。


</FONT>



<FONT face=宋体>  程序如下:


</FONT>



<FONT face=宋体>  (defun C:m_ang( / jd ent_ss ent_b j)


</FONT>



<FONT face=宋体>   (PRINC "\n请选择目标(W C WP CP F)")


</FONT>



<FONT face=宋体>   (setq ENT_SS (SSGET) jd (getreal"\n请输入角度&lt;0&gt;:"))


</FONT>



<FONT face=宋体>   (if (= jd nil) (setq jd 0))(setq jd (* pi (/ jd 180)))


</FONT>



<FONT face=宋体>   (IF (/= ENT_SS nil)


</FONT>



<FONT face=宋体>    (progn


</FONT>



<FONT face=宋体>     (SETQ N_SS (SSLENGTH ENT_SS) J 0)


</FONT>



<FONT face=宋体>     (REPEAT N_SS


</FONT>



<FONT face=宋体>         (SETQ ENT_B (ENTGET(SSNAME ENT_SS J)) J (1+ J)


</FONT>



<FONT face=宋体>            ent_b (subst (cons 50 jd)(assoc 50 ent_b) ent_b )))


</FONT>



<FONT face=宋体>         (entmod ent_b)


</FONT>



<FONT face=宋体>    ));ENDPROGN


</FONT>



<FONT face=宋体>   );endif


</FONT>



<FONT face=宋体>  )


</FONT>



<FONT face=宋体>  以上仅列举三例,与同行共享,也请指教。&lt;/P&lt; p&gt;


</FONT>

wf_1980 发表于 2004-9-21 13:23:00

<b>[转帖]AutoCAD        菜单文件使用五问<BR></b>在网上收集的。。。。。。。。<BR>AutoCAD        菜单文件使用五问<BR><BR>                                                <BR>                ---        AutoCAD中菜单文件的灵活使用,是每个熟练操作者应该掌握的技巧。在菜单文件的使用中往往也容易出现一些问题,下文就是在对这些常见问题进行归纳总结后的集中解答,希望借助于这些文字,使初学者对如何用好菜单文件有一个全面的了解。        <BR><BR>----        一、        菜单文件是如何运作的?        <BR><BR>----        如图1所示(略),AutoCAD系统的基础菜单文件放在AutoCAD安装目录下的\SUPPORT子目录中,共有五个文件。无论是AutoCAD系统的基础菜单,还是附加(局部)菜单或是用户自已定制的菜单,都是由.mnu/.mnc/.mns/.mnr/.mnl这五个文件组成。这五个文件组成了一个菜单的整体,但也并不是每一个菜单都包括全部的这五个文件。五个文件在菜单中起着各自的作用,但其作用是有主次之分的,其生成过程有也主从之分。要使用好菜单,必须明白这五个文件相互之间的关系和在菜单的调用过程中各自所起的作用。.mnu是模板菜单文件,除了.mnl文件外,其余三个文件最初都源出自于它。AutoCAD调用时自动对它进行编译,产生对应的.mnc和.mnr文件以及.mns文件。.mnc是.mnu文件编译后的版本,实际上.mnc文件是AutoCAD真正直接执行的菜单文件。.mnr也是在.mnu文件编译时产生,它存放着菜单所使用的位图之类的菜单资源。最初的.mns文件也是.mnu文件被编译时由AutoCAD自动产生的,它的基本内容和.mnu文件类似,只是少了有关的说明和注释行。在.mnu文件被编译时,.mns文件和.mnc文件的菜单内容是一致的,但如果在AutoCAD的操作中,用户对菜单的作了更改,这些改动都记录在.mns文件中,所以.mns文件对应的是AutoCAD系统中当前菜单的内容。.mnl文件在内容上相对独立一些,它包含由菜单所使用的AutoLISP表达式,如各种命令简化指令的定义,还有层排序、指定层这样的LISP程序。当加载一个菜单文件时,如果系统中存在与菜单文件同名的.mnl文件,则这个.mnl文件也会被加载。        <BR><BR>----        二、        何时用menu,何时用menuload加载菜单?        <BR><BR>----        AutoCAD加载菜单有两个命令:menu和menuload。何时使用menu,何时使用nenuload?首先必须明白AutoCAD菜单是有等级之分的,分为基础菜单和局部(或称附加)菜单。        <BR><BR>----        顾名思义,基础菜单是AutoCAD使用是菜单的基础,在AutoCAD中同时只能使用一个菜单文件作为基础菜单,acad.mnu是安装时缺省的基础菜单。menu命令专用于更换或重新加载一个基础菜单,AutoCAD启动时缺省的基础菜单是上一次通过menu命令调入的菜单。        <BR><BR>----        局部菜单和基础菜单在文件体系上没有区别。在基础菜单之上,可以在下拉菜单中附加上额外的菜单项,这种可附加的菜单就可称作为局部菜单。局部菜单使用menuload命令加载。Menuload命令从下拉菜单中也可以调用,方法是:“Tools        menu(工具)”→“Customize        Menus(定制菜单)”。用menuload可以同时加载多个菜单文件。        <BR><BR>----        对于现有的下拉菜单项,都可以在进入“Menu        Customization(菜单定制)”界面后,选“Menu        Bar(菜单条)”来进行“Remove(移除)”或“Insert(插入)”。        <BR><BR>----        Menuload加载的局部菜单可以用menuunload命令将其卸载。而用menu命令加载的基础菜单只能由下一个menu命令加载来替换。        <BR><BR>----        三、        如何使对于菜单的改动得以固定和保存        <BR><BR>----        菜单定制,特别是工具条定制是比较容易的,但很多人定制工具条后就会有一个问题:怎样将这些改动保存下来,以便再次安装AutoCAD时使用?要解决这个问题,首先要清楚AutoCAD菜单的加载过程。        <BR><BR>----        AutoCAD加载菜单缺省的过程是这样的:菜单命令发出后,AutoCAD首先加载指定菜单名的.mnc文件;如果.mnc不存在,则寻找同名的.mns文件,将其编译成.mnc文件并完成加载;如果同名的.mnc和.mns文件都不存在,则寻找.mnu文件并完成编译和加载。根据菜单加载的过程可以采取如下措施:        <BR><BR>如果对菜单模板文件.mnu进行了修改,并要让改动起作用,就必须在启动AutoCAD系统前将.mns和.mnc文件删除,或是重新加载.mnu模板菜单文件。加载.mnu文件应注意的是:在调入菜单的对话框中将文件类型改为“Menu        template(*.mnu)”而不是缺省的“Menu        files(*.mnc;*.mns)”,这样才能选择.mnu文件。        <BR><BR>如果在AutoCAD中,用AutoCAD的功能对菜单进行了修改,这些变化自动记录在.mns文件中,为了使修改得以固定,在删除.mns文件之前,应将修改的内容移到.mnu文件的相应部位中,并将.mnu文件备份下来。如果这些改动是在基础菜单acad.mnu中,则应在AutoCAD重新安装后,用改动过的acad.mnu去覆盖AutoCAD原始的acad.mnu,并删除掉已存在的acad.mnc和acad.mns文件。        <BR><BR>如果在AutoCAD启动后对菜单进行了修改,想要取消这些修改,恢复启动前的菜单状态,可以用menu命令,调入acad.mnu菜单模板文件。        <BR>----        四、        如何对AutoCAD菜单进行汉化        <BR><BR>----        在AutoCAD中有两个比较重要的菜单,acad.mnu和ac_bonus.mnu(在AutoCAD        2000中bouns的功能已合成到主菜单中)。acad.mnu是缺省的基础菜单,放在AutoCAD安装目录下的\SUPPORT子目录中;ac_bonus.mnu是典型的附加菜单,放在AutoCAD安装目录下的\BONUS\CADTOOLS子目录中。对AutoCAD        R14菜单的汉化主要是对这两个菜单进行汉化,在AutoCAD        2000中仅需对acad.mnu进行汉化。如果准备对AutoCAD的菜单系统进行汉化或其它改动,最好在安装AutoCAD系统后,就立即把这两个文件备份下来,以在必要时恢复原始的菜单状态。        <BR><BR>----        常用的菜单汉化方法有三种:        <BR><BR>----        1.利用四通利方、中文之星或东方快车这样的动态翻译软件显示汉字菜单。不过由于AutoCAD菜单术语高度的专业化,这些汉化软件翻译的结果往往会不知所云。        <BR><BR>----        2.自己动手汉化。看一看下面的两段文字,就明白对AutoCAD菜单永久性汉化原本是一件比较容易的事,实质上只是“翻译单词和术语”而已。此外,自己动手汉化的目的显然是翻译给别人用的。还有就是工作量问题,acad.mnu的文本长度多达100K,总的词汇量是可想而知的,不过对于Windows版的AutoCAD来说,常用到的菜单节仅有三个部分:一、下拉菜单节,标示为***POPn;二、工具条定义节,标志为        ***TOOLBARS;三、状态栏提示信息节,标志为***HELPSTRINGS。对于acad.mnu中占大部分篇幅的其它节,完全可以不进行汉化。欲详细了解菜单文件的结构,请参考AutoCAD帮助中的菜单定制一节。        <BR><BR>----        第一段:菜单ac_bonus.mnu原文(片断)        <BR><BR>***POP1<BR>                                                                                                                        [&amp;Bonus]<BR>ID_MNBnsLayr                        [-        &gt;&amp;Layers]<BR>ID_BnsLayman                                        [&amp;Layer        Manager...]^C^Clman        <BR>……                ……<BR>***TOOLBARS<BR>**TB_BONUS_LAYER_TOOLS<BR>ID_TbBnsLaye                        <BR>……                ……<BR>***HELPSTRINGS<BR>ID_BNSNCOPY                                <BR><BR>----        第二段:菜单ac_bonus.mnu汉化后(片断)        <BR><BR>***POP1<BR>                                                                                                                        [&amp;Bonus扩充]<BR>ID_MNBnsLayr                        [-        &gt;图层&amp;L]<BR>ID_BnsLayman                                        [图层管理&amp;L...]^C^Clman        <BR>……                ……<BR>***TOOLBARS<BR>**TB_BONUS_LAYER_TOOLS<BR>ID_TbBnsLaye                        <BR>……                ……<BR>***HELPSTRINGS<BR>ID_BNSXDLIST                        [列出实体上的扩展数据:        XDLIST]<BR><BR>----        除菜单文件之外,对于对话框和帮助文件的汉化也不是不可能。对话框一般可以在*.dll文件中去找,找到后可以在VC++中直接用中文字替换成英文字;汉化帮助文件也有好办法:从网上下载两个小软件,hlp2rtf.exe和hlpman,用hlp2rtf将        帮助文件转换为rtf文件,用英汉自动翻译将rft文件翻出个初稿,校正后再用hlpman返成中文帮助文件。不过,如果做成了这些工作,Autodesk公司中文版软件的工作都让你一个人给做了。        <BR><BR>----        以上自己动手汉化菜单的工作不受AutoCAD版本的限制,所以有志的朋友可以在AutoCAD        2000中文版推出之前,动手出一个AutoCAD        2000汉化版。        <BR><BR>----        3.        移植和引用。        <BR><BR>----        AutoCAD        R14是有正式的简体中文版的,但一般用户很少见到。国内很多AutoCAD的应用系统都是在英文版的基础上进行菜单汉化,但帮助文件和对话框还是英文的;这种汉化菜单系统还有一点不足之处是:由于在这样的应用系统中加入了许多与应用系统有关而非原来AutoCAD的内容,为此甚至影响到了AutoCAD原有功能的运行。        <BR><BR>----        象.mnu或.mns这种的菜单文件是不加密的,所以完全可以从这些汉化的菜单中,挑选出与英文菜单文件acad.mnu中一一对应的片段,并加以补充和完善,来组成一个新的“纯净”的汉化菜单。我在站点<IMG onmousewheel="return bbimg(this)" style="CURSOR: pointer" onclick=<b>javascript</b> :window.open(this.src); src="http://www.icad.com.cn/cadforum/img/aurl.gif" onload="<b>javascript</b> :if(this.width>screen.width-500)this.width=screen.width-500;" align=absBottom><A href="http://personal.xfol.com/~7color中放了这种“纯净”的AutoCAD汉化菜单,AutoCAD" target="_blank" ><FONT color=#000000>http://personal.xfol.com/~7color中放了这种“纯净”的AutoCAD汉化菜单,AutoCAD</FONT></A>         R14的汉化菜单文件名为Pacad_menu.zip,AutoCAD        2000汉化菜单名为Pacad2000.zip,采用Winzip压缩,大小为36K,愿与喜欢纯净汉化版的朋友们私下同享。        <BR><BR>----        五、        如何实现中英文菜单切换使用        <BR><BR>----        在AutoCAD中同时保存中英文两套菜单系统,来回切换是可行的。具体作法是把汉化菜单文件改名为Pacad.mnu,放在AutoCAD安装目录下的\SUPPORT子目录中,当然还别忘了将acad.mnl复制成Pacad.mnl,放在Pacad.mnu同一目录中。在用中文菜单时,用menu命令加载Pacad;换回英文菜单时就再次使用menu命令加载acad菜单文件。        <BR><BR>----        这一工作可以用下面一小段LISP程序来完成,还可以进一步定义成带有“E/C”字样图标的工具按钮,这样就更方便了。        <BR><BR>;;;中英文菜单转换程序E2P<BR>;;;=====================<BR>;;首先在AutoCAD        2000中应删出程序中有关Pac_bonus.mnu的行<BR>;;;应将汉化菜单Pacad.mnu以及Pac_bonus.mnu<BR>;;;放在与对应的英文菜单同一目录中。<BR>;;;应将acad.mnl和ac_bonus.mnl复制出Pacad.mnl和Pac_bonus.mnl<BR>;;;放在同一目录下。<BR>(defun        c:e2p(/        str01        int01)<BR>                (setvar        "filedia"        0)        <BR>                (setq        str01        (getvar        "menuname"))<BR>                (setq        int01        (strlen        str01))<BR>                (if        (=        (substr        str01        (-        int01        4))        "Pacad")<BR>                                (progn<BR>                                                (command        "menu"        "acad")<BR>                                                (command        "menuload"        "ac_bonus")<BR>                                )<BR>                                (progn<BR>                                                (command        "menu"        "Pacad")<BR>                                                (command        "menuload"        "Pac_bonus")<BR>                                )<BR>                )<BR>                (setvar        "filedia"        1)<BR>        )<BR><BR>----        以上仅就菜单文件使用中的问题做了一些探讨,要用好AutoCAD的菜单系统,还必需借助帮助文件或其它资料,对AutoCAD菜单文件的定制有所了解.

wf_1980 发表于 2004-9-21 13:24:00

<FONT size=3>(转帖)AutoCAD 2000中自定义填充图案 <BR><BR>在AutoCAD制图中,HATCH(图案填充)命令的使用较为频繁。CAD自带的图案库虽然内容丰富,但有时仍然不能满足我们的需要,这时我们可以自定义图案来进行填充。<BR>  AutoCAD的填充图案都保存在一个名为acad.pat的库文件中,其缺省路径为安装目录的\Acad2000\Support目录下。我们可以用文本编辑器对该文件直接进行编辑,添加自定义图案的语句;也可以自己创建一个*.Pat文件,保存在相同目录下,CAD均可识别。 <BR>  下面,我们就以新创建一个菱形花纹钢板图案库文件为例,来说明AutoCAD 2000中自定义图案的方法。 <BR>  首先,在CAD中按国标作出菱形花纹图案,并标注各部分尺寸(见图,可点击放大)。 <BR>  参看下面的库文件标准格式: <BR>  *pattern-name [, description] <BR>  angle, x-origin, y-origin, delta-x, delta-y [, dash-1, dash-2, ...] <BR>  第一行为标题行。星号后面紧跟的是图案名称,执行HATCH命令选择图案时,将显示该名称。方括号内是图案由 HATCH 命令的“?”选项显示时的可选说明。如果省略说明,则图案名称后不能有逗号。 <BR>第二行为图案的描述行。可以有一行或多行。其含义分别为:直线绘制的角度,填充直线族中的一条直线所经过的点的X、Y轴坐标,两填充直线间的位移量,两填充直线的垂直间距,dash-n为一条直线的长度参数,可取正负值或为零,取正值表示该长度段为实线,取负值表示该段为留空,取零则画点。 <BR>  好了,我们可以开始编辑了。打开记事本,书写下如下: <BR>  *custom, steel plate GB/T3277-1991 <BR>  68.4667, 0, 0, -9.8646, 25, 30.0213, -6.59 <BR>  111.5333, 0, 0, 9.8646, 25, 30.0213, -6.59 <BR>  68.4667, -11.0191, 27.926, -9.8646, 25, 30.0213, -6.59 <BR>  111.5333, 11.0191, 27.926, 9.8646, 25, 30.0213, -6.59 <BR>  本例中的四行图案描叙行分别对应图一中的线段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。 <BR>  下面还有几个注意事项: <BR>  图案定义文件的每一行最多可包含 80 个字符。 <BR>  AutoCAD 忽略空行和分号右边的文字。根据这一条,我们可以在文件中添加版权信息、备注或者是我们想加入的任何内容。例如: <BR>  ;Copyright (c) 2000 by everyone. All rights reserved. <BR>  最后,将文件保存,取名custom.Pat。注意,文件名必须与图案名相同。 <BR>  到此,相信各位朋友已经掌握了自定义图案的方法。现在,只需一点点耐心,你就可以编辑出非常复杂的图案了。 <BR>  调用库文件的方法为:附頁為我做的填充圖樣及文件,解壓縮放在\Acad2000\Support目录下。打开AutoCAD,运行Hatch命令,在弹出的Boundary Hatch对话框的Type栏选中Custom,单击Swatch选项栏,弹出Hatch Pattern Palette对话框,选择Custom标签,指定我们刚创建的custom.Pat文件,此时右侧出现填充效果的预览,那正是我们需要的菱形花纹钢板图案。</FONT>

wf_1980 发表于 2004-9-21 13:26:00

[转帖]cad系统变量<BR>一般情况下,我们无需对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。<BR>

wf_1980 发表于 2004-9-21 13:27:00

(转帖)CAD中若干接口问题的研究 <BR><BR>                一、概述


                一个功能完善的CAD系统可能包括很多独立的模块,如设计计算、图形处理、数据管理、校核计算、有限元分析、设计优化、数控代码输出等。一些现成的软件系统往往只是针对某一类问题而设计的,如图形软件(AntoCAD等)有很强的图形生成和编辑能力,有限元分析系统(如 ANSYS等)擅长有限元分析计算,数据库管理系统(如dBASE等)适合于建立和管理数据库,我们可以利用这些现成的资源,作为二次开发的某些功能模块,使这些不同的系统间的数据相互交换,是实现大CAD系统或CAD/CAM集成的基础性课题之一。 <BR>                所谓数据转换接口,实际上是一种能够实现两个以上系统间信息交换的程序或方法。数据转换接口的核心内容就是由其中一个系统(文件)读出信息,将信息写入另一个系统(文件)。


                二、Windows系统提供的数据交换工具


                在介绍这些CAD系统之间的接口之前,让我们先来看一下Windows系统提供的数据交换工具:剪贴板、OLE技术等。Windows应用程序具有复制、粘贴等功能,这是由应用程序所提供、Windows系统所支持的一种静态数据交换工具。由于剪贴板支持多种数据格式,许多不同的应用程序可以用其交换不同格式的数据,利用剪贴板工具,可以完成CAD中复合文档的大部分工作,我们知道,CAD中的复合文档内容包含多种格式,除文本外,往往还包含有图形、表格等,利用不同的软件系统完成不同格式的内容,再通过剪贴板工具将不同格式的内容组合成一体。作为数据交换的中介——剪贴板只是内存当中的一块区域,因此,在任一时刻,剪贴板中只能保存至多一个数据块,旧的数据总是不断的被新的数据所覆盖。 <BR>                Windows中提供的另外一个数据交换工具OLE(对象的链接与嵌入)技术。它使主应用程序与被链接的对象之间建立一种通信关系,主应用程序不必知道有关对象的更多细节,但却可以在自己内部通过与对象关联的应用程序建立联系,从而操纵被链接的对象。当然,这样的应用程序本身必须支持OLE技术。值得重点指出的是对象链接与嵌入之间的区别,链接一个对象到主应用程序中,只是在主应用程序中建立了一个指向对象原始数据的指针,并在主应用程序中形成一个内容映射,对象原始数据本身并没真正存到主应用程序中,这样,主应用程序完成后,占用空间较少。但嵌入对象是将对象本身内容加人主应用程序,并且附加了有关加载对象的信息,因而生成的文件往往较大,占用空间较多。另外还须注意的是:链接的对象在主应用程序中被修改后,对象的原始数据也会随之改动,同样,对象原始文件的修改也会引起被链接对象的改动,但嵌入对象和原始数据之间却是相互孤立的,二者的修改相互都不影响。 <BR>                Windows中提供的以上数据交换工具是通用的,不仅适用于CAD系统,其它Windows环境下的软件系统之间也是适用的。


                三、CAD系统之间信息交换标准


                作为预备知识,让我们先来看一下不同CAD系统之间的信息交换标准。 <BR>                IGES:是美国国家标准局和工业界共同制定的,它以产品设计图样为直接处理对象,规定了图样数据交换文件的格式规范。现有的不同公司开发的CAD软件,其内部图样数据贮存各不相同,但都可以遵循IGES标准的规定,将其内部图样数据库的数据转换为符合IGES标准的数据文件输出,也可以接受IGES格式的数据文件输入。这样,经过IGES格式数据文件的中介作用,就可以实现在不同CAD系统之间交换设计图样信息。 <BR>                这个标准不仅对图形而且对产品设计和制造中的定义数据规定了统一标准格式,它是独立于具体系统的。采用IGES标准文件将系统A中的信息传送到系统B中时,要先将系统A中的信息转换成IGES标准描述,然后再将IGES标准数据文件转换为系统B中的数据文件。 <BR>                IGES本身只是描述产品设计和制造信息的数据文件格式规范。它把对产品的定义或工程图样视作许多单元的集合。在IGES中,单元分为三大类:几何单元、标识单元和结构单元。属于几何单元的如定义产品形状的直线、圆及表面等;属于标识单元的如尺寸标注、标题栏等;属于结构单元的如子图形的形成,属性的定义等。 <BR>                由于以下介绍的接口不以IGES文件为中性文件,故在此对IGES文件结构不作深入讨论,感兴趣的读者可参阅相关书籍。 <BR>                DXF:DXF文件本来只是微机CAD软件AutoCAD用以将内部图样信息传递到外部的数据文件,不是由标准化机构制订的标准。但是,由于AutoCAD软件的流行,因而DXF文件也就成为事实上中性文件的一种类型。DXF文件是可读的,比IGES文件更简单易懂,但是DXF文件格式能定义表达的内容不如IGES丰富,DXF文件是一种ASC II码文本文件,其总体结构分为如下五个段: <BR>                1.标题段 有关图形的总体信息。如系统当前设置状态参数等。 <BR>                2.表段 包括以下各项目的定义:线型表;图层表;字体表;视图表。 <BR>                3.图块段 包括定义图块实体的描述。 <BR>                4.实体段 图中各实体图表的具体描述。该段是DXF文件的核心部分。 <BR>                5.文件结束标志EOF。 <BR>                DXF文件的基本单位是组,每个组在DXF文件占二行,其首行是组码,第二行是组值。组码除用以表明组值数据类型外,还标明了该组的用途。组码和该组用途的关系是: <BR>                组码  组的用途 <BR>                0   标识图素实体、表项或文件头的开始,后随的文字标明具体对象 <BR>                1   图素实体的文字说明 <BR>                2   名称、属性、特征、图块名等 <BR>                3~5  其它文字或名称 <BR>                6   线型名 <BR>                7   实体名 <BR>                8   图层名 <BR>                9   变量名标识符(仅用于标题段) <BR>                10  主X坐标(直线或文字起点、圆心等) <BR>                11~18 其它 X坐标 <BR>                20   主Y坐标 <BR>                21~28 其它 Y坐标 <BR>                30   主Z坐标 <BR>                31~36 其它 Z坐标 <BR>                38  实体的标高,如果非零的话 <BR>                39  实体厚度,如果非零的话 <BR>                40~48 文字字符高,比例因数等浮点数数值 <BR>                49  重复性的值 <BR>                50~58 角度值 <BR>                62   颜色号 <BR>                66  实体跟随标志 <BR>                70~78 整数值,如重复次数、标志位、模式等 <BR>                所有的变量、表项、实体描述都是先由一个组给出名称,然后由若干个组说明其内容,由这些变量、表项、实体组成各个段。


                四、图形系统与高级语言的接口


                图形处理模块是CAD系统最基本的模块,是整个CAD系统显示、编辑和输出设计结果的环境,而高级语言在数值计算、数值分析方面有着无可比拟的优势。当我们要把已经完成的图形文件作进一步处理时,如对零件进行体积、重量或优化设计等计算时,那么,图形系统与高级语言的接口将是问题解决的关键,也就是说,我们必须把图形系统产生的图形文件转换为一种图形系统和高级语言都能识别的文件格式。根据是否通过中性文件,我们把这种接口的方法分为两类:间接型接口,直接型接口。


                1.间接型接口 <BR>                间接型接口实际上由两部分组成:第一部分接口实现图形系统二进制码图形文件与以 ASCⅡ码形式存放的国际标准化图形文件(如IGES文件或DXF文件)之间的相互转换;第二部分接口实现国际标准化图形文件与高级语言图形信息的相互转换。


第一部分接口一般是图形系统提供的,如 AutoCAD中的DWG文件与 DXF文件接口,在AutoCAD环境中,执行DXFOUT(或IGESOUT)命令,可将当前DWG格式文件输出转换为一个DXF(或IGES)文件;第二部分接口实现起来是比较容易的,因为国际标准化图形文件的数据格式是公开的,而且是以ASCⅡ码形式存放的。第二部分接口的实现实际上就是高级语言对一个己知格式的ASCⅡ码文件的读写操作。在具体应用中,也就是由高级语言开发的计算模块对ASCⅡ码文件的读写操作,获取图形中的相关数据,经过计算,得到最终结果或把优化设计后的数据写人ASCⅡ码文件,以达到修改图形的目的。在AUtoCAD环境中,运行DXFIN命令,可将修改后的ASCⅡ码文件重新转换成DWG格式文件,得到优化设计后的图形。 <BR>                间接型接口的主要优点是设计简单,可移植性好。其缺点是转换步骤多,转换时间长,转换的实时性差。


                2.直接型接口 <BR>                直接型接口实际上是高级语言对结构复杂的二进制码图形文件进行的读写操作,该方法要求作者具有很高的文件处理能力,能够正确分析图形文件的数据结构。由于系统图形文件的数据格式一般是保密的,文件又是以二进制码的形式存放,分析起来非常困难。由于不同的图形系统存放图形文件的格式不一样,因此接口的可移植性也差。 <BR>                但是直接型接口较之间接型接口具有转换步骤少,转换时间短,转换实时性好等优点。 <BR>                由于DXF文件与IGES文件是大多数图形系统所支持的,而几乎所有的高级语言都能对ASC Il码文件进行读写操作,因此,上述介绍的间接型接口方法具有通用性。


                3.生成自动绘图命令文件(*.SCR) <BR>                在AutoCAD中,还可以利用 SCR文件作为中性文件,由高级语言编程直接生成SCR文件,在AutoCAD中运行SCR文件绘制图形。AutoCAD提供的SCR文件是一种绘图命令集文件,类似操作系统中的批处理文件,可以执行某一预定任务的命令和参数序列。它也是一ASCⅡ码文件,在AutoCAD中用“SCRIPT”命令从指定的SCR文件中读出命令组,并执行。SCR文件格式为每一AutoCAD命令占一行,命令与参数用空格隔开,并严格遵循AutoCAD命令应答格式。例如用命令文件画出一边长为一个单位的正方形,然后加以擦除工作,可以编辑生成一名为TEST.SCR命令文件来完成。 <BR>                LINE,1010,1111,1111,1010,10(画出正方形) <BR>                ERASE L(擦除) <BR>                在AutoCAD环境中,键入SCRIPT命令,如: <BR>                COMAND:SCRIPTJ <BR>                SCRIPT FILE(DEFAULT)(SCR文件名&lt;缺省值&gt;):TESTJ <BR>                此时,TEST.SCR文件中的命令序列得到执行,绘出图形。 <BR>可以看出,在AutoCAD中,当需要将计算后的数据生成图形,采用高级语言直接建立SCR文件较之                建立DXF文件或IGES文件更为简洁易懂。


                五、DBF格式数据库与高级语言的接口


                在CAD系统中,可以借用关系数据库作为CAD软件的数据库。为了在CAD环境下实时地生成、调用和更新数据,需要开发高级语言与数据库的接口。 <BR>                DBF格式的数据库文件是最常用的数据库格式文件之一,它可由多种数据库软件创建,包括dBASE、Foxpro,乃至最新的面向对象的程序设计语言VisuI Foxpro、Delphi等。 <BR>                这种格式的数据库文件与高级语言的接口方法也可分为直接型接口和间接型接口。


                1.直接型接口 <BR>                所谓直接型接口,就是不依赖于中性文件,由高级语言直接对数据库文件进行读写操作。当然,必须首先分析DBF文件的数据存储格式,也就是DBF文件的数据结构。 <BR> DBF文件分两部分:文件头部分存储记录的个数,每个记录的字段的个数,字段名等总体信息;文件的主体存储各个记录的内容。 <BR>                接口程序的编制步骤如下: <BR>                (1) 由DBF文件建立线性链表。通过读取DBF文件头,可以知道记录的总体情况,然后分配内存空间,建立相应的数据结构; <BR>                (2) 编制对线性表进行删除、插入、遍历等各种操作的子程序; <BR>                (3) 将修改后的线性表写回DBF文件。


                2.间接型接口 <BR>                间接型接口就是数据的传递是通过中性文件来实现的。在绝大多数的数据库编程软件中,都有将数据库文件转换为文本文件的功能。文本文件即ASCⅡ码文件,是软件系统之间数据交换最基本的文件格式之一。 <BR>                数据转换步骤如下: <BR>                (1) DBF文件转换为TXT文件 <BR>                以dBASE为例,在dBASE中,可用“下述命令将DBF数据库文件内容输出到一文本文件中。 <BR>                COPY TO(文件名)[FOR 〈表达式〉]/[DELIMITED」 <BR>                若在COPY命令中选用了选择项或[DELIMITED」时,则产生一个文本文件。文件中的数据可以是当前数据库文件的部分数据或全部数据,取决于命令行中其它选择项的使用,系统会自动再此类文件名后加上扩展名.TXT。这两个选择项的区别在于:用[SDF]产生的是标准格式的数据文件,用[DELIMITED]产生的是通用格式的数据文件。 <BR>                标准数据格式是:每一个记录定长;记录从文件头开始存放;每一个记录用回车换行结柬;各记录中的同一数据项的长度及类型都相同,不足的用空格补充。 <BR>                通用数据格式是:数据项与数据项之间用逗号分开;字符型数据或逻辑型数据用单、双引号或其它限制符括起来;数字型数据不加任何限制符;记录可以定长,也可以不定长;在每个记录后面用回车换行结柬。 <BR>                (2) 将TXT文件中的数据加人到DBF文件中 <BR>                在dBASE环境下,利用APPEND命令可以把其它外部软件建立的扩展名为.TXT文件中的数据转移到数据库文件中。传递数据的要求是数据格式要匹配。命令如下: <BR>                APPEND FROM 〈文件名〉〔FOR 〈表达式〉][SDF]/[DELIMITED]命令行中〈文件名〉所指出的文件为提供数据的文件(简称施主);当前被打开的数据库文件为接受数据的文件(简称受主)。 <BR>                如果指出了选择项[SDF]或[DELIMITED],可以实现数据文件(.TXT文件)中的数据按规定的格式转移。特别需要指出的是,由于数据文件没有结构,所以数据是按位置转移的,这时要注意施主和受主在同一位置上的数据类型要一致,也就是说,若受主的第一个字段是材料,则施主在相应位置上也应该是与材料有关的数据。 <BR>                概括的说,这种数据转换的过程如下: <BR>                (1) 将数据库文件内容输出到文本文件。 <BR>                (2) 外部软件从文本文件中读取数据或对其进行处理。 <BR>                (3) 将文本文件中的数据输入到数据库文件中。


                3.数据库与面向对象编程语言的接口 <BR>                随着软件技术的发展,在出现了面向对象编程的高级语言后,数据库与高级语言的接口问题似乎得到了完美的解决。 <BR>                在最新出现的面向对象编程的语言如:Visul BASIC、Delphi中,已将数据库的操作完全融合进程序设计中,也就是说,这一类的编程语言既继承了以前高级语言的全部功能,又具备了数据库编程的能力。 <BR>                用该类编程语言操作数据库文件,无需分析数据库文件的存储格式,在读写数据库内容上有了更大的灵活性,在程序设计中,只需在FORM(面向对象程序设计中程序界面的一个窗口)中加人数据源、数据库表、数据显示表格、数据库操作控制器等少许几个控件,然后将数据库表与相应的数据库文件相连接,便可在程序中随意操作数据库文件,因为对于连接并打开的数据库,每一个字段在程序中都是作为一个字段变量,可随意读写字段值。更值得称道的是,该类编程语言通过配备的数据库引擎,可以对多种格式的数据库文件进行操作。在开发数据管理与计算一体的CAD系统中,使用该类编程语言将是最佳选择。

wf_1980 发表于 2004-9-21 13:32:00

<b>(转帖)AutoCAD线条加粗秘诀<BR><BR></b>  对图形中的某些线条进行加粗是经常需要进行的工作,AutoCAD 2000中对图形线条进行加粗有如下方法。 <BR>  1、设置线宽Lineweight <BR>  可以在图层中进行线宽的设置,也可在状态框中或Format菜单下专门设定。注意设置后要按下工作界面右下侧的LWT按钮,才能看到画出的线条粗细效果。注意,用这种方法设置线的粗细不方便把握,效果也不是很理想,转换到Word中输出,或直接在AutoCAD中输出,要想看到线条的粗细效果要做较多的工作。<BR>  2、用Pedit命令加粗 <BR>  在Command命令行直接输入Pedit后回车,或用菜单命令Modify\Polyline都可完成同样的工作,输入命令后,选择其中的Width项即可对线条进行加粗,但对不同类型的线条,前期准备工作不一样。 <BR>  1)对用Draw\Polyline命令直接画出的复合线(可画出直线和弧线),可以直接用Pedit命令进行加粗。 <BR>  2)对用Draw\Line命令画出的直线,使用Pedit命令后,会出现提示,告诉你选择的线条不是复合线,是否想把它转变为复合线呢?输入“Y”后回车,则线条转变为复合线,后面的工作就与第一步一样了。 <BR>  其实画粗直线专门有一个命令——Trace。该命令在绘制前会提示你输入线的宽度,后面绘直线的方法与Line命令一样。讨厌的是要等画第二段线时(或回车后)才能看到第一段线的效果,让人感到别扭。这个命令用得很少,菜单中找不到这个命令。 <BR>  3)对用Draw\Circle命令画出的圆,不能直接加粗,但只要用Trim(修剪)或Break(断开)命令将圆修剪或断开,使之不是一个完整的圆,就可以很方便地用Pedit命令加粗了。更妙的是,加粗后不要马上回车退出命令,你可以发现Pedit命令下还有一个Close选项,选择该项(输入C后回车)可以将断开的圆又封闭为一个整圆,只是该圆的线条已经是加粗了的。 <BR>4)对椭圆(Ellipse)的加粗 <BR>  AutoCAD中可以画出两种椭圆——真椭圆和复合线椭圆,真椭圆不能用Pedit命令加粗,但复合线椭圆可以用Pedit命令加粗。 <BR>  画出哪种类型的椭圆是由系统变量Pellipse的值决定的,像使用普通命令一样,在Command命令行输入系统变量名Pellipse后回车,系统会显示当前的值,如果是0,则只能画出真椭圆,但如果改为1,则以后画出的椭圆就是复合线椭圆了,画出椭圆后再使用Pedit命令,就可以对椭圆线条加粗。 <BR>  5)任意曲线的加粗 <BR>  用Draw\Spline命令画出的任意曲线是不能用Pedit命令进行加粗的。要想加粗任意曲线,可以利用复合线拟合的方法得到曲线,这样的曲线是复合线曲线,当然可以用Pedit命令加粗。 <BR>  拟合过程大致是:先按曲线的变化趋势用Draw\Polyline命令画出一条多段的折线,后面用Prdit命令时,其中的Fit和Spline两个选项都可以对这样的多段折线进行拟合,使折线变为曲线,而且曲线将顺应折线的变化趋势如图。 <BR>  6)矩形和多边形的加粗 <BR>  用Draw\Rectangle画出的矩形,或者用Draw\Polygon画出的多边形,自然就是复合线,可以直接用Pedit命令加粗。 <BR>  好,学会了以上几种图形线条的加粗方法,则任何复杂的图形线条要加粗,都是可以做到的。 <BR>  需要注意的是,用Pedit命令一次只能加粗一条线,如果图形上有许多条线要加粗,用这种方法会很麻烦。虽然可以利用Pedit命令下的Join选项将首尾相接(相交和相离都不行)的线条连接起来再加粗,减少了一些操作,但可能还有大量的加粗工作要做。 <BR>  可能一些用户在电脑上看不到Express菜单,这是因为在安装AutoCAD时没有采用“完全安装”方法造成的,遇到这种情况,要么是加装Express,要么卸载现有AutoCAD后再重新采用“完全安装”方式进行安装。如果安装了Express,但屏幕上看不到有“Express”菜单,试试如下几个命令:Menuload、Expresstools、Expressmenu。

bhf0114 发表于 2004-9-29 08:12:00

好东西,谢谢了

yyxxyy 发表于 2004-9-29 11:34:00

多谢楼主

wf_1980 发表于 2004-9-30 08:07:00

大家如果有好的帖子请跟贴啊!

wf_1980 发表于 2004-9-30 17:04:00

大家有谁知道在哪还能找到介绍CAD学习方法的东东啊,知道的话拿出来和大家一起分享啊!!
页: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14
查看完整版本: [分享]明经帖子好内容整理(一)(新增AUTOCAD技巧及疑难解答打包下载)!!