ObjectARX
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

acedVportTableRecords2Vports() results in AutoCAD crash

0 REPLIES 0
Reply
Message 1 of 1
UmaSoft
423 Views, 0 Replies

acedVportTableRecords2Vports() results in AutoCAD crash

Hi,

I want to change my UCS to a named UCS in all viewports.

To do this I do the following steps:

  1) Look for the AcDbObjectId of the named UCS.
  2) Call acedVports2VportTableRecords();
  3) Run over all AcDbViewportTableRecord objects in the AcDbViewportTable obtained by AcDbDatabase->getSymbolTable(AcDbViewportTable,AcDb::kForRead)
  4) For every AcDbViewportTableRecord object call AcDbViewportTableRecord->setUcs(AcDbObjectId)
  5) Call acedVportTableRecords2Vports();

But at calling acedVportTableRecords2Vports(); AutoCAD crashes.

I ran this on AutoCAD 2012 and AutoCAD 2013.

Is this the correct method for changing UCS in all viewports?

Thanks for helping me.

Erik.


---------------------------------------------------------------

void
WcArxNamedUcs_SetCurrentInAllViewports(AcDbDatabase* db,const WcString ucsName){
  AcDbObjectId currentUcs = WcArxNamedUcs_Get(db,ucsName);

  WcArxCES(acedVports2VportTableRecords());

  AcDbViewportTable* pViewportTbl;

  WcArxCES(db->getSymbolTable(pViewportTbl,AcDb::kForRead));

  try{ // pViewportTbl open
    AcDbViewportTableIterator * pViewportTblRecIterator;

    WcArxCES(pViewportTbl->newIterator(pViewportTblRecIterator));

    try{ // pViewportTbl open, pViewportTblRecIterator allocated
      for(pViewportTblRecIterator->start();!pViewportTblRecIterator->done();pViewportTblRecIterator->step()){
        AcDbViewportTableRecord * pViewportTblRec;
        WcArxCES(pViewportTblRecIterator->getRecord(pViewportTblRec,AcDb::kForWrite));

        try{ // pViewportTbl open, pViewportTblRecIterator allocated, pViewportTblRec open
          WcArxCES(pViewportTblRec->setUcs(currentUcs));
        }catch(WcException& e){
          pViewportTblRec->close();
          throw(e);
        }
        WcArxCES(pViewportTblRec->close());
      }

    }catch(WcException& e){
      delete pViewportTblRecIterator;
      throw(e);
    }

    delete pViewportTblRecIterator;

  }catch(WcException& e){
    pViewportTbl->close();
    throw(e);
  }

  WcArxCES(pViewportTbl->close());

  WcArxCES(acedVportTableRecords2Vports());

  return;
}

0 REPLIES 0

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report

”Boost