如何在使用代码新建一个dgn文件并向其添加元素?

以下代码执行后仅生成了一个空白的dgn文件,没有绘制出直线,请问是哪里出了问题?

if(SUCCESS == mdlDialog_fileCreate(fileName, NULL, 0, defaultName, "*.dgn", "D:\\", "新建DGN"))
{
DgnModelRefP bluePrintModel;
if(SUCCESS == mdlWorkDgn_createFile(&bluePrintModel, fileName, DGNFILE_FORMAT_V8, MASTERFILE, SEED_CopyDefaultData, NULL, NULL, TRUE))
{
MSWChar modelName[MAX_MODEL_NAME_LENGTH];
mdlModelRef_getModelName (MASTERFILE,modelName);


DgnModelRefP newModelRef;
mdlModelRef_createWorking(&newModelRef, mdlModelRef_getDgnFile(bluePrintModel), DEFAULTMODEL, TRUE, TRUE);

//测试绘制一条直线
DPoint3d pts[2] = {{0},{0,0,10000}};
MSElement line;
mdlLine_create(&line, NULL, pts);
mdlElement_add(&line);

mdlWorkDgn_saveChanges(bluePrintModel);
mdlModelRef_freeWorking(newModelRef);
mdlWorkDgn_closeFile(bluePrintModel);
}
}

Parents
  • 如果不想显示出这个DGN文件而往里面添加元素的话,应该是用mdlWorkDgn_openFile先打开你创建的DGN文件,然后往里添加元素。最后调用mdlWorkDgn_saveChanges和mdlWorkDgn_closeFile。不要和mdlModelRef_createWorking、mdlModelRef_freeWorking混合使用。后者是对当前DGN中模型的操作。



  • 符老师您好,我直接使用mdlWorkDgn_createFile不就是创建并打开一个Dgn文件吗?我尝试使用mdlWorkDgn_createFile和mdlWorkDgn_createFile+mdlWorkDgn_openFile都不能绘制元素,仅生成了一个空Dgn文件。
    DgnModelRefP newModel;
    if(SUCCESS == mdlWorkDgn_createFile(&newModel, fileName, DGNFILE_FORMAT_V8, g_Default_ModelRef, SEED_CopyDefaultData, NULL, NULL, TRUE))
    {
    //若把以下两行注释仅使用createFile一样不行
    mdlWorkDgn_closeFile(newModel);
    mdlWorkDgn_openFile(&newModel, NULL, NULL, fileName, NULL, FALSE);

    //在新建的dgn文件中进行出图绘制
    DPoint3d pts[2] = {{0},{0,0,10000}};
    MSElement line;
    mdlLine_create(&line, NULL, pts);
    mdlElement_add(&line);

    mdlWorkDgn_saveChanges(newModel);
    mdlWorkDgn_closeFile(newModel);
    }
Reply
  • 符老师您好,我直接使用mdlWorkDgn_createFile不就是创建并打开一个Dgn文件吗?我尝试使用mdlWorkDgn_createFile和mdlWorkDgn_createFile+mdlWorkDgn_openFile都不能绘制元素,仅生成了一个空Dgn文件。
    DgnModelRefP newModel;
    if(SUCCESS == mdlWorkDgn_createFile(&newModel, fileName, DGNFILE_FORMAT_V8, g_Default_ModelRef, SEED_CopyDefaultData, NULL, NULL, TRUE))
    {
    //若把以下两行注释仅使用createFile一样不行
    mdlWorkDgn_closeFile(newModel);
    mdlWorkDgn_openFile(&newModel, NULL, NULL, fileName, NULL, FALSE);

    //在新建的dgn文件中进行出图绘制
    DPoint3d pts[2] = {{0},{0,0,10000}};
    MSElement line;
    mdlLine_create(&line, NULL, pts);
    mdlElement_add(&line);

    mdlWorkDgn_saveChanges(newModel);
    mdlWorkDgn_closeFile(newModel);
    }
Children