Model.morphnodesplaneoffset#
- Model.morphnodesplaneoffset(m_collection, e_collection, f_collection, t_plane_normal, t_plane_base, nproj, c_vec, integ, mbias, fbias, envelope, undisplayed, offset)#
Moves the selected nodes to a plane. The moving nodes may be project to the plane along a vector, normal to the plane, or normal to any elements attached to the nodes. The fixed nodes are held in place and the affected elements (or all unfixed nodes in the model if
integis 3 or 6) are stretched according to the value ofinteg.Temporary handles are created for all moving and fixed nodes to determine the stretching of the affected elements.
If
integ=0, a general domain is temporarily created for the affected elements.If
integ=1, the domains currently in the model are used.If
integ=2, 1D, 2D, 3D, and edge domains are temporarily created for the affected elements but the 2D domains are not partitioned.If
integ=3, then handle influences are applied using a spatial relationship rather than through a domain.If
integ=4, only the selected moving nodes are moved and all others are held fixed.If
integ=5, 1D, 2D, 3D, and edge domains are temporarily created for the affected elements and the 2D domains are partitioned. Any handles created due to partitioning are moved based on their distance from the moving and fixed nodes.If
integ=6, then handle influences are applied using the Kriging algorithm.If
integ=7, then handle influences extend only up to a given distance (if envelope is positive) or a given multiple of the applied perturbations (if envelope is negative) away from the moving nodes.The bias factors function as they would for handles except that all moving nodes will have the
mbiasvalue and all fixed nodes will have thefbiasvalue.If no elements are selected and
nprojis 2, 5 or 6, all elements in the model are used to determine projection vectors.If
integis set to 3, 6, or 7, nodes on undisplayed elements and components can be morphed, fixed, or excluded depending on the value ofundisplayed.If
offsetis non-zero, the moving nodes will be offset from the mesh by the specified amount.- Parameters:
m_collection (Collection) – The collection containing the moving node entities.
e_collection (Collection) – The collection containing the affected element entities.
f_collection (Collection) – The collection containing the fixed node entities.
t_plane_normal (hwTriple) – The hwTriple object defining the plane normal components of the plane to which the nodes will be projected. User can also supply a Python list of three doubles.
t_plane_base (hwTriple) – The hwTriple object defining the base point components of the plane to which the nodes will be projected. User can also supply a Python list of three doubles.
nproj (int) –
0 or 10 - Project along vector given by
c_vec1 or 11 - Project normal to target mesh
2 or 12 - Project normal to attached elements
5 or 15 - Project normal to attached elements using smoothed normals
6 or 16 - Project normal to attached elements using CFD corners
If
offsetis non-zero, the offset will be measured from the closest point on the plane for values of 0, 1, 2, 5 and 6. The offset will be measured along the projection vector or normal for values of 10, 11, 12, 15, and 16.c_vec (hwTriple) – The hwTriple object defining the vector for the projection direction (
nproj=0).integ (int) –
0 - Free edges (a single general domain)
1 - Use existing domains
2 - Inferred edges (1D, 2D, 3D, and edge domains - no partitioning)
3 - Morph all nodes using a proximity algorithm
4 - Morph all moving nodes and fix the unselected nodes
5 - Partitioned edges (1D, 2D, 3D, and edge domains with partitioning)
6 - Morph all nodes using the Kriging algorithm
7 - Morph all nodes within an envelope around the moving nodes
mbias (double) – Bias factor of moving nodes.
fbias (double) – Bias factor of fixed nodes.
envelope (double) –
If positive, all nodes beyond the given distance away from the moving nodes will be fixed.
If negative, all nodes beyond a distance calculated by multiplying the total perturbation of each moving node by the absolute value of the envelope and extended away from each moving node will be fixed.
If
integ=7, the calculated distance defines an envelope around the moving nodes within which the morphing of those nodes will linearly taper from fully matching the nearest moving node to zero at the edge of the envelope. If any fixed nodes are within the envelope they will also reduce the morphing of nearby nodes.undisplayed (int) –
Defines how undisplayed nodes are handled. If
integis set to 3, 6, or 7, nodes which are not displayed can be affected by the morphing.0 - Morph nodes on undisplayed elements
1 - Fix nodes on undisplayed elements, they will function just like nodes on the
f_collection2 - Exclude nodes on undisplayed elements, they will not be morphed nor affect the morphing
offset (double) – The distance to offset nodes from the target. The offset will be measured from the closest point on the plane for values of
nprojof 0, 1, 2, 5 and 6. The offset will be measured along the projection vector normal for values ofnprojof 10, 11, 12, 15 and 16.
Example#
Move a collection of nodes with IDs 11 , 12 , and 13 to be offset 1.2 from a plane , use fixed nodes with IDs 21 , 22 , and 23 , and stretch all the elements in the model use the exist domain#import hm import hm.entities as ent model = hm.Model() model.morphnodesplaneoffset( m_collection=hm.Collection(model, ent.Node, [11, 12, 13]), e_collection=hm.Collection(model, ent.Element), f_collection=hm.Collection(model, ent.Node, [21, 22, 23]), t_plane_normal=[1.0, 0.0, 0.0], t_plane_normal_base=[1.0, 0.0, 0.0], nproj=0, c_vec=[1.0, 0.0, 0.0], integ=1, mbias=1.0, fbias=1.0, envelope=0.0, undisplayed=0, offset=1.2, )