原生和修改后的 .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 中使用。
在 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 对象。
您可以加载和保存 .sat/.sab 文件,从 3D 实体获取 SAT 和 SAB 数据,并从 .sat/.sab 文件创建新的 3D 实体。