找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 430|回复: 3

[求助]:ARX中怎样将选定的图层置为当前?

[复制链接]
发表于 2004-12-7 08:18:25 | 显示全部楼层 |阅读模式

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

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

×
ARX中怎样将选定的某一个图层置为当前?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-12-7 09:42:27 | 显示全部楼层
acdbCurDwg()->setClayer(layerid);
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-9 12:13:48 | 显示全部楼层
//*********************************************************************************
//** 函 数 名:SetCurLayer
//** 功能描述:设置指定层为当前层.如果没有则创建一个设置为当前层
//** 变量名:LayerName      变量类型:CString               变量说明:层名(输入)
//** 变量名:Colour    变量类型:int                   变量说明:层颜色(输入)
//*********************************************************************************
void SetCurLayer(CString LayerName,int Colour)
{
         AcDbLayerTable * pLayerTbl;//定义层表指针       
         acdbHostApplicationServices()->workingDatabase()->getLayerTable(pLayerTbl,AcDb::kForWrite); //以写方式打开层表,获得层表指针       
         AcDbObjectId LayerID;//定义层的ID号
         if (Acad::eOk==(pLayerTbl->getAt(LayerName,LayerID,Adesk::kFalse)))
         {//如层layname存在,则设为当前层
                 pLayerTbl->close();
                 acdbHostApplicationServices()->workingDatabase()->setClayer(LayerID);
         }
         else//没有外墙层
         {
                 pLayerTbl->close();
                 CArxUtils::CreateLayer(LayerName,Colour);
                 acdbHostApplicationServices()->workingDatabase()->getLayerTable(pLayerTbl,AcDb::kForWrite); //以写方式打开层表,获得层表指针       
                 if (Acad::eOk==(pLayerTbl->getAt(LayerName,LayerID,Adesk::kFalse)))
                 {
                         pLayerTbl->close();
                         acdbHostApplicationServices()->workingDatabase()->setClayer(LayerID);
                 }               
         }
         pLayerTbl->close();

}
//*********************************************************************************
//** 函 数 名:CreateLayer
//** 功能描述:创建层
//** 变量名:LayerName      变量类型:CString               变量说明:层名(输入)
//** 变量名:color          变量类型:int                   变量说明:层颜色(输入)
//*********************************************************************************
AcDbObjectId  CArxUtils::CreateLayer(const CString LayerName, const int  color)
{   
        AcDbObjectId  recordId;
       
    AcDbLayerTable *pLayerTable;
    acdbHostApplicationServices()->workingDatabase()->getLayerTable(pLayerTable, AcDb::kForWrite);
       
        if(pLayerTable->has((char*)LPCTSTR(LayerName)))//如果层存在
        {
                pLayerTable->getAt((char*)LPCTSTR(LayerName),recordId,FALSE);
                pLayerTable->close();
                return recordId;
        }
        else //如果层不存在
        {
                AcDbLayerTableRecord *pLayerTableRecord = new AcDbLayerTableRecord;
                pLayerTableRecord->setName((char*)LPCTSTR(LayerName));
                AcCmColor  layerColor;
                layerColor.setColorIndex(color);
                pLayerTableRecord->setColor(layerColor);
               
                AcDbLinetypeTable *pLinetypeTbl;
                acdbHostApplicationServices()->workingDatabase()->getLinetypeTable(pLinetypeTbl,AcDb::kForRead);
               
                AcDbObjectId ltypeObjId;
                pLinetypeTbl->getAt("CONTINUOUS", ltypeObjId);  //设置层颜色
                pLayerTableRecord->setLinetypeObjectId(ltypeObjId);
               
                pLayerTable->add(recordId,pLayerTableRecord);
        pLayerTable->close();
        pLayerTableRecord->close();

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

使用道具 举报

 楼主| 发表于 2004-12-10 15:16:58 | 显示全部楼层
magyar 的代码不错。说不定还能帮助我解决别的问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-22 07:30 , Processed in 0.359825 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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