版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、AutoCAD内常用术语的自动标注方法摘要HT5SS本文提出了一种用对话框实现 AutoCAD内常用术语自动标注的方法。用这 种方法,可方便地将各种常用术语标注在图中,为CAD应用提供了方便。一、引言汉字的标注在CAD设计制图中是一个重要的部分,也是一个较为繁琐、困 难的部分。目前,在AutoCAD内汉字的输入大多采用拼音方式,对拼音不熟悉 人人来说汉字的输入就很困难。如果能将设计中常用的文字术语直观地显示出来 供设计人员调用,将会极大地提高工作效率。本文就此进行研究,提出了一种用对话框(下图)将常用术语显示并供调用的方法,同时给出了源程序,供大家参 考。该程序已应用于我院的实际生产中。二、原
2、理及方法AutoCAD对话框结构 包含有多种构件,如 edit_box(编辑框)、 list_box(列表框)、 radio_button(多选一按钮) 等,利用这些工具,可以开 发出界面友好的实用程序。左图就是用这种方法实 现的。将常用词组分类,分 别存于不同的文件中。根据 多选一按钮中所驱动的分组 号分别打开不同的文件,将 文件内容读入并显示于列表 框内,供设计人员使用。同 时,设有一个编辑框,可将所点取的词组显示于编辑框中,便于用户对词组进行 适当的修改,如删除或增加字符等。 这种方法有一个优点,用户可十分方便地根 据自己需要修改或添加词组内容。对话框文件及驱动程序分别见#CAL.DCL
3、及#CAL.LSP。三、程序使用方法先用WPS、EDIT等编辑程序分类建立词组库(注意,需要存成纯文本格式), 每个词组占一行。程序要求将常用术语、图纸名称、房间名称等各分类所对 应的词组库文件名分别为 $TXT1.DAT、$TXT2.DAT、$TXT3.DAT庞。除第一个 文件不能少外,其它文件可空缺,但当点取该分类项时,系统会提示有关文件不 存在的信息。回常用术语 回图纸名称 回房间名称 回卫生器具 J管材配件 a器材仪表 巨常用设备 回梅筑物 回其它生曹一图而层给排2图?图匿匿匿匿匿旧给所选词组苜层给排水平面图0K 取消然后将所建立的词组库文件及所提供的程序 #TXT.LSP 和对话框文
4、件#TXT.DCL拷贝到 AutoCAD 所能找到的目录(环境变量ACAD 所设置的任一目录如ACADSUPPORT 或当前目录) 中, 在 Command : 命令下键入 ( LOAD #TXT )进行程序的加载,即可象其它 AutoCAD 内部命令一样使用 #TXT 了。也可在所使用的菜单文件(如 ACAD.MNU )中的下拉式菜单或屏幕菜单部分加上下面一行:常用词组ACACAP(if (null c:#txt) (load#txt) #txt以后可直接从菜单中驱动该程序。在 COMMAND :状态下,键入 #TXT 后,系统弹出一个对话框,根据需要点取所需的词组类别,再从列表框内选择所需
5、词组。 所点取的词组会在编辑框 所选词组中显示。用户可以在此对词组进行必要的修改,点取 OK 后,根据提示输入字高及起点即可把词组写到图中。需要说明的是,本程序中是将文字以HZ字型写到图中,要求字体为 TXT.SHX及 HZTXT.SHX 。若您的软件中无这两种字体,可将其它字体改名为该两种字体(要求一个为英文字体,一个为中文字体),或将程序修改为您所具有的字体。但需要注意, 也许您的字体在用于设置字型时会多一个选项, 询问是否垂直书写文字,此时,可将字型设置一句改为: (command STYLE HZ txt,hztxt 0 0.70 n n n) 即可。本程序在 AutoCAD R12.
6、0 FOR DOS 及 FOR WINDOWS 版上均调试通过。(defun c:#txt ( / oldcmd olderr ok txt_tb txt dcl_id sty fp nn ht pt txterr diag initwr_txt old_nn); 定义错误处理子程序(defun txterr(s)(if (and (/= s console break)(/= s Function cancelled)(/= s quit / exit abort)(princ (strcat nError: s)(if olderr (setq *error* olderr); 恢复原系统
7、设置(if oldcmd (setvar cmdecho oldcmd)(princ); 对话框显示及驱动程序(defun diag ( / i)(if ( (setq dcl_id (load_dialog #txt) 0) ;加载对话框文件(progn(if (new_dialog filetext dcl JX*6id); 显示对话框(progn start_list what) ;将词组显示到列表框内 (mapcar add_list txt_tb )(end_list)(setq i 1)(repeat nn ;点取词组分类项后的操作(action_tile (strcat c (i
8、toa i) (wr_txt)(setq i (1+ i) )(action_tile what (setq i (atoi $value) ;选中词组 (setq txt (nth i txt_tb)(set_tile sel_ok txt) )(action_tile sel_ok (setq txt $value)(action_tile accept (setq ok T)(done_dialog 1)(unload_dialog dcl_id) (action_tile cancel (unload_dialog dcl_id) (start_dialog)(prompt n 无法显
9、示对话框FILETEXT! 请检查对话框内容!) )(prompt n 无法加载对话框文件#TXT.DCL! 请检查文件是否存在及路径是否正确!) ) ); 初始化程序, 把第 1 个分组项中的词组读入表txt_tb 中(defun init( / fname fp txt1)(setq fname (findfile $txt1.dat) (if (not fname)(progn (princ n 文件 $TXT1.DAT 不存在 !) (exit) ; 文件不存在, 则退出)(setq fp (open fname r)(setq txt_tb ()(while (setq txt1 (
10、read_line fp)(setq txt_tb (cons txt1 txt_tb)(close fp)(setq txt_tb (reverse txt_tb)(setq old_nn 1) ;记录索引号); 更换列表框内词组显示内容(defun wr_txt ( / fname fname1 fp txt1 i)(setq i 1)(while (= i nn); 判别哪个词组项被点中(if (= (get_tile (strcat c (itoa i) 1)(setq fname1 (strcat $txt (itoa i) .dat) i nn)(setq i (1+ i)(if
11、(setq fname (findfile fname1); 查找文件是否存在 (progn(setq old_nn (atoi (substr fname1 5) ;记录索引号(setq fp (open fname r)(setq txt_tb ()(while (setq txt1 (read_line fp) ;依次读出各词组(setq txt_tb (cons txt1 txt_tb)(close fp)(setq txt_tb (reverse txt_tb)(start_list what) ;在列表框内显示词组内容(mapcar add_list txt_tb)(end_lis
12、t) ; progn(progn(alert (strcat 文件 fname1 不存在 !) (set_tile (strcat c (itoa old_nn) 1) ;恢复原记录号 ) ; if); 主程序开始(setq olderr *error*error* txterroldcmd (getvar cmdecho)(setvar cmdecho 0) ; 命令不回显(setq nn 9) ; 词组分类数(init) ; 初始化(diag) ; 驱动对话框(if (and ok txt)(progn(if (or (= (setq sty (tblsearch STYLE HZ) ni
13、l); HZ 字型是否存在(/= (cdr (assoc 40 sty) 0) ; 字高是否为定值(/=(getvar TEXTSTYLE) HZ); 当前字型是否为 HZ )(command STYLE HZ txt,hztxt” 0 0.7 0 n n); 设置HZ字型 ) (initget (+ 2 4) ;下面的输入值要求大于 0(setq ht (getreal n 请输入字高 :)(if (not ht) (setq ht 500)(setq pt (getpoint n 请点取文字起点 :)(command text pt ht 0 txt)(setq *error* older
14、r) ;恢复原设置(setvar cmdecho oldcmd)(princ)/ #txt.dcl/ 供#txt.lsp 调用filetext : dialog / 对话框名称label = 常用词组 ; / 对话框标识: row : boxed_column label = 索 引 ;: radio_button label = 常用术语 ; / 多选一按钮key = c1;value = 1; / 初始值为 1, 表示选中: radio_button label = 图纸名称 ;key = c2;: radio_button label = 房间名称 ;key = c3;: radio_button label = 卫生器具 ;key = c4;: radio_button label = 管材配件 ;key = c5;: radio_button label = 器材仪表 ;key = c6;: radio_button label = 常用设备 ;key = c7;: radio_but
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论