Current Help System: Tutor Translator (View Core Help)

### Intersection Commands

Tutor allows the following intersection commands:

- Circle-Circle. The results are 2 Point by Rel features (E.WM1 and E.WM2).

- Line-Line. The result is a Point by Rel feature.

- Plane-Plane. The result is a Line by Rel feature.

- Sphere-Sphere. The result is Circle by Rel feature.

- Sphere-Plane. The result is Circle by Rel feature.

- Circle-Line. The results are 2 Point by Rel features (E.WM1 and E.WM2).

- Plane-Line. The result is a Point by Rel feature.

- Cone-Plane. The result is Circle by Rel feature.

- Cylinder-Plane. The result is Point by Rel feature.

- Cylinder-Cylinder. The result is Point by Rel feature.

- Sphere-Line. The results are 2 Point by Rel features (E.WM1 and E.WM2).

Tutor Intersection 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 Intersection 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 build the appropriate Intersection command. If PC-DMIS features type cannot be retrieved the operator is asked for the correct one. The MakeIntersCmd function is inserted in the Basic script and called every time an intersection command is translated.

If the two elements don’t intersect the intersection results are not computed and PC-DMIS displays an error message.

More:

Commands with line-line intersection

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

If the elements are two Circles:

INT1_PLN1 =FEAT/PLANE,RECT

THEO/<10,10,10>,<0,0,1>
ACTL/<10,10,10>,<0,0,1>
CONSTR/PLANE,CAST,E.MEMORY[100].ID

INT1_PLN2 =FEAT/PLANE,RECT

THEO/<10,20,30>,<0,0,1>
ACTL/<10,20,30>,<0,0,1>
CONSTR/PLANE,CAST,E.MEMORY[102].ID

INT1_PLN3 =FEAT/PLANE,RECT

THEO/<10,15,20>,<0,0,1>
ACTL/<10,15,20>,<0,0,1>
CONSTR/PLANE,MID,INT1_PLN1,INT1_PLN2

INT1_CIR1 =FEAT/CIRCLE,RECT,OUT

THEO/<10,10,20,0>,<0,1,12>
ACTL/<10,10,20,0>,<0,1,12>
CONSTR/CIRCLE,PROJ,E.MEMORY[100].ID,INT1_PLN3

INT1_CIR2 =FEAT/CIRCLE,RECT,OUT

THEO/<10,20,20,0>,<0,1,12>
ACTL/<10,20,20,0>,<0,1,1>
CONSTR/CIRCLE,PROJ,E.MEMORY[102].ID,INT1_PLN3

INT1_PNT1 =FEAT/POINT,RECT

THEO/<6.6834,15,20>,<0,0,1>
ACTL/<6.6834,15,20>,<0,0,1>
CONSTR/POINT,INT,INT1_CIR2,INT1_CIR1

INT1_PNT2 =FEAT/POINT,RECT

THEO/<13.3166,15,20>,<0,0,1>
ACTL/<13.3166,15,20>,<0,0,1>
CONSTR/POINT,INT,INT1_CIR1,INT1_CIR2

ASSIGN/INT_V1 = E.MEMORY[100].ID.IJK
ASSIGN/INT_V2 = E.MEMORY[102].ID.IJK
ASSIGN/E.WM1 = TUTORELEMENT ("INT1_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.WM2 = TUTORELEMENT ("INT1_PNT2")
ASSIGN/E.WM2.TYPE = 116
ASSIGN/E.WM2.DS = DIST3D({E.MEMORY[100].ID},{E.MEMORY[102].ID})
ASSIGN/E.WM2.A = ANGLEBETWEEN(INT_V1,INT_V2)
ASSIGN/E.WM2.AXY = CALC_AXY(INT_V1,INT_V2)
ASSIGN/E.WM2.AYZ = CALC_AYZ(INT_V1,INT_V2)
ASSIGN/E.WM2.AZX = CALC_AZX(INT_V1,INT_V2)
ASSIGN/E.MEMORY[40] = E.WM1

If the elements are two Lines:

INT1_PNT1 =FEAT/POINT,RECT

THEO/<7.5,12.5,5>,<0,0,1>
ACTL/<7.5,12.5,5>,<0,0,1>
CONSTR/POINT,INT,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.WM1 = TUTORELEMENT ("INT1_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 elements are two Planes:

INT1_LIN1 =FEAT/LINE,RECT,UNBND

THEO/<-310,290.5,119.5>,<0,-0.7071068,0.7071068>
ACTL/<-310,290.5,119.5>,
<0,-0.7071068,0.7071068>
CONSTR/LINE,INTOF,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.WM1 = TUTORELEMENT ("INT1_LIN1")
ASSIGN/E.WM1.TYPE = 117
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 elements are two Spheres:

INT1_LIN1 =FEAT/LINE,RECT,UNBND

THEO/<20,20,20>,<0.5773503,0.5773503,0.5773503>
ACTL/<20,20,20>,<0.5773503,0.5773503,0.5773503>
CONSTR/LINE,BF,3D,E.MEMORY[100].ID,E.MEMORY[102].ID,,

INT1_A1 =ALIGNMENT/START, RECALL:E.ALIGNMENTS[E.CUR_ALIGN], LIST= YES

ALIGNMENT/LEVEL,XPLUS,INT1_LIN1
ALIGNMENT/END
WORKPLANE/ZPLUS

INT1_CIR1 =FEAT/CIRCLE,RECT,OUT

THEO/<23.094,8.165,-14.1421>,<0.5773503,-0.4082483,0.7071068>,20
ACTL/<34.641,0,0>,<0,0,1>,20
CONSTR/CIRCLE,PROJ,E.MEMORY[100].ID,

INT1_CIR2 =FEAT/CIRCLE,RECT,OUT

THEO/<34.641,12.2474,-21.2132>,<0.5773503,-0.4082483,0.7071068>,20
ACTL/<51.9615,0,0>,<0,0,1>,20
CONSTR/CIRCLE,PROJ,E.MEMORY[102].ID,
WORKPLANE/YPLUS

INT1_CIR3 =FEAT/CIRCLE,RECT,OUT

THEO/<23.094,-16.3299,0>,<0.5773503,0.8164966,0>,20
ACTL/<34.641,0,0>,<0,1,0>,20
CONSTR/CIRCLE,PROJ,E.MEMORY[100].ID,

INT1_CIR4 =FEAT/CIRCLE,RECT,OUT

THEO/<34.641,-24.4949,0>,<0.5773503,0.8164966,0>,20
ACTL/<51.9615,0,0>,<0,1,0>,20
CONSTR/CIRCLE,PROJ,E.MEMORY[102].ID,

INT1_PNT1 =FEAT/POINT,RECT

THEO/<28.8675,4.0825,-21.2132>,<0.5773503,-0.4082483,0.7071068>
ACTL/<43.3013,-5,0>,<0,0,1>
CONSTR/POINT,INT,INT1_CIR1,INT1_CIR2

INT1_PNT2 =FEAT/POINT,RECT

THEO/<28.8675,16.3299,-14.1421>,<0.5773503,-0.4082483,0.7071068>
ACTL/<43.3013,5,0>,<0,0,1>
CONSTR/POINT,INT,INT1_CIR2,INT1_CIR1

INT1_PNT3 =FEAT/POINT,RECT

THEO/<28.8675,-20.4124,7.0711>,<0.5773503,0.8164966,0>
ACTL/<43.3013,0,5>,<0,1,0>
CONSTR/POINT,INT,INT1_CIR3,INT1_CIR4

INT1_PNT4 =FEAT/POINT,RECT

THEO/<28.8675,-20.4124,-7.0711>,<0.5773503,0.8164966,0>
ACTL/<43.3013,0,-5>,<0,1,0>
CONSTR/POINT,INT,INT1_CIR4,INT1_CIR3
WORKPLANE/XPLUS

INT1_CIR5 =FEAT/CIRCLE,RECT,OUT,LEAST_SQR

THEO/<28.8675,0,0>,<1,0,0>,43.2049
ACTL/<28.8675,0,0>,<1,0,0>,10
CONSTR/CIRCLE,BF,INT1_PNT1,INT1_PNT3,INT1_PNT4,INT1_PNT2,,
RECALL/ALIGNMENT,INTERNAL,E.ALIGNMENTS[E.CUR_ALIGN]
WORKPLANE/E.SELPL

ASSIGN/INT_V1 = E.MEMORY[100].ID.IJK
ASSIGN/INT_V2 = E.MEMORY[102].ID.IJK
ASSIGN/E.WM1 = TUTORELEMENT ("INT1_CIR5")
ASSIGN/E.WM1.TYPE = 117
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 elements are a Sphere and a Plane:

INT1_CIR1 =FEAT/CIRCLE,RECT,OUT

THEO/<33.3333,33.3333,33.3333>,<0.5773503,0.5773503,0.5773503>,16.3299
ACTL/<33.3333,33.3333,33.3333>,<0.5773503,0.5773503,0.5773503>,16.3299
CONSTR/CIRCLE,INTOF,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.WM1 = TUTORELEMENT ("INT1_CIR1")
ASSIGN/E.WM1.TYPE = 117
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 elements are a Circle and a Line or a Sphere and a Line:

INT1_PNT1 =FEAT/POINT,RECT

THEO/<5.7574,5.7574,10>,<0.7071068,0.7071068,0>
ACTL/<5.7574,5.7574,10>,<0.7071068,0.7071068,0>
CONSTR/POINT,PIERCE,E.MEMORY[100].ID,E.MEMORY[102].ID

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

INT1_LIN1 =FEAT/LINE,RECT,UNBND

THEO/<20,20,10>,<-0.7071068,-0.7071068,0>
ACTL/<15,15,10>,<-0.7071068,-0.7071068,0>
CONSTR/LINE,REV,E.MEMORY[100].ID,14.1421

INT1_PNT2 =FEAT/POINT,RECT

THEO/<14.2426,14.2426,10>,<-0.7071068,-0.7071068,0>
ACTL/<14.2426,14.2426,10>,<-0.7071068,-0.7071068,0>
CONSTR/POINT,PIERCE,INT1_LIN1,E.MEMORY[107].ID

ASSIGN/E.WM1 = TUTORELEMENT ("INT1_PNT2")
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 elements are a Plane and a Line:

INT1_PNT1 =FEAT/POINT,RECT

THEO/<400,400,10>,<0.7071068,0.7071068,0>
ACTL/<400,400,10>,<0.7071068,0.7071068,0>
CONSTR/POINT,PIERCE,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 ("INT1_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 elements are a Cone and a Plane becomes:

INT1_CIR1 =FEAT/CIRCLE,RECT,OUT

THEO/<110,2,408>,<0,0,1>,0
ACTL/<110,2,408>,<0,0,1>,0
CONSTR/CIRCLE,INTOF,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 ("INT1_CIR1")
ASSIGN/E.WM1.TYPE = 117
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 elements are a Cylinder and a Plane or Two Cylinders:

INT1_PNT1 =FEAT/POINT,RECT

THEO/<10.8,21.8,12.98>,<0,0,1>
ACTL/<10.8,21.8,12.98>,<0,0,1>
CONSTR/POINT,INT,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 ("INT1_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