qicai-lisa 发表于 2003-5-14 18:00:00

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

请教如何用VC++设置AutoCAD的图层?
最好是能给个实例和讲解。

leeyeafu 发表于 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();
    }
}

qicai-lisa 发表于 2003-5-15 19:11:00

非常感斑主!

斑主真够意思,日后定不忘您的大恩大德!

lilq_78 发表于 2005-1-18 13:32:00

那么怎么编辑一个已有的层,如修改线型,关闭,打开,锁定,解锁等?
页: [1]
查看完整版本: 请教如何用VC++设置AutoCAD的图层?