SolidWorks problem importing STEP files in UM With Extents > 1000June 9, 2016 Multiple users have reported that when importing STEP files (usually in units of microns) that SolidWorks 2016 fails and issues a message: "This model is outside of the 1000m modeling limit" (see the SW forum thread: It is likely that SW 2016 STEP Import is unable to properly resize the coordinates from UM (where the values can easily be > 1000) into whatever native units is uses (likely meters.) However, older versions of SolidWorks appear not to suffer from this problem. In order to test/verify that this is the case, we generated a simple rectangular extrusion that is 20,000 x 20,000 um (X,Y) and extruded it in the Z axis by 2000 um. We output this STEP file in units of UM. We repeated the process but output the same 3D body in units of MM. We then proceeded to attempt to import both STEP files into SolidWorks - versions 2010 and 2016. TestWe start with two 3Di files of the same geometry - one is in units of UM and one is in units of MM. We then run them through 3Di2STEP and produce two STEP files -- again the same geometry but one in units of UM and one in units of MM. Left (green) MM; Right (blue) UM Click to download: mm_and_um_step_files.zip 7KB After conversion to STEP AP 214 we can examine the header of the STEP file. There's nothing in the header that refers to units. |
ISO-10303-21; HEADER; FILE_DESCRIPTION (( 'STEP AP214 generated by 3Di2STEP v2.0.16' ), '1' ); FILE_NAME ('mm_example.step', '2016-06-09T10:59:15', ( 'Unknown Author' ), ( 'Artwork Conversion Software, Inc.' ), 'Unknown Preprocessor', 'Unknown Originating System', 'Unknown Authorization' ); FILE_SCHEMA (( 'AUTOMOTIVE_DESIGN' )); ENDSEC; |
ISO-10303-21; HEADER; FILE_DESCRIPTION (( 'STEP AP214 generated by 3Di2STEP v2.0.16' ), '1' ); FILE_NAME ('micron_example.step', '2016-06-09T10:58:51', ( 'Unknown Author' ), ( 'Artwork Conversion Software, Inc.' ), 'Unknown Preprocessor', 'Unknown Originating System', 'Unknown Authorization' ); FILE_SCHEMA (( 'AUTOMOTIVE_DESIGN' )); ENDSEC; |
However, once we get slightly farther down the file we can see a number of lines that make reference to measures of length and units: |
STEP File in MM #15 = UNCERTAINTY_MEASURE_WITH_UNIT (LENGTH_MEASURE( 0.0000001000000000 ), #16, 'distance_accuracy_value', 'NONE' ) ; #16 =( CONVERSION_BASED_UNIT ( 'MILLIMETER', #19 ) LENGTH_UNIT ( ) NAMED_UNIT ( #20 ) ); #17 =( NAMED_UNIT ( * ) PLANE_ANGLE_UNIT ( ) SI_UNIT ( $, .RADIAN. ) ); #18 =( NAMED_UNIT ( * ) SI_UNIT ( $, .STERADIAN. ) SOLID_ANGLE_UNIT ( ) ); #19 = LENGTH_MEASURE_WITH_UNIT ( LENGTH_MEASURE( 0.0010000000000000 ), #21 ); #20 = DIMENSIONAL_EXPONENTS ( 1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000 ); #21 =( LENGTH_UNIT ( ) NAMED_UNIT ( * ) SI_UNIT ( $, .METRE. ) ); |
STEP File in UM #15 = UNCERTAINTY_MEASURE_WITH_UNIT (LENGTH_MEASURE( 0.0000000001000000 ), #16, 'distance_accuracy_value', 'NONE' ) ; #16 =( CONVERSION_BASED_UNIT ( 'MICRON', #19 ) LENGTH_UNIT ( ) NAMED_UNIT ( #20 ) ); #17 =( NAMED_UNIT ( * ) PLANE_ANGLE_UNIT ( ) SI_UNIT ( $, .RADIAN. ) ); #18 =( NAMED_UNIT ( * ) SI_UNIT ( $, .STERADIAN. ) SOLID_ANGLE_UNIT ( ) ); #19 = LENGTH_MEASURE_WITH_UNIT ( LENGTH_MEASURE( 0.0000010000000000 ), #21 ); #20 = DIMENSIONAL_EXPONENTS ( 1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000 ); #21 =( LENGTH_UNIT ( ) NAMED_UNIT ( * ) SI_UNIT ( $, .METRE. ) ); |
Let's move farther down the file to where we see some actual coordinate data. It's clear that the UM file has coordinate values that are 1000X the MM file. |
STEP File in MM #23 = CARTESIAN_POINT ( 'NONE', ( 0.0000, 0.0000, 0.0000 ) ) ; #29 = CARTESIAN_POINT ( 'NONE', ( 0.0000000000000000, 0.0000000000000000, 0.0000000000000000 ) ) ; #53 = CARTESIAN_POINT ( 'NONE', ( 10.0000000000000000, -10.0000000000000000, 0.1000000000000000 ) ) ; #55 = CARTESIAN_POINT ( 'NONE', ( 10.0000000000000000, 10.0000000000000000, 0.1000000000000000 ) ) ; #57 = CARTESIAN_POINT ( 'NONE', ( -10.0000000000000000, 10.0000000000000000, 0.1000000000000000 ) ) ; #59 = CARTESIAN_POINT ( 'NONE', ( -10.0000000000000000, -10.0000000000000000, 0.1000000000000000 ) ) ; #61 = CARTESIAN_POINT ( 'NONE', ( 10.0000000000000000, -10.0000000000000000, 2.1000000000000001 ) ) ; #63 = CARTESIAN_POINT ( 'NONE', ( 10.0000000000000000, 10.0000000000000000, 2.1000000000000001 ) ) ; |
STEP File in UM #23 = CARTESIAN_POINT ( 'NONE', ( 0.0000, 0.0000, 0.0000 ) ) ; #29 = CARTESIAN_POINT ( 'NONE', ( 0.0000000000000000, 0.0000000000000000, 0.0000000000000000 ) ) ; #53 = CARTESIAN_POINT ( 'NONE', ( 10000.0000000000000000, -10000.0000000000000000, 100.0000000000000000 ) ) ; #55 = CARTESIAN_POINT ( 'NONE', ( 10000.0000000000000000, 10000.0000000000000000, 100.0000000000000000 ) ) ; #57 = CARTESIAN_POINT ( 'NONE', ( -10000.0000000000000000, 10000.0000000000000000, 100.0000000000000000 ) ) ; #59 = CARTESIAN_POINT ( 'NONE', ( -10000.0000000000000000, -10000.0000000000000000, 100.0000000000000000 ) ) ; #61 = CARTESIAN_POINT ( 'NONE', ( 10000.0000000000000000, -10000.0000000000000000, 2100.0000000000000000 ) ) ; #63 = CARTESIAN_POINT ( 'NONE', ( 10000.0000000000000000, 10000.0000000000000000, 2100.0000000000000000 ) ) ; |
Importing into SolidWorks 2011We have a number of different versions of SolidWorks running here. We'll start by using SW64-2011. Here is are the files we are going to import and the import setttings: |
||
Both files successfully imported into SolidWorks 2011. But what was interesting was that in both cases, when I measured a point the measurement tool returned information in millimeters! I don't know why this is the case unless there is some automatic units conversion going on even through we specified File Units in the import options. |
|
Left - Import of STEP file in MM; Right - Import of STEP file in UM. |
Importing into SolidWorks 2016Now we'll use SolidWorks 2016: |
|