public class FemMeshComp extends FemMeshBase implements CollidableBody, PointAttachable, FemMesh
Collidable.Collidability, Collidable.GroupCompositeComponent.NavpanelDisplay| Modifier and Type | Field and Description |
|---|---|
static PropertyList |
myProps |
DEFAULT_COLOR_INTERPOLATION, DEFAULT_SELECTABLE, DEFAULT_VERTEX_COLOR_MIXINGenforceUniqueCompositeNames, enforceUniqueNames, myNumber, NULL_OBJ, useCompactPathNamesAll, AllBodies, Deformable, Rigid, SelfTRANSPARENT, TWO_DIMENSIONALTG_ARTICULATED, TG_DRAGGER, TG_PRESERVE_ORIENTATION, TG_SIMULATING| Constructor and Description |
|---|
FemMeshComp() |
FemMeshComp(FemModel3d fem) |
FemMeshComp(FemModel3d fem,
java.lang.String name) |
| Modifier and Type | Method and Description |
|---|---|
void |
addVertexAttachment(PointAttachment attachment) |
boolean |
allowCollision(ContactPoint cpnt,
Collidable other,
java.util.Set<Vertex3d> attachedVertices)
Returns
true if a collision between this Collidable
and other should be allowed for the contact point
cpnt. |
void |
collectVertexMasters(java.util.List<ContactMaster> mlist,
Vertex3d vtx)
Collects the contact masters for a particular mesh vertex.
|
void |
connectToHierarchy(CompositeComponent hcomp)
Called by the system after this component, or an ancestor of this
component, is added to the component hierarchy (i.e., added as
a child of another CompositeComponent).
|
boolean |
containsContactMaster(CollidableDynamicComponent comp)
Returns true if this Collidable contains a specified contact master
component.
|
FemMeshComp |
copy(int flags,
java.util.Map<ModelComponent,ModelComponent> copyMap) |
static FemMeshComp |
createEmbedded(FemMeshComp surf,
MeshBase mesh) |
static FemMeshComp |
createEmbedded(FemMeshComp surf,
MeshBase mesh,
FemModel3d fem) |
static FemMeshComp |
createEmbedded(FemModel3d fem,
MeshBase mesh) |
void |
createEmbeddingAttachments() |
static FemMeshComp |
createNodalEmbedded(FemMeshComp surf,
MeshBase mesh,
FemModel3d fem) |
static FemMeshComp |
createNodalEmbedded(FemModel3d fem,
MeshBase mesh) |
PointFem3dAttachment |
createPointAttachment(Point pnt)
Returns a PointAttachment that attaches
pnt
to this component. |
void |
createShellSurface(java.util.Collection<ShellElement3d> elems) |
static FemMeshComp |
createShellSurface(java.lang.String name,
FemModel3d fem) |
static FemMeshComp |
createShellSurface(java.lang.String name,
FemModel3d fem,
java.util.Collection<ShellElement3d> elems) |
static FemMeshComp |
createShellSurface(java.lang.String name,
FemModel3d fem,
FemModel.ElementFilter efilter) |
void |
createSurface(FemModel.ElementFilter efilter) |
static FemMeshComp |
createSurface(java.lang.String name,
FemModel3d fem) |
static FemMeshComp |
createSurface(java.lang.String name,
FemModel3d fem,
FemModel.ElementFilter efilter) |
void |
createVolumetricShellSurface(java.util.Collection<FemElement3d> volElems,
java.util.Collection<ShellElement3d> shellElems) |
void |
createVolumetricSurface(java.util.Collection<FemElement3d> elems) |
static FemMeshComp |
createVolumetricSurface(java.lang.String name,
FemModel3d fem) |
static FemMeshComp |
createVolumetricSurface(java.lang.String name,
FemModel3d fem,
java.util.Collection<FemElement3d> elems) |
static FemMeshComp |
createVolumetricSurface(java.lang.String name,
FemModel3d fem,
FemModel.ElementFilter efilter) |
void |
disconnectFromHierarchy(CompositeComponent hcomp)
Called by the system after this component, or an ancestor of this
component, is removed from the component hierarchy (i.e., removed as a
child of its parent).
|
PropertyList |
getAllPropertyInfo()
Returns a list giving static information about all properties exported by
this object.
|
Collidable.Collidability |
getCollidable()
Returns the
Collidable.Collidability of this Collidable. |
Collidable |
getCollidableAncestor()
Returns the most immediate Collidable ancestor of this Collidable,
if any.
|
int |
getCollidableIndex() |
PolygonalMesh |
getCollisionMesh()
Returns the mesh that should be used for computing collisions, or
null if there is no such mesh. |
DistanceGridComp |
getDistanceGridComp()
Returns a
DistanceGridComp object that in turn contains
a signed distance grid that can be used with a SignedDistanceCollider,
or null if this Collidable
does not support a signed distance grid (i.e., if
CollidableBody.hasDistanceGrid() returns false). |
FemElement3dBase |
getFaceElement(Face face) |
FemModel3d |
getFem() |
HalfEdge |
getHalfEdgeForNodes(FemNode3d nodeTail,
FemNode3d nodeHead)
If
nodeTail and nodeHead are directly attached to the
tail and head vertices of a half-edge on this mesh, return the
half-edge. |
double |
getMass()
Returns the mass of the body.
|
FemModel3d |
getModel() |
FemNode3d |
getNodeForVertex(Vertex3d vtx)
Returns the node to which a specified vertex is directly attached,
or
null if no such node exists. |
java.util.Set<FemNode3d> |
getNodes()
Returns the set of nodes that are employed by this mesh.
|
PointAttachment |
getVertexAttachment(int idx)
Retrieves (or creates) a vertex attachment component associated with
vertex vidx, describing how its motion is driven by the underlying
physical system.
|
PointAttachment |
getVertexAttachment(Vertex3d vtx)
Retrieves (or creates) a vertex attachment component associated with
vertex vtx, describing how its motion is driver by the underlying
physical system.
|
double |
getVertexEnergyDensity(int idx)
Computes the energy density value for a particular vertex in this mesh.
|
Vertex3d |
getVertexForNode(FemNode3d node)
Returns a vertex which is directly attached to the specified
node, or
null if no such vertex exists. |
void |
getVertexStrain(SymmetricMatrix3d S,
int idx)
Computes the strain value for a particular vertex in this mesh.
|
void |
getVertexStress(SymmetricMatrix3d S,
int idx)
Computes the stress value for a particular vertex in this mesh.
|
boolean |
hasDistanceGrid()
Returns
true if this Collidable supports a signed
distance grid that can be used with a SignedDistanceCollider. |
boolean |
hasInvariantMasters()
Queries whether or not the contact masters for a particular collision
point are invariant across all contacts.
|
boolean |
hasNodeDependency(FemNode3d node)
Check if this mesh depends on a particular node
|
boolean |
isCompound()
Queries whether or not this collidable has sub-collidables.
|
boolean |
isDeformable()
Returns
true if this collidable is deformable. |
boolean |
isGeneratedSurface()
Returns
true is this mesh was generated by one of the createSurface methdods. |
boolean |
isSingleNodeMapped()
Returns
true if every vertex in this mesh is
directly attached to a single FEM node. |
boolean |
isSurfaceEdge(FemNode3d node0,
FemNode3d node1)
If
node0 and node1 are directly attached to vertices of
the mesh, return true if they are connected by a half-edge. |
boolean |
isSurfaceMesh() |
int |
numVertexAttachments() |
void |
postscan(java.util.Deque<ScanToken> tokens,
CompositeComponent ancestor)
Performs any required post-scanning for this component.
|
void |
render(Renderer renderer,
int flags)
Render this object using the functionality of the supplied
Renderer. |
MeshBase |
scanMesh(ReaderTokenizer rtok)
Scans this mesh from a file, using the format described for
writeMesh(java.lang.String). |
void |
setCollidable(Collidable.Collidability c) |
void |
setCollidableIndex(int idx) |
void |
setVertexAttachment(int vidx,
double[] weights,
FemNode3d[] nodes) |
void |
setVertexAttachment(int vidx,
PointAttachment attachment) |
void |
transformGeometry(GeometryTransformer gtr,
TransformGeometryContext context,
int flags)
Transforms the geometry of this component, using the geometry transformer
gtr to transform its individual attributes. |
boolean |
writeMesh(java.io.PrintWriter pw)
Writes the mesh for this FemMeshComp out to a PrintWriter, using a format
of the form
|
boolean |
writeMesh(java.io.PrintWriter pw,
boolean nodeFormat) |
boolean |
writeMesh(java.lang.String fileName)
Writes the mesh for this FemMeshComp out to a named file,
using the format described for
writeMesh(PrintWriter). |
getColorMap, getColorMapMode, getSelection, getStressPlotRange, getStressPlotRangeMode, getStressPlotRanging, getStressPlotRangingMode, getSurfaceRendering, getSurfaceRenderingMode, numSelectionQueriesNeeded, prerender, render, resetAutoStressPlotRange, setColorMap, setColorMapMode, setMeshFromInfo, setStressPlotRange, setStressPlotRangeMode, setStressPlotRanging, setStressPlotRangingMode, setSurfaceRendering, setSurfaceRenderingModegetSurfaceMesh, getSurfaceMeshes, numSurfaceMeshes, scaleDistance, setNavpanelDisplay, updateSlavePos, updateSlaveVeladdCurve, addCurve, addExternalCurve, addMeshMarker, addMeshMarker, addTransformableDependencies, clearCurves, clearMeshMarkers, createSurfaceMeshArray, getColorInterpolation, getCurves, getFileName, getFileTransform, getMesh, getMeshMarkers, getMeshToWorld, getSurfaceMeshes, getVertex, getVertexColorMixing, isFileTransformRigid, isMeshModified, isMeshPolygonal, isMeshTriangular, isSelectable, numSurfaceMeshes, numVertices, prerenderMesh, removeCurve, removeExternalCurve, removeMeshMarker, scaleMass, scan, setColorInterpolation, setFileName, setFileTransform, setMesh, setMesh, setMesh, setMeshToWorld, setSelectable, setVertexColorMixing, transformGeometry, updateBounds, updatePositioncreateRenderProps, getRenderHints, getRenderProps, setRenderPropscomponentChanged, findComponent, get, get, getByNumber, getChildren, getNavpanelDisplay, getNumberLimit, hasChildren, hasState, hierarchyContainsReferences, indexOf, iterator, numComponents, setDisplayMode, updateNameMapcheckFlag, checkName, checkNameUniqueness, clearFlag, clone, createTempFlag, getGrandParent, getHardReferences, getName, getNameRange, getNavpanelVisibility, getNavpanelVisibility, getNumber, getParent, getProperty, getSoftReferences, isFixed, isMarked, isScanning, isSelected, isWritable, makeValidName, makeValidName, notifyParentOfChange, printReferences, recursivelyContained, recursivelyContains, removeTempFlag, setFixed, setFlag, setMarked, setName, setNavpanelVisibility, setNavpanelVisibility, setNumber, setParent, setScanning, setSelected, setWritable, updateReferences, writeequals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetMesh, isMeshPolygonalgetSelection, isSelectable, numSelectionQueriesNeededgetRenderHints, prerender, updateBoundscreateRenderProps, getRenderProps, setRenderPropscomponentChanged, findComponent, get, get, getByNumber, getNavpanelDisplay, getNumberLimit, hierarchyContainsReferences, indexOf, numComponents, recursivelyFind, updateNameMaptransformPrioritypublic static PropertyList myProps
public FemMeshComp()
public FemMeshComp(FemModel3d fem)
public FemMeshComp(FemModel3d fem, java.lang.String name)
public PropertyList getAllPropertyInfo()
HasPropertiesgetAllPropertyInfo in interface HasPropertiesgetAllPropertyInfo in class FemMeshBasepublic void render(Renderer renderer, int flags)
IsRenderableRenderer.render in interface IsRenderablerender in class MeshComponentrenderer - provides the functionality used to perform the rendering.flags - flags that may be used to control different
aspects of the rendering. Flags are defined in Renderer
and currently include
Renderer.HIGHLIGHT and
Renderer.SORT_FACES.public int numVertexAttachments()
numVertexAttachments in class FemMeshBasepublic PointAttachment getVertexAttachment(Vertex3d vtx)
DynamicMeshComponentgetVertexAttachment in class DynamicMeshComponentvtx - vertexpublic PointAttachment getVertexAttachment(int idx)
DynamicMeshComponentgetVertexAttachment in class FemMeshBaseidx - vertex indexpublic java.util.Set<FemNode3d> getNodes()
public boolean isSingleNodeMapped()
true if every vertex in this mesh is
directly attached to a single FEM node. If this is the case, then
getNodeForVertex(maspack.geometry.Vertex3d) and getVertexForNode(artisynth.core.femmodels.FemNode3d) will never return
null.true if every vertex is attached
a single nodepublic FemNode3d getNodeForVertex(Vertex3d vtx)
null if no such node exists. In particular,
if the specified vertex is controlled by multiple nodes,
then this method will return null.vtx - vertex being queriedvtx is directly attached, or
null.public Vertex3d getVertexForNode(FemNode3d node)
null if no such vertex exists.node - node whose vertex is being queriednull.public HalfEdge getHalfEdgeForNodes(FemNode3d nodeTail, FemNode3d nodeHead)
nodeTail and nodeHead are directly attached to the
tail and head vertices of a half-edge on this mesh, return the
half-edge. Otherwise, return null.nodeTail - node attached to the tail vertexnodeHead - node attached to the head vertexpublic boolean isSurfaceEdge(FemNode3d node0, FemNode3d node1)
node0 and node1 are directly attached to vertices of
the mesh, return true if they are connected by a half-edge.node0 - first node to querynode1 - second node to querytrue if nodes are attached to a half-edge on the meshpublic FemElement3dBase getFaceElement(Face face)
public static FemMeshComp createEmbedded(FemMeshComp surf, MeshBase mesh)
public FemModel3d getFem()
getFem in interface FemMeshgetFem in class FemMeshBasepublic void addVertexAttachment(PointAttachment attachment)
public void setVertexAttachment(int vidx,
PointAttachment attachment)
public void setVertexAttachment(int vidx,
double[] weights,
FemNode3d[] nodes)
public static FemMeshComp createEmbedded(FemMeshComp surf, MeshBase mesh, FemModel3d fem)
public void createEmbeddingAttachments()
public static FemMeshComp createEmbedded(FemModel3d fem, MeshBase mesh)
public static FemMeshComp createNodalEmbedded(FemMeshComp surf, MeshBase mesh, FemModel3d fem)
public static FemMeshComp createNodalEmbedded(FemModel3d fem, MeshBase mesh)
public static FemMeshComp createSurface(java.lang.String name, FemModel3d fem, FemModel.ElementFilter efilter)
public static FemMeshComp createSurface(java.lang.String name, FemModel3d fem)
public static FemMeshComp createVolumetricSurface(java.lang.String name, FemModel3d fem, java.util.Collection<FemElement3d> elems)
public static FemMeshComp createVolumetricSurface(java.lang.String name, FemModel3d fem, FemModel.ElementFilter efilter)
public static FemMeshComp createVolumetricSurface(java.lang.String name, FemModel3d fem)
public static FemMeshComp createShellSurface(java.lang.String name, FemModel3d fem, java.util.Collection<ShellElement3d> elems)
public static FemMeshComp createShellSurface(java.lang.String name, FemModel3d fem, FemModel.ElementFilter efilter)
public static FemMeshComp createShellSurface(java.lang.String name, FemModel3d fem)
public void createSurface(FemModel.ElementFilter efilter)
public void createVolumetricSurface(java.util.Collection<FemElement3d> elems)
public void createShellSurface(java.util.Collection<ShellElement3d> elems)
public void createVolumetricShellSurface(java.util.Collection<FemElement3d> volElems, java.util.Collection<ShellElement3d> shellElems)
public void getVertexStress(SymmetricMatrix3d S, int idx)
FemNode3d.setComputeStress(boolean) being called for the nodes or FemModel.setComputeNodalStress(boolean) being called for the entire FEM model.S - returns the computes stress valueidx - index of the vertexpublic void getVertexStrain(SymmetricMatrix3d S, int idx)
FemNode3d.setComputeStrain(boolean) being called for the nodes or FemModel.setComputeNodalStrain(boolean) being called for the entire FEM model.S - returns the computes strain valueidx - index of the vertexpublic double getVertexEnergyDensity(int idx)
FemNode3d.setComputeEnergyDensity(boolean)
being called for the nodes or FemModel.setComputeNodalEnergyDensity(boolean) being called for the entire
FEM model.idx - index of the vertexpublic boolean writeMesh(java.lang.String fileName)
writeMesh(PrintWriter).fileName - Name of file to write the mesh totrue if the mesh is a polygonal mesh and was written,
and false otherwise.public boolean writeMesh(java.io.PrintWriter pw)
[ v 3 1.0 v 3 0.5 1 0.5 v 1 0.25 2 0.35 3 0.25 4 0.25 v 2 0.5 4 0.5 v 4 1.0 f 1 3 2 f 1 5 3 f 3 5 4 ]Here each line beginning with
v describes a mesh
vertex in terms of the FEM nodes to which it is attached.
This takes the form of a list of number/weight pairs:
v n_0 w_0 n_1 w_1 n_2 w_2 ...where
n_i and w_i indicate, respectively,
a FEM node (using its number as returned by
getNumber()),
and its corresponding weight. In the case where a vertex
is not associated with any nodes, then it is described by
a line of the form
v -1 pz py pzwhere
px, py, and pz
give the vertex's (fixed) position in space.
Each line beginning with f describes a mesh face,
using the vertex numbers in counter-clockwise order about the
outward facing normal. To be consistent with Wavefront .obj
format, the vertex numbers are 1-based and so are equal to the
vertex indices plus one.
If the mesh is not an instance of
PolygonalMesh, then the method does
nothing and returns null.
pw - writer to whichmesh is writtentrue if the mesh is a polygonal mesh and was written,
and false otherwise.public boolean writeMesh(java.io.PrintWriter pw,
boolean nodeFormat)
public MeshBase scanMesh(ReaderTokenizer rtok) throws java.io.IOException
writeMesh(java.lang.String). For backward compatibility, a format
of the form
[ f 0 1 2 f 2 3 4 f 4 5 6 ]Where no vertex information is given, and each face is instead described using the numbers of the FEM nodes that underlie each vertex. This makes the assumption that the mesh is single node mapped (i.e.,
isSingleNodeMapped() returns
true), so that each vertex is associated with
a single FEM node.rtok - tokenizer from which mesh is readjava.io.IOExceptionpublic void connectToHierarchy(CompositeComponent hcomp)
ModelComponentBase When this method is called, ModelComponent.getParent() will return the new
parent component; the system will have set this beforehand.
connectToHierarchy in interface ModelComponentconnectToHierarchy in class FemMeshBasehcomp - hierarchy component to which this component,
or its ancestor, was attachedpublic void disconnectFromHierarchy(CompositeComponent hcomp)
ModelComponentBase When this method is called, ModelComponent.getParent() will still return this
original parent component; the system will set this to null
after.
disconnectFromHierarchy in interface ModelComponentdisconnectFromHierarchy in class FemMeshBasehcomp - hierarchy component from which this component,
or its ancestor, was detachedpublic FemMeshComp copy(int flags, java.util.Map<ModelComponent,ModelComponent> copyMap)
copy in class FemMeshBasepublic boolean isSurfaceMesh()
public boolean isGeneratedSurface()
true is this mesh was generated by one of the createSurface methdods.true if this is a generated surfacepublic boolean hasNodeDependency(FemNode3d node)
public PolygonalMesh getCollisionMesh()
CollidableBodynull if there is no such mesh. If this method
returns null, then no collisions will
be performed for this collidable, regardless any default or explicit
collision behaviors that have been arranged by the system.getCollisionMesh in interface CollidableBodypublic boolean hasDistanceGrid()
CollidableBodytrue if this Collidable supports a signed
distance grid that can be used with a SignedDistanceCollider. At
present, this will only be true for non-deformable bodies.hasDistanceGrid in interface CollidableBodytrue if this Collidable supports a signed
distance gridpublic DistanceGridComp getDistanceGridComp()
CollidableBodyDistanceGridComp object that in turn contains
a signed distance grid that can be used with a SignedDistanceCollider,
or null if this Collidable
does not support a signed distance grid (i.e., if
CollidableBody.hasDistanceGrid() returns false).getDistanceGridComp in interface CollidableBodypublic Collidable.Collidability getCollidable()
CollidableCollidable.Collidability of this Collidable. This provides
control over whether external and/or internal collisions are enabled for
this Collidable. This setting takes precedence over default and
explicitly requested collision behaviors.
Note that for collisions to actually occur, they still need to be enabled through either a default or explicit collision behavior in the MechModel.
getCollidable in interface Collidablepublic void setCollidable(Collidable.Collidability c)
public Collidable getCollidableAncestor()
Collidablenull.getCollidableAncestor in interface Collidablenull.public boolean isCompound()
CollidableisCompound in interface Collidabletrue if this collidable has sub-collidablespublic boolean isDeformable()
Collidabletrue if this collidable is deformable. Whether or
not a collidable is deformable determines how it responds to default
collision behaviors involving deformable and rigid collidables. Also,
self-collisions among sub-collidables of a collidable A are permitted
only if A is deformable.isDeformable in interface Collidabletrue if this collidable is deformablepublic double getMass()
CollidableBodygetMass in interface CollidableBodypublic void collectVertexMasters(java.util.List<ContactMaster> mlist, Vertex3d vtx)
mlist. The vertex
should be a vertex of the mesh returned by CollidableBody.getCollisionMesh().
If CollidableBody.hasInvariantMasters() returns true, then the
contact masters will not depend on vtx.
collectVertexMasters in interface CollidableBodymlist - collected master componentsvtx - vertex for which the master components are requestedpublic boolean hasInvariantMasters()
A collidable that has invariant contact masters typically has fewer dynamic degrees of freedom compared to one that does not.
hasInvariantMasters in interface CollidableBodytrue if contact masters are constantpublic boolean containsContactMaster(CollidableDynamicComponent comp)
CollidableBodycontainsContactMaster in interface CollidableBodycomp - component to test fortrue if comp is contained in
this Collidablepublic boolean allowCollision(ContactPoint cpnt, Collidable other, java.util.Set<Vertex3d> attachedVertices)
CollidableBodytrue if a collision between this Collidable
and other should be allowed for the contact point
cpnt. In making this decision, this method may
refer to attachedVertices, which supplies a list
of vertices on this Collidable which are attached in some way
to the other Collidable.allowCollision in interface CollidableBodycpnt - contact point being testedother - opposing collidableattachedVertices - list of vertices attached to other.true if the collision should be allowedpublic int getCollidableIndex()
getCollidableIndex in interface CollidableBodypublic void setCollidableIndex(int idx)
setCollidableIndex in interface CollidableBodypublic void transformGeometry(GeometryTransformer gtr, TransformGeometryContext context, int flags)
gtr to transform its individual attributes. The
context argument supplies information about what other
components are currently being transformed, and also allows the
requesting of update actions to be performed after all transform called
have completed. The context is also the usual entity that calls
this method, from within its TransformGeometryContext.apply(maspack.geometry.GeometryTransformer, int)
method. The argument flags provides flags to specify
various conditions associated with the the transformation.
At present, the available flags are TransformableGeometry.TG_SIMULATING and
TransformableGeometry.TG_ARTICULATED.
This method is not usually called directly by applications.
Instead, it is typically called from within the
TransformGeometryContext.apply(maspack.geometry.GeometryTransformer, int) method of the context,
which takes care of the various operations needed for a
complete transform operation, including calling
TransformableGeometry.addTransformableDependencies(artisynth.core.modelbase.TransformGeometryContext, int) to collect other
components that should be transformed, calling
TransformableGeometry.transformGeometry(maspack.matrix.AffineTransform3dBase) for each component, notifying
component parents that the geometry has changed, and calling
any requested TransformGeometryActions. More details
are given in the documentation for
TransformGeometryContext.apply(maspack.geometry.GeometryTransformer, int).
TransformGeometryContext provides a number of
static convenience transform methods
which take care of building the context and calling
apply() for a specified set of components.
This method should not
generally call transformGeometry() for its descendant
components. Instead, descendants needing transformation should be
specified by adding them to the context in the method TransformableGeometry.addTransformableDependencies(artisynth.core.modelbase.TransformGeometryContext, int).
transformGeometry in interface TransformableGeometrytransformGeometry in class SkinMeshBasegtr - transformer implementing the transformcontext - context information, including what other components
are being transformedflags - specifies conditions associated with the transformationpublic PointFem3dAttachment createPointAttachment(Point pnt)
PointAttachablepnt
to this component. It should not be assumed that pnt
is currently connected to the component hierarchy, and no attempt
should be made to connect the returned attachment to the hierarchy;
the latter, if desired, is the responsibility of the caller.
In some cases, it may not be possible to attach the point at its present location. In that case, the method will create an attachment to the nearest feasible location.
createPointAttachment in interface PointAttachablepnt - point for which an attachment should be createdpnt to this componentpublic FemModel3d getModel()
public void postscan(java.util.Deque<ScanToken> tokens, CompositeComponent ancestor) throws java.io.IOException
PostScannablescan() method and stored in the token queue.
The most common use of this method is to resolve the paths
of component references, which may not have been created
at the time of the initial scan() call.postscan in interface PostScannablepostscan in class MeshComponenttokens - token information that was stored during
scan().ancestor - ancestor component with respect to which
reference component paths are defined.java.io.IOException - if an error is encountered (such as a reference to a
non-existent component)