找回密码
 立即注册

QQ登录

只需一步,快速开始

vray材质库
查看: 13110|回复: 10

CAD技术交流区

  [复制链接]

该用户从未签到

70

主题

316

回帖

309

积分

中级会员

积分
309
发表于 2003-12-27 15:40:00 | 显示全部楼层 |阅读模式
这里都是电脑高手,有没有CAD高手,请到这里来,你有什么高见尽管发表,有什么新体会也共享出来,大家一起讨论呀!跟贴的人有什么问题,就提吧,我不能解决,也可以和你探讨的,而且还有很多高手呀!!! 我就想请教一下有那一位高手能够帮我解决这样一个问题: 我在我的CAD2002里加载了圆方菜单,但是都不起作用,PGP文件也复制过来了,还是不行,需要怎么做才能把圆方菜单文件的程序启用呢? 谁能告诉我不胜感谢!!!! [upload=rar]viewfile.asp?ID=39094[/upload]
.....提示:网站下载资源都有备份,如遇到下载地址失效请及时联系管理员(QQ:3459039404)恢复下载地址(个别无法恢复会退币)

该用户从未签到

70

主题

316

回帖

309

积分

中级会员

积分
309
 楼主| 发表于 2003-12-27 21:13:00 | 显示全部楼层
我还自己顶!!!!!!!!! 快来看看呀我有高手的关于CAD应用的文章,想成为高手的就来呀!
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

107

回帖

116

积分

初级会员

积分
116
发表于 2004-3-30 14:08:00 | 显示全部楼层
高手~~~~~~~~ 我顶你~~~~~~~`
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

13

回帖

15

积分

新手上路

积分
15
发表于 2004-5-8 04:38:00 | 显示全部楼层
不知道,我是菜鸟,我用2000很正常~~~ 希望索老大能发些你的应用心得
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2004-5-11 17:00:00 | 显示全部楼层
唉..我太菜了!!帮不了你了..
回复 支持 反对

使用道具 举报

该用户从未签到

23

主题

132

回帖

93

积分

新手上路

积分
93
发表于 2004-5-22 22:21:00 | 显示全部楼层
谢了 那个文章接受了 给你顶一下
桃花坞里桃花庵,桃花庵里桃花仙;桃花仙人种桃树,又摘桃花换酒钱。 但愿老死花酒间,不愿鞠躬车马前;车尘马足贵者趣,酒盏花枝贫者缘。 别人笑我忒疯癫,我笑他人看不穿;不见五陵豪杰墓,无花无酒锄作田。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

50

回帖

51

积分

新手上路

积分
51
发表于 2004-6-9 09:25:00 | 显示全部楼层
先谢了。
回复 支持 反对

使用道具 举报

该用户从未签到

70

主题

316

回帖

309

积分

中级会员

积分
309
 楼主| 发表于 2004-6-9 18:02:00 | 显示全部楼层
AutoCAD应用技巧精选
1. 执行编辑命令,提示选择目标时,用矩形框方式选择,从左向右拖动光标,为"窗口Windows"方式,如果从右向左拖动光标,则为"交叉Cross"方式。
2. 相对坐标输入点时,在正交状态时,一般输入为:@x,0或@0,y (例如输入相对坐标“@100,0”表示下一点相对上一点X方向增加100,又如输入相对坐标“@0,50”表示下一点相对上一点Y方向增加50),以上两种情况下,可以直接输入100或50即可实现相同的目的,从而节省输入时间。
3. 在AutoCAD中有时有交叉点标记在鼠标点击处产生,用BLIPMODE命令,在提示行下输入OFF可消除它。
4. 有的用户使用AutoCAD时会发现命令中的对话框会变成提示行,如打印命令,控制它的是系统变量CMDDIA,关掉它就行了。
5. 椭圆命令生成的椭圆是以多义线还是以椭圆为实体的是由系统变量PELLIPSE决定,当其为1时,生成的椭圆是PLINE。
6. CMDECHO变量决定了命令行回显是否产生,其在程序执行中应设为0。
7. DIMSCALE决定了尺寸标注的比例,其值为整数,缺省为1,在图形有了一定比例缩放时应最好将其改成为缩放比例。
8.7 CAD的较高版本中提供了形位公差标注,但圆度及同轴度中的圆不够圆,其实,AutoCAD中常见符号定义都在AutoCAD安装目录下SUPPORT子目录下的gdt.shp文件中,其中2号和4号字符定义了圆形的形状,圆的弧度竟为127°,但不太好改正之(如改为90°更不好看)。
9.8 空心汉字字形如使用AutoCAD R14中的BONUS功能(一定要完全安装AutoCAD,或自定义安装时选了它),有一个TXTEXP命令,可将文本炸为线,对做立体字十分有用。

10. AutoCAD R14的BONUS中有一个ARCTEXT命令,可实现弧形文本输出,使用方法为先选圆弧,再输入文本内容,按OK。
11. BONUS中有一个有用的命令,即MPEDIT,用它将多个线一齐修改为多义线,再改它的线宽。
12. Image命令在R14中代替了R13中的BMPIN、PCXIN之类的命令,它将位图嵌入文件中,只用来显示,如炸开就成了空框架,如何使用PCXIN等命令重现?请将R13安装目录下的RASTERIN.EXE拷入R14下,用appload将其装入,然后就可以将位图导入(可编缉,可炸开)了。
13. BREAK命令用来打断实体,用户也可以一点断开实体,用法是在第一点选择后,输入“@”。常用一条线一段为点划线,另一段为实线时。
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等,更加提高了用键盘输入命令的速度,对熟悉键盘的朋友来说简直是如虎添翼。
15. AutoCAD R14命令的缩写也可用在R13,方法是将AutoCAD R14下的Support子目录下的ACAD.pgp拷贝至AutoCAD R13中的Support子目录下。
16. AutoCAD 中ACAD.pgp文件十分重要,它记录命令缩写内容,用户可自定义它们,格式如下:<命令缩写> *命令名称。也可定义系统命令,AutoCAD R14提供了sh命令,可执行DOS命令,但在Windows作用下不大。
17. AutoCAD R14中用NOTEPAD、EDIT、DIR、DEL等系统命令,笔者认为其中NOTEPAD对自定义CAD用途较大,但使用起来会发现屏幕一闪(进了DOS),又返回,十分让人不愉快,让我们来编一个小程序,取名为note.lsp:

(defun c:notepad()
(startapp″notepad″)
)
先将ACAD.pgp中的NOTEPAD命令定义行删除,重入CAD后,再将此程序命令:(load″note″)装入,下一次用NOTEPAD命令会有更好效果,最好将(load″note″)加入Support子目录下的ACADR14.lsp中。
18. AutoCAD R14中打印线宽可由颜色设定,这样机械制图中的各种线型不同、、线宽不同的线条可放入不同的层,在层中定义了线型的颜色,而在打印设置中设定线型与颜色的关系,效果良好。
19. AutoCAD R14的Support中ACAD.dwt为缺省模板,要好好加工它,把常用的层、块、标注类型定义好,再加上标准图框,可省去大量重复工作。
20. AutoCAD中有不少外部Lisp命令文件,可以直接观察它们,如果学习开发Lisp应用程序,注意;R14可是最后一版Lisp文件内容公开的AUTOCAD,在CAD2000中Lisp文件内容是加密的(笔者正在研究解密程序)。
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编程的世界。
22. 用户自定义的Lisp文件一定要自动装入AutoCAD,这样就需要在acadr14.lsp中加入用户Lisp文件的装入语句,acadr14.lsp(早期版本为acad14.lsp)好似DOS的Autoexec.bat,一定要好好利用,在其中如定义了名为S::STARTUP()的函数可自动运行它。(给CAD加个启用画面如何,可用STARTUP加startapp函数,也可加登录密码)。
23. 将AutoCAD中的图形插入WORD中,有时会发现圆变成了正多边形,用一下VIEWRES命令,将它设得大一些,可改变图形质量。
24. 形如φ30H11(+0.1,-0.2)的标注如何去标呢,请在文本内容中输入%%c30{H11(}{\H0.7X;\S+0.1^-0.2;})”,可以实现,如嫌太麻烦,就编程序来简化操作。
25. AutoCAD中文件可当作块插入其他文件中,但这样一来过多的块使文件过于庞大,用PURGE来清除它们吧,一次清一层,一定要多用几次呀!
26. AutoCAD R14的帮助文件内容十分丰富,由很多本“书”组成,一层层打开,多看它们用处是很大的,其中包括了CAD的各方面,比任何CAD大全还全,你是否想您的帮助加入其中,请修改acad.cnt,加入自己帮助的链接。

27. 在CAD中可按规定编定.ahp的CAD帮助文件,在R14下用ahp2hlp.exe将其转变为.hpj的文件和.rtf的文件,再用HelpWorkshop工具(在VC5中有)将其项目打开,编译为.hlp文件。
28. 在AutoCAD中有一些DOS下的exe文件在R14中仍有用途,用Slidelib.exe可将幻灯片作库,mc.exe可实现菜单的编译。
29. 在作完零件图进行组装时,可将零件图块插入后焊开,再用group成组后组装,这时用ddselect命令控制组选取处于何种状态,取消组选时再打开组状态。
30. 在AutoCAD中的菜单源文件为.mnu文件,将其修改可将自己的命令加入菜单中,再用menu命令装入,加参加AutoCAD帮助了解菜单文件格式。图标工具条中加入自己的命令相对简单,可在工具条上点右键,在toolbar对话中,点new 按钮,输入工具条后,一个新工具条产生,再选Customize按钮,选定custom,将空按钮拖入工具条中,再在空按钮上按右键,这样就可定义自己的按钮图标和命令。
31. AutoCAD的状态行也可处定义,用DIESEL语言可以访问它,最简单的方法用modemacro命令,后输入$(getvar,clayer),以后当前层名就显示在准确无误行上,用户化可谓无孔不入吧!
32. AutoCAD的图形格式为.dwg,也可导出为.bmp及.wmf或.eps、.dxf、.3ds,是如果用render命令可存为.pcx、.tga、.tif格式,AutoCAD还可将文件直接存为这几种格式,要为系统装一个名为“Raster file export”的打印机,用它打印到文件,ACAD2000还可将文件存为JPG格式。
33. render进行着色时,render无关闭按钮,用户采用:(arxunload"render"),因为它是ARX文件扩展的功能。
34. dimzin系统变量最好要设定为8,这时尺寸标注中的缺省值不会带几个尾零,用户直接接受缺省值十分方便快捷。
35. 如遇到快捷失效,如^0失去作用变为正交模式切换的情况,请用menu将当前使用菜单.mnu菜单源文件重装一遍即可。
36. 在多行文字(mtext)命令中Word97编辑文本。Mtext多行文字编辑器是AuotCAD R14中的新增功能,它提供了Windows文字处理软件所具备的界面和工作方式,它甚至可以利用Word97的强大功能编辑文本,这一功能可以用如下方法实现:
打开“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中的文本锦上添花。
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
回复 支持 反对

使用道具 举报

该用户从未签到

70

主题

316

回帖

309

积分

中级会员

积分
309
 楼主| 发表于 2004-6-9 18:09:00 | 显示全部楼层
Vlisp编程技巧摘要(1)
;;;**********************************************************
1.如何获取多义线上的所有顶点
Code:
(defun C:getp (/ ent PLTYPE obj vtx vtxlst n ptlst)
(vl-load-com)
(setq ent (entsel "\n选取多线:\n"))
(if ent
(progn
(setq PLTYPE (cdr (assoc 0 (entget (car ent)))))
(if (or (= "POLYLINE" PLTYPE) (= "LWPOLYLINE" PLTYPE))
(progn
(setq obj (vlax-ename->vla-object (car ent)))
(setq vtx (vla-get-Coordinates obj))
(setq vtxlst (vlax-safearray->list (vlax-variant-value vtx)))
(setq n 0)
(setq ptlst nil)
(repeat (/ (length vtxlst) 2)
(setq ptlst (append ptlst (list (list (nth n vtxlst) (nth (1+ n) vtxlst)))))
(setq n (+ n 2))
)
(if ptlst ptlst nil)
)
(prompt "\n选取实体不是多义线!")
);if
)
);if
)
;;;**********************************************************
2.在对话框的文本栏里输入,怎样让它实时显示为密码“ * ” ?
A.设计对话框时,控件的属性中加:password_char = "*";
srt : dialog {
label = "密码" ;
: edit_box {
label = "输入密码(&S):";
key = "password";
password_char = "*";
fixed_width = true;
width = 8;
}
ok_only;
}
(defun c:srt ( )
(setq filename "srt.dcl")
(if (> (setq index_value (load_dialog filename)) 0) ;装载对话框
(progn
(setq dlgname "srt")
(if (not (new_dialog dlgname index_value)) (exit)) ;显视对话框
(action_tile "password" "(mypass)")
(action_tile "ok" "(done_dialog 0)")
(start_dialog)

)
(alert "\n不能载装指定的DCL文件定义的对话框!")
);;;END IF
(princ)
)
(defun mypass ()
(setq a1 $value)
)
B.使用DOSLib输入密码的函数
;;;********************************************************
3.怎样可以实现不用工具中的选项,来调出屏幕菜单?

;;屏幕菜单切换
(defun C:pmmenu ()
(vl-load-com)
(setq sd
(vla-get-display
(vla-get-preferences (vlax-get-acad-object))
)
)
(if (= (vla-get-displayscreenmenu sd) :vlax-true)
(vla-put-displayscreenmenu sd :vlax-false)
(vla-put-displayscreenmenu sd :vlax-true)
)
(vlax-release-object sd)
(princ)
)
;;********************************************************
4.怎么样用Vlisp来读取AutoCAD中搜索路径?
(vla-get-supportpath (vla-get-files (vla-get-preferences (vlax-get-acad-object))))
或:
(getenv "ACAD")
或:
(acet-pref-supportpath-list)获取支持路径。
;;********************************************************
5.如何捕获列表框(list_box)的双击操作?

在edit_box,list_box,image_button,slider中,有一个$reason变量,用来
表示你执行了什么操作 。在list_box中,双击的变量值是4。
可在你的代码中加入判断:
(action_tile "listbox" "(fun1).....")
(defun fun1()
.....
(if (= $reason 4)
.....
)
.....
)

;;********************************************************
6.如何用VLISP创建目录?
例如:
A. (vl-mkdir "c:\\hqd9639")

B. (setq SYS (vlax-create-object "Scripting.FileSystemObject"))
(setq FOLDER (vlax-invoke-method SYS 'CREATEFOLDER "c:\\hqd9639"))

;;********************************************************
7.如何用(entsel)亮显选择物体?
code:
(if (setq ent (entsel "\nPick Object"))
(progn
(redraw (car ent) 3)
;;(redraw (car ent) 4);;;不亮显
)
)
;;********************************************************
8.如何隐藏选择实体?
code:
(if (setq ent (entsel "\nPick Object"))
(progn
(redraw (car ent) 1);;;隐藏实体
;;(redraw (car ent) 2);;;显示实体
)
)
;;********************************************************
9.状态栏进度条的设计示例

(defun c:hqd1 ()
(acet-ui-progress "已经完成" 100)
(setq x 0)
(while (< x 100)
(princ (strcat "\n" (itoa x)))
(acet-ui-progress -1)
(setq x (1+ x))
)
(acet-ui-progress)
)

;;********************************************************
10. 如何用VLISP获取所有配置文件(Profiles)列表?
code:
(defun c:getAllProfiles ()
(setq a (vla-get-profiles (vla-get-preferences (vlax-get-acad-object))))
(vla-GetAllProfileNames a 'hqd)
(if hqd (setq lst (vlax-SafeArray->List hqd)))
)

;;********************************************************
11.如何在CAD中插入时间和日期?
Code:
(defun C:inttime()
(setq pt0 (getpoint "\n请指定插入位置点 :"))
(setq date0 (menucmd "M=$(edtime,$(getvar,date), DD.MM.YYYY hh:mm:ss)"))
(command "text" "j" "m" pt0 5.0 0 date0)
(princ)
)

;;********************************************************
12.如何用LISP打开WINDOWS的选择目录对话框?

方法有5种:
a.(setq bmpdir (xdrx_getdir "选择目录" "" "请选取目录" ))
b.(dos_getdir "选择目录:" "c:\\")
c.(setq picdir (Odcl_BrowseFolder "选取文件目录" ""))
d.(acet-ui-pickdir "选择目录" "" "请指定目录")
e:
Code:
(defun qf_getFolder (msg / WinShell shFolder path catchit)
(vl-load-com)
(setq winshell (vlax-create-object "Shell.Application"))
; (vlax-dump-object winshell T)
(setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 1))
(setq
catchit (vl-catch-all-apply
'(lambda ()
(setq shFolder (vlax-get-property shFolder 'self))
(setq path (vlax-get-property shFolder 'path))
)
)
)
(if (vl-catch-all-error-p catchit)
nil
path
)
)

;;********************************************************

回复 支持 反对

使用道具 举报

该用户从未签到

70

主题

316

回帖

309

积分

中级会员

积分
309
 楼主| 发表于 2004-6-9 18:11:00 | 显示全部楼层
;;例一
(defun ett_ct()
(initget "C ") ;关键字“C”及空格
(setq s0 (entsel "\n设置颜色C / 选取文本:"))
(cond
( (= s0 "C") (ett_col)) ;转设置颜色子函数
( (= s0 "") nil) ;空格退出
( (and (= (type s0) 'LIST) ;选择实体
(= (cdr (assoc 0 (entget (car s0)))) "TEXT") ;判别文本
)
... ;操作内容
(ett_ct) ;编辑后返回选择
)
(t (ett_ct)) ;空选返回选择
)
)
************************************************
其中(setq s0 (entsel "\n设置颜色C / 选取文本:"))
正确的写法应该是:(setq s0 (entsel "\n设置颜色C /< 选取文本>:"))


;;例五
(defun newerr (s) ;出错函数
(if s
(progn
(term_dialog) ;使用对话框时使用
(if olderr (setq *error* olderr)) ;出错函数恢复
(if oldvar (setvar ... oldvar)) ;系统变量恢复
(if olderr (setq *error* olderr)) ;出错函数恢复
(command "_.undo" "_e") ;Undo编组结束
)
)
(princ)
)
...
我认为if语句是不必要的

另外可以直接
(defun *error* (s) .....)
这句(setq olderr *error* *error* newerr)改为 (setq olderr *error* )就可以了

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

室内设计工具箱

QQ|手机版|Archiver|室内人 ( 辽ICP备05022379号 )

GMT+8, 2024-4-30 00:26

Powered by Discuz! X3.5关于室内人 | QQ:3459039404(客服) | Email:snren_com@163.com

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表