Extract the final design geometry from OptiStruct topology,
    topography and shape optimization results, and achieve smoothed plies from free-size
    optimization results on composites.
    Syntax
      
      *ossmooth_12
        modelsel exemode load_op outputcode filepath_fem filepath_sh filepath_grid
          isosurface autobead string_array number_of_strings
    
    Type
      
      HyperMesh Tcl Modify Command
    
    Description
      
      Extract the final design geometry from OptiStruct topology,
        topography and shape optimization results, and achieve smoothed plies from free-size
        optimization results on composites.
    
    Inputs
      
      
        
          - modelsel
- Model selection option. 
- 0 - Specify model file path to read. 
- 1 - Use current model in HyperMesh.
- exemode
- Flag indicating the execution mode of OSSmooth. Valid values are:
              - 0 - Extract geometry only 
- 1 - Extract geometry and inherit boundary conditions for FEA reanalysis 
- 2 - Smoothing plies from free-sizing optimization results on composites
 
- load_op
- Execution/load option. Valid values are:
              - 0 - Create .oss file only to be used in standalone version
                (do not execute ossmooth) 
- 1 - Do not load geom into HyperMesh. 
- 2 - Load geom intoHyperMesh.
 
- outputcode
- Output file format. Valid values are:
              - 1 - Nastran
              
- 2 - IGES 
- 3 - STL 
- 4 - H3D 
- 5 - STEP 
- 6 - PARASOLID 
- 7 - IGES (advanced)
 
- filepath_fem
- The full name and path to the OptiStruct
            .fem results file generated from the optimization.
- filepath_sh
- The full name and path to the OptiStruct
            .sh results file generated from the optimization.
- filepath_grid
- The full name and path to the OptiStruct
            .grid results file generated from the optimization.
- isosurface
- Flag indicating whether to create an isosurface.
- autobead
- Flag indicating whether to create an autobead design.
- string_array
- The ID of the string array that contains the additional parameters. The string array
            is created using the *createstringarray command. This should always
            be set to 1.
- number_of_strings
- Integer indicating the size (number of strings) in the string array created using
              *createstringarray. The valid strings are documented below.
- Each argument can be either space or comma separated. There will be at most five
            strings of parameters, depending on the operations selected. Each string is introduced
            as
            follows:"isosurf: surfacecode surfacemode densitythreshold detectbridge lowthreshold distancecoefficient optismoothboundary lapiteration lapfeatureangle lapsmoothboundary drawrecovery"
 
- This sting is only required when isosurface = 1.
              
                - surfacecode
- The method used for isosurface extraction. Valid values are:
                    - 0 - No smoothing, isosurface only 
- 1 - Optimization based smoothing 
- 2 - No smoothing, element threshold 
- 3 - Laplacian smoothing
 
- surfacemode
- Isosurface mode indicating how to process non-design
                  elements. Valid values are:
                    - 0 - Keep all non-design elements with half layer around 
- 1 - Split only intersected non-design elements 
- 2 - Split overlap non-design elements with half layer around 
- 3 - Split overlap non-design elements
- 4 - Extract shells with half layer around non-design
- 5 - Extract shells without half layer around non-design
 
- densitythreshold
- Threshold value for topology optimization (real value ≥ 0 and ≤ 1).
- detectbridge
- Flag indicating whether to detect connectivity in isosurface (1=yes, 0=no).
- lowthreshold
- The low density threshold for connectivity detection (real value ≥ 0 and ≤ 1).
                  Low threshold value must be smaller than density threshold value.
- distancecoefficient
- The distance coefficient to use in optimization based smoothing (real value ≥
                  -50 and ≤ 50).
- optismoothboundary
- Flag indicating whether to include the boundary or not in optimization based
                  smoothing (1=yes, 0=no).
- lapiteration
- The number of iterations to use in Laplacian smoothing (integer ≥ 0).
- lapfeatureangle
- The feature angle to use in Laplacian smoothing (real value ≥ 1 and ≤ 80).
- lapsmoothboundary
- Flag indicating whether to include the boundary or not in Laplacian smoothing
                  (1=yes, 0=no).
- drawrecovery
- Flag indicating whether to recovery draw constraints in topology optimization
                  (1=yes,
                  0=no)."autobead: shapeopt beadthreshold autobeadlayer"
 
- This string is only required when autobead > 0.
- shapeopt
- Method used for topography or shape optimization interpretation. Valid values are:
                    - 1 - Create autobead 
- 2 - Update new coordinates to original mesh
 
- beadthreshold
- Threshold value for autobead (real value ≥ 0 and ≤ 1).
- autobeadlayer
- Layer value for autobead (integer value 1 or
                  2)."remesh: remeshsize meshtype attachtype remeshlayer remeshfeatureangle"
 
- This string is only required when using remeshing.
- remeshsize
- The element size used in remeshing.
- meshtype
- Flag indicating the elements generated in remeshing. Valid values are:
                    - 0 - trias 
- 1 - quads 
- 2 - mixed 
- 3 - right trias
 
- attachtype
- Flag indicating which elements will be remeshed. Valid values are:
                    - 0 - Remeshing a number of layers elements around PLOT elements 
- 1 - Remeshing all elements
 
- remeshlayer
- The number of layers when attachtype = 0 (integer ≥ 0).
- remeshfeatureangle
- The feature angle used in
                  remeshing."other_params: units tetrameshingcode createplot surfacereduction reductionfeatureangle"
 
- This string is required when isosurface = 1 or
                    autobead = 1.
- units
- Units used for IGES and STEP output. Valid values are:
                    - 1 - inch 
- 2 - mm 
- 4 - foot 
- 6 - meter 
- 10 - cm
 
- tetrameshingcode
- Flag indicating whether to create tetramesh after creating isosurface (1=yes,
                  0=no).
- createplot
- Flag indicating whether to create PLOT elements (1=yes, 0=no).
- surfacereduction
- Flag indicating whether to use surface reduction (1=yes, 0=no).
- reductionfeatureangle
- The feature angle to used for surface reduction (real value ≥ 1 and ≤
                  80)."ply: plyfile plysmoothiteration smallregiontype smallregion splitdisconnected"
 
- This string is required when exemode = 2.
- plyfile
- The full name and path to the .fem file to save the
                  smoothed result plies.
- plysmoothiteration
- The number of iterations to use in ply shape smoothing (integer ≥ 0).
- smallregiontype
- Flag indicating method used for small region (element patch or hole) detection.
                  Valid values are:
                    - 0 - Detect small regions by area ratio 
- 1 - Detect small regions by element count
 
- smallregion
- Threshold value to use for small region elimination. Small region depends on
                    smallregiontype: when smallregiontype = 0,
                  this indicates the area ratio (real value ≥ 0 and < 1, calculated by small
                  region area/total design area). When smallregiontype = 1, this
                  indicates the element count (integer, ≥0).
- splitdisconnected
- Flag indicating whether to split disconnected patches into new plies (1=yes,
                  0=no).
 
Examples
      
      To execute OSSmooth FEA reanalysis on the current model in 
HyperMesh (the 
C:/test/os1.fem and
          
c:/test/os1.sh files), create isosurface with 0.3 density threshold,
        split all quads on non-design/design interface, Laplacian smoothing, with 10 iterations and
        30 degrees feature angle, do remeshing on 2 layers of elements around PLOT, with element
        size 0.5, and feature angle
        30:
*createstringarray 3 "isosurf: 3 3 0.3 0 -1 0 0 10 30 1 0" "remesh: 0.5 0 0 2 30" "other_params: 1 0 0 0 10"
*ossmooth_12 1 1 0 3 "c:/test/os1.fem" "c:/test/os1.sh" "" 1 0 1 2
To execute ply smoothing on 
C:/test/os2.fem, eliminate small element
        patches and holes with less than 20 elements, smoothing plies with 20 iterations, split
        disconnected patches into new plies, export smoothed result plies into
          
C:/test/os2_smooth.fem:
*createstringarray 1 "ply: C:/test/os2_smooth.fem 20 1 20 1"
*ossmooth_12 0 2 0 1 "C:/test/os2.fem" "" "" 0 0 1 1
Errors
      
      Incorrect usage results in a 
Tcl error. To detect
        errors, you can use the 
catch
        command:
if { [ catch {command_name...} ] } {
   # Handle error
}