chpmould 发表于 2011-6-21 19:36:34

层操作

本帖最后由 chpmould 于 2011-6-21 19:36 编辑

以下是我下载的一个子程序,但是不会写添加线型部分,例如:新建一层名为TEST,线型为CEN的层,请高手帮助写出,我学习一下方法

AcDbObjectId CreateNewLayer(CString LayerName, AcCmColor LayerColor)
{
    AcDbLayerTable *pLayerTable;
    acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pLayerTable,
      AcDb::kForWrite);
    AcDbLayerTableRecord *pLayerTableRecord = new AcDbLayerTableRecord;
    pLayerTableRecord->setName(LayerName);      
    pLayerTableRecord->setColor(LayerColor);   
   AcDbObjectId layerId;
    pLayerTable->add(layerId,pLayerTableRecord);
    pLayerTable->close();
    pLayerTableRecord->close();
    return layerId;
}

松竹 发表于 2011-6-22 20:32:40

先判断指定线型是否存在线型表中,如果不存在,则使用AcDbDatabase::loadLineTypeFile函数从指定线型文件中加载指定名称的线型,加载成功之后,即可设置层的线型名称了。

chpmould 发表于 2011-6-23 19:09:21

本帖最后由 chpmould 于 2011-6-23 19:56 编辑

松竹 发表于 2011-6-22 20:32 http://bbs.mjtd.com/static/image/common/back.gif
先判断指定线型是否存在线型表中,如果不存在,则使用AcDbDatabase::loadLineTypeFile函数从指定线型文件中 ...

请教,我按如下这样写怎么总是提示:“AcDbDatabase::loadLineTypeFile”: 不能将参数 2 从“const char ”转换为“const ACHAR *”, 目前对字符转换比较模糊,请问如何做转换?
acdbHostApplicationServices()->workingDatabase()
->loadLineTypeFile(_T("HIDDEN"),"acadiso.lin");



另外我按如下这样写,就通过了
acdbCurDwg()->loadLineTypeFile(_T("HIDDEN"),_T("acad.lin"));

chpmould 发表于 2011-6-26 10:15:29

新建的HIDDEN线型成功了, 但是我用PU命令清除了当前新建的HIDDEN线型,然后在运行程序没有反映,如果再新建一个档案就又可以了,请问是什么原因?

chpmould 发表于 2011-6-26 10:16:42

新建的HIDDEN线型成功了, 但是我用PU命令清除了当前新建的HIDDEN线型,然后在运行程序没有反映,如果再新建一个档案就又可以了,请问是什么原因?

松竹 发表于 2011-7-6 12:30:00

如果线型已经被引用了,就不能清除掉。新建的文件中没有对象引用该线型,所以能清理。

另外字符串加上_T("")表示该字符串会根据程序的字符集类型自动将字符串转换为UNICODE还是多字节字符串。

chpmould 发表于 2011-7-6 17:51:46

松竹 发表于 2011-7-6 12:30 static/image/common/back.gif
如果线型已经被引用了,就不能清除掉。新建的文件中没有对象引用该线型,所以能清理。

另外字符串加上_T ...

现在不明白的是,我先成功新建了线型C,为什么清除了之后,再执行新建就没有反映。
页: [1]
查看完整版本: 层操作