ObjectARX 炸开实体程序段

	/*函数名称:AppendEntity()创建日期:20160922 LukyRen功能描述:获取空间模型实体ID参数描述:pEnt :实体返回类型:实体Id*/AcDbObjectId McAcad:: AppendEntity(AcDbEntity *pEnt){AcDbDatabase *pDb = acdbHostApplicationServices()->workingDatabase();AcDbBlockTable *pBt;pDb->getBlockTable(pBt, AcDb::kForRead);AcDbBlockTableRecord *pBtr;pBt->getAt(ACDB_MODEL_SPACE, pBtr, AcDb::kForWrite);AcDbObjectId entId;pBtr->appendAcDbEntity(entId, pEnt);pBtr->close();pBt->close();pEnt->close();return entId;}/* 函数名称:		    PtToStr创建  人: 			LuckyRen创建日期: 			2010.08.01功能描述: 			将三维的点转化为字符串返回类型: 			字符串参数意义:           pt:要转化的三维点修改记录: 	*/CString McAcad::PtToStr(const AcGePoint3d& pt){CString sT;sT.Format(_T("%lf,%lf,%lf"),pt.x,pt.y,pt.z);return sT;}/*
函数名称: ExplodeEntity()
创建日期:20160922 LuckyRen
功能描述:炸开组装图实体
参数描述:无
*/void McAcad::ExplodeEntity(){ads_name en;ads_point pt;if(acedEntSel(_T("\n选择所要炸开的实体:"),en,pt) != RTNORM){return;}AcDbObjectId entId;Acad::ErrorStatus es = acdbGetObjectId(entId,en);if(es != Acad::eOk)return;AcDbEntity *pEnt = NULL;acdbOpenAcDbEntity(pEnt,entId,AcDb::kForWrite);AcDbVoidPtrArray pExps;AcDbEntity *pExpEnt = NULL;int count = 0;if(pEnt->explode(pExps) == Acad::eOk){count = pExps.length();//炸开实体后的个数for(int i=0; i isA()->name());if(AcDbLine::cast(pExpEnt) != NULL){//直线AcDbLine* pLine = AcDbLine::cast(pExpEnt);CString sT1,sT2;AcGePoint3d P1;AcGePoint3d P2;P1 = pLine->startPoint();P2 = pLine->endPoint();sT1.Format(_T("\n   开始点:%s"),McAcad::PtToStr(P1));sT2.Format(_T("\n   结束点:%s"),McAcad::PtToStr(P2));acutPrintf(_T("\n %s%s%s"),sT1, sT2);}AppendEntity(pExpEnt);}pEnt->erase(true);}else{acutPrintf(_T("\n该实体对象不能被分解!"));}pEnt->close();}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部