【原创】Amodeler实体与ACAD实体之间进行转换

本文档主要是针对于自定义实体(基于Amodeler::Body)与Objectarx中的AcDb3dSolid实体之间的转换。

1.       从Amodeler::Body到AcDb3dSolid的转换

a)         传统的方式:由于Amodeler::Body中,你可以迭代得到它的基本几何元素(面、线、点、表面等),你可以根据这些数据,对应生成AcDb3dSolid应该要包括的基本几何元素,从而实体转换。

b)         中间文本方式:我们都知道Amodeler和ACAD都是基本ACIS几何内核的,而ACIS几何内核都可以用SAT文件来描述,所以,我们可以把Amodeler或ACAD中的几何模型导出成SAT文件,然后再导入,实现两种实体之间的转换;经学习,发现ACAD公司对Amodeler的导出接口重新进行了包装,竟然还可以导出由ACAD公司描述的颜色属性,但遗憾的是ACAD公司对Amodeler的导入接口没有实现。

Example:

                   AModeler::Body body = AModeler::Body::box(AModeler::Point3d(0,0,0),AModeler::Vector3d(100,100,100));

                   ACHAR bodyFileName[] = _T("cd.txt");

                   body.saveToSat(bodyFileName,true);

                  AcDbVoidPtrArray createArray;

                  es = AcDbBody::acisIn(bodyFileName,createArray);

                void* pVoid = createArray.at(0);

                AcDbEntity* pEntity = static_cast<AcDbEntity*>(pVoid);

                if( pEntity->isKindOf(AcDb3dSolid::desc()))

                {

                          AcDb3dSolid* pBox = static_cast<AcDb3dSolid*>(pEntity);

                          if( append(pBox))

                          {

                                   pBox->close();

                          }

                          else

                          {

                                   delete pBox;

                          }

}

2.       从AcDb3dSolid到Amodeler::Body的转换

a)         传统的方式:参考utils\brep\samples\brepsamp中的例子,把AcDb3dSolid中的基本几何元素读出来,然后根据数据生成Amodeler库中对应的基本几何元素,压进创建的Body中。

 

 

如有什么不对,请大家指正。

转载于:https://www.cnblogs.com/lihao102/archive/2013/04/14/3020239.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值