.dwg support

  1. FAQ
  2. »
  3. Products Overview
  4. »
  5. .dwg support

如何在 OdaMfcApp 中比较两个 DWG 图纸?

要在OdaMfcApp中对两个DWG图纸进行可视化比较,您可以使用DwgCompare命令。

操作步骤如下:

  1. 在OdaMfcApp中打开第一个(原始)DWG文件并完成矢量化处理

  2. 通过以下方式执行DwgCompare命令:

    • 直接输入"DwgCompare"

    • 或选择菜单"编辑"->"注册命令"->"DWG比较"->"DwgCompare"

  3. 在弹出的对话框中选择要与原始文件比较的DWG文件,点击"打开"

  4. 系统将执行比较操作,结果显示在当前视图窗口中:

    • 红色标注:表示被修改、删除或原始文件中不存在的实体

    • 绿色标注:表示新增或相对于原始文件发生变化的实体

完成比较后,您将保持在DwgCompare命令上下文中。如需返回原始文件视图:

  • 输入"DwgCompareExit"命令

  • 或选择菜单"编辑"->"注册命令"->"DWG比较"->"DwgCompareExit"

退出比较模式后,您可继续对图纸进行其他操作。



 

目前是否能在非Windows平台测试Drawings Qt示例?

现阶段,通过压缩包提供的Qt示例仅支持Windows平台构建。

若需在其他平台构建,您必须:

通过git获取完整源代码(需基金会或企业级会员权限)
自行配置Qt开发环境
注意事项:

仅查看代码:可下载Windows版的DrawingsQt压缩包,提取其中Qt目录
Linux支持限制:由于Qt在Linux没有标准化部署方案(通常需针对特定发行版定制),故未提供预置的Linux构建配置
(技术说明:跨平台构建需自行适配本地Qt环境)

如何确定图纸的单位制(毫米、英寸、英尺或千米)?

请查阅我们的Wiki文档 the article 。自AutoCAD 2000起,图纸单位信息存储在INSUNITS系统变量中。部分垂直应用(如Land Desktop Development)可能以其他方式存储单位(可能保存在字典中),这是因为这些应用开发时INSUNITS变量尚未引入。DWGUNITS命令仍保留用于向后兼容,请注意该命令包含同步INSUNITS变量的选项。

如何查询支持的.dwg文件版本信息?

请参阅文档中的相关链接获取详细信息the documentation.

如何从DWG文件导入多边形网格实体?

请参考OdDbPolygonMesh类,该类可获取M×N顶点数组。

具体实现细节请查看OdReadEx示例项目。

如何从DWG文件中获取多面网格实体?

请参考OdDbPolyfaceMesh类,通过该类可获取顶点集合和面片数据。

如何从3D DWG文件导入网格数据?

您可以使用以下两种方法:

调用DbSubDMesh.h中的oddbGetObjectMesh函数
使用decomposeForSave方法(具体实现参考OdaMfcApp示例应用中的CDwgView::OnEditAcisConversion函数)

 

 

如何在导入前修改.dwg文件的代码页(字符编码)?

/** \details

设置指定OdDbDatabase实例中的DWGCODEPAGE值。

\param db [in] Database.
\param val [in] Value for DWGCODEPAGE.

\remarks

此函数提供了对"只读"系统变量的写入权限。可用于绕过未实现的绘图功能或修复图纸。

*/
TOOLKIT_EXPORT void odDbSetDWGCODEPAGE(
OdDbDatabase& db,
OdCodePageId val);

当块参照(Block Reference)的线型设置为随块(ByBlock)时,其正确行为是什么?

块参照与其他实体一样:若其属性设置为随块(ByBlock),则在嵌套块的情况下将使用另一层级堆栈中的值。

如何添加标签属性?

请参考 Drawings/Examples/OdWriteEx/DbFiller.cpp 文件中的 OdDbAttributeDefinition 实现

Is there any dimension feature available in ODA for DWG files?

ODA是否提供处理DWG文件中尺寸标注的功能?

请查阅我们文档中的OdDbDimension类及其派生: our documentation

https://docs.opendesign.com/td/db_dimensions.html

如何排除自定义的OdDbEntity实体不被选中?

您可在OdDbSelectionSet查询中使用选择过滤器来排除不需要的实体:

代码实现:

/** \details
    Filter selection only.  

    \param vpId [in]  id of OdDbViewportTableRecord  record or OdDbViewport entity in which to select.
    \param nPoints [in]  Number of points into selection shape.
    \param wcsPts [in]  Selection shape as set of World Coordinate Space points.
    \param mode [in]  Selection mode.
    \param sm [in]  Subentities selection mode.
    \param pFilter [in] object of type OdDbSelectionFilter or pointer to a OdResBuf chain defining the filter.
  */
  static OdDbSelectionSetPtr select(
    const OdDbObjectId& vpId,
    int nPoints,
    const OdGePoint3d* wcsPts,
    OdDbVisualSelection::Mode mode = OdDbVisualSelection::kCrossing,
    OdUInt32 sm = OdDbVisualSelection::kDisableSubents,
    const OdRxObject* pFilter = 0);

在AutoCAD 2020中尝试打开DWG文件时,出现警告提示'该文件由未经授权的应用程序创建'。

此提示表明文件并非通过Autodesk®正版软件生成。由于我们(ODA)是独立于Autodesk®的第三方开发平台,根据法律条款要求,该提示必须显示(无论是正式版还是试用版生成的图纸)。若不显示此提示,将构成法律条款的违约行为。"

是否可以选择块或子块(块中嵌套的块)内的实体?

可以,但此操作需在设备中设置特定的块缓存选项

如何分解DWG文件以选择单个实体?

当图纸模型空间仅包含块参照(Block Reference)时,可通过以下方法分解:

使用explode()方法 - 完全分解块参照为独立实体
使用explodeGeometry()方法 - 仅分解几何图形(保留块定义)
具体实现请参阅ODA官方文档中的相关说明 ODA Documentation  

 

在哪里可以查看禁止使用的字符列表?

请查阅 Developer's Guide.

(注意:需具备ODA开发者账号方可访问)

Drawings SDK是否提供可嵌入现有应用程序(特别是C# WPF)的组件?

我们的SDK采用跨平台C++编写,但提供.NET封装层可供C#应用程序调用。同时我们还配套提供了一系列C#示例项目,其中包含专门的WPF应用示例。