明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1604|回复: 4

Arx图层问题,困惑几天了。

[复制链接]
发表于 2003-12-1 12:00:00 | 显示全部楼层 |阅读模式
提一个很菜的问题。
我在ARX程序中新建了一个图层,怎样在程序中将其设置为当前层?
发表于 2003-12-1 13:02:00 | 显示全部楼层
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=12132
发表于 2003-12-2 17:07:00 | 显示全部楼层

回复

参考:
void createNewLayer(char* lyrname, Adesk::UInt16 clr, AcDbObjectId ltypeId, Adesk::Boolean current)
{
        // We need to check if the layer name exists
        // If the layer name exists, apply the color
        // linetype id and whither to make it current
        // or not. In order to be current it cannot be
        // frozen, so we need to check for this also.
        // If the layer name does not exist we just create
        // a new layer with the properties contained in the arguments
       
        AcDbLayerTable *pLyrTable;
        AcDbLayerTableRecord *pLyrTblRecord;
        AcDbObjectId recId;

        AcCmColor color;
        color.setColorIndex(clr); // set color to parameter clr

        AcDbDatabase *pCurDb = NULL;

        pCurDb = acdbHostApplicationServices()->workingDatabase();


        pCurDb->getLayerTable(pLyrTable, AcDb::kForRead);
        // Check to see if the layer name exists
        if(pLyrTable->has(lyrname))
        {
                pLyrTable->getAt(lyrname, pLyrTblRecord, AcDb::kForWrite, Adesk::kFalse);
                // pLyrTblRecord now points at the layer table record
                // which was opened for write
                pLyrTblRecord->setIsFrozen(Adesk::kFalse);
                pLyrTblRecord->setColor(color);
                pLyrTblRecord->setLinetypeObjectId(ltypeId);

        }
        else
        {
                // Note how we can change the open mode
                // of the layer table from AcDb::kForRead
                // to AcDb::kForWrite

                pLyrTable->upgradeOpen();
                pLyrTblRecord = new AcDbLayerTableRecord;

                pLyrTblRecord->setName(lyrname);
                pLyrTblRecord->setColor(color);
                pLyrTblRecord->setLinetypeObjectId(ltypeId);

                pLyrTable->add(pLyrTblRecord);

        }

        // Get the layer Table ObjectId
        recId = pLyrTblRecord->objectId();

        pLyrTblRecord->close();
        pLyrTable->close();

        // Set the layer current if current
        // is equal to Adesk::kTrue
        // pCurDb is point to the current
        // drawing database
        // The database AcDbDatabase has a number of
        // query and edit functions for the header variables

        if(current)
        {
                pCurDb->setClayer(recId);
        }
}
发表于 2003-12-2 17:08:00 | 显示全部楼层

回复

本帖子中包含更多资源

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

x
 楼主| 发表于 2003-12-8 10:42:00 | 显示全部楼层
谢谢,使用setVar已经解决了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 22:47 , Processed in 0.154269 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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