hexagon logo

Does anyone know an easy way to project all the points in a group to a plane?

I have a group of points (a plane for example) and I want to project them all to a plane (simplest case == WORKPLANE). Is there some smart way to do it all at once (a.k.a. "the JEFMAN way") or is it only possible with a loop? I haven't found anything yet...

The object of this is to create a secondary tangent plane perpendicular to the primary by the following method:

- measure the secondary plane
- project all points up/down to the primary (WORKPLANE)
- construct a tangent plane from the original plane points + the projected points (guaranteed to be perpendicular to the primary as that is our projection direction)

As a follow-up question: How can I use an ARRAY variable in the same way as .HIT[...] in the construction of a tangent plane?
Parents

  • Edit: Ignore me - I'm talking rubbish.

    I'll leave what's below though so you can see my (stupid) train of thought.


    I'm on an older version so don't have Tangent construction options so I'm not 100% sure how they behave, but the following might have some merits...


    This works when the 2nd plane is flat, but probably won't be perfect on an imperfect plane.

    However I'm thinking combined with your tangent construction (or possibly even a high point plane?) it might work.

    
    NT1       =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<50,0,-5>,<0,-1,0>
                ACTL/<50,-1,-5>,<0,-1,0>
                TARG/<50,0,-5>,<0,-1,0>
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=AFTER,DISTANCE=25
                SHOW HITS=NO
    PNT2       =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<150,0,-5>,<0,-1,0>
                ACTL/<150,-1,-5>,<0,-1,0>
                TARG/<150,0,-5>,<0,-1,0>
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=AFTER,DISTANCE=25
                SHOW HITS=NO
    PNT3       =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<150,0,-20>,<0,-1,0>
                ACTL/<150,1,-20>,<0,-1,0>
                TARG/<150,0,-20>,<0,-1,0>
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=AFTER,DISTANCE=25
                SHOW HITS=NO
    PNT4       =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<50,0,-20>,<0,-1,0>
                ACTL/<50,1,-20>,<0,-1,0>
                TARG/<50,0,-20>,<0,-1,0>
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=AFTER,DISTANCE=25
                SHOW HITS=NO
    PLN2       =FEAT/PLANE,CARTESIAN,TRIANGLE,NO
                THEO/<100,0,-12.5>,<0,-1,0>
                ACTL/<100,0,-12.5>,<0,-0.9912279,-0.1321637>
                CONSTR/PLANE,BF,PNT1,PNT2,PNT3,PNT4,,
                OUTLIER_REMOVAL/OFF,3
                FILTER/OFF,WAVELENGTH=0
    LIN1       =FEAT/LINE,CARTESIAN,UNBOUNDED,NO
                THEO/<100,0.5,0>,<0,-1,0>
                ACTL/<100,0.5,0>,<0,-1,0>
                CONSTR/LINE,PROJ,PLN2,PLN2,1
    A1         =ALIGNMENT/START,RECALL:STARTUP,LIST=YES
                ALIGNMENT/ROTATE,YMINUS,TO,LIN1,ABOUT,ZPLUS
                ALIGNMENT/END
    SCN1       =FEAT/SET,CARTESIAN
                THEO/<113.769,20.747,-7.5>,<0,0,1>
                ACTL/<113.769,20.497,-7.5>,<0,0,1>
                CONSTR/SET,BASIC,PLN1,PNT1,PNT2,PNT3,,
                ASSIGN/MINPOINTINDEX=MININDEX(SCN1.HIT[1..SCN1.NUMHITS].Y)
    HIPNT      =GENERIC/POINT,DEPENDENT,CARTESIAN,$
                NOM/XYZ,<0,0,0>,$
                MEAS/XYZ,<0,SCN1.HIT[MINPOINTINDEX].Y,0>,$
                NOM/IJK,<0,-1,0>,$
                MEAS/IJK,<0,-1,0>
    2NDRYPLANE =FEAT/PLANE,CARTESIAN,TRIANGLE,NO
                THEO/<0,0,0>,<0,-1,0>
                ACTL/<0,-1,0>,<0,-1,0>
                CONSTR/PLANE,PRTO,COPLANAR=NO,LIN1,HIPNT
    A2         =ALIGNMENT/START,RECALL:A1,LIST=YES
                ALIGNMENT/TRANS,YAXIS,2NDRYPLANE
                ALIGNMENT/END
    



    By projecting the 2nd plane into the workplane to create a line, you get the i&j components but no k component. (THIS IS ABSOLUTELY NO DIFFERENCE TO ROTATING TO THE PLANE ITSELF!!)

    You can then rotate to this vector, then find max or min construct a plane perpendicular to it.

  • Even 'rubbish' can give ideas! The tangent plane construction gives a plane where all hits are on one side of the plane. It works perfectly for a primary datum, but is not enough for a secondary, as this should be constructed with the additional constraint of being perpendicular to the primary.

    I *think* my method will work (with some modifications, I *do* know of one loophole...), but I want to get rid of the separate projection of every hit.
Reply
  • Even 'rubbish' can give ideas! The tangent plane construction gives a plane where all hits are on one side of the plane. It works perfectly for a primary datum, but is not enough for a secondary, as this should be constructed with the additional constraint of being perpendicular to the primary.

    I *think* my method will work (with some modifications, I *do* know of one loophole...), but I want to get rid of the separate projection of every hit.
Children
No Data