iamecho 发表于 2005-9-17 10:24:00

求助:关于DXF文件格式

<P>要做一个对AutoCAD中所使用的DXF文件格式的一个转换程序,因为DXF文件格式既能描绘二维图形也能描述三维实体,而要转换成的目标文件格式只能描述二维矢量图形,所以先要确定要转换的DXF文件描述的是三维图形还是二维的,由此做出相应的处理。在这里想要问下各位:</P>
<P>(1)在DXF文件格式里,二维和三维的区分是在源码中某一处通过某个组码有专门的区分,还是仅仅是如果是三维的话,每个Z坐标有对应的数值,而如果是二维的话,每个Z坐标数值都为0 ?</P>
<P>(2)同时还想问一下,DXF文件中Image这个实体,它在源码中是怎么被描述的?是通过描述每一个像素点的位置来组成这样一幅图像的吗?</P>

yxp 发表于 2005-9-17 15:28:00

如果仅仅转换个别组码还比较简单。对象复杂了就得深入研究了。

ZZXXQQ 发表于 2005-9-17 22:31:00

<P>1、不用管二维三维,读取DXF时只读取可识别实体的X、Y坐标即可。</P>
<P>2、一般IMAGE文件只启记录文件名。</P>

iamecho 发表于 2005-9-19 08:59:00

<P>但是对于一个三维的DXF图形文件表示,若是想要写入二维的图形目标文件,单单忽略掉其Z坐标值,认为写入x,y值就够了,这样不妥吧?</P>
<P>我的想法是有没有什么地方可以区分二维三维的DXF图形,若能区分,对于二维的当然是直接取x,y坐标值,对于三维的要么提示是三维的图形不做处理,不然复杂点的话应该是做三视图一类的变换之后再处理吧?</P>

ZZXXQQ 发表于 2005-9-19 14:28:00

<P>三维实体的组码可以不读,只读ARC、CIRCLE、LINE、POLYLINE即可。或者凡是Z坐标不为零的忽略。</P>
<P>顺便问一下,楼主读DXF是做什么转换?</P>

iamecho 发表于 2005-9-20 09:45:00

<P>line,circle,ellipse,lwpolyline,arc,text,mtext这些图元组码已经转换了~如果说“凡是Z坐标不为0的忽略”,这样子转换出来的图形同原来的图象相比,必然丢失了太多信息会造成图形较大层面上的失真,还不如如果判断到源DXF文件包含到三维实体,就放弃对整个源DXF图像的处理,仅仅给出用户提示说明。</P>
<P>在这种情况下,要考虑的事情自然就变成:如果说DXF源文件在某一处有专门的组码来对其是二维DXF文件还是三维DXF文件作说明的话,这样我的程序只需读取那个组码值即可直接判断。但如果没有的话,恐怕我只有一一读取实体,然后判断它是不是存在着实体其Z值不为0的,一旦判断到就结束整个程序放弃处理……(傻不傻啊~)</P>
<P>现在还要处理dimension,image,insert还有复杂曲线等……要死了T-T</P>
<P>顺便回楼上的,是做DXF文件至SVG的转换~</P>
<P>&nbsp;</P>
页: [1]
查看完整版本: 求助:关于DXF文件格式