Тема: Как программно создавать 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();
     };
 }

Спасибо.

Re: Как программно создавать LEADER?

Эээ, народ, не парьтесь.
Я уже разобрался.

Re: Как программно создавать LEADER?

Меня этот вопрос тоже интересовал, может подскажешь что делать?

Re: Как программно создавать LEADER?

Ну так в чём же дело было?
Не томи, поделись с народом......

Re: Как программно создавать LEADER?

Рабочий код:

 ads_point ads_ptBase, ads_ptRes;
 AcGePoint3d ptLBegin, ptLEnd;
 AcDbLeader* pLabel;
 AcDbMText* pText;
 AcDbBlockTable *pBlockTab;
 AcDbBlockTableRecord *pBlockTabRec;
 if(ads_getpoint(NULL, NULL, ads_ptBase) != RTNORM)
  return;
 ptLBegin[0] = ads_ptBase[0];
 ptLBegin[1] = ads_ptBase[1];
 if(ads_getpoint(ads_ptBase, NULL, ads_ptRes) != RTNORM)
  return;
 ptLEnd[0] = ads_ptRes[0];
 ptLEnd[1] = ads_ptRes[1];
 acdbCurDwg()->getBlockTable(pBlockTab, AcDb::kForWrite);
 pBlockTab->getAt(ACDB_MODEL_SPACE, pBlockTabRec, AcDb::kForWrite);
 pText = new AcDbMText;
 pText->setTextHeight(1);
 pText->setAttachment(AcDbMText::AttachmentPoint::kBottomLeft);
 pText->setLocation(ptLEnd);
 pText->setContents("Привет");
 pBlockTabRec->appendAcDbEntity(idTmp, pText);
 pText->close();
 pLabel = new AcDbLeader;
 pLabel->appendVertex(ptLBegin);
 pLabel->appendVertex(ptLEnd);
 pBlockTabRec->appendAcDbEntity(idRetVal, pLabel);
 pLabel->close();
 pBlockTab->close();
 pBlockTabRec->close();
 acdbOpenAcDbEntity(pEnt, idRetVal, AcDb::kForWrite);
 AcDbLeader::cast(pEnt)->attachAnnotation(idTmp);
 AcDbLeader::cast(pEnt)->evaluateLeader();
 pEnt->close();