- UID
- 281509
- 积分
- 1054
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2005-6-21
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
最近突然发现自己的自定义类在保存或打开DXF类型文件存在问题。问题在于我的类中数据太多了。这在DWG中不是问题,但在DXF中,我定义的同类型的数据的个数超出了DXF对每种数据类型允许的个数。大家看下面的DXF代码
pFiler->writeItem(AcDb::kDxfXCoord, m_StartPoint);
pFiler->writeItem(AcDb::kDxfXCoord + 1, m_StrXdPt);
pFiler->writeItem(AcDb::kDxfXCoord + 2, m_StrXdGsPt);
pFiler->writeItem(AcDb::kDxfXCoord + 3, m_EndPoint);
pFiler->writeItem(AcDb::kDxfXCoord + 4, m_EndXdPt);
pFiler->writeItem(AcDb::kDxfXCoord + 5, m_EndXdGsPt);
pFiler->writeItem(AcDb::kDxfSoftPointerId, m_StrEntityId1);
pFiler->writeItem(AcDb::kDxfSoftPointerId + 1, m_StrEntityId2);
pFiler->writeItem(AcDb::kDxfSoftPointerId + 2, m_StrXdBasLineId);
pFiler->writeItem(AcDb::kDxfSoftPointerId + 3, m_StrSecEntityId1);
pFiler->writeItem(AcDb::kDxfSoftPointerId + 4, m_StrSecEntityId2);
pFiler->writeItem(AcDb::kDxfSoftPointerId + 5, m_EndEntityId1);
pFiler->writeItem(AcDb::kDxfSoftPointerId + 6, m_EndEntityId2);
pFiler->writeItem(AcDb::kDxfSoftPointerId + 7, m_EndXdBasLineId);
pFiler->writeItem(AcDb::kDxfSoftPointerId + 8, m_EndSecEntityId1);
pFiler->writeItem(AcDb::kDxfSoftPointerId + 9, m_EndSecEntityId2);
ARX是否允许自定义类中同一类型的数据的个数是任意的呢?
这个问题一解决了,因为我全部采用自定义类,所以DXF文件已失去了意义,DXF文件本来的目的是为了方便数据交换,但反过来想,即使能保存为DXF文件,在其它的系统上如果不加载我的自定义类,文件也是无法打开的。在其他系统上打开我的文件的目的主要是浏览和绘图输出而已。所以解决问题的关键在于每个类都要作好分解功能,把他转化为最基本的AutoCAD图元。然后再以这些基本的元素保存为DXF文件,这样在其他的CAD系统或非CAD系统(支持读取DXF文件功能的系统)均能打开我的文件。这样就完全解决我所担心的问题,不知道大家对此有何看法。 |
|