层操作
本帖最后由 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;
}
先判断指定线型是否存在线型表中,如果不存在,则使用AcDbDatabase::loadLineTypeFile函数从指定线型文件中加载指定名称的线型,加载成功之后,即可设置层的线型名称了。 本帖最后由 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"));
新建的HIDDEN线型成功了, 但是我用PU命令清除了当前新建的HIDDEN线型,然后在运行程序没有反映,如果再新建一个档案就又可以了,请问是什么原因? 新建的HIDDEN线型成功了, 但是我用PU命令清除了当前新建的HIDDEN线型,然后在运行程序没有反映,如果再新建一个档案就又可以了,请问是什么原因? 如果线型已经被引用了,就不能清除掉。新建的文件中没有对象引用该线型,所以能清理。
另外字符串加上_T("")表示该字符串会根据程序的字符集类型自动将字符串转换为UNICODE还是多字节字符串。 松竹 发表于 2011-7-6 12:30 static/image/common/back.gif
如果线型已经被引用了,就不能清除掉。新建的文件中没有对象引用该线型,所以能清理。
另外字符串加上_T ...
现在不明白的是,我先成功新建了线型C,为什么清除了之后,再执行新建就没有反映。
页:
[1]