明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1630|回复: 1

初学者写的两个实现函数,请教问题出在哪里.

[复制链接]
发表于 2007-8-3 19:49:00 | 显示全部楼层 |阅读模式

我是ARX初学者,用于做毕业论文,写了两个小函数,但尝试编译的时候,没有达到预期的效果,请高手指点,谢谢!

函数一:

函数的期望实现目标:新建一个图层,并同时确实线型和图层颜色。

void CreateNewLayer(const ACHAR* pNewLayerName,const ACHAR* pLinetypeName,int colorNo)
{
 AcDbDatabase *pCurDb;
 AcDbLayerTable *pLayerTable;
 pCurDb=acdbHostApplicationServices()->workingDatabase();
 pCurDb->getLayerTable(pLayerTable,AcDb::kForWrite);
    if (pLayerTable->has(pNewLayerName))
 {
  pLayerTable->close();
  return  ;
 }
    AcDbLayerTableRecord *pLayerTblRecord = new AcDbLayerTableRecord;
 pLayerTblRecord->setName(pNewLayerName);

 AcCmColor color;
 color.setColorIndex(colorNo);
 pLayerTblRecord->setColor(color);

    AcDbLinetypeTable *pLinetypeTbl;
    pCurDb->getLinetypeTable(pLinetypeTbl,AcDb::kForWrite);
 AcDbObjectId ltypeObjId;
 pLinetypeTbl->getAt(pLinetypeName,ltypeObjId);
 pLayerTblRecord->setLinetypeObjectId(ltypeObjId);
 pLayerTable->add(pLayerTblRecord);

 pLinetypeTbl->close();
 pLayerTable->close();
 pLayerTblRecord->close();
    return ;
 
}

函数二:

函数的期望实现目标:将图层转换到期望的图层再进行绘图编辑。

void CCreateEnt::ChangeLayer(const ACHAR* LayerName)
{
 AcDbLayerTable *pLayerTbl;
 acdbHostApplicationServices()->workingDatabase()
  ->getLayerTable(pLayerTbl, AcDb::kForRead);
 //是否已经包含指定的层表记录
    if (pLayerTbl->has(LayerName))
     {
             pLayerTbl->close();
             return;
      }
 
    AcDbLayerTableRecord *pLayerTblRcd;
 pLayerTbl->getAt(LayerName,pLayerTblRcd,AcDb::kForWrite);
 //acdbHostApplicationServices()->workingDatabase()->setClayer(layerTblRcdId);

    pLayerTbl->close();
 pLayerTblRcd->close();
 return;
}

请大侠指教一下问题出在哪里,谢谢!!


 楼主| 发表于 2007-8-3 23:15:00 | 显示全部楼层
自己已经解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 18:39 , Processed in 0.247921 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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