# Jprim

Model ElementJprim is used to remove degrees of freedom between two bodies by specifying conditions in which the relative translational or rotational motion can occur. Jprim differs from JOINT in that the former specifies mathematical constraints, which may not have concrete physical realizations like the latter.

Jprim

## Attribute Summary

Name Property Modifiable by command? Designable?
id Int ()
label Str () Yes
i Reference (Marker) Yes Yes
j Reference (Marker) Yes Yes
type Enum (Type, default="ATPOINT", required=True)
active Bool () Yes
virtual Bool () Yes

*Type = ("ATPOINT","INLINE","INPLANE","ORIENTATION","PARALLEL_AXES","PERPENDICULAR")

## Usage

Jprim (i=objmarker, j= objmarker, type=string, optional_attributes)

## Attributes

i
Reference to an existing marker
Specifies a marker that defines the connection on the first body. The body may be a rigid body, a flexible body, or a point body.
The attribute is mandatory.
j
Reference to an existing marker
Specifies a reference marker that defines the connection on the second body. The body may be a rigid body, a flexible body, or a point body.
The attribute is mandatory.
type
String
Specifies the type of constraint connection between the i and j markers.
Type must be one of the following:
• "ATPOINT"
• "INLINE"
• "INPLANE"
• "ORIENTATION"
• "PARALLEL_AXES"
• "PERPENDICULAR"
The attribute is mandatory.
id
Integer
Specifies the element identification number. This number must be unique among all the JPRIM objects in the model.
Optional. MotionSolve will automatically create an ID when one is not specified.
Range of values: id >
label
String
Specifies the name of the JPRIM object.
Optional. When not specified, MotionSolve will create a label for you.
active
Boolean
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 like the entity was removed from the model, of course with the exception that can be turned "ON" when desirable.
Optional. When not specified, active defaults to "TRUE".
virtual
Boolean
Defines whether the constraint is virtual or regular. Select "TRUE" or "FALSE".
• TRUE” indicates that the constraint is implemented as a virtual constraint.
• FALSE” indicates that the constraint is implemented as a regular algebraic constraint.

Optional. When not specified, virtual defaults to “FALSE”. For a more detailed explanation about virtual, see Constraint: Joint.

## Example

Creating an "INPLANE" Jprim.
imark = Marker (body=p3, qp=[21,31,0], label="Marker-30102021")
jmark = Marker (body=p4, qp=[10,20,0], label="Marker-30103020")

inplane_jprim = Jprim (type="INPLANE", i=imark, j=jmark)