乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 56|回复: 3

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

[复制链接]

3

主题

5

帖子

2

银币

初来乍到

Rank: 1

铜币
17
发表于 2003-5-14 18:00:00 | 显示全部楼层 |阅读模式
请教如何用VC++设置的图层?
最好是能给个实例和讲解。
回复

使用道具 举报

14

主题

230

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
286
发表于 2003-5-15 10:49:00 | 显示全部楼层
下面的函数检查有无名为"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();
    }
}
回复

使用道具 举报

3

主题

5

帖子

2

银币

初来乍到

Rank: 1

铜币
17
发表于 2003-5-15 19:11:00 | 显示全部楼层
斑主真够意思,日后定不忘您的大恩大德!
回复

使用道具 举报

26

主题

80

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
184
发表于 2005-1-18 13:32:00 | 显示全部楼层
那么怎么编辑一个已有的层,如修改线型,关闭,打开,锁定,解锁等?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 05:08 , Processed in 0.311896 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表