The 3D ACIS® Modeler (ACIS) is Spatial’s prominent 3D solid modeling engine. 3D InterOp is a CAD data translation framework (Interoperability)
InterOp:Connect/ACIS/ACIS Writer
From DocR19
| Format - ACIS |
|
| Other formats |
|
ACIS ·
CATIA V4 ·
CATIA V5 ·
HSF · |
The ACIS Writer component writes ACIS files. This component is in the form of shared libraries. This release supports translation of the following file formats and versions:
| Write | ||
|---|---|---|
| File Format | File Extension | Version Supported |
| SAT | .sat | Up to ACIS R19 |
| SAB | .sab | Up to ACIS R19 |
| ASAT | .asat | ACIS R19 onwards |
| ASAB | .asab | ACIS R19 onwards |
Contents |
Features
Features of the ACIS Writer component are:
- Layer, Layer Filter and Selection Set
- Local Coordinate System (LCS)
- ACIS Assembly (ASAT/ASAB)
- Assembly Cut Features from Pro/E to ACIS
- Manufacturing Information Option
Options for ACIS Writer
| Option | Default | Description |
|---|---|---|
| DoSplineResurface | true or 1 | This option controls the repair of erroneous spline surfaces and extension of short surfaces to the face limits. |
| DoCheckAcisModel | false | This option controls whether to check and log the generated ACIS entities. |
Document
Layer, Layer Filter, and Selection Set
Provides an enhanced mechanism for handling layers, layer filters, and selection sets. Each layer, layer filter, or selection set is treated as an independent entity and converted to SPAGROUP in ACIS. SPAGROUP is a class provided in ACIS that can contain a collection of entities. An instance of the SPAGROUP class is created for each layer or layer filter or selection set. All entities belonging to a layer are added to the SPAGROUP corresponding to that layer and all SPAGROUPs representing layers of a layer filter are added to the SPAGROUP corresponding to that layer filter. All entities belonging to a selection set are added to the SPAGROUP corresponding to that selection set. Also, all the entities of a layer or selection set can be directly retrieved from corresponding SPAGROUP entity. Properties like name, number, current status of layer, layer filter, or selection set are attached as attributes on respective SPAGROUPs.
Local Coordinate System
Provides support to write LCS or Working Coordinate System (WCS) from other InterOp components as WCS in ACIS. Properties like name, current status of WCS are imported from other components.
Wire Attributes
Line Type
| LINE TYPE | Generic/Parasolid | IGES | CATIA V5 | STEP |
|---|---|---|---|---|
| SPAXAT_LINEFONT_UNSET | 0 | 0 | 0 | |
| SPAXAT_LINEFONT_SOLID | 1 | (solid) 1 | (solid) 1 | "continuous"(draughting_pre_defined_curve_font) |
| SPAXAT_LINEFONT_DASH, | 2 | (dashed) 2 | (dashed) 3 | "dashed"(draughting_pre_defined_curve_font) |
| SPAXAT_LINEFONT_DOT | 3 | (dotted) 5 | (dotted) 2 | "dotted"(draughting_pre_defined_curve_font) |
| SPAXAT_LINEFONT_DASH_DOT | 4 | (dot dashed) 4 | ||
| SPAXAT_LINEFONT_DASH_DOT_DOT | 5 | |||
| SPAXAT_LINEFONT_DASH_DOT_DOT_DOT | 6 | |||
| SPAXAT_LINEFONT_DASH_DASH_DOT | 7 | |||
| SPAXAT_LINEFONT_DASH_DASH_DOT_DOT | 8 | |||
| SPAXAT_LINEFONT_DASH_DASH_DOT_DOT_DOT | 9 | |||
| SPAXAT_LINEFONT_SHORT_DASH | 10 | |||
| SPAXAT_LINEFONT_LONG_DASH | 11 | |||
| SPAXAT_LINEFONT_MEDIUM_LONG_DASH | 12 | |||
| SPAXAT_LINEFONT_MEDIUM_DASH_SHORT_DASH_SHORT_DASH | 13 | |||
| SPAXAT_LINEFONT_LONG_DASH_SHORT_DASH | 14 | (centerline) 4 | (JIS AXIS) 7 | "chain" (draughting_pre_defined_curve_font) |
| SPAXAT_LINEFONT_LONG_DASH_SHORT_DASH_SHORT_DASH | 15 | (Phantom) 3 | (Phantom) 5 | "chain double dash"(draughting_pre_defined_curve_font) |
| SPAXAT_LINEFONT_LONG_DASH_DOT_DOT | 16 | |||
| SPAXAT_LINEFONT_LONG_DASH_DOT | 17 | |||
| SPAXAT_LINEFONT_MEDIUM_DASH_DOT_SHORT_DASH_DOT | 18 | |||
| SPAXAT_LINEFONT_SPARSE_DOT | 19 | (small dotted) 6 | ||
| SPAXAT_LINEFONT_VISIBLE_INVISIBLE | 20 | curve_style_font_pattern( double vis_len, double invis_len ) |
Line Thickness
| Modeler | Description | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ACIS | ATTRIB_XACIS_THICKNESS(double/integer) | ||||||||||||||||||
| Generic/Parasolid | ATTRIB_XPARASOLID_THICKNESS (double/integer) | ||||||||||||||||||
| STEP | Double/integer | ||||||||||||||||||
| IGES | Double/integer
0 to the maximum value as defined in parameter 16 of the global section. | ||||||||||||||||||
| CATIA V5 | There are 55 values(1-55) in CATIA V5, out of which only 8 are defined by the modeler as defined below.
|
Assembly
- Support for ACIS Assembly (ASAT/ASAB)
- Monolithic ACIS assembly is supported. Monolithic refers to a single file holding all the data required to define the assembly. Refer to ACIS assembly for more information.
- InterOp ACIS Writer supports the following file formats and versions:
File Format File Extension Version Supported ASAT .asat ACIS R19 onwards ASAB .asab ACIS R19 onwards
- The following options are required for reading/writing monolithic .ASAT files
- Represenation=Assembly
- Flatten=False
- Limitations:
- The following features are not supported by ACIS assembly(ASAT/ASAB):
- Atomic assemblies
- Layer/Layer Filter
- Color at instance levels
- Suppress/Hidden
- Cut/Hole
- PMI
- Hybrid assemblies
- Unit at instance level and FreeParts
- Required DLLs:
- To support translation of ACIS assembly data, ensure that the following libraries(DLLs) are available in the InterOp and ACIS base directories:
- InterOp:
- SPAXACISASSEMBLYIMPORTER.DLL
- SPAXACISBASE.DLL
- SPAXACISKERNEL.DLL
- SPAXASSEMBLYREP.DLL
- SPAXBASE.DLL
- SPAXINTEROP.DLL
- ACIS:
- SPAAASM.DLL
- SPAACIS.DLL
- SPABASE.DLL
- Support for Assembly Cut Features from Pro/E to ACIS
- InterOp supports translation of the assembly cut features from Pro/E. Translation of assembly cut features is implemented in two ways:
- Assembly Route to XML-EBOM (output as XML+SAT)
- Flatten Route to ACIS (output as list of entities)
XML Route (EBOM)
The XML route involves creating a separate SAT file for each assembly cut features.
The main features of translating an assembly cut features using an XML route are:
- A separate SAT file is created for each assembly cut features.
- Each SAT file contains tool body (BODY) and hole group (SPAGROUP) information if the cut feature is a Hole or Pattern feature.
- An additional node, named "SPACutsubassy name" is added at each corresponding subassembly level in the XML file for a cut feature in the source Pro/E subassembly file.
- In addition to the positioning and reference link, the SPACut# node contains a list of affected assembly instances under a new tag AffectedChildren.
The following sample code shows implementation of XML route translation for assembly cut features:
<Child Name="SPACut1_SubName" Identifier="Id_SPACut1_SubName"> <Position> <V1>-1.000000000000000</V1> ... <T3>700.080000000000040</T3> </Position> <RefLink Id="RefIdSPACut1_SubName" /> <AffectedChildren> <Child Id="pem_nut_10-1"/> <Child Id="Instance 02"/> <Child Id="Instance 05"/> </AffectedChildren> </Child>
Assembly Cut Feature in Flatten Route
The flatten route method involves translating the assembly cut features from Pro/E as a SPACOLLECTION entity in ACIS. Each SPACOLLECTION entity has a generic attribute (type ATTRIB_GEN_INTEGER) attached to it. The value of this attribute indicates whether the SPACOLLECTION entity is created from an assembly cut features or not. The name of the attribute attached to a SPACOLLECTION entity is ATTRIB_XACIS_GROUP_TYPE. The value of this attribute is 4 for a SPACOLLECTION entity created from an assembly cut features. The following diagram shows translation of a Pro/E file containing three assembly cut features to ACIS:
The members of a SPACOLLECTION entity are:
- A tool BODY with attached SPAATTRIB_ASSY_CUT_TOOL attribute (type ATTRIB_GEN_INTEGER). The value of this attribute is true, which indicates that the body is a tool body.
- Bodies that will be intersected for assembly cut.
- SPAGROUP representing a hole feature/pattern if the cut feature represents a hole/pattern feature and the Manufacturing representation is set.
This group will have all the hole/pattern information attached as an attribute. The following table lists the attributes attached to an empty SPAGROUP entity representing the Hole feature:
| Attribute Name | Attribute Type | Hole Information |
|---|---|---|
| ATTRIB_XACIS_GROUP_TYPE | Integer
-1 - undefined type 0 - layer entity 1 - layer filter entity 2 - selection set entity 3 - hole feature 4 - entity created from an assembly cut features 5 - entity created for parameters | Group type |
| SPAATTRIB_MFGTYPE | Integer (-1 to 6)
-1 - Unknown 0 - Simple hole 1 - Tapered 2 - Counter Bore 3 - Counter Sink 4 - Counter drilled 5 - Rectangular Pattern Feature 6 - Circular Pattern Feature | Hole type |
| SPAATTRIB_HLDIA | Double | Primary hole diameter |
| SPAATTRIB_HLDIAMXTL | Double | Primary diameter maximum tolerance |
| SPAATTRIB_HLDIAMNTL | Double | Primary diameter minimum tolerance |
| SPAATTRIB_HLDPTH | Double | Hole depth |
| SPAATTRIB_HLTIPANG | Double (in radians) | Hole tip angle |
| SPAATTRIB_HLDIR | SPAvector | Hole direction |
| SPAATTRIB_HLTAPANG | Double (in radians) | Taper hole angle |
| SPAATTRIB_HLCBDIA | Double | Counter bore diameter |
| SPAATTRIB_HLCBDIAMXTL | Double | Counter bore diameter maximum tolerance |
| SPAATTRIB_HLCBDIAMNTL | Double | Counter bore diameter minimum tolerance |
| SPAATTRIB_HLCBDPTH | Double | Counter bore depth |
| SPAATTRIB_HLCSDIA | Double | Counter sink diameter |
| SPAATTRIB_HLCSDIAMXTL | Double | Counter sink diameter maximum tolerance |
| SPAATTRIB_HLCSDIAMNTL | Double | Counter diameter minimum tolerance |
| SPAATTRIB_HLCSTAPANG | Double | Counter sink taper angle |
| SPAATTRIB_HASTHREAD | Bool | Whether the hole is threaded. True, if hole is threaded. |
| SPAATTRIB_HLTHRDTYPE | String | Hole thread type, specifies name of the thread type |
| SPAATTRIB_HLTHRDDIA | Double | Hole thread diameter |
| SPAATTRIB_HLTHRDPTCH | Double | Hole thread pitch |
| SPAATTRIB_HLTHRDDPTH | Double | Hole thread depth |
| SPAATTRIB_HLTHRDMXTL | Double | Hole thread maximum tolerance |
| SPAATTRIB_HLTHRDMNTL | Double | Hole thread minimum tolerance |
| SPAATTRIB_HLTHRDDIR | Bool | Hole thread direction. True indicates Right Handed else Left Handed |
| SPAATTRIB_HLCDDIA1 | Double | Counter drilled hole diameter1 |
| SPAATTRIB_HLCDDIA2 | Double | Counter drilled hole diameter2 |
| SPAATTRIB_HLCDDIAMXTL | Double | Counter drilled diameter maximum tolerance |
| SPAATTRIB_HLCDDIAMNTL | Double | Counter drilled diameter minimum tolerance |
| SPAATTRIB_HLCDDPTH | Double | Counter drilled hole depth |
| SPAATTRIB_HLCDTAPANG | Double | Counter drilled hole taper angle |
| SPAATTRIB_HLPOS | SPAposition | Center position of the hole |
The following table lists the Pattern attributes attached to the SPAGROUP entity:
| Attribute Name | Attribute Type | Pattern Information |
|---|---|---|
| SPAATTRIB_PATRTHL | SPAGROUP | Base hole in a pattern feature (both for circular and rectangular pattern) |
| SPAATTRIB_PATANCHPT | SPAposition | Anchor position of root hole in a pattern (both for circular and rectangular pattern) |
| SPAATTRIB_PATFDIRPOS | int | Original position of base hole in first direction in a pattern (both for circular and rectangular pattern) |
| SPAATTRIB_PATSDIRPOS | int | Original position of base hole in second direction in a pattern (both for circular and rectangular pattern) |
| SPAATTRIB_PATFDIRCNT | int | Number of duplications in first direction in a pattern (both for circular and rectangular pattern) |
| SPAATTRIB_PATSDIRCNT | int | Number of duplications in second direction in a pattern (both for circular and rectangular pattern) |
| SPAATTRIB_PATFDIRSTP | double | Step between two consecutive duplications in first direction in a pattern (both for circular and rectangular pattern) |
| SPAATTRIB_PATSDIRSTP | double | Step between two consecutive duplications in second direction in a pattern |
| SPAATTRIB_RECPATFDIR | SPAvector | First direction in a rectangular pattern (Not applicable for circular pattern) |
| SPAATTRIB_RECPATSDIR | SPAvector | Second direction in a rectangular pattern (Not applicable for circular pattern) |
| SPAATTRIB_CIRPATCENOFROT | SPAposition | Center of rotation of circular pattern (Not applicable for rectangular pattern) |
| SPAATTRIB_CIRPATAXSOFROT | SPAvector | Axis of rotation of circular pattern (Not applicable for rectangular pattern) |
| SPAATTRIB_CIRPATINSTROT | logical | Circular pattern instance rotation flag, if it is True, duplication keep the same orientation. (Not applicable for rectangular pattern) |
| ATTRIB_XACIS_GROUP_TYPE | Integer, if its value is 3; it's a hole feature. | Group Type |
| SPAATTRIB_MFGTYPE | Integer | Pattern Type, value of 5 indicates Rectangular Pattern Feature, value of 6 indicates 6 Circular Pattern Feature |
You can query the SPACOLLECTION entity for information and perform a boolean operation to obtain the cut feature where the tool body is used as a tool and the affected flatten list of entities are treated as targets.
Manufacturing Information
- Support for Manufacturing Information Option
- Provides support for Manufacturing Information such as Product Manufacturing Information (PMI) data and Hole data.
BRep
The ACIS Writer component supports the BRep representation.
Mesh
Connect supports translation of Mesh data to the ACIS format. Mesh data is a collection of triangles that define a shape within the model. To support Mesh data translation, you need to use the Mesh representation. Several APIs are defined in ACIS for translating Mesh data. To support translation of Mesh data, you need to ensure that the SPAXAcisMesh.dll (DLL) is available in the base directory.
Note: Refer to the topic corresponding to the source data format for information on additional DLLs required for supporting Mesh data translation.
APIs in ACIS
InterOp Connect provides a set of APIs to store Mesh data in the generated ACIS files. The following APIs are defined in the Connect interface:
outcome api_xacis_mesh_get_triangle_set (ENTITY *pEntity, int nSetIndex, int &nVertices, double *&pVertices, int &nTriangles, int *&pIndices)
This API retrieves the data for a particular mesh contained in the ACIS Mesh ENTITY. The parameters to this API are:
- pEntity: Pointer to the ACIS entity for verification.
- bMesh: Indicates whether the ENTITY is a MESHBODY (TRUE) or not (FALSE).
api_xacis_mesh_is_mesh_entity (ENTITY *pEntity, logical &bMesh)
This API determines whether an ACIS ENTITY is a MESHBODY. The parameters to this API are:
- pEntity: Pointer to the ACIS entity for verification.
- bMesh: Indicates whether the ENTITY is a MESHBODY (TRUE) or not (FALSE).
outcome api_xacis_mesh_add_triangle_set (ENTITY *pEntity, int nVertices, double *pVertices, int nTriangles, int *pIndices)
Adds a set of triangles to an existing ACIS Mesh ENTITY. The parameters to this API are:
- pEntity: Reference pointer to the ACIS Entity, used for storing triangle meshes. If this ENTITY type is incorrect, the API will fail.
- nVertices: Total number of vertices in the mesh.
- pVertices: Vertices stored as x,y,z triplets. The total size of the array is 3 * nVertices.
- nTriangles: Total number of triangles represented in this mesh.
- pIndices: The triangle connectivity as an index list. Each triangle is made of three indices, one for each vertex of the triangle. Each index is a zero based index into the vertex list. Each x,y,z triplet in the vertex list is considered one vertex, so index 0 is the first x,y,z set, index 1 is the second x,y,z set, etc. The total size of the index list is 3 * nTriangles.
outcome api_xacis_mesh_create_entity(ENTITY *&pEntity)
This API creates an ACIS ENTITY used for storing triangle mesh data. The parameters to this API are:
- pEntity: Reference pointer to the ACIS Entity, used for storing triangle meshes is returned here, returned by the API.
api_xacis_mesh_get_number_triangle_sets (ENTITY *pEntity, int &nTriangleSets)
This API retrieves the total number of mesh sets contained in an ACIS Mesh ENTITY. The parameters to this API are:
- pEntity: ACIS Mesh ENTITY that is queried for number of triangle sets. If the ENTITY type is incorrect, the API returns an error result.
Limitations
No limitations on the ACIS Writer.


