找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 599|回复: 0

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

[复制链接]

已领礼包: 13个

财富等级: 恭喜发财

发表于 2016-10-24 16:35:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 static void asdkucsarx_test(void)
{
        Acad::ErrorStatus es;
        AcDbUCSTableRecord *myUCS = new AcDbUCSTableRecord;

        //define your own ucs
        AcGePoint3d  origin_point(0,0,0);
        AcGeVector3d UCSXaxis(0,1,0);
        AcGeVector3d UCSYaxis(1,0,0);

        myUCS->setOrigin(origin_point);
        myUCS->setXAxis(UCSXaxis);
        myUCS->setYAxis(UCSYaxis);

        es=myUCS->setName( _T("MyUCS"));
        if (es != Acad::eOk)
        {
                acutPrintf(_T("\nFailed to set name"));
                return;
        }

        AcDbObjectId UCSId;
        AcDbSymbolTable *pUCSTable;

        if (acdbHostApplicationServices()->workingDatabase()->
                getUCSTable(pUCSTable,AcDb::kForWrite)==Acad::eOk)
        {
                es=pUCSTable->add(UCSId,myUCS);
                es=pUCSTable->close();
                es= myUCS->close();
        }
        else
        {
                acutPrintf(_T("\nFailed to get UCS table"));
                return;
        }

        //To set the current UCS, I accessed
        // the active AcDbViewportTableRecord
        // and used setUCS to set the UCS I created as current.
        AcDbViewportTable *pVT;
        es = acedVports2VportTableRecords();
        if (es != Acad::eOk)
        {
                acutPrintf(
                        _T("\nFailed to load vport info into vport table records"));
                return;
        }

        es=acdbHostApplicationServices()->
                workingDatabase()->getViewportTable(pVT,AcDb::kForRead);
        if (es != Acad::eOk)
        {
                acutPrintf(_T("\nFailed to get vport table"));
                pVT->close();
                return;
        }

        AcDbViewportTableIterator* pIter = NULL;

        es=pVT->newIterator(pIter);
        if (es != Acad::eOk)
        {
                acutPrintf(_T("\nFailed to get vport table"));
                pVT->close();
                delete pIter;
                return;
        }

        for (pIter->start();!pIter->done();pIter->step())
        {

                AcDbViewportTableRecord* pRec;
                //it should be open for write mode
                es=pIter->getRecord(pRec,AcDb::kForWrite);
                if (es != Acad::eOk)
                {
                        acutPrintf(
                                _T("\nFailed to get vport table record"));
                        pVT->close();
                        pRec->close();
                        delete pIter;
                        return;
                }

                TCHAR* name=NULL;
                es=pRec->getName(name);
                if (es != Acad::eOk)
                {
                        acutPrintf(
                                _T("\nFailed to get name from vport table"));
                        pVT->close();
                        pRec->close();
                        delete pIter;
                        return;
                }

                if (_tcsicmp(name,_T("*ACTIVE"))==0)
                {
                        es=pRec->setUcs(UCSId);
                }

                es=pRec->close();   
        }
        es=acedVportTableRecords2Vports(); //force update

        es=pVT->close();
        delete pIter;
        return ;
}

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-3-29 10:34 , Processed in 0.193120 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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