如何在 OdaMfcApp 中比较两个 DWG 图纸?
要在OdaMfcApp中对两个DWG图纸进行可视化比较,您可以使用DwgCompare命令。
操作步骤如下:
在OdaMfcApp中打开第一个(原始)DWG文件并完成矢量化处理
通过以下方式执行DwgCompare命令:
直接输入"DwgCompare"
或选择菜单"编辑"->"注册命令"->"DWG比较"->"DwgCompare"
在弹出的对话框中选择要与原始文件比较的DWG文件,点击"打开"
系统将执行比较操作,结果显示在当前视图窗口中:
红色标注:表示被修改、删除或原始文件中不存在的实体
绿色标注:表示新增或相对于原始文件发生变化的实体
完成比较后,您将保持在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应用示例。