此例程尝试分解块并将属性转换为 Text。
我附上了编译好的DRX模块,命令名称是burst
- class CommandBlockEx : public OdStaticRxObject
- {
- public:
- const OdString localName() const { return globalName(); }
- const OdString groupName() const { return OdString(_T("DRXGLOBAL")); }
- const OdString globalName() const { return OdString(_T("burst")); }
- void execute(OdEdCommandContext* pCmdCtx)
- {
- ASSERT(pCmdCtx != NULL);
- if(pCmdCtx == NULL)
- return;
- OdDbCommandContextPtr pDbCmdCtx(pCmdCtx);
- OdDbUserIOPtr pDbIO = pDbCmdCtx->dbUserIO();
- OdDbDatabasePtr pDb = pDbCmdCtx->database();
- if(pDb.isNull())
- return;
- OdRxObjectPtrArray entsToAdd;
- OdString message = DD_T("\nSelect Blocks to Explode: ");
- OdDbSelectionSetPtr pSelectionSet = pDbIO->select(message);
- OdDbObjectIdArray ids = pSelectionSet->objectIdArray();
- pDbIO->putString(DD_T("\nFiltering non Block Entities: "));
- ProgressMeter meter(ids.length());
- meter.start();
- for(unsigned int i = 0 ; i isKindOf(OdDbBlockReference::desc()))
- continue;
- OdDbBlockReferencePtr pBlockReference = objectPtr;
- if(pBlockReference.isNull())
- continue;
- OdDbObjectIteratorPtr pAttributeIterator =
- pBlockReference->attributeIterator();
- for (pAttributeIterator->start();
- !pAttributeIterator->done();
- pAttributeIterator->step())
- {
- OdDbAttributePtr pAttribute =
- pAttributeIterator->objectId().openObject(OdDb::kForRead);
- OdDbTextPtr pText = OdDbText::createObject();
- pText->setTextString(pAttribute->textString());
- pText->setColor(pAttribute->color());
- pText->setHeight(pAttribute->height());
- pText->setPosition(pAttribute->position());
- pText->setRotation(pAttribute->rotation());
- pText->setTextStyle(pAttribute->textStyle());
- pText->setVerticalMode(pAttribute->verticalMode());
- entsToAdd.push_back((OdRxObjectPtr)pText);
- }
- pBlockReference->explode(entsToAdd);
- pBlockReference->upgradeOpen();
- pBlockReference->erase();
- OdDbBlockTableRecordPtr pBtr =
- pBlockReference->ownerId().openObject(OdDb::kForWrite);
- if(pBtr.isNull())
- continue;
- for(unsigned int j = 0 ; j isKindOf(OdDbAttributeDefinition::desc()))
- pBtr->appendOdDbEntity(ePtr);
- }
- }
- meter.stop();
- pDbIO->putString(DD_T("\n "));
- }
- };
1kfzy1m1q30.png
本帖以下内容被隐藏保护;需要你回复后,才能看到! 游客,如果您要查看本帖隐藏内容请 回复 |