Current Help System: Tutor Translator (View Core Help)

### Projection Commands

Tutor allows only three kinds of projection commands:

1. A Point type feature (Point, Circle, Ellipse) projected onto a Line type feature (Line, Cone, Cylinder). The result is a Point by Rel feature.

2. A Point type feature (Point, Circle, Ellipse) projected onto a Plane. The result is a Point by Rel feature.

3. A Line type feature (Line, Cone, Cylinder) projected onto a Plane. The result is a Line by Rel feature.

Tutor Projection commands do not have the resulting feature types. During translation the type of the features involved in the computation may be unknown.

A PC-DMIS projection command is a feature construction command with a specific option. This means that at translation time the resulting feature type must be known. A Basic script Function checks the PC-DMIS features type and builds the appropriate Projection command. If PC-DMIS features type cannot be retrieved the operator is asked for the correct one. The MakeProjCmd function is inserted into the Basic script and called every time a projection is translated.

PROJ(MEMORY[40],MEMORY[100],MEMORY[102]) translates to è

If the resulting feature is a point:

PROJ1 =FEAT/POINT,RECT

THEO/<-87.7451,287.9767,-100.2316>,<0.5773503,0.5773503,0.5773503>
ACTL/<-87.7451,287.9767,-100.2316>,<0.5773503,0.5773503,0.5773503>
CONSTR/POINT,PROJ,E.MEMORY[100].ID,E.MEMORY[102].ID

ASSIGN/INT_V1 = E.MEMORY[100].ID.IJK
ASSIGN/INT_V2 = E.MEMORY[102].ID.IJK
ASSIGN/E.WM2 = E.WM1
ASSIGN/E.WM1 = TUTORELEMENT("PRJ1_PNT1")
ASSIGN/E.WM1.TYPE = 116
ASSIGN/E.WM1.DS = DIST3D({E.MEMORY[100].ID},{E.MEMORY[102].ID})
ASSIGN/E.WM1.A = ANGLEBETWEEN(INT_V1,INT_V2)
ASSIGN/E.WM1.AXY = CALC_AXY(INT_V1,INT_V2)
ASSIGN/E.WM1.AYZ = CALC_AYZ(INT_V1,INT_V2)
ASSIGN/E.WM1.AZX = CALC_AZX(INT_V1,INT_V2)
ASSIGN/E.MEMORY[40] = E.WM1

If the resulting feature is a line:

PROJ1 =FEAT/LINE,RECT,UNBND

THEO/<106.2041,-1.7959,-4.4082>,<-0.4082483,-0.4082483,0.8164966>
ACTL/<106.2041,-1.7959,-4.4082>,<-0.4082483,-0.4082483,0.8164966>?
CONSTR/LINE,PROJ,E.MEMORY[100].ID,E.MEMORY[102].ID,1
ASSIGN/INT_V1 = E.MEMORY[100].ID.IJK
ASSIGN/INT_V2 = E.MEMORY[102].ID.IJK
ASSIGN/E.WM2 = E.WM1
ASSIGN/E.WM1 = TUTORELEMENT("PRJ1_LIN1")
ASSIGN/E.WM1.TYPE = 118
ASSIGN/E.WM1.DS = DIST3D({E.MEMORY[100].ID},{E.MEMORY[102].ID})
ASSIGN/E.WM1.A = ANGLEBETWEEN(INT_V1,INT_V2)
ASSIGN/E.WM1.AXY = CALC_AXY(INT_V1,INT_V2)
ASSIGN/E.WM1.AYZ = CALC_AYZ(INT_V1,INT_V2)
ASSIGN/E.WM1.AZX = CALC_AZX(INT_V1,INT_V2)
ASSIGN/E.MEMORY[40] = E.WM1

PROJ(,WM1,WM2) translates to è

If the resulting feature is a point:

PROJ1 =FEAT/POINT,RECT

THEO/<-87.7451,287.9767,-100.2316>,<0.5773503,0.5773503,0.5773503>
ACTL/<-87.7451,287.9767,-100.2316>,<0.5773503,0.5773503,0.5773503>
CONSTR/POINT,PROJ,E.WM1.ID,E.WM2.ID

ASSIGN/INT_V1 = E.MEMORY[100].ID.IJK
ASSIGN/INT_V2 = E.MEMORY[102].ID.IJK
ASSIGN/E.WM2 = E.WM1
ASSIGN/E.WM1 = TUTORELEMENT("PRJ1_PNT1")
ASSIGN/E.WM1.TYPE = 116
ASSIGN/E.WM1.DS = DIST3D({E.MEMORY[100].ID},{E.MEMORY[102].ID})
ASSIGN/E.WM1.A = ANGLEBETWEEN(INT_V1,INT_V2)
ASSIGN/E.WM1.AXY = CALC_AXY(INT_V1,INT_V2)
ASSIGN/E.WM1.AYZ = CALC_AYZ(INT_V1,INT_V2)
ASSIGN/E.WM1.AZX = CALC_AZX(INT_V1,INT_V2)

If the resulting feature is a line:

PROJ1 =FEAT/LINE,RECT,UNBND

THEO/<106.2041,-1.7959,-4.4082>,<-0.4082483,-0.4082483,0.8164966>
ACTL/<106.2041,-1.7959,-4.4082>,<-0.4082483,-0.4082483,0.8164966>
CONSTR/LINE,PROJ,E.WM1.ID,E.WM2.ID,1

ASSIGN/INT_V1 = E.MEMORY[100].ID.IJK
ASSIGN/INT_V2 = E.MEMORY[102].ID.IJK
ASSIGN/E.WM2 = E.WM1
ASSIGN/E.WM1 = TUTORELEMENT("PRJ1_LIN1")
ASSIGN/E.WM1.TYPE = 118
ASSIGN/E.WM1.DS = DIST3D({E.MEMORY[100].ID},{E.MEMORY[102].ID})
ASSIGN/E.WM1.A = ANGLEBETWEEN(INT_V1,INT_V2)
ASSIGN/E.WM1.AXY = CALC_AXY(INT_V1,INT_V2)
ASSIGN/E.WM1.AYZ = CALC_AYZ(INT_V1,INT_V2)
ASSIGN/E.WM1.AZX = CALC_AZX(INT_V1,INT_V2)