中标准图纸图栏系统的开发_第1页
中标准图纸图栏系统的开发_第2页
中标准图纸图栏系统的开发_第3页
中标准图纸图栏系统的开发_第4页
中标准图纸图栏系统的开发_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、AutoCCAD图形形中标准图图纸图栏系系统的开发发摘要:本文文主要讲述述了在AuutoCAAD中,通通过对其进进行二次开开发而开发发出的AuutoCAAD图形标标准图纸图图栏系统解解决方案。随着计算机机技术的发发展,计算算机操作系系统已经逐逐渐由DOOS系统转转向Winndowss系统,AuutoCAAD自从12版本开开始,已经经有Winndowss的版本,直直至14版本以以后,已经经是完全的的Winddows版版本。AuutoCAAD除了操操作简便之之外,它还还可以让用用户重新定定义其界面面以及建立立自己的程程序运行,国国内各不同同的电脑开开发商也通通过对AuutoCAAD的二次次开发而开

2、开发出应用用于不同领领域的实用用软件。自自从AuttoCADD R122版开始,AAutoCCAD引进进了对话框框技术DCL对话话框语言,它它通过与AAutoLLISP语语言相结合合,能够编编写出界面面友好的实实用程序。 本人人所在公司司旧版的图图栏填写是是基于AuutoCAAD R110版本而而开发出来来,操作过过程是通过过命令行提提示,让用用户根据提提示,逐一一输入相应应的内容。这种方法法程序编写写简单,基基本的语句句如下: (ssetq txmcc(gettstriing 图形名称称:) ;提示示用户输入入图形名称称 (commmand texxt ppt txxmc) ;填写图图形名称

3、到到图形中 采用用此种方法法填写的图图栏内容与与图形中的的其它文字字一样,编编辑时也是是通过文字字编辑进行行操作,不不太方便,在在制图的过过程中,图图栏内容的的编辑也占占用了很大大部分的时时间。 一 总体方案案: 图栏栏分为图样样栏、标题题栏、明细细栏、附加加栏、更改改表、签名名表共六部部分,标准准图纸的图图幅分为AA0图、A1图、A2图、A3图、A4图共五五种,所以以系统应该该能生成此此五种图幅幅的图样栏栏以及相应应的标题栏栏等。由于于其它除图图样栏外其其它图栏内内容都是依依附于图样样栏中,所所以在更改改图样栏的的图幅时,其其它图栏的的相应位置置会随着图图样栏的改改变而改变变。由于该该系统必

4、须须与旧版系系统兼容(本本公司的全全部图纸都都由旧版图图栏生成,如如果手工修修改,所费费时间将无无可估计),所所以进入该该系统后,系系统必须自自动地将旧旧版的图栏栏更改为新新的图栏格格式。 图栏的格格式采用在在图块中增增加属性,通通过属性的的方法显示示图栏的文文字内容。而图栏的的填写是通通过在插入入图块的同同时输入属属性的内容容。而图栏栏的编辑则则通过对相相应图块的的属性进行行提取而显显示于对话话框中让用用户进行修修改。 图1为图样栏栏的工作流流程图,图图2为标题栏栏的工作流流程图。 图 1 图图样栏的工工作流程图图 图 2 标标题栏的工工作流程图图 二 程序的设设计 程序序设计的重重点主要有

5、有以下几个个方面:对话框的的设计;怎样通过过对话框的的形式编辑辑图栏内容容;怎样能将将旧版的图图栏转换为为新版的图图栏,以省省去大量的的手工转换换工作;图样栏的的大小怎样样才能直接接地显示在在窗口的状状态栏中;图样栏中中设计单位位名称的显显示处理;图栏程序序的调用。下面介绍绍各部分的的具体设计计。 1. 对话框框的设计: AuutoCAAD软件包包从AuttoCADD R122以来最大大的进步之之一是它提提供的新的的可编程对对话框(PPDB)工工具,使用用DCL对话话框语言再再配以AuutoLIISP语言言,就可以以设计出与与AutooCAD软软件包风格格完全一致致的应用程程序。 通过过DCL

6、对话话框语言,对对图栏的各各对话框进进行设计,在在设计过程程中,主要要是考虑对对话框界面面的协调性性及各控件件安排的合合理性。在在图样栏的的对话框中中,使用选选项按钮(radii0_buuttonn)选择标标准图纸的的图幅大小小,使用弹弹出列表框框(poppup_llist)列出预置置的设计单单位名称,而而使用编辑辑框(eddit_bbox)填填写在单位位列表框中中没有列出出的单位名名称。 在标标题栏中,使使用编辑框框填写名称称、图号、材料、比比例、重量量、总页数数、页码等等,而使用用选项按钮钮选择阶段段标记。 各种种图栏的外外观见图33所示。 图3 各种种图栏的外外观 全部部的图栏对对话框都

7、分分为填写功功能和编辑辑功能两种种,由于对对话框语言言有类似于于“类”的的具有继承承性的功能能,通过将将对话框的的内容部分分使用一个个名称保存存,然后在在另外的对对话框内引引用保存过过的对话框框内容,这这样就可以以使用不同同的标题显显示同样外外观的对话话框内容(如如“填写图图样栏”和和“编辑图图样栏”)。 另外外,由于图图样栏已经经定义了图图纸图幅的的大小,所所以标题栏栏等其它图图栏也就不不必提示用用户选择图图幅而自动动找到填写写的位置。所以在对对话框中除除图样栏外外,其它图图栏的对话话框都不必必出现“图纸大小小”的选项按按钮。 以下下列出图样样栏对话框框的程序内内容: /填写图样样栏部分 d

8、ddtyl:diallog laabel=填写图图样栏; ddrtyll; /编辑图样样栏部分 dmmtyl:diallog laabel=编辑图图样栏; ddrtyll; /图样栏内内容部分 drrtyl:coluumn booxed_sizee; :booxed_coluumn :popuup_liist llabell=设计计单位(&S):; keyy=siign_rro; :eddit_bbox llabell=其它它设计单位位(&O):; keyy=otther; editt_widdth = 20; aalloww_acccept=truee; ok_ccanceel; /图纸大小

9、小内容部分分 bboxedd_sizze:booxed_radiio_roow labbel=图纸大小小; :raadio_buttton laabel=A&00; keyy=siize_00; :raadio_buttton laabel=A&11; keyy=siize_11; :raadio_buttton laabel=A&22; keyy=siize_22; :raadio_buttton laabel=A&33; keyy=siize_33; :raadio_buttton laabel=A&44; keyy=siize_44; 设计计了对话框框以后,还还必须通过过AutooLIS

10、PP语言来调调用及驱动动对话框。在显示图图栏对话框框前,必须须初始化对对话框中各各项的值,对对于没有相相应内容的的项目,使使用默认值值。而对于于具有相关关内容的项项目,则显显示其内容容供用户修修改。 通过过对话框,使使用图栏的的修改更为为直观方便便,操作也也更为简单单。 2. 图栏内内容的编辑辑设计: 旧版版的图栏只只有填写功功能,无自自动编辑功功能,只能能通过文本本编辑功能能对内容逐逐一进行编编辑,而且且对于图样样栏的大小小无法编辑辑,只能删删除旧图样样栏再插入入新图样栏栏,并且更更换图样栏栏后标题栏栏等内容的的位置无法法与新图样样栏对齐,只只能靠手工工进行调整整。这些问问题必须在在程序中进

11、进行完善。 为了了方便各种种图栏的移移动及图栏栏内容的提提取,使用用图块的属属性保存各各种图栏的的内容。填填写图栏时时,是在插插入图块的的同时将图图栏的文字字内容作为为图块的属属性内容插插入图形中中,编辑图图栏时,首首先将相应应图栏的图图块的属性性通过属性性的提取而而取出,并并提供用户户作修改,并并将修改后后的内容通通过图块的的属性更新新而重新显显示于图形形中。图栏栏内容的移移动就是图图块的移动动。 对于于图样栏,不不同的图样样栏的大小小采用不同同名称的图图块,在修修改图样栏栏大小时,采采用的是通通过程序的的控制,首首先取出图图块中设计计单位的名名称,并显显示于对话话框中,然然后删除该该图块,

12、然然后再插入入新的图块块,并将设设计单位的的属性附于于图块上,同同时,过程程控制移动动标题栏、附加栏、签名表等等图栏到新新的图样栏栏的相应位位置上。这这样实现了了图样栏中中图纸大小小的编辑修修改。 以下下为图样栏栏编辑的程程序设计内内容,从中中可以看到到图样栏是是怎样编辑辑的: (ddefunn ty_modii() (seetq hhead(entgget(ssetq headd_t(sssnamme seel_btt 0) ;取得得图样栏图图块的头部部,其中ssel_bbt为图样样栏图块 (ssetq he_zzzdw(entgget(eentneext(ccdr(ccar hhead)

13、;取得设计计单位属性性文本 (seetq zzzdw(geteent hhe_zzzdw1) ;取得设设计单位文文本内容,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

14、aaa) TY) ;组合出图样图块的名称 (command insert tkn non 0,0 zzdw) ;插入附有属性的图样图块 (modi_ipt B-BTL p2p p2) ;移动标题栏等到新的图样栏的相应位置 ) ) ) 3. 旧版图图栏的转换换: 程序序只有保持持向下的兼兼容性才能能得以广泛泛的使用,对对于图栏的的填写程序序,也应该该保证能够够很好地兼兼容旧版的的图栏,并并能顺利地地将旧版的的图栏转换换为新的图图栏。 对于于标题栏的的转换,只只需取得相相应位置上上的标题栏栏的内容,然然后将原来来的标题栏栏内容删除除,再插入入附有各属属性内容的的标题栏图图块。 对于于图样栏,除除删

15、除旧的的图样栏图图块,还必必须将该图图块通过清清理命令将将其清理掉掉,然后再再插入新的的格式的图图样栏,通通过这样就就可以将图图栏进行转转换。 图样样栏转换的的程序如下下: (ssetq headd(enttget(setqq heaad_t (ssnname sel_bt 00) ;取得得图块头部部 ( if (ggetennt heead 666)1) ;查看看图块是否否为旧版图图块 (proogn ;旧版图样样栏时 (prrinc n此此图样栏为为旧版本,将将被更新为为新版本。n) (setqq zzddw(geet_teext c (listt(+ bb_x -1)(+ b_yy 55

16、) (lisst(+ b_x -49)(+ bb_y 339) ;从旧图图样栏中取取得设计单单位名称 (if (not zzdww) (settq zzzdw ) ;如无单位位名称,则则为空字符符串 ) (enttdel geadd_t) ;删除旧旧图样栏 (commmand purrge b geadd_na n) ;清理理旧图块 (ccommaand inseert headd_na nonn 00,0 zzddw);插插入新版图图样栏 ) ) 4. 状态栏栏中显示图图样栏的图图幅大小: 由于于计算机显显示的图形形可以放大大缩小,所所以有些图图幅容易造造成混淆,如如A2图和A3图幅,所所以

17、必须在在一个显着着的位置显显示图幅的的大小,使使用户一目目了然。 虽然然通过调用用图样栏(ddtyyl)命令令可以从对对话框中显显示当前的的图幅大小小,但这仲仲方法必须须通过手工工的操作才才能实现。 如果果将图幅的的大小通过过文本显示示于图形中中,就会使使打印时将将该文本也也打印出来来,同时该该文本也只只能通过缩缩放命令才才能看到,操操作上也不不方便。 通过过比较,将将图样栏的的图幅大小小显示于状状态栏是取取为直接的的。 AuutoCAAD的状态态栏显示于于屏幕的下下端,其中中显示了当当前坐标以以及各种辅辅助工具的的状态(如如捕捉、正正交、栅格格、对象捕捕捉等)。同时由AAutoCCAD提供供

18、的系统变变量MODDEMACCRO可以以在状态栏栏中显示自自定义内容容,控制着着用户定义义的状态栏栏。MODDEMACCRO变量量的值不保保存在图形形文件中,也也不保存在在配置文件件或其它文文件中,所所以设置该该值只能在在ACADD.LSPP文件中用用S:SSTARTTUP函数数加载。 由于于图幅的大大小只是使使用不同名名称的图块块(有一定定规律的名名称),所所以让系统统变量MOODEMAACRO取取得图样栏栏图块名称称并提取图图块大小是是一个复杂杂过程,而而且在每次次的更换图图幅大小时时,都应重重新初始化化MODEEMACRRO的值,这这种方法是是比较繁杂杂的。如果果让MODDEMACCRO

19、显示示系统就是是的值,那那幺在系统统变量的值值改变时,MODEMACRO则会自动刷新其值,而不必重新初始化。 在AAutoCCAD中,系系统提供了了多个可让让用户定义义值的变量量(如userri1uuserii5、userrs1uuserss5等),这些自自定义的系系统变量是是保存在图图形中,这这样就可以以利用这些些系统变量量保存图样样栏的图幅幅大小,只只是在更改改图样栏的的图幅大小小的同时将将自定义的的系统变量量设置为相相应的图幅幅的值。在在图样栏中中,使用的的是自定义义系统变量量userri1。 MOODEMAACRO系系统变量的的内容使用用的是DIIESELL语言。具具体的程序序内容如下

20、下: (ddefunn S:STARRTUP() (settvar moddemaccro A $(gettvar, useeri1)图) (priinc) ) 这样样就可以在在状态栏的的起始处显显示“A0图”的字样,提提示图幅大大小。 5. 图样栏栏中设计单单位名称列列表的设计计: 在图图样栏中,必必须指定设设计单位,如如果所设计计的程序只只供单一的的单位使用用,则可以以将设计单单位名称直直接保存在在图样图块块中,但在在程序设计计过程中,为为了能使该该系统能应应用于多个个部门,甚甚至在设计计过程中还还未知的其其它单位,必必须采用一一种特殊的的方法取得得设计单位位的列表,以以便在不必必修改程序

21、序内容的情情况下在多多个部门及及单位中应应用。 在程程序中,采采用的是将将设计单位位的列表保保存为tyyl.inni文件,该该文件为文文本文件,可可以通过记记事本等打打开进行编编辑,文件件中每个单单位名称为为一行。在在程序运行行过程中将将tyl.ini文文件中的各各个单位名名称显示于于列表中供供用户选择择。由于AAutoCCAD的DCL对话话框语言的的功能不强强(不如VVB的对话话框那样方方便),在在显示列表表及填入图图形中都必必须分别对对tyl.ini文文件的内容容进行引用用。对话框框在取得列列表时不是是取得列表表中的内容容。而是取取得选择项项在列表中中的位置序序号。这样样,只能通通过该序号

22、号重新搜索索tyl.ini文文件以取得得相应序号号的单位名名称: ;显示于列列表中 (seetq ddes_llist (reaad_dees(fiindfiile tyl.ini) (sstartt_lisst ssign_ro) (mapccar add_listt dess_lisst) (addd_liist 其它设计计单位.) (eend_llist) ;通过序号号查找单位位名称 (iff (= des_num (reaad_nuum (ffindffile tyll.inii) (setqq zzddw zzzdw1) (setqq zzddw (ddesi_nam des_num

23、) ) 程序序中,reead_ddes()、readd_numm()、desii_namm()为自自定义函数数,功能如如下: reead_ddes():将指定定的文件中中每行文字字的内容读读出并保存存于指定的的变量中。 RRead_num():返回回指定文件件的行数(由由为设计单单位列表的的数量)。 DDesi_nam():通过过位置序号号返回tyyl.inni文件中中相应序号号的单位名名称。 本系系统除了提提供预置的的列表框外外,还提供供一项“其它设计计单位”以提供一一些临时的的设计单位位填写,这这样可在不不修改tyyl.inni文件的的条件下填填写临时的的设计单位位。在选择择了列表中中的最

24、后一一项“其它设计计单位”时,对话话框将提供供一个文本本编辑框供供用户输入入单位的名名称。程序序如下: (iif (= dess_numm(reaad_nuum(fiindfiile tyl.ini) ;判断是是否选择了了“其它设计计单位” (proggn ;如如果选择了了其它设计计单位 (moode_ttile othher 0) ;使“其它设计计单位”框有效 (moode_ttile othher 2) ;将光标移移动到其它设计计单位”框上 ) ;如果选选择的不是是其它设计计单位 (moode_ttile othher 1) ;使“其它设计计单位”框无效 ) 由于于tyl.ini文文件的设

25、计计单位的各各个不同单单位名称的的排列有先先后之分,在在列表框的的初始化中中,系统总总是默认第第一个单位位名称为设设计单位,这这样就必须须通过程序序及其它方方法将设计计单位定位位在自己常常用的单位位名称上,或或者说希望望系统能够够将前一次次所填写的的设计单位位作为下次次填写的默默认值。 在AAutoCCAD rr13以后后的版本中中,用户可可将自定义义的参数保保存于AuutoCAAD的系统统配置文件件中的ApppDatta段中,以以配置自己己的界面的的自定义参参数。所以以可以将前前一次设计计单位名称称列表选择择项的位置置序号以及及其它设计计单位编辑辑框中的内内容保存于于该段中,以以便在下次次引

26、用图样样栏时对图图样栏进行行初始化。具体程序序如下: ;取得设计计单位前次次选择的位位置序号。 (if (getccfg AppDData/Tyl/Numbber) (setqq dess_numm(atooi(geetcfggApppDataa/Tyll/Nummber) (ssetq des_num 0) ) (seet_tiile signn_no (ittoa ddes_nnum) ;取得其它它单位的名名称 (if (settq zzzdw1 (gettcfg ApppDataa/Tyll/Othher) (settq_tiile otheer zzzdw11) ) ;保存设计计单位序

27、号号及其它单单位名称 (ssetcffg AAppDaata/TTyl/NNumbeer (itoaa dess_numm) (iff zzddw1 (seetcfgg ApppDatta/Tyyl/Otther zzddw1) ) 这样样就可以不不必考虑设设计单位列列表的排列列问题,甚甚至对于设设计单位不不在列表中中而使用其其它框进行行填写也不不必每一次次填写图样样栏时都进进行输入,系系统可以取取得上次保保存的其它它单位名称称显示于其其它框中。 对于于设计单位位名称列表表的tyll.inii文件,在在本系统中中是通过在在该系统的的安装程序序中生成。本系统设设计完成后后使用了IInstaall

28、Shhieldd生成安装装程序,所所以可以通通过安装程程序的专用用语言生成成tyl.ini文文件。在IInstaallShhieldd生成的安安装程序中中有要求用用户输入姓姓名及工作作单位的向向导对话框框,如图55,这样就就可以通过过取得用户户输入的工工作单位并并生成tyyl.inni文件。该系统在在不同的单单位使用时时,由于在在安装时所所输入的单单位名称为为本单位名名称,所以以在填写图图样栏时就就能产生本本单位名称称的图样栏栏。 其程程序如下(程程序内容置置于ProocesssAfteerDattaMovve()过过程中): szzFileeNamee = FILEE_TYLL; iff(

29、FiindFiile ( TARRGETDDIR , szFFileNName , svvResuult ) 0 ) thhen SdSShowMMsg( MSGG_CREEATE_TYL , TRRUE); DDelayy(2); iif (CCreatteFille ( nvFiileHaandlee , TTARGEETDIRR , sszFilleNamme )0) tthen MeessaggeBoxx(MSSG_UNNCREAATE_TTYL,IINFORRMATIION); iif(CoopyFiile(sszFilleNamme, sszFilleNamme)00) thhen MesssageeBox(MSGG_UNCCOPY_TYL,INFOORMATTION); endiif; elsse if ( WriiteLiine ( nvFFileHHandlle , svCoompanny)图栏(&TT) ID_H10TTYL 图样栏(&T) CCCddtyyl ID_HH10BTTL 标标题栏(&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论