Simple Copper SlabI am using SolidWorks 2011 to produce a number of extremely simple geometries - solid bodies, parts and assemblies and then examining the annotation the resulting ACIS output as part of an effort to produce useful ACIS for Ansoft products - in particular Maxwell. A single rectangular sketch, extruded into a “slab” assigned a material of copper and saved as a part. Then exported to ACIS v7. ACIS Version There have been many versions of ACIS released over the last years. At the moment we are going to focus on v7 for which we have some cursory documentation. SolidWorks has an output option for ACIS that allows one to select from a wide variety of versions. The ACIS .sat FileHere's the file we generated. simple_copper_slab_mm_v7.SAT 7KB text fileHEADER The first three lines of any ACIS file comprise the header.700 0 1 0 15 SolidWorks 2011 12 ACIS 19.0 NT 24 Mon May 23 10:51:58 2016 1 9.9999999999999995e-007 1e-010 Line 1 700 – encoded version number major release=7, minor release=0, point release=0 0 – total number of saved data records. If zero, an end mark is required. 1 – count of number of entities in the original entity list that were saved to the part file. 0 – least significant bit of ths number used to indicate whether or not history has been saved to this file. Line 2 15 – string length for the product string: SolidWorks 2011 has 15 characters. SolidWorks 2011 – ID for the product which produced this file 12 – String length for the ACIS version ACIS 19.0 NT – string identifying the ACIS kernel version that output this file and the platform. 24 – string length for the date string Mon May 23 10:51:58 2016 – the date string (in C ctime format) Line 3 -1 – Number of millimeters represented by each unit in the model 9.9999999999999995e-007 – Value of resabs for this file. 1e-010 – value of resnor for this file. |
BODY The Body must appear first in the Entity section. -0 body $1 -1 $-1 $2 $-1 $-1 # There may be more than one body per ACIS file. -0 index number for the record. body instantiation of body $1 reference to record -1 (name attribute) -1 don't knwo $-1 null pointer $2 reference to record -2 (lump) $-1 null pointer $-1 null pointer # end of record Index numbers are optional but very helpful if you want to edit the file or try to follow the references manually. LUMP A body can have zero lumps (not sure why this would be useful) or 1 lump or more. In this example we have a single lump. -2 lump $3 -1 $-1 $-1 $4 $0 # -2 index number for this record lump lump class $3 reference to record -3 (color attribute) -1 don't know $-1 null pointer $-1 null pointer $4 reference to record -4 (shell) $0 reference to record -0 (body) # end of record. A lump will generally be defined by a single "outer" shell unless it has internal voids in which case it would have additional shell(s) to account for those voids. In our application I don't see how we would normally generate internal voids so we will always produce a single shell per lump. SHELL A shell surrounds the lump. It is built up from a number of FACES. In our simple case we have 6 faces. -4 shell $-1 -1 $-1 $-1 $-1 $5 $-1 $2 # shell the shell class $-1 null pointer -1 don't know $-1 null pointer $-1 null pointer $-1 null pointer $5 reference to record -5 (face) $-1 null pointer $2 reference to record -2 (lump) Notice that the shell points to one face but it actually is built from 6. How does ACIS know the records for the other faces? Here is a printout of all 6 face records. -5 face $6 -1 $-1 $7 $8 $4 $-1 $9 reversed single # -7 face $10 -1 $-1 $11 $12 $4 $-1 $13 reversed single # -11 face $15 -1 $-1 $16 $17 $4 $-1 $18 reversed single # -16 face $24 -1 $-1 $25 $26 $4 $-1 $27 reversed single # -25 face $42 -1 $-1 $43 $44 $4 $-1 $45 reversed single # -43 face $65 -1 $-1 $-1 $38 $4 $-1 $66 forward single # Notice that: 5 -> 7 -> 11 -> 16 -> 25 -> 42 -> null So the lump only needs to point to a single face; each face then points to another one until they are all linked together. |