在 Teigha 中使用 .sat 和 .sab 文件

原生和修改后的 .sat 和 .sab 文件版本

标准 ACIS 文本 (SAT) 和标准 ACIS 二进制 (SAB) 是 Spatial Corporation 开发的 3D ACIS Modeler 支持的文件格式。Spatial Corp. SAT® 格式是一种文本格式,可以使用文本编辑器查看。SAB 格式是 SAT 格式的紧凑版本。

Teigha 使用 .sat 和 .sab 文件来定义 3D 实体(OdDbRegion、OdDbBody、OdDb3dSolid、OdDbSurface 等)的 3D 几何图形。

下表包含不同版本 .dwg 和 .dxf 文件中使用的默认 SAT 和 SAB 格式版本的信息。

R14 版本 106
R15 (2000) 版本 400
R18 (2004) 版本 20800
R21 (2007) 版本 21200
R24 (2010) 版本 21500
R27 (2013) 版本 21800

以下枚举是 Teigha 支持的所有 SAT 和 SAB 格式版本的列表。

enum AfTypeVerEnum
{
  kAfVer105            = 105,
  kAfVer106            = 106,
  kAfVer107            = 107,
  kAfVer200            = 200,
  kAfVer201            = 201,
  kAfVer400            = 400,
  kAfVer500            = 500,
  kAfVer600            = 600,
  kAfVer700            = 700,
  kAfVer20800          = 20800,
  kAfVer21200          = 21200,
  kAfVer21500          = 21500,
  kAfVer21600          = 21600,
  kAfVer21700          = 21700,
  kAfVer21800          = 21800
};

需要注意的是,版本号最高为 700 的版本与 Spatial Corp. ACIS® 兼容。版本号为 20800 及更高的版本无法在 Spatial ACIS 库内部使用,除非进行额外的转换。从 20800 版本开始,Autodesk® AutoCAD® 使用修改后的 SAT 和 SAB 格式,这些修改后的版本并非 Spatial ACIS 原生。所有版本号高于 700 的原生 Spatial ACIS SAT 和 SAB 格式也与 .dwg 和 .dxf 文件格式不兼容,不能直接在 Teigha 中使用。

image1

在 Teigha 和 Spatial ACIS 之间交换 3D 几何数据的典型解决方案是使用版本 7 作为中间版本。因此,从 Teigha 获取版本 700 并与 Spatial ACIS 一起使用。或者将 Spatial ACIS 版本降级到 700 并与 Teigha 一起使用。

在 Teigha 中访问 SAT 和 SAB 数据流

此静态方法加载 .sat 和 .sab 文件并返回实体数组。

static OdResult OdDbBody::acisIn(const OdString& filename, OdDbEntityPtrArray& solids);

为什么它返回一个数组而不是单个实体?单个 .sat/.sab 文件可以包含多个 3D 体。但是 .dwg 文件限制为一个 3D 实体,其中一个 .sat/.sab 文件包含单个体。因此,会检查 .sat/.sab 文件的输入体数量,并根据 .sat/sab 文件中体的类型创建一组 3D 实体。输出数组包括 3D 实体集(OdDbRegion、OdDbBody、OdDb3dSolid、OdDbSurface 等)。不支持导入线体。

以 SAT 和 SAB 格式导出 3D 数据的对称方法是:

static OdResult OdDbBody::acisOut(const OdString& filename, const OdDbEntityPtrArray& solids, AfTypeVer typeVer = kAfVer700|kAfTypeASCII);

还有另一种获取和设置 3D 数据的方法。每个 3D 实体类都有非静态方法,可以直接访问 SAT 和 SAB 数据。这些方法只能用于有效的数据处理。例如:

OdResult OdDbRegion::acisIn(OdStreamBuf* pStreamBuf, AfTypeVer *typeVer = 0);
OdResult OdDbRegion::acisOut(OdStreamBuf* pStreamBuf, AfTypeVer typeVer = kAfTypeVerAny);

示例

OdaMFCApp 是主要的 Teigha 查看器示例应用程序,它包含一个 .sat/.sab 助手。要启动该助手,请在数据库中右键单击 AcDb3dSolid 对象。

image2

您可以加载和保存 .sat/.sab 文件,从 3D 实体获取 SAT 和 SAB 数据,并从 .sat/.sab 文件创建新的 3D 实体。

image3

 

今天就开始行动

免费试用 ODA 软件 60 天。
无风险,无需信用卡。

免费试用