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 numer 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
}