How to do alignments

  • Filter
  • Time
  • Show
Clear All
new posts

  • How to do alignments

    Ok. I know where to find the alignment options and I know I need to align my pieces everytime I'm creating a new program.
    What I don't know is how to choose the proper alignment option (3-2-1? iterative??).
    I know how to create a 3-2-1 alignment and so far, I find it super easy to use when I have a piece that clearly has a surface, a straight "wall" or side and another similar side on which to create a point. But what if my piece doesn't have any or some of these features? What if it's for example a cylinder? Or what if it's a piece with no visible areas on which to create a line to rotate to?

    In those cases I don't really know what to do. One time I used a 3-2-1 alignment and the results were fine but another time I tried the same thing and results were not similar in any way to the nominals. So I just want to know if there's a "standard" way to measure pieces that do not look like a block or cube or what are the steps to follow in order to create a proper alignment?

    Thank you.

    important questions I have: do I always need a line for rotation? Do the features I use for the alignment always have to have different vectors? What if I want to use X circles as the features for the alignment? Do any of these questions make sense?
    Last edited by Hirxm; 07-10-2019, 05:38 PM.

  • #2
    Within pcdmis, if you don't define an alignment characteristic, it defaults to the machine's volume map coordinates.

    So for example, if you have a cylinder, you would want to construct a cylinder out of it, 2 rows of 3-4 point diameters. make sure your workplane is relative to the cylinder axis vector.
    ctl+alt+a, Level to the center axis of the cylinder, origin X/Y on the center axis,
    if you don't have any clocking features, what I normally do, is take a single point in X+ on the OD of the cylinder, and construct a perpendicular line from cyl axis to point.
    ctl+alt+a rotate the line to X+ about Z+
    Then construct a plane or even a single point along the cyl axis to determine a point along the axis to origin Z.
    ctl+alt+a Origin X/Y to the center of the cylinder, Origin Z to your last point/plane.

    Now you have all 6 DOF constrained.
    repeat in DCC.
    at the end of a DCC alignment, I typically recall startup and assign all 6DOF within one alignment command.
    level axis
    rotate to line
    origin to axis and point

    Always define alignments using level, rotate origin in that order to prevent nominal values from dancing around on you.


    • #3
      For the most part, I concur.

      The single exception being the fact that it's not advisable to take two levels of four hits each to measure a cylinder. Three? yes. Five or more? yes.

      Not 4.

      The problem is that PC-Dmis (as I understand it) can sometimes interpret the eight points taken this way as the eight points of a cube, and all of a sudden your workplane is helter skelter, you've got a cube where you thought a cylinder should be, etc. It's one of the quirks that we need to be aware of and work around.


      • #4
        Originally posted by louisd View Post
        at the end of a DCC alignment, I typically recall startup and assign all 6DOF within one alignment command.
        Why do you do this? Has this been shown to help you in any way?


        • SingularitY
          SingularitY commented
          Editing a comment
          I've been doing this recently also. In reality, it doesn't make a difference. I just try and reduce a constant link between alignments. If you constantly recall the previous alignment, all alignment are linked in some way. If you recall startup on any alignment constraining 6 DOF, the link is broken.

        • louisd
          louisd commented
          Editing a comment
          It is a method to make 100% certain that the alignment is controlled instantaneously in all axes of motion. The earlier method align/level, align/rotate, align/origin has been known to introduce slight shifts in coordinates of each feature that essentially make your nominals shift or dance around by a few tenths.

          and as SingularitY explained, recall:startup keeps the routine from slowing down during a lengthy execution or set of code.

      • #5
        Originally posted by JacobCheverie View Post

        Why do you do this? Has this been shown to help you in any way?
        I do this as well. There has been times i need to go in and jack with an alignment. Having them not linked together makes editing way easier and less hairy.


        • #6
          Jakep379 SingularitY louisd So one possible benefit from this would be, I'm assuming, if somebody screws around with the manual alignment the part can still be measured to your last alignment that recalled startup? That would be pretty slick


          • #7
            no, not really. If your manual alignment is executed improperly it will always risk a DCC crash.
            You can make an input comment asking operators if a manual alignment is needed, have the default keyin value be 2 (for no, man align isn't needed).
            [FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]C1_LABEL[/SIZE][/FONT][/SIZE][/FONT][SIZE=1] [/SIZE][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF]=LABEL/[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR]
            [FONT=CourierNew][SIZE=8px]C1 [/SIZE][/FONT][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF]=COMMENT/[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]INPUT[/SIZE][/FONT][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF],[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]NO[/SIZE][/FONT][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF],FULL SCREEN=[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]NO[/SIZE][/FONT][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF],[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
            [FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]'Does the fixture need to be aligned?[/SIZE][/FONT][/SIZE][/FONT]
            [FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]1) Yes[/SIZE][/FONT][/SIZE][/FONT]
            [FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]2) No'[/SIZE][/FONT][/SIZE][/FONT]
            [FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF]IF/[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]C1.INPUT==!1 OR C1.INPUT==!2[/SIZE][/FONT][/SIZE][/FONT]
            [FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF]COMMENT/[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]OPER[/SIZE][/FONT][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF],[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]NO[/SIZE][/FONT][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF],FULL SCREEN=[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]YES[/SIZE][/FONT][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF],AUTO-CONTINUE=[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]NO[/SIZE][/FONT][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF],[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
            [FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]Fixture alignment input is invalid! [/SIZE][/FONT][/SIZE][/FONT]
            [FONT=Times New Roman][SIZE=8px]Please input number: 1 or 2
            [COLOR=#0000FF]GOTO= [/COLOR][/SIZE][/FONT][FONT=Times New Roman][SIZE=8px]C1_LABEL[/SIZE][/FONT]
            [FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF]IF_GOTO/[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]C1.INPUT==1[/SIZE][/FONT][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF],GOTO = [/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]MAN_ALN[/SIZE][/FONT][/SIZE][/FONT]
            [FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF]IF_GOTO/[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]C1.INPUT==2[/SIZE][/FONT][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF],GOTO = [/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]MDE_DCC[/SIZE][/FONT][/SIZE][/FONT]
            [FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]MAN_ALN [/SIZE][/FONT][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF]=LABEL/[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
            [B][SIZE=12px][FONT=arial]-----------Manual align here:[/FONT][/SIZE][/B][/SIZE][/FONT][/SIZE][/FONT]
            [FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]MDE_DCC [/SIZE][/FONT][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF]=LABEL/[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
            [FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF][FONT=CourierNew][SIZE=8px][COLOR=#0000FF]MOVESPEED/ [/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=CourierNew][SIZE=8px][FONT=CourierNew][SIZE=8px]100[/SIZE][/FONT][/SIZE][/FONT]
            [FONT=arial][B][SIZE=12px]-----------[/SIZE]Skipped alignment, execution of routine starts here:[/B][/FONT]
            it's just making sure your manual alignment is defined in one spot, so further down the road you can easily manipulate it, and it increases runtimes as the code isn't linked to all the prior alignments.
            Last edited by louisd; 07-11-2019, 03:12 PM. Reason: forgot goto/label loop for validation loop


            • #8
              Alignment = Control the Six Degrees of Freedom in a Cartesian Coordinate system:
              1. Translation along X axis,
              2. Translation along Y axis,
              3. Translation along Z axis,
              4. Rotation About X axis,
              5. Rotation About Y axis,
              6. Rotation About Z axis.

              The method nicknamed "3-2-1" is 3 steps.

              -The first step is called "3" because the minimum is 3 points which make a Plane. Picture this flat plane as the bottom of a block held with gravity against the granite surface plate: can it Rotate About a X axis running left-right on the granite? No. Can it Rotate About a Y axis running front-rear on the granite? No. Can it Translate up and down along the Z axis? No. This Plane controls 3 degrees of freedom, and most importantly it controls 2 degrees of Rotation at once. This fixing of 2 degrees of rotation is the PC-DMIS alignment action called "Level". Note that it cannot control the 3rd degree f rotation around Z, the blokc is free to 2D spin on the granite.

              -The second step is called "2" because the minimum is 2 points which make a Line. Picture the line as the straight edge of the block where the flat plane ends, and then picture snugging it up against a pair of bolts hand-threaded into a pair holes in the granite on the left and right. Can the part Rotate About the Z axis? No. Can it Translate along Y axis front-rear? No. This Line controls one degree of Rotation and one degree of Translation. Most importantly, the degree of rotation controlled is the 3rd and final rotation - this is the PC-DMIS alignment action called "Rotate".

              - The third step is called "1" because the minimum is a single point to control the last remaining degree of freedom, in this case Translation along X. A 3rd bolt stuck in the granite, set a space back from the other two bolts, will suffice for real-life control. The PC-DMIS alignment action called "Origin" locks the Translation degree.

              Additionally, both the PC-DMIS alignment actions Level and Rotate require an "axis & direction" decision that requires a solid understanding the concept of a feature's Vector:
              We know that XYZ coordinates describe the address of a location in space. That point's at X+ 5, Y -7, Z +10 and we can find it easily.
              The Vector is expressed in I, J, K and describes which direction the feature is facing in the coordinate system. An IJK of 0,0,1 indicates that the feature is facing directly up in Positive Z, with zero tilt or lean towards X or Y.
              Each and every flat Plane, straight Line, and single surface Point has an IJK vector.
              If you go beep-beep-beep and measure a 3-point plane on the top of a block sitting on the granite, the resulting measured IJK will be something like 0.00011245, -0.00012587, +.99954523 - not perfect but rounds off to 0,0,1. The flat plane face is facing up, and we can picture an imaginary arrow sticking perfectly perpendicular out of the flat plane surface, pointing upwards along positive Z axis.
              If you go beep-beep (left to right) along the front face of the block and measure a line, the Vector will represent an imaginary arrow starting at the first hit and pointing past the 2nd hit - and round off to 1,0,0 which is positive X axis direction.

              PC-DMIS alignment action #1: When you go to use the flat plane as a Level feature, you are building your own brand-new Cartesian coordinate system on the part's features. You have to make a decision: in your new system, which axis & direction will this flat plane be facing? if you like to keep things simple, the flat plane facing up gets to be ZPLUS. From this point onwards, the Z axis of your brand-new coordinate system will be running perfectly perpendicular to that measured plane, which means both the X and Y axis will be running perfectly parallel to that plane.

              PC-DMIS alignment action #2: When you go to use the straight left-to-right Line for Rotate, you have to make a decision: which axis direction do you want to be pointing in the direction that Line's vector is pointing? If you want to keep things simple, you choose XPLUS. Now the X axis is running perfectly parallel to this line, and because the Y axis is permanently fixed perfectly 90 degrees to the X axis now the Y axis of your new coordinate system is perfectly perpendicular to the straight edge. Notice in the dialog there's a second axis-direction labeled "About", and further notice that by default it's showing exactly the same axis-direction that you used for Level - ZPLUS. Think about it: you are Rotating About that Z axis, spinning the X & Y axis in 2D around the imaginary arrow coming out of the plane, stopping when the X axis lines up with the straight Line.

              PC-DMIS alignment action #3: The final step is setting Origins, which are simply the zero points on each of the 3 scales/axis. The Z origin is the Plane that prevents translation in Z, the Y origin is the Line that prevents Translation in Y, and the X origin is the final point on the side that prevents Translation in X.

              Got it?

              Now the super importantest part of all: the Plane, the Line, and the Point are absolutely NOT chosen for convenience. It is imperative, mandatory, and non-negotiable that the alignment be built upon the features that are actually important real-life mating features for this part, the features that really control degrees of freedom in real life. It could very well be that the nice straight Line you measured on the convenient front face of the block doesn't do diddly squat in real life and is merely decorative while a pair of bolt holes through the part are what really Rotates and Origins the part when it's assembled.
              For this, we have prints and datums, or we have prints and tribal knowledge of how the part assembles. You must create all Alignments based on these Datums.


              • #9
                WOW!, we are getting the technical teaching of alignments. Which alignment to choose in the original question, 321 or iterative? I would say it depends on what you are doing and info made available. If you are doing a check fixture, you have options, the base might give the surface and two edges only coordinates, a 321 is required in my opinion. If the base has tooling holes or balls with the XYZ coordinates, you have a choice, 321 or iterative. If the fixture has it all, your personal choice. Now, the check fixture will have the nets and datums, you could align to just the nets and datums, (bypass the base), this I would use just a iterative alignment. If I am measuring a part in freestate, 99.9% of the time I will use a iterative alignment. There is no real difference in using either alignment option, they both do the same thing, just in a slightly different format. Personally, I prefer iterative alignments over 321, just my preference. Get to understand both, they each have a reason to be used at different times. Note, the iterative feature must have a minimum 3 features to level, if you have only two net pads on the fixture, use three vector points on the two pads, more if you want, I do that in the dcc mode. If your B & C are pins or holes, add three sample hits to help in orientation, this should get you started in the proper direction.

                Happy alignments,


                Related Topics