*solidcreateruled
Create a solid that interpolates linearly or smoothly between input surfaces.
Syntax
*solidcreateruled surf_list link_coords_array num_coord_links guide_mark_id ruled_type options comp_mode
Type
HyperMesh Tcl Modify
Description
This command creates solid entities by interpolating linearly or smoothly between input surfaces. Optionally, a list of linking points and/or guiding lines and surfaces can be provided for better interpolation and shape control.
The link points are given in link_coords_array, using their x-y-z coordinates. Link points should be given in pairs since each link between input surfaces is specified by its two end points. Furthermore, the pair of points must not skip any surface in between. For instance, if we have surfaces 1, 2, 3 and 4 as the input surfaces in this order, the link points can link surface 2 to 3 but not 2 to 4, by skipping 3. If such a skip is detected, the corresponding pair of points is ignored. One point may be linked to multiple points, which results in triangular surfaces.
In the smooth interpolation case, the linking between surfaces may also be given by selecting guiding lines and/or guiding surfaces using guide_mark_id. Guiding lines are used as part of the boundary of the final interpolating solid. If more than one guiding line is selected, the edges of the solid between these lines are obtained by smoothly interpolating these lines. If linear interpolation is selected, the guiding lines or guiding surfaces are ignored. If a guiding line extends beyond just connecting the input surfaces, that part of the line is ignored.
- Connect the input surfaces at their boundaries.
- Connect to all intermediate input surfaces.
- Link the step surfaces as a single piece surface. In other words, if edge-A of a step surface is linked to edge-B of a step surface the linking surface must be a single surface.
- Be stitched to the edges of step surfaces.
- Link all the level surfaces of the solid. For example, if there are 3 step surfaces and one wants to use guiding surfaces, it is not enough to link only bottom and middle surfaces by a guiding surface. One needs to link the middle and the top surface also.
- If two or more guiding surfaces are located next to each other, they must be stitched together properly.
If any conditions are not met, those guiding lines/surfaces will be ignored.
In the case of a surface with a scratch, if one of the internal points of the scratch is not linked to another surface at its boundary, this scratch is treated as if it is not part of the boundary, i.e. as if it does not exit. If the scratch is linked upward but not downward, then is it considered a part of the boundary while constructing surfaces between its level and the level above, but it is ignored while constructing boundary with the surface below.
All the surfaces at each level must have the same number of internal loops, if any. Currently, only one internal loop at each level is supported. Cases with more than one internal loop will generate solids, but the matching between loops may not be desirable.
Inputs
- surf_list
- The ID of the list containing the input surfaces. The *createlist command is used to create the list. Reserved for future use. Must be set to 0.
- link_coords_array
- List of coordinates for the points which are supposed to be linked by an edge in the solid. The points are given in pairs. The *createdoublearray command must be used to create the array. This should always be set to 1.
- num_coord_links
- The size of the link_coords_array.
- guide_mark_id
- The ID of the mark containing the guiding lines/surfaces. Reserved for future use. Must be set to 0.
- ruled_type
- Type of surface interpolation between input surfaces.
- 0 – Smooth interpolation.
- 1 – Linear interpolation.
- options
- Flags that indicate different modes for solid creation. Bit values are used and the
value is calculated as (Bit0 + 2*Bit1 + 4*Bit2).
- Bit0
- Parameter that controls merging of the solid at input surfaces. Valid values are:
- 0 – Merge solids at shared input surfaces. Creates a single solid.
- 1 – Split solid at shared input surfaces. Creates as many as one less than the number of input surfaces.
- Bit1
- 0 – Create an open-ended solid.
- Bit2
- 0 – Create solid entities.
- comp_mode
- Parameter specifying how entities are organized into components:
- 0 – Solids are created in the current component and boundary surfaces are moved to the same component.
- 1 – Solids are created in the current component, but surfaces remain in their original component.
- 2 – Solids are created in the same component as the selected surfaces. The result is not predictable if the surfaces are originally in different components.
Examples
To create a linear ruled solid between surfaces 11 , 23 and 12:
*createlist surfs 1 11 23 12
*solidcreateruled 1 1 0 1 1 0 2
To create a smooth ring solid in the surfs component component, split at the input surfaces, interpolating surfaces 11, 12 and 15, links point P1 = (2.3, 4.5, 6.0) of surface 11 corresponds to point P2 = (12.3, 2.25, 36.30) of surface 12, uses lines 57 and 68:
*createlist surfs 1 11 12 15
*createdoublearray 6 2.3 4.5 6.0 12.3 2.25 36.30
*createmark lines 2 57 68
*solidcreateruled 1 1 6 2 0 3 2
The following example smoothly interpolates surfaces 9, 1, 3 and 15. Coordinates of 4 points are given that specify the locations that must be linked together at the boundaries of these surfaces. Furthermore, line 416 is given as a guiding line and surfaces 44, 45 and 4 are given as guiding surfaces. Thus, line 416 will be part of the boundary of the final solid as well as surfaces 44-46. All of the other boundary lines connecting surfaces 9, 1, 3 and 15 will be obtained by smoothly interpolating line 416 and the related boundary lines of surface 44-46.
*createlist surfs 1 9 1 3 15
*createdoublearray 12 65.7154694 -45.6232033 0 79.955162 -60.0597343 60 79.955162 -60.0597343 60 39.7798615 -30.2912979 150
*createmark lines 2 416
*createmark surfaces 2 44 45 46
*solidcreateruled 1 1 12 2 0 0 2
Errors
if { [ catch {command_name...} ] } {
# Handle error
}
Version History
11.0