本帖最后由 作者 于 2009-9-28 8:45:40 编辑
我是2009的,我用导入dxf导出dxf成功了,不报错。 读入dxf,保存成dwg也可以的,不报错。 读入dwg,导出dxf也可以,不报错。 但是导入dwg,保存dwg就出现保存错误,运行完成后还是可以打开的,外部参照也添加了,可以一旦全选就出错,直接退出cad! 全部成功了!operDb.ReadDwgFile(operFilePath, FileOpenMode.OpenForReadAndWriteNoShare, true, ""); 改成 operDb.ReadDwgFile(operFilePath, FileOpenMode.OpenForReadAndAllShare, true, ""); 还有一个问题就是我插入的是绝对路径,后来我吧ObjectId id = operDb.AttachXref(framePath, "图框"); 改成ObjectId id = operDb.AttachXref(@".\图框.dwg", "图框");还是绝对路径,不知道怎么插入相对路径? operDb = new Database(false, true);//新建操作数据库 if (fileType == "DWG")//分为DWG,DXF分类打开图形数据库 { operDb.ReadDwgFile(operFilePath, FileOpenMode.OpenForReadAndWriteNoShare, true, ""); } else { operDb.DxfIn(operFilePath, null); } using (Transaction operTrans = operDb.TransactionManager.StartTransaction()) { BlockTable operBlk; operBlk = (BlockTable)operTrans.GetObject(operDb.BlockTableId, OpenMode.ForWrite); BlockTableRecord btr = (BlockTableRecord)operTrans.GetObject(operBlk[BlockTableRecord.ModelSpace], OpenMode.ForWrite); //插入外部参照 ObjectId id = operDb.AttachXref(framePath, "图框"); BlockReference blkref = new BlockReference(Point3d.Origin, id); btr.AppendEntity(blkref); operTrans.AddNewlyCreatedDBObject(blkref, true); operTrans.Commit(); if (fileType == "DWG")//分为DWG,DXF分类保存图形数据库 { operDb.SaveAs(operFilePath, null); //operDb.SaveAs("D:\\23.dwg", null); } else { operDb.DxfOut(operFilePath, 14,DwgVersion.AC1015); } |