TurboC修改AutoCAD的图素

上传人:汽*** 文档编号:432599221 上传时间:2023-08-04 格式:DOCX 页数:7 大小:12.05KB
返回 下载 相关 举报
TurboC修改AutoCAD的图素_第1页
第1页 / 共7页
TurboC修改AutoCAD的图素_第2页
第2页 / 共7页
TurboC修改AutoCAD的图素_第3页
第3页 / 共7页
TurboC修改AutoCAD的图素_第4页
第4页 / 共7页
TurboC修改AutoCAD的图素_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《TurboC修改AutoCAD的图素》由会员分享,可在线阅读,更多相关《TurboC修改AutoCAD的图素(7页珍藏版)》请在金锄头文库上搜索。

1、TrackMouseEvent请使用_TrackMouseEvent2).在commctrl.h显示为_TrackMouseEvent(),请注意下划线.3).可能TrackMouseEvent()不支持Win98(在NT中工作得非常好),建议你结合WM_MOUSEMOVE消息和 SetCapture()函数,当鼠标移出窗口时你依然可以控制.Turbo C修改Auto CAD的图素 Auto CAD是一套高效的绘图工具,在地图制图和计算机辅助设计方面得到广泛的应用。地籍图的数字化和编辑中,常会遇到图形的放大和缩小等情况,而其中的部分图素则要求保持原样,如界址点的园圈要求无论在何种比例尺地籍图中

2、其半径均为0.4mm,注记也必须满足规范要求。如何在图形比例变化后,复原部分图素的大小,是地籍制图工作中非常重要的问题。本文讨论运用Turbo C语言直接读写Auto CAD的数据交换文件并修改其部分图素的方法。Auto CAD图形数据库是以十分紧缩的格式存储的,对用户程序来说,很难直接读出,为便于数据交换,Auto CAD提供了数据交换文件DXF文件。?此文件是一种专用的ASCII文件,其一般结构为:HEADER(标题)节、?TABLES?(表格)节、BLOCK(块)节、ENTITIES(图素)节、EOF(文件结束)节,共五个部分。每个部分由若干组构成,每个组由两行组成,首行为组代码,其格式

3、为三个字符域向右对齐,左边填满空格,该组的第二行是组值,采用的格式取决于由组代码规定的组的类型。部分组代码及其含义:0 标识一个图素表目的开始;1 一个图素的初始文本值;6 线型名;8 层次名;10起始X坐标(线或正文图素的起始点,园的园心,等等);11-18其它X坐标;20起始Y坐标(线或正文图素的起始点,园的园心,等等);21-28其它Y坐标;30-38Z坐标;40-48浮点值(如文字高度、比例因子等);50-58角度;62颜色号。70-78整数值(如文本注记方式等)DXF文件各个节的代码及顺序为:0 (开始标题节) 0 (开始图素节) SECTION SECTION 2 2 HEADER

4、 ENTITIES . . (图素部分) 0 (开始表节) 0 (终止图素) SECTOIN ENDSEC 2 0 (文件结束节) TABLES EOF (文件结束) . 0 (开始块节) SECTION 2 BLOCKS 每个图素从标识图素的0开始,分别为图素名、层次组码、层次名等,部分图素的组代码为:LINE 10和20(起始点),11和21(终止点)。POINT 10和20。CIRCLE 10和20(园心),40(半径)。ARC 10和20(园心),40(半径),50(起始角度),51(终止角度)。TEXT 10和20(插入点),40(高度),1(文字值),50(旋转角度,可选项),41

5、(X的比例因子,可选项),51(倾斜角,可选项),72(对齐类型,可选项),等。.以上图素均有颜色可选项,若用系统颜色,则此项省略,否则,有组码62和组值(即所用的颜色值)。以部分图素为例,其在DXF文件中的结构为:0 (图素开始) 11 TEXT 31.877698 (终点X值) 8 21 0 (0层) 24.488029 (终点Y值) 62 31 1 (1号颜色) 0.0 (终点Z值) 10 0 14.419423 (插入点X值) CIRCLE 20 8 29.015994 (插入点Y值) 0 (0层) 30 10 0.0 (插入点Z值) 21.021801 (园心X值) 40 20 2.

6、0 (文本高度) 14.931725 (园心Y值) 1 30 asdasf (文本值) 0.0 (园心Z值) 50 40 10.0 (旋转角度值) 2.993616 (半径R值) 72 0 1 (对齐方式) ARC 11 8 20.0 (对齐点X值) 0 21 10 30.0 (对齐点Y值) 40.578556 (中心X值) 31 20 0.0 (对齐点Z值) 16.275509 (中心Y值) 0 30 LINE 0.0 (中心Z值) 8 40 0 (0层) 6.505316 (半径R值) 62 50 3 (三号颜色) 54.138194 (起点角度值) 10 51 24.333769 (起点

7、X值) 176.45641 (终点角度值) 20 25.039355 (起点Y值) 30 0.0 (起点Z值) 以修改CIRCLE的半径和TEXT的高度为例。由于大部分图素有可选项,数据结构不固定,因此难以用Turbo C的结构体进行读写。另外,DXF文件的组码不是左对齐,也无法按整型数据读取。Turbo C提供了两个函数:fgets(str,n,fp)和fputs(str,fp)。前者是从fp指向的文件输入n-1个字符,并把它们放到字符数组str中。若在读入n-1个字符结束之前遇到换行符或EOF读入结束。后者是把str中的字符输入到fp指向的文件中。设图素的可选项均为系统默认值,源程序如下:

8、/*修改DXF文件中的园的半径和TEXT的高度*/#include stdio.hFILE *fp,*fp0;main()char s140,s240,s340,*ss;int i;char outfile12;printf(输入DXF文件名(含扩展名): );scanf(%s,outfile);if (fp=fopen(outfile,r)=NULL)printf(can not open filen);exit(0);if (fp0=fopen(dxf0.dxf,w)=NULL)printf(error!n);exit(0);while (! feof(fp)fgets(s1,20,fp)

9、;fputs(s1,fp0);if (s10=C& s11=I & s12=R)for (i=1;i=9;i+) fgets(s1,20,fp);fputs(s1,fp0);fgets(s1,20,fp);fputs(1.4n,fp0);if (s10=T& s11=E & s12=X & s13=T)for (i=1;i=11;i+) fgets(s1,20,fp);fputs(s1,fp0);fgets(s1,20,fp);fputs(2.0n,fp0);fclose(fp);fclose(fp0);运行此程序即可将园的半径均修改为0.4,将文本注记的高度均修改为2.0,修改的结果保存到DXF0.DXF中,在Auto CAD状态下用DXFIN?命令即可调出修改后的图形。当可选项为非默认值时,读者可仿照此方法,设计相应的子函数,通过组码及其值的判断完成相应图素的修改。也可以实现交互式编辑。此方法在地籍制图的实际工作中,已得到应用,并收到良好的效果,特别在批量修改方面,其优点更为突出。参考文献1 谭浩强编著,C程序设计,清华大学出版社,1991年

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号