发表于 2003-12-27 15:40:00

CAD技术交流区

这里都是电脑高手,有没有CAD高手,请到这里来,你有什么高见尽管发表,有什么新体会也共享出来,大家一起讨论呀!跟贴的人有什么问题,就提吧,我不能解决,也可以和你探讨的,而且还有很多高手呀!!!
   我就想请教一下有那一位高手能够帮我解决这样一个问题:
   我在我的CAD2002里加载了圆方菜单,但是都不起作用,PGP文件也复制过来了,还是不行,需要怎么做才能把圆方菜单文件的程序启用呢?
   谁能告诉我不胜感谢!!!!
viewfile.asp?ID=39094

发表于 2003-12-27 21:13:00

我还自己顶!!!!!!!!!
快来看看呀我有高手的关于CAD应用的文章,想成为高手的就来呀!

qq334024 发表于 2004-3-30 14:08:00

高手~~~~~~~~


我顶你~~~~~~~`

lxy1110 发表于 2004-5-8 04:38:00

不知道,我是菜鸟,我用2000很正常~~~


希望索老大能发些你的应用心得

文俊 发表于 2004-5-11 17:00:00

唉..我太菜了!!帮不了你了..

千人宰 发表于 2004-5-22 22:21:00

谢了 那个文章接受了       给你顶一下

yoyo1 发表于 2004-6-9 09:25:00

先谢了。

发表于 2004-6-9 18:02:00

<b>AutoCAD应用技巧精选<BR></b>1.               执行编辑命令,提示选择目标时,用矩形框方式选择,从左向右拖动光标,为"窗口Windows"方式,如果从右向左拖动光标,则为"交叉Cross"方式。<BR>                2.                                相对坐标输入点时,在正交状态时,一般输入为:@x,0或@0,y (例如输入相对坐标“@100,0”表示下一点相对上一点X方向增加100,又如输入相对坐标“@0,50”表示下一点相对上一点Y方向增加50),以上两种情况下,可以直接输入100或50即可实现相同的目的,从而节省输入时间。<BR>               3.                                在AutoCAD中有时有交叉点标记在鼠标点击处产生,用BLIPMODE命令,在提示行下输入OFF可消除它。<BR>                                4.               有的用户使用AutoCAD时会发现命令中的对话框会变成提示行,如打印命令,控制它的是系统变量CMDDIA,关掉它就行了。<BR>                                5.               椭圆命令生成的椭圆是以多义线还是以椭圆为实体的是由系统变量PELLIPSE决定,当其为1时,生成的椭圆是PLINE。<BR>                                6.               CMDECHO变量决定了命令行回显是否产生,其在程序执行中应设为0。<BR>                                7.               DIMSCALE决定了尺寸标注的比例,其值为整数,缺省为1,在图形有了一定比例缩放时应最好将其改成为缩放比例。<BR>               8.7 CAD的较高版本中提供了形位公差标注,但圆度及同轴度中的圆不够圆,其实,AutoCAD中常见符号定义都在AutoCAD安装目录下SUPPORT子目录下的gdt.shp文件中,其中2号和4号字符定义了圆形的形状,圆的弧度竟为127°,但不太好改正之(如改为90°更不好看)。<BR>                                9.8 空心汉字字形如使用AutoCAD R14中的BONUS功能(一定要完全安装AutoCAD,或自定义安装时选了它),有一个TXTEXP命令,可将文本炸为线,对做立体字十分有用。<BR><BR>10.               AutoCAD R14的BONUS中有一个ARCTEXT命令,可实现弧形文本输出,使用方法为先选圆弧,再输入文本内容,按OK。<BR>                11.                BONUS中有一个有用的命令,即MPEDIT,用它将多个线一齐修改为多义线,再改它的线宽。<BR>                12.                                Image命令在R14中代替了R13中的BMPIN、PCXIN之类的命令,它将位图嵌入文件中,只用来显示,如炸开就成了空框架,如何使用PCXIN等命令重现?请将R13安装目录下的RASTERIN.EXE拷入R14下,用appload将其装入,然后就可以将位图导入(可编缉,可炸开)了。<BR>                13.               BREAK命令用来打断实体,用户也可以一点断开实体,用法是在第一点选择后,输入“@”。常用一条线一段为点划线,另一段为实线时。<BR>                14.               AutoCAD R14中提供了大量的命令缩写,许多R13中无缩写的命令也有了缩写,下面提供了CAD中的单字符缩写:A:ARC,B:Bmake,C:Circle,D:ddim,E:erase,F:fillet,G:group,H:bhatch,I:ddinsert,L:line,M:move,O:offset,P:pan,R:redraw,S:stretch,T:mtext,U:undo,V:ddview,W:Wblock,X;explode,Z:zoo,可大量使用之,使用后会发现比鼠标点取快(尤其在ls输5个字符的速度下)。AutoCAD R14大量扩充了简化命令,不仅增加了以首字母简化的命令(这里不列出),而用增加了用前两个字母简化的命令,常的如:array 、copy、 dist、 donut 、dtext 、filter 、mirror、 pline 、rotate 、trim、 scale 、snap 、style、 units等,更加提高了用键盘输入命令的速度,对熟悉键盘的朋友来说简直是如虎添翼。<BR>                15.               AutoCAD R14命令的缩写也可用在R13,方法是将AutoCAD R14下的Support子目录下的ACAD.pgp拷贝至AutoCAD R13中的Support子目录下。<BR>                16.               AutoCAD 中ACAD.pgp文件十分重要,它记录命令缩写内容,用户可自定义它们,格式如下:&lt;命令缩写&gt; *命令名称。也可定义系统命令,AutoCAD R14提供了sh命令,可执行DOS命令,但在Windows作用下不大。<BR>                17. AutoCAD R14中用NOTEPAD、EDIT、DIR、DEL等系统命令,笔者认为其中NOTEPAD对自定义CAD用途较大,但使用起来会发现屏幕一闪(进了DOS),又返回,十分让人不愉快,让我们来编一个小程序,取名为note.lsp:<BR><BR>                                                                (defun c:notepad()<BR>                                                                                                (startapp″notepad″)<BR>                                                                                                )<BR>                                先将ACAD.pgp中的NOTEPAD命令定义行删除,重入CAD后,再将此程序命令:(load″note″)装入,下一次用NOTEPAD命令会有更好效果,最好将(load″note″)加入Support子目录下的ACADR14.lsp中。<BR>                18.                                AutoCAD R14中打印线宽可由颜色设定,这样机械制图中的各种线型不同、、线宽不同的线条可放入不同的层,在层中定义了线型的颜色,而在打印设置中设定线型与颜色的关系,效果良好。<BR>                19.                                AutoCAD R14的Support中ACAD.dwt为缺省模板,要好好加工它,把常用的层、块、标注类型定义好,再加上标准图框,可省去大量重复工作。<BR>                20.               AutoCAD中有不少外部Lisp命令文件,可以直接观察它们,如果学习开发Lisp应用程序,注意;R14可是最后一版Lisp文件内容公开的AUTOCAD,在CAD2000中Lisp文件内容是加密的(笔者正在研究解密程序)。<BR>                21.                                AutoCAD二次开发工具很多,Lisp早就有了,R11提供了ADS(Acad Develop system),R12中提供了ADS对实模式下C编译器(如BC,MS C)的支持,R13提供ARX(Acad Runtime eXtend),R14提供了 VB Automation,这个Automation使VB编写CAD程序成为可能,渴望CAD编程的人有了一个最好的选择,不必学习ADS、ARX、Object ARX和AutoLisp,一起加入AutoCAD编程的世界。<BR>                22.               用户自定义的Lisp文件一定要自动装入AutoCAD,这样就需要在acadr14.lsp中加入用户Lisp文件的装入语句,acadr14.lsp(早期版本为acad14.lsp)好似DOS的Autoexec.bat,一定要好好利用,在其中如定义了名为S::STARTUP()的函数可自动运行它。(给CAD加个启用画面如何,可用STARTUP加startapp函数,也可加登录密码)。<BR>                23.               将AutoCAD中的图形插入WORD中,有时会发现圆变成了正多边形,用一下VIEWRES命令,将它设得大一些,可改变图形质量。<BR>                24.               形如φ30H11(+0.1,-0.2)的标注如何去标呢,请在文本内容中输入%%c30{H11(}{\H0.7X;\S+0.1^-0.2;})”,可以实现,如嫌太麻烦,就编程序来简化操作。<BR>25.                AutoCAD中文件可当作块插入其他文件中,但这样一来过多的块使文件过于庞大,用PURGE来清除它们吧,一次清一层,一定要多用几次呀!<BR>26.               AutoCAD R14的帮助文件内容十分丰富,由很多本“书”组成,一层层打开,多看它们用处是很大的,其中包括了CAD的各方面,比任何CAD大全还全,你是否想您的帮助加入其中,请修改acad.cnt,加入自己帮助的链接。<BR><BR>27.               在CAD中可按规定编定.ahp的CAD帮助文件,在R14下用ahp2hlp.exe将其转变为.hpj的文件和.rtf的文件,再用HelpWorkshop工具(在VC5中有)将其项目打开,编译为.hlp文件。<BR>28.               在AutoCAD中有一些DOS下的exe文件在R14中仍有用途,用Slidelib.exe可将幻灯片作库,mc.exe可实现菜单的编译。<BR>29.               在作完零件图进行组装时,可将零件图块插入后焊开,再用group成组后组装,这时用ddselect命令控制组选取处于何种状态,取消组选时再打开组状态。<BR>                30.               在AutoCAD中的菜单源文件为.mnu文件,将其修改可将自己的命令加入菜单中,再用menu命令装入,加参加AutoCAD帮助了解菜单文件格式。图标工具条中加入自己的命令相对简单,可在工具条上点右键,在toolbar对话中,点new 按钮,输入工具条后,一个新工具条产生,再选Customize按钮,选定custom,将空按钮拖入工具条中,再在空按钮上按右键,这样就可定义自己的按钮图标和命令。<BR>                31.                                AutoCAD的状态行也可处定义,用DIESEL语言可以访问它,最简单的方法用modemacro命令,后输入$(getvar,clayer),以后当前层名就显示在准确无误行上,用户化可谓无孔不入吧!<BR>                32.                                AutoCAD的图形格式为.dwg,也可导出为.bmp及.wmf或.eps、.dxf、.3ds,是如果用render命令可存为.pcx、.tga、.tif格式,AutoCAD还可将文件直接存为这几种格式,要为系统装一个名为“Raster file export”的打印机,用它打印到文件,ACAD2000还可将文件存为JPG格式。<BR>                33. render进行着色时,render无关闭按钮,用户采用:(arxunload"render"),因为它是ARX文件扩展的功能。<BR>                34.               dimzin系统变量最好要设定为8,这时尺寸标注中的缺省值不会带几个尾零,用户直接接受缺省值十分方便快捷。<BR>                35. 如遇到快捷失效,如^0失去作用变为正交模式切换的情况,请用menu将当前使用菜单.mnu菜单源文件重装一遍即可。<BR>                36.               在多行文字(mtext)命令中Word97编辑文本。Mtext多行文字编辑器是AuotCAD R14中的新增功能,它提供了Windows文字处理软件所具备的界面和工作方式,它甚至可以利用Word97的强大功能编辑文本,这一功能可以用如下方法实现:<BR>                                打开“Tools”菜单选“Preferences”命令,“Preferences”对话框弹出后,打开“Files/Text Editor,Dictionary,and Font File Name/Text Editor Application/Iinternal”,双击“Internal”,出现“Select a file”对话框,接着找到“Winword.exe”应用程序文件,击“打开”钮,最后单击“OK”返回。完成以上设置后,用户如再使用mtext命令时系统将自动调用我们熟悉的Word97应用程序,为AotoCAD中的文本锦上添花。<BR>                37.               巧用工具按钮自定义AotoCAD中有许多Lsp文件能为我们提供非常实用的命令,如chtext.lsp就是一个很好的文字修改命令,尤其适用于大批文字的修改,但在使用这样的命令之前必须先把Lsp文件载入。一般你可以通过选取“Tools”菜单中“Load Application…”选项,再利用对话框打开AutoCAD R14/Support 下的Chtext.lsp文件,然后击“Load”钮,或者也可以直接在命令行中键入“(load“chtext”)”以达到载入的目的,如此做总有些繁琐。下面我们用自定义工具按钮的方式解决这个问题,右击任意工具钮,弹出“Toolbars”对话框,击“Customize…”钮,在“Categories:”中选“Custom”项,将出现的空按钮拖到工具条中目标位置,击“Close”钮返回,接着右击空按钮,出现“Button Properties”对话框,在“Nam

发表于 2004-6-9 18:09:00

<FONT face="Courier New">        Vlisp编程技巧摘要(1)<BR>;;;**********************************************************<BR>1.如何获取多义线上的所有顶点<BR>       Code:<BR>       (defun C:getp (/ ent PLTYPE obj vtx vtxlst n ptlst)<BR>                       (vl-load-com)<BR>                       (setq ent (entsel "\n选取多线<EXIT>:\n"))<BR>                       (if ent<BR>                                                       (progn<BR>                                                                       (setq PLTYPE (cdr (assoc 0 (entget (car ent)))))<BR>                                                                       (if (or (= "POLYLINE" PLTYPE) (= "LWPOLYLINE" PLTYPE))<BR>                                                                                                       (progn<BR>                                                                                                                               (setq obj (vlax-ename-&gt;vla-object (car ent)))<BR>                                                                                                                               (setq vtx (vla-get-Coordinates obj))<BR>                                                                                                                               (setq vtxlst (vlax-safearray-&gt;list (vlax-variant-value vtx)))<BR>                                                                                                                               (setq n 0)<BR>                                                                                                                               (setq ptlst nil)<BR>                                                                                                                               (repeat (/ (length vtxlst) 2)<BR>                                                                                                                                                                                               (setq ptlst (append ptlst (list (list (nth n vtxlst) (nth (1+ n) vtxlst)))))<BR>                                                                                                                                                                                               (setq n (+ n 2))<BR>                                                                                                                               )<BR>                                                                                                                               (if ptlst ptlst nil)<BR>                                                                                               )<BR>                                                                                               (prompt "\n选取实体不是多义线!")<BR>                                                                       );if<BR>                                               )                                               <BR>                               );if <BR>       )<BR>;;;**********************************************************<BR>2.在对话框的文本栏里输入,怎样让它实时显示为密码“ * ”       ?<BR>               A.设计对话框时,控件的属性中加:password_char = "*";<BR>                       srt : dialog {<BR>                                                       label = "密码" ;<BR>                                                       : edit_box {<BR>                                                                       label = "输入密码(&amp;S):";<BR>                                                                       key = "password";<BR>                                                                       password_char = "*";<BR>                                                                       fixed_width = true;<BR>                                                                       width = 8;<BR>                                                       }<BR>                                                       ok_only;<BR>                       } <BR>(defun c:srt ( )<BR>(setq filename "srt.dcl")<BR>(if (&gt; (setq index_value (load_dialog filename)) 0)                                                                               ;装载对话框<BR>                                                       (progn<BR>                                                                               (setq dlgname "srt")<BR>                                                                               (if (not (new_dialog dlgname index_value)) (exit))       ;显视对话框                                                                                                                                       <BR>                                                                               (action_tile "password" "(mypass)")       <BR>                                                                               (action_tile "ok" "(done_dialog 0)")<BR>                                                                               (start_dialog)<BR><BR>                                                       )<BR>                                                       (alert "\n不能载装指定的DCL文件定义的对话框!")<BR>);;;END IF <BR>       (princ)<BR>)<BR>(defun mypass ()<BR>               (setq a1 $value)       <BR>)<BR>       B.使用DOSLib输入密码的函数<BR>;;;********************************************************<BR>3.怎样可以实现不用工具中的选项,来调出屏幕菜单?<BR>                       <BR>;;屏幕菜单切换<BR>(defun C:pmmenu ()<BR>       (vl-load-com)<BR>       (setq sd<BR>       (vla-get-display<BR>                       (vla-get-preferences (vlax-get-acad-object))<BR>       )<BR>       )<BR>       (if (= (vla-get-displayscreenmenu sd) :vlax-true)<BR>                       (vla-put-displayscreenmenu sd :vlax-false)<BR>                       (vla-put-displayscreenmenu sd :vlax-true)<BR>       )<BR>       (vlax-release-object sd)<BR>       (princ)<BR>)<BR>;;********************************************************<BR>4.怎么样用Vlisp来读取AutoCAD中搜索路径?<BR>       (vla-get-supportpath (vla-get-files (vla-get-preferences (vlax-get-acad-object))))<BR>               或:<BR>       (getenv "ACAD")<BR>               或:<BR>       (acet-pref-supportpath-list)获取支持路径。<BR>;;********************************************************<BR>5.如何捕获列表框(list_box)的双击操作?<BR><BR>在edit_box,list_box,image_button,slider中,有一个$reason变量,用来<BR>表示你执行了什么操作 。在list_box中,双击的变量值是4。<BR>可在你的代码中加入判断:<BR>(action_tile "listbox" "(fun1).....")<BR>(defun fun1()<BR>               .....<BR>(if (= $reason 4)<BR>       .....<BR>)<BR>       .....<BR>)<BR><BR>;;********************************************************<BR>6.如何用VLISP创建目录?<BR>               例如:<BR>               A. (vl-mkdir "c:\\hqd9639")<BR><BR>               B. (setq SYS (vlax-create-object "Scripting.FileSystemObject"))<BR>                                       (setq FOLDER (vlax-invoke-method SYS 'CREATEFOLDER "c:\\hqd9639"))<BR><BR>;;********************************************************<BR>7.如何用(entsel)亮显选择物体?<BR>               code: <BR>               (if (setq ent (entsel "\nPick Object"))<BR>                                               (progn<BR>                                                                       (redraw (car ent) 3)<BR>                                                                       ;;(redraw (car ent) 4);;;不亮显<BR>                                       )<BR>       )<BR>;;********************************************************<BR>8.如何隐藏选择实体?<BR>               code: <BR>               (if (setq ent (entsel "\nPick Object"))<BR>                                               (progn<BR>                                                                       (redraw (car ent) 1);;;隐藏实体<BR>                                                       ;;(redraw (car ent) 2);;;显示实体<BR>                                       )<BR>       )<BR>;;********************************************************<BR>9.状态栏进度条的设计示例<BR><BR>(defun c:hqd1 ()<BR>               (acet-ui-progress "已经完成" 100)<BR>               (setq x 0)<BR>               (while (&lt; x 100)<BR>                                                                       (princ (strcat "\n" (itoa x)))<BR>                                                                       (acet-ui-progress -1)<BR>                                                                       (setq x (1+ x))<BR>               )<BR>               (acet-ui-progress)<BR>)<BR><BR>;;********************************************************<BR>10. 如何用VLISP获取所有配置文件(Profiles)列表?<BR>       code:<BR>                       (defun c:getAllProfiles ()<BR>                                       (setq a (vla-get-profiles (vla-get-preferences (vlax-get-acad-object))))<BR>                                       (vla-GetAllProfileNames a 'hqd)<BR>                                       (if hqd (setq lst (vlax-SafeArray-&gt;List hqd)))<BR>                       )<BR><BR>;;********************************************************<BR>11.如何在CAD中插入时间和日期?<BR>Code:<BR>(defun C:inttime()<BR>               (setq pt0 (getpoint "\n请指定插入位置点 :")) <BR>               (setq date0 (menucmd "M=$(edtime,$(getvar,date), DD.MM.YYYY hh:mm:ss)"))<BR>               (command "text" "j" "m" pt0 5.0 0 date0)<BR>               (princ)<BR>)<BR><BR>;;********************************************************<BR>12.如何用LISP打开WINDOWS的选择目录对话框?<BR><BR>               方法有5种:<BR>               a.(setq bmpdir (xdrx_getdir "选择目录" "" "请选取目录" )) <BR>               b.(dos_getdir "选择目录:" "c:\\")<BR>               c.(setq picdir (Odcl_BrowseFolder "选取文件目录"       ""))<BR>               d.(acet-ui-pickdir "选择目录" "" "请指定目录")<BR>               e:<BR>                               Code: <BR>(defun qf_getFolder (msg / WinShell shFolder path catchit)<BR>       (vl-load-com)<BR>       (setq winshell (vlax-create-object "Shell.Application"))<BR>; (vlax-dump-object winshell T)<BR>       (setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 1))<BR>       (setq<BR>                       catchit (vl-catch-all-apply<BR>                                               '(lambda ()<BR>               (setq shFolder (vlax-get-property shFolder 'self))<BR>               (setq path (vlax-get-property shFolder 'path))<BR>                                                       )<BR>                               )<BR>       )<BR>       (if (vl-catch-all-error-p catchit)<BR>                       nil<BR>                       path<BR>       )<BR>)<BR><BR>;;********************************************************       </FONT><BR>

发表于 2004-6-9 18:11:00

<FONT size=2>;;例一<BR>(defun ett_ct()<BR>(initget "C ") ;关键字“C”及空格<BR>(setq s0 (entsel "\n设置颜色C / 选取文本:"))<BR>(cond<BR>( (= s0 "C") (ett_col)) ;转设置颜色子函数<BR>( (= s0 "") nil) ;空格退出<BR>( (and (= (type s0) 'LIST) ;选择实体<BR>(= (cdr (assoc 0 (entget (car s0)))) "TEXT") ;判别文本<BR>)<BR>... ;操作内容<BR>(ett_ct) ;编辑后返回选择<BR>)<BR>(t (ett_ct)) ;空选返回选择<BR>)<BR>)<BR>************************************************<BR>其中(setq s0 (entsel "\n设置颜色C / 选取文本:"))<BR>正确的写法应该是:(setq s0 (entsel "\n设置颜色C /&lt; 选取文本&gt;:"))<BR><BR><BR>;;例五<BR>(defun newerr (s) ;出错函数<BR>(if s<BR>(progn<BR>(term_dialog) ;使用对话框时使用<BR>(if olderr (setq *error* olderr)) ;出错函数恢复<BR>(if oldvar (setvar ... oldvar)) ;系统变量恢复<BR>(if olderr (setq *error* olderr)) ;出错函数恢复<BR>(command "_.undo" "_e") ;Undo编组结束<BR>)<BR>)<BR>(princ)<BR>)<BR>...<BR>我认为if语句是不必要的<BR><BR>另外可以直接<BR>(defun *error* (s) .....)<BR>这句(setq olderr *error* *error* newerr)改为 (setq olderr *error* )就可以了</FONT> <BR>
页: [1] 2
查看完整版本: CAD技术交流区

室内设计工具箱