Тема: Как программно создавать LEADER?
Привет!
Нужно программно создавать LEADER. Ниже прога, которая это делает. Leader добавляется, но аннотация с ним не ассоциирована (при ее перемещении leader не пересчитывается, как это происходит, если я использую команду LEADER). Думал, что надо добавить их в списки реакторов друг друга, но это не помогло. Что нужно сделать?
void newleader() { AcDbMText *pText=new AcDbMText(); pText->setColorIndex(251); pText->setLayer("Редактируемые объекты"); pText->setContents("Annotation text"); AcGePoint3d insPnt(5,5,0); pText->setLocation(insPnt); pText->setTextHeight(2); AcDbBlockTable *pBlockTable; if (Acad::eOk==acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable, AcDb::kForRead)) { AcDbBlockTableRecord *pBlockTableRecord; if (Acad::eOk==pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite)) { AcDbObjectId ptextObjId, pleadObjId; pBlockTableRecord->appendAcDbEntity(ptextObjId, pText); pText->upgradeOpen(); AcDbLeader *pLead=new AcDbLeader(); insPnt[X]=insPnt[Y]=insPnt[Z]=0; pLead->appendVertex(insPnt); insPnt[X]=insPnt[Y]=5; insPnt[Z]=0; pLead->appendVertex(insPnt); insPnt[X]=35; pLead->appendVertex(insPnt); pLead->attachAnnotation(ptextObjId); pLead->setColorIndex(251); pLead->setDatabaseDefaults(); pLead->evaluateLeader(); pBlockTableRecord->appendAcDbEntity(pleadObjId, pLead); pLead->upgradeOpen(); // Это не дает результата pText->addPersistentReactor(pleadObjId); pText->close(); pLead->addPersistentReactor(ptextObjId); pLead->close(); pBlockTableRecord->close(); }; pBlockTable->close(); }; }
Спасибо.