嗨,迈克,
使用爆炸怎么样?
- //++--
- class CommandDoit : public OdStaticRxObject
- {
- public:
- const OdString localName() const { return globalName(); }
- const OdString groupName() const { return DD_T("DRXGLOBAL"); }
- const OdString globalName() const { return OdString("doit"); }
- void execute(OdEdCommandContext* pCmdCtx)
- {
- OdDbCommandContextPtr pDbCmdCtx(pCmdCtx);
- OdDbDatabasePtr pDb = pDbCmdCtx->database();
- OdDbUserIO* pDbIO = pDbCmdCtx->dbUserIO();
- try
- {
- OdDbSelectionSetPtr pFirstSel = pDbIO->select
- (DD_T("\nSelect a Curve: "), OdEd::kSelSingleEntity);
- if(pFirstSel.isNull()) { throw OdError(L"\nYou missed");}
- OdDbObjectIdArray ids = pFirstSel->objectIdArray();
- if(ids.length() == 0) {throw OdError(L"\nYou missed");}
- OdDbEntityPtr pEnt = ids[0].safeOpenObject();
- OdDbSplinePtr pSpline = OdDbSpline::cast(pEnt);
- if(pSpline.isNull()){throw OdError(L"\nCannot cast as curve");}
- OdRxObjectPtrArray set;
- if( pSpline->explodeGeometry(set) == eOk )
- {
- OdDbObjectId spaceId = pDb->getModelSpaceId();
- OdDbBlockTableRecordPtr pBtr = spaceId.safeOpenObject(OdDb::kForWrite);
- for(size_t i = 0 ; i appendOdDbEntity((OdDbEntity*)set[i].get());
- pSpline->upgradeOpen();
- pSpline->erase();
- }
- }
- catch (OdException &ex)
- {
- pDbIO->putString(ex.description());
- }
- }
- };
|