明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2212|回复: 3

请教如何用VC++设置AutoCAD的图层?

[复制链接]
发表于 2003-5-14 18:00:00 | 显示全部楼层 |阅读模式
请教如何用VC++设置AutoCAD的图层?
最好是能给个实例和讲解。
发表于 2003-5-15 10:49:00 | 显示全部楼层

设置AutoCAD的图层的方法

下面的函数检查有无名为"MyLayer"的图层,若没有,则新建图层并设置。在代码例子中可以看到设置图层各种属性的方法,包括设置一些BOOL变量和颜色、线型等较复杂的操作。若已存在该图层,程序仅仅对图层作简单的设置更改。
void setLayer()
{  AcDbLayerTable *pLayerTbl;  //先声明一个空的层表指针
   acdbHostApplicationServices()->workingDatabase()  //当前图形数据库
       ->getSymbolTable(pLayerTbl, AcDb::kForWrite);  //打开层表为写入状态
   if (!pLayerTbl->has("MyLayer")) {   //has()函数是层表类的成员函数
        AcDbLayerTableRecord *pLayerTblRcd= new AcDbLayerTableRecord;//新层表记录
        pLayerTblRcd->setName("MyLayer");   //设定图层名
        pLayerTblRcd->setIsFrozen(0);   // 图层解冻
        pLayerTblRcd->setIsOff(0);      // 打开图层
        pLayerTblRcd->setVPDFLT(0);   // 使用默认视口
        pLayerTblRcd->setIsLocked(0);   // 图层解锁
        AcCmColor color;    // AcCmColor是ACAD颜色管理类
        color.setColorIndex(1);      
        pLayerTblRcd->setColor(color);   // 图层颜色为红色
        // 为给新图层设置线型,要得到线型表记录的ID。
        //  以下的代码演示如何得到并操作记录ID
        AcDbLinetypeTable *pLinetypeTbl;
        AcDbObjectId ltId;
        acdbHostApplicationServices()->workingDatabase()
            ->getSymbolTable(pLinetypeTbl, AcDb::kForRead);
        if ((pLinetypeTbl->getAt("DASHED", ltId))!= Acad::eOk)
        {   acutPrintf("\n未发现DASHED线型使用CONTINUOUS线型");
    // 每一个不完全空的图形数据库的线型表中都有线型名为CONTINUOUS 的默认记录
    // 试图删除该记录将会导致错误。
            pLinetypeTbl->getAt("CONTINUOUS", ltId);
        }
        pLinetypeTbl->close();
        pLayerTblRcd->setLinetypeObjectId(ltId);
        pLayerTbl->add(pLayerTblRcd);
        pLayerTblRcd->close();
        pLayerTbl->close();
    } else {
        pLayerTblRcd->setIsFrozen(0);   // 图层解冻
        pLayerTblRcd->setIsOff(0);      // 打开图层
        pLayerTblRcd->setVPDFLT(0);   // 使用默认视口
        pLayerTblRcd->setIsLocked(0);   // 图层解锁
        AcCmColor color;    // AcCmColor是ACAD颜色管理类
        color.setColorIndex(1);      
        pLayerTblRcd->setColor(color);   // 图层颜色为红色
        pLayerTblRcd->close();
        pLayerTbl->close();
    }
}
 楼主| 发表于 2003-5-15 19:11:00 | 显示全部楼层

非常感斑主!

斑主真够意思,日后定不忘您的大恩大德!
发表于 2005-1-18 13:32:00 | 显示全部楼层
那么怎么编辑一个已有的层,如修改线型,关闭,打开,锁定,解锁等?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 08:24 , Processed in 0.165607 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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