请教如何用VC++设置AutoCAD的图层?
请教如何用VC++设置AutoCAD的图层?最好是能给个实例和讲解。
设置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();
}
}
非常感斑主!
斑主真够意思,日后定不忘您的大恩大德! 那么怎么编辑一个已有的层,如修改线型,关闭,打开,锁定,解锁等?
页:
[1]