Examples

  1. FAQ
  2. »
  3. Products Overview
  4. »
  5. Examples

如何在导入DWF文件时获取对象属性?


示例组件路径 Sample Components/Dwfdb/Examples/OdDwfLoad 中的程序支持属性导出,执行时添加参数 -D 即可实现。

如何向 MTEXT 实体添加超链接?


OdWriteEx 示例包含了创建带超链接的圆。请在 DbFiller.cpp 中搜索 ""hyperlink""。

以下是创建带超链接字段的 MTEXT 的示例代码:

OdDbMTextPtr pMText = OdDbMText::createObject();
  pMText->setDatabaseDefaults(pRecord->database());
  pRecord->appendOdDbEntity(pMText);

  /**********************************************************************/
  /* Set some properties                                                */
  /**********************************************************************/

  pMText->setLocation(point);
  pMText->setTextHeight(0.2);
  pMText->setAttachment(OdDbMText::kTopLeft);
  pMText->setContents(OD_T("Sample Hyperlink"));
  pMText->setWidth(w * 7.0 / 8.0);
  pMText->setTextStyle(styleId);
  
  OdDbFieldPtr pTextField3 = OdDbField::createObject();
  OdDbFieldPtr pField3_1 = OdDbField::createObject();

  OdDbObjectId textFldId3 = pMText->setField(OD_T("TEXT"), pTextField3);
  OdDbObjectId fldId3_1 = pTextField3->setField(OD_T(""), pField3_1);

  pField3_1->setEvaluationOption(OdDbField::kAutomatic);
  OdString fc6(OD_T("\\AcVar \\href \"http://forum.opendesign.com/showthread.php?14172-How-do-I-add-a-hyperlink-to-an-MTEXT-entity##Open Design Alliance Forum > Teigha, C++ version#0\""));
  pField3_1->setFieldCode(fc6);

  OdDbEntityHyperlinkPEPtr    hpe = pField3_1;
  OdDbHyperlinkCollectionPtr  urls = hpe->getHyperlinkCollection(pField3_1);
  
  urls->addTail(L"http://forum.opendesign.com/showthread.php?14172-How-do-I-add-a-hyperlink-to-an-MTEXT-entity##ForumLink#0\"", 
    L"Open Design Alliance Forum > Teigha, C++ version");
  
  hpe->setHyperlinkCollection(pField3_1, urls);

  pTextField3->setEvaluationOption(OdDbField::kAutomatic);
  OdString fc7(OD_T("HyperLink sample %<\\_FldIdx 0>%"));
  pTextField3->setFieldCode(fc7, OdDbField::FieldCodeFlag(OdDbField::kTextField | OdDbField::kPreserveFields));

  pField3_1->evaluate(OdDbField::kAutomatic);

如何调试ODA .NET应用程序?


目前我们提供的示例均为Release编译配置,如需Debug配置需手动创建。请注意:创建Drawings.NET调试配置时需使用Kernel和Drawings的Release版本存档(例如""amd64dll"")。

  1. 请基于Release配置新建""Debug""配置,并按以下步骤修改生成设置并重新编译解决方案:
     debug
  2. 项目属性 -> 选择""生成""选项卡 -> 取消勾选""优化代码""

  3. 项目属性 -> 选择""生成""选项卡 -> 点击""高级""按钮 -> 将""调试信息""从""none""改为""full""

  4. 项目属性 -> 选择""生成""选项卡 -> ""输出路径""字段 -> 复制Release配置路径(例如:...\exe\vc15_amd64dll)

    debug

支持哪些文件类型作为DGN参考文件?


目前我们支持附加引用DXF/DWG和DGN文件。同时我们也支持光栅附件形式的图像文件和pdf文件。

你们是否有剖面处理的示例代码?


剖面处理示例已集成在我们的示例应用程序中,更多详细信息可查阅相关文档 the documentation.

如何计算模型空间的范围?


参见 AbstractViewPE.h。该协议扩展可应用于 OdDbViewport、OdDbViewportTableRecord 和 OdDbViewTableRecord。

示例代码可在 Kernel/Examples/Exports/RasterExport 中找到。AbstractViewPE 的 zoomExtents() 和 viewExtents() 方法仅考虑可见几何体,并遵循图层状态(如果图层关闭或冻结)。

是否有任何库支持从IFC文件生成2D .dwg平面图?


在Visualize库中,您可以将IFC转换为.vsf,然后再从.vsf转换为.dwg。具体示例位于/Examples/Ifc2Visualize和/Extensions/Visualize2Dwg目录中

在哪里可以找到关于打印图纸的信息?


有关打印选项,您可以参考 Drawing SDK 存档中的example 示例:Drawing\Examples\Qt\OdaQtPlotSettingsValidator 

使用 OdCopyEx.cpp 转换 CAD 文件版本时,会弹出内存不足对话框,并且在 readFile 时代码抛出异常。

DWG 文件格式高度压缩,图形占用的内存远大于文件大小。


32 位应用程序的内存限制为 2GB,而 64 位应用程序没有此限制。


在某些情况下,部分加载和分页可以减少内存使用,但将图形保存到文件时要求所有数据都必须加载到内存中。

如何将图像'嵌入'到图纸中?


您可以将图像作为OLE实体嵌入。参考路径:/Drawing/Examples/ExCommands/ExInsertRaster.cpp

如何读取 OBJ 文件数据?


主模块项目位于 Components/OBJToolkit 文件夹中。包含所有必要方法声明的头文件是 OBJToolkit.h。要导入 .obj 文件,请创建一个 OdObjImport 对象,调用 importFile 方法,即可访问 OdObjDb 的组和几何对象:

OdObjImportPtr pObjImporter = OBJToolkit::createObjImporter();
pObjImporter->importFile(filePath, &importOptions);
OdObjDbPtr pObjDb = pObjImporter->getObjDb();


导入示例位于 Components/Examples/Obj2Visualize 项目中,并可在 Components/Visualize/Examples/Visualize Viewer(文件->打开->Obj)中进行测试。

将 .dwg 导出为 .obj 的示例位于 Drawing/Examples/ExCustObjs 项目(函数名为 _OBJExport_func)。这是 OdaMfcApp 示例应用程序的 OBJExport 命令。另一个从 Visualize 导出到 OBJ 的示例可在 Visualize Viewer 的文件->导出->Obj 菜单中找到。

能否直接获取标注/引线/延伸线的起点和终点等多段线信息?


标注实体包含dimBlockId()方法。该块包含所有标注几何图形。当任何标注属性被修改时,该块会重新计算。

您可以通过遍历标注块来获取简单实体,如直线、多行文字等。

如何获取与 .dwg 文件中使用的确切字体类型匹配的多段线形式文本字符串?


请参考 Drawings/Examples/ExCommands/ExTxtExp.cpp 中 TxtExp 命令的实现。该命令可将文本转换为多段线和圆弧。

ODA File Converter 的源代码是否可用?


您可以在 Drawings 存档中找到该示例的源代码:
Drawings_XX\Drawing\Examples\Qt\OdaFileConverter。

你能提供C#的ODA示例代码吗(关于如何创建圆、圆弧等)?

请找到 Drawings.NET\Swig\SwigODAExamples\Drawings\Csharp\OdReadExSwig

如何在WPF中执行重生成?


实现方式如下:

m_pDevice->invalidate();
if(m_pDevice->gsModel())
m_pDevice->gsModel()->invalidate(OdGsModel::kInvalidateAll);


其中m_pDevice是OdGsDevice类的派生类

如何从实体获取几何图形?


请参考 OdGetGeomEx 示例项目:\Drawing\Examples\OdGetGeomEx

OdaMfcApp 和 ODA Viewer 有什么区别?


OdaMfcApp 可以使用多种渲染设备(WinGDI、Silicon Graphics OpenGL®®、Microsoft® DirectX®、Bitmap、GLES2)。ODA Viewer 仅使用 OpenGL。
OdaMfcApp 可以启用或禁用图形缓存(工具->选项->使用 GS 模型)。ODA Viewer 无法禁用此选项。