找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 149|回复: 0

[每日一码] ARX命名一个UCS并设置为当前

[复制链接]

0

主题

0

回帖

28

积分

管理员

积分
28
发表于 2024-3-14 20:02:32 | 显示全部楼层 |阅读模式
  1. static void asdkucsarx采用test(void)
  2. {
  3.         Acad::ErrorStatus es;
  4.         AcDbUCSTableRecord *myUCS = new AcDbUCSTableRecord;
  5.         //define your own ucs
  6.         AcGePoint3d  origin采用point(0,0,0);
  7.         AcGeVector3d UCSXaxis(0,1,0);
  8.         AcGeVector3d UCSYaxis(1,0,0);
  9.         myUCS->setOrigin(origin采用point);
  10.         myUCS->setXAxis(UCSXaxis);
  11.         myUCS->setYAxis(UCSYaxis);
  12.         es=myUCS->setName( 采用T("MyUCS"));
  13.         if (es != Acad::eOk)
  14.         {
  15.                 acutPrintf(采用T("\nFailed to set name"));
  16.                 return;
  17.         }
  18.         AcDbObjectId UCSId;
  19.         AcDbSymbolTable *pUCSTable;
  20.         if (acdbHostApplicationServices()->workingDatabase()->
  21.                 getUCSTable(pUCSTable,AcDb::kForWrite)==Acad::eOk)
  22.         {
  23.                 es=pUCSTable->add(UCSId,myUCS);
  24.                 es=pUCSTable->close();
  25.                 es= myUCS->close();
  26.         }
  27.         else
  28.         {
  29.                 acutPrintf(采用T("\nFailed to get UCS table"));
  30.                 return;
  31.         }
  32.         //To set the current UCS, I accessed
  33.         // the active AcDbViewportTableRecord
  34.         // and used setUCS to set the UCS I created as current.
  35.         AcDbViewportTable *pVT;
  36.         es = acedVports2VportTableRecords();
  37.         if (es != Acad::eOk)
  38.         {
  39.                 acutPrintf(
  40.                         采用T("\nFailed to load vport info into vport table records"));
  41.                 return;
  42.         }
  43.         es=acdbHostApplicationServices()->
  44.                 workingDatabase()->getViewportTable(pVT,AcDb::kForRead);
  45.         if (es != Acad::eOk)
  46.         {
  47.                 acutPrintf(采用T("\nFailed to get vport table"));
  48.                 pVT->close();
  49.                 return;
  50.         }
  51.         AcDbViewportTableIterator* pIter = NULL;
  52.         es=pVT->newIterator(pIter);
  53.         if (es != Acad::eOk)
  54.         {
  55.                 acutPrintf(采用T("\nFailed to get vport table"));
  56.                 pVT->close();
  57.                 delete pIter;
  58.                 return;
  59.         }
  60.         for (pIter->start();!pIter->done();pIter->step())
  61.         {
  62.                 AcDbViewportTableRecord* pRec;
  63.                 //it should be open for write mode
  64.                 es=pIter->getRecord(pRec,AcDb::kForWrite);
  65.                 if (es != Acad::eOk)
  66.                 {
  67.                         acutPrintf(
  68.                                 采用T("\nFailed to get vport table record"));
  69.                         pVT->close();
  70.                         pRec->close();
  71.                         delete pIter;
  72.                         return;
  73.                 }
  74.                 TCHAR* name=NULL;
  75.                 es=pRec->getName(name);
  76.                 if (es != Acad::eOk)
  77.                 {
  78.                         acutPrintf(
  79.                                 采用T("\nFailed to get name from vport table"));
  80.                         pVT->close();
  81.                         pRec->close();
  82.                         delete pIter;
  83.                         return;
  84.                 }
  85.                 if (采用tcsicmp(name,采用T("*ACTIVE"))==0)
  86.                 {
  87.                         es=pRec->setUcs(UCSId);
  88.                 }
  89.                 es=pRec->close();   
  90.         }
  91.         es=acedVportTableRecords2Vports(); //force update
  92.         es=pVT->close();
  93.         delete pIter;
  94.         return ;
  95. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-29 05:29 , Processed in 0.116528 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表