资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
AutoCAD图形中标准图纸图栏系统的开发摘要:本文主要讲述了在AutoCAD中,通过对其进行二次开发而开发出的AutoCAD图形标准图纸图栏系统解决方案。随着计算机技术的发展,计算机操作系统已经逐渐由DOS系统转向Windows系统,AutoCAD自从12版本开始,已经有Windows的版本,直至14版本以后,已经是完全的Windows版本。AutoCAD除了操作简便之外,它还可以让用户重新定义其界面以及建立自己的程序运行,国内各不同的电脑开发商也通过对AutoCAD的二次开发而开发出应用于不同领域的实用软件。自从AutoCAD R12版开始,AutoCAD引进了对话框技术DCL对话框语言,它通过与AutoLISP语言相结合,能够编写出界面友好的实用程序。 本人所在公司旧版的图栏填写是基于AutoCAD R10版本而开发出来,操作过程是通过命令行提示,让用户根据提示,逐一输入相应的内容。这种方法程序编写简单,基本的语句如下: (setq txmc(getstring 图形名称:) ;提示用户输入图形名称 (command text pt txmc) ;填写图形名称到图形中 采用此种方法填写的图栏内容与图形中的其它文字一样,编辑时也是通过文字编辑进行操作,不太方便,在制图的过程中,图栏内容的编辑也占用了很大部分的时间。 一 总体方案: 图栏分为图样栏、标题栏、明细栏、附加栏、更改表、签名表共六部分,标准图纸的图幅分为A0图、A1图、A2图、A3图、A4图共五种,所以系统应该能生成此五种图幅的图样栏以及相应的标题栏等。由于其它除图样栏外其它图栏内容都是依附于图样栏中,所以在更改图样栏的图幅时,其它图栏的相应位置会随着图样栏的改变而改变。由于该系统必须与旧版系统兼容(本公司的全部图纸都由旧版图栏生成,如果手工修改,所费时间将无可估计),所以进入该系统后,系统必须自动地将旧版的图栏更改为新的图栏格式。 图栏的格式采用在图块中增加属性,通过属性的方法显示图栏的文字内容。而图栏的填写是通过在插入图块的同时输入属性的内容。而图栏的编辑则通过对相应图块的属性进行提取而显示于对话框中让用户进行修改。 图1为图样栏的工作流程图,图2为标题栏的工作流程图。 图 1 图样栏的工作流程图 图 2 标题栏的工作流程图 二 程序的设计 程序设计的重点主要有以下几个方面:对话框的设计;怎样通过对话框的形式编辑图栏内容;怎样能将旧版的图栏转换为新版的图栏,以省去大量的手工转换工作;图样栏的大小怎样才能直接地显示在窗口的状态栏中;图样栏中设计单位名称的显示处理;图栏程序的调用。下面介绍各部分的具体设计。 1. 对话框的设计: AutoCAD软件包从AutoCAD R12以来最大的进步之一是它提供的新的可编程对话框(PDB)工具,使用DCL对话框语言再配以AutoLISP语言,就可以设计出与AutoCAD软件包风格完全一致的应用程序。 通过DCL对话框语言,对图栏的各对话框进行设计,在设计过程中,主要是考虑对话框界面的协调性及各控件安排的合理性。在图样栏的对话框中,使用选项按钮(radi0_button)选择标准图纸的图幅大小,使用弹出列表框(popup_list)列出预置的设计单位名称,而使用编辑框(edit_box)填写在单位列表框中没有列出的单位名称。 在标题栏中,使用编辑框填写名称、图号、材料、比例、重量、总页数、页码等,而使用选项按钮选择阶段标记。 各种图栏的外观见图3所示。 图3 各种图栏的外观 全部的图栏对话框都分为填写功能和编辑功能两种,由于对话框语言有类似于“类”的具有继承性的功能,通过将对话框的内容部分使用一个名称保存,然后在另外的对话框内引用保存过的对话框内容,这样就可以使用不同的标题显示同样外观的对话框内容(如“填写图样栏”和“编辑图样栏”)。 另外,由于图样栏已经定义了图纸图幅的大小,所以标题栏等其它图栏也就不必提示用户选择图幅而自动找到填写的位置。所以在对话框中除图样栏外,其它图栏的对话框都不必出现“图纸大小”的选项按钮。 以下列出图样栏对话框的程序内容: /填写图样栏部分 ddtyl:dialog label=填写图样栏; drtyl; /编辑图样栏部分 dmtyl:dialog label=编辑图样栏; drtyl; /图样栏内容部分 drtyl:column boxed_size; :boxed_column :popup_list label=设计单位(&S):; key=sign_ro; :edit_box label=其它设计单位(&O):; key=other; edit_width = 20; allow_accept=true; ok_cancel; /图纸大小内容部分 boxed_size:boxed_radio_row label=图纸大小; :radio_button label=A&0; key=size_0; :radio_button label=A&1; key=size_1; :radio_button label=A&2; key=size_2; :radio_button label=A&3; key=size_3; :radio_button label=A&4; key=size_4; 设计了对话框以后,还必须通过AutoLISP语言来调用及驱动对话框。在显示图栏对话框前,必须初始化对话框中各项的值,对于没有相应内容的项目,使用默认值。而对于具有相关内容的项目,则显示其内容供用户修改。 通过对话框,使用图栏的修改更为直观方便,操作也更为简单。 2. 图栏内容的编辑设计: 旧版的图栏只有填写功能,无自动编辑功能,只能通过文本编辑功能对内容逐一进行编辑,而且对于图样栏的大小无法编辑,只能删除旧图样栏再插入新图样栏,并且更换图样栏后标题栏等内容的位置无法与新图样栏对齐,只能靠手工进行调整。这些问题必须在程序中进行完善。 为了方便各种图栏的移动及图栏内容的提取,使用图块的属性保存各种图栏的内容。填写图栏时,是在插入图块的同时将图栏的文字内容作为图块的属性内容插入图形中,编辑图栏时,首先将相应图栏的图块的属性通过属性的提取而取出,并提供用户作修改,并将修改后的内容通过图块的属性更新而重新显示于图形中。图栏内容的移动就是图块的移动。 对于图样栏,不同的图样栏的大小采用不同名称的图块,在修改图样栏大小时,采用的是通过程序的控制,首先取出图块中设计单位的名称,并显示于对话框中,然后删除该图块,然后再插入新的图块,并将设计单位的属性附于图块上,同时,过程控制移动标题栏、附加栏、签名表等图栏到新的图样栏的相应位置上。这样实现了图样栏中图纸大小的编辑修改。 以下为图样栏编辑的程序设计内容,从中可以看到图样栏是怎样编辑的: (defun ty_modi() (setq head(entget(setq head_t(ssname sel_bt 0) ;取得图样栏图块的头部,其中sel_bt为图样栏图块 (setq he_zzdw(entget(entnext(cdr(car head) ;取得设计单位属性文本 (setq zzdw(getent he_zzdw1) ;取得设计单位文本内容,getent为自定义函数 ;调用对话框并初始化、显示 (if (= aaa (getvar useri1);判断图幅是否改变 (progn ;如果没有改变 (setent zzdw he_zzdw 1) ;改变图块中设计单位 (entupd head_t) ;更新图块 ) (progn ;如果图幅改变了 (entdel head_t) ;删除原图样栏 (command purge b tkn n) ;清理相应的图块 (setq tkn(strcat B-GBA (itoa aaa) TY) ;组合出图样图块的名称 (command insert tkn non 0,0 zzdw) ;插入附有属性的图样图块 (modi_ipt B-BTL p2p p2) ;移动标题栏等到新的图样栏的相应位置 ) ) ) 3. 旧版图栏的转换: 程序只有保持向下的兼容性才能得以广泛的使用,对于图栏的填写程序,也应该保证能够很好地兼容旧版的图栏,并能顺利地将旧版的图栏转换为新的图栏。 对于标题栏的转换,只需取得相应位置上的标题栏的内容,然后将原来的标题栏内容删除,再插入附有各属性内容的标题栏图块。 对于图样栏,除删除旧的图样栏图块,还必须将该图块通过清理命令将其清理掉,然后再插入新的格式的图样栏,通过这样就可以将图栏进行转换。 图样栏转换的程序如下: (setq head(entget(setq head_t (ssname sel_bt 0) ;取得图块头部 ( if (getent head 66)1) ;查看图块是否为旧版图块 (progn ;旧版图样栏时 (princ n此图样栏为旧版本,将被更新为新版本。n) (setq zzdw(get_text c (list(+ b_x -1)(+ b_y 55) (list(+ b_x -49)(+ b_y 39) ;从旧图样栏中取得设计单位名称 (if (not zzdw) (setq zzdw ) ;如无单位名称,则为空字符串 ) (entdel gead_t) ;删除旧图样栏 (command purge b gead_na n) ;清理旧图块 (command insert head_na non 0,0 zzdw);插入新版图样栏 ) ) 4. 状态栏中显示图样栏的图幅大小: 由于计算机显示的图形可以放大缩小,所以有些图幅容易造成混淆,如A2图和A3图幅,所以必须在一个显着的位置显示图幅的大小,使用户一目了然。 虽然通过调用图样栏(ddtyl)命令可以从对话框中显示当前的图幅大小,但这仲方法必须通过手工的操作才能实现。 如果将图幅的大小通过文本显示于图形中,就会使打印时将该文本也打印出来,同时该文本也只能通过缩放命令才能看到,操作上也不方便。 通过比较,将图样栏的图幅大小显示于状态栏是取为直接的。 AutoCAD的状态栏显示于屏幕的下端,其中显示了当前坐标以及各种辅助工具的状态(如捕捉、正交、栅格、对象捕捉
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号