Model ElementPtdsf defines a constraint of a point to a deformable surface.

Class Name



The point can only move by sliding on the deformable surface. The surface can deform because of the loads acting on it. This is an instance of a higher pair constraint.

Attribute Summary

Name Property Modifiable by command? Designable?
id Int ()    
label Str () Yes  
dsurface Reference ("Surface") Yes Yes
i Reference ("Marker") Yes Yes
active Bool () Yes  


Ptdsf (i=objMarker, dsurface=objDeformSurface, optional_attributes)


Reference to an existing Marker.
Defines the marker whose origin is the point.
The attribute i is mandatory.
Reference to an existing deformable surface.
Defines the deformed surface to be used in this constraint.
The attribute dsurface is mandatory.
Specifies the element identification number. This number must be unique among all the Ptdsf objects in the model.
This attribute is optional. MotionSolve will automatically create an ID when one is not specified.
Range of values: id > 0.
Specifies the name of the Ptdsf object.
This attribute is optional. When not specified, MotionSolve will create a label for you.
Select one from True or False.
  • True indicates that the element is active in the model and it affects the behavior of the system
  • False indicates that the element is inactive in the model and it does not affect the behavior of the system. It is almost as if the entity was removed from the model, of course with the exception that can be turned "ON" when desirable.
The attribute active is optional. When not specified, active defaults to True


Create a PTDSF.
# Create the I marker and deformable Surface. Then refer to it in the PTdSF
iMark = Marker (body=p2, qp=[1,2,3], zp=[4,5,6], label="iMark")

# Data points for surface (closed in both U and V)
theData = [ [m11, m12, m13, m14, m15, m16, m11],
            [m21, m22, m23, m24, m25, m26, m21],
            [m31, m32, m33, m34, m35, m36, m31],
            [m41, m42, m43, m44, m45, m46, m41],
            [m51, m52, m53, m54, m55, m56, m51],
            [m61, m62, m63, m64, m65, m66, m61],
            [m71, m72, m73, m74, m75, m76, m71],
            [m81, m82, m83, m84, m85, m86, m81],
            [m11, m12, m13, m14, m15, m16, m11] ]

# Create the deformable surface
dSurface = Deformablesurface (markers=theData, uclosed=True, vclosed=True, label="dSurface")

# Finally, create the deformable surface
thePtdsf = Ptdsf (i=iMark, dsurface= dSurface, label="thePtdsf")


  1. See Properties for an explanation about what properties are, why they are used, and how you can extend these.
  2. For a more detailed explanation about PTDSF, see Constraint: PTdSF.