Model ElementPTSF defines a higher pair constraint. A fixed point on one body slides on a surface that is fixed on a second body. The point is not allowed to lift off the surface.

Class Name


Attribute Summary

Name Property Modifiable by command? Designable?
id Int ()    
label Str () Yes  
surface Reference ("Surface") Yes Yes
i Reference ("Marker") Yes Yes
rm Reference ("Marker") Yes Yes
disp Double ([0,0,0], count=3)   FD Only
active Bool () Yes  


Ptsf (i=objMarker, surface=objSurface, optional_attributes)


Reference to an existing Marker.
Defines the marker whose origin is the point that is restricted to move on a surface.
The attribute i is mandatory.
Reference to an existing surface.
Defines the surface to be used in this constraint
The attribute surface is mandatory.
Reference to an existing Marker.
Specifies a fixed marker that defines the coordinate system in which the surface points are defined. It also implicitly defines the body on which the surface is "etched". The surface moves with the body.
The attribute rm 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 PTSF.
# Create the I marker
iMark = Marker (body=p2, qp=[1,2,3], zp=[4,5,6], label="iMark")

# Create the surface object
surface = Surface (function="user (10)", routine=cylindricalSurface, uclosed=True, vclosed=False, minpar=[0, -150], maxpar=[2*pi, 150])

# Finally, create the PTSF constraint
thePtsf = Ptsf (i=iMark, surface= Surface, label="thePtsf")


  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 PTSF, see Constraint: PTSF.