层操作
以下是我下载的一个子程序,但是不会写添加线型部分,例如:新建一层名为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;
} 先判断指定线型是否存在线型表中,如果不存在,则使用AcDbDatabase::loadLineTypeFile函数从指定线型文件中加载指定名称的线型,加载成功之后,即可设置层的线型名称了。
请教,我按如下这样写怎么总是提示:“AcDbDatabase::loadLineTypeFile”: 不能将参数 2 从“const char ”转换为“const ACHAR *”, 目前对字符转换比较模糊,请问如何做转换?
acdbHostApplicationServices()->workingDatabase()
->loadLineTypeFile(_T("HIDDEN"),"acadiso.lin");另外我按如下这样写,就通过了
acdbCurDwg()->loadLineTypeFile(_T("HIDDEN"),_T("acad.lin"));
新建的HIDDEN线型成功了, 但是我用PU命令清除了当前新建的HIDDEN线型,然后在运行程序没有反映,如果再新建一个档案就又可以了,请问是什么原因? 新建的HIDDEN线型成功了, 但是我用PU命令清除了当前新建的HIDDEN线型,然后在运行程序没有反映,如果再新建一个档案就又可以了,请问是什么原因? 如果线型已经被引用了,就不能清除掉。新建的文件中没有对象引用该线型,所以能清理。
另外字符串加上_T("")表示该字符串会根据程序的字符集类型自动将字符串转换为UNICODE还是多字节字符串。
现在不明白的是,我先成功新建了线型C,为什么清除了之后,再执行新建就没有反映。
页:
[1]