Jump to content

Difference between Part and Rotary Table Axis.


---
 Share

Recommended Posts

Does anyone know a good way to report the difference between the rotary table axis and the part alignment?

I made a crude sketch to try and illustrate what i'm talking about. I don't care if I compare the RT axis to an alignment or an individual feature. I'm flexible163_67de39444da207ba885a8d5f01121626.png
.
Link to comment
Share on other sites

I am not sure if there is an easier way to do this, but I am attaching the method I came up with, unfortunately it requires PCM.

This method is based on having one program measure your rotary table axis and using that axis within your part programs.

If you do the measurement of the rotary axis in the same program you could probably accomplish the same thing without using PCM.

My method is essentially to read the rotarytableaxis file from within the basesystems folder.

This allows access to the position and normal vector of the rotary table axis.

I then use this information to construct a plane and point in CMM coordinates using an Alignment to the CMM coordinates.

These two features are then used to define a second alignment which is the alignment to the rotary table axis.

Now a theoretical line can be created that is constructed using the rotary table axis alignment.

Measurements can be made to the theoretical line which now represents the axis of the rotary table.

BaseAlignmentAxisToRotaryTableAxis.zip

Link to comment
Share on other sites

FYI - I just realized that I never added in code to check if its in inch or metric. It would probably give some bizzaro results if you tried to use it in a program that was in inch.

It should include something like the following in the presettings after it finishes reading in the rotary table data.

if getRecordHead("lengthunit") == "Inch" then
// convert location values to inch..
RotaryLocation_x = RotaryLocation_x / 25.4
RotaryLocation_y = RotaryLocation_y / 25.4
RotaryLocation_z = RotaryLocation_z / 25.4

endif
Link to comment
Share on other sites

Thanks Derek,

I do have PCM and I will work with this today. It makes sense to me, I just need to find time to try it.
Link to comment
Share on other sites

We use rotary tables here a lot, so this actually was something I had wanted to make for a while. We already have a utility to check to determine how far off the rotary table centerline a part was, but never something to check the orientation of the part with regard to the axis.

Either way hope it helps.
Link to comment
Share on other sites

You start by making a blank alignment assigned to CMM System

Then you use the same method of reading the location of the rotary table axis, then you create a theoretical line in the Z axis at the X and Y center of rotation of the rotary, the line is assigned the CMM Alignment so it is aligned to the Z axis of the machine rather than the rotational axis of the rotary.

Now you can make a second alignment which uses the CMMSystem as a base and uses your 3D Line for origin in X and Y.

You can then create a true position of any feature and measure it to the second alignment and have it report additional position result to provide you with the actual location of the feature in relation to the center of the rotary.

We use a program like this to allow us to 'indicate' in close tolerance parts so that they are located as accurately as necessary to the C/L of the rotary.

The example program I created yesterday includes the axis of the rotary though so it could actually give position at the top and bottom of the part by using a couple of intersections - that would allow us to know that the part was parallel to the axis of rotation as well as on location.
Link to comment
Share on other sites

Unnecessarily complicated (slow) method that clogs up valuable memory resources. 😃

If you are on a more recent version of Calypso you can use this:
getRTData("argument")
Arguments:
rtId
rtAvailable
rtActivated
rtActivatedOrPassive
passiveRT
mobileRT
lowerableRT
mtmValue
axisDate
location
orientation
wobble
eccentricity
angleToMainAxis
Link to comment
Share on other sites

Eric,

The methods you gave are pretty cool, and I appreciate the info.

That said; I realize you were likely mostly joking, but perhaps you could give some stats as well to illuminate just how slow and memory hogging one method is versus the other.

I'm not saying there is not a difference but come on man, this is not 1995 most peoples computers are wasting more memory on their desktop graphics than this would use. As for slow, how can this seriously be a concern when this takes less than a fraction of a second to run and piWeb takes as much as 15 seconds to open sometimes.

Also - I am Calypso 2017 and I get the following so not just newer version, but newest version apparently is needed. 🙁 135_e56a01169d7f35e8790f9a4239c49a11.jpg
Link to comment
Share on other sites

I'm not trying to reduce you effort, not at all. Just trying to help. And yes, my reply was sort of a joke. But to prove my point I did a comparison.
It's not scientifically accurate since I didn't use a proper debugger. I just ran both methods five times and calculated the average execution time.
Your average: 50,4
My average: 2,4

50,4-2,4 = 48
48 / 50,4 = 0,9523
0,9523 * 100 = 95,23
Your method takes 95,23% longer time.

Memory usage is a bit trickier, I compared how many objects that where declared in tally. 110 vs 6. This is not right, but it gives a similar value in this case, as a correct method of comparison would.
94,54% more memory usage. My six declarations in tally come from X, Y, Z, I, J, K variables that I assign. And actually you dont need to assign any variables at all. While in yours, its inavodable. My method should also benefit from Calypso garbage collection, while yours dont.

And one could argue that it doesn't matter, since it's not 1995 and you have more then 32MB RAM and execution time is faster then you can say "beer", in both methods. And I agree, but I also disagree.

For us it's not rare that we have over 1000 lines of PCM that need's to be processed and executed. It's not rare that only the PCM part of the program takes up to 15 minutes to finish. By writing in-efficient, you can easily add another 10 minutes of program run time... Everyone writing code in high level languages knows the importance of efficiency. And what impact it have on your program in the end.

Yes, as I said "newer" version. But since your at 2017, you can use this:
baseSystem().rotaryTableAxisBS.normVector.x
baseSystem().rotaryTableAxisBS.normVector.y
baseSystem().rotaryTableAxisBS.normVector.z
baseSystem().rotaryTableAxisBS.vector.x
baseSystem().rotaryTableAxisBS.vector.y
baseSystem().rotaryTableAxisBS.vector.z
Wich have similar numbers as my first suggestion.

And again, not trying to neglect your answer, just trying to help.
Link to comment
Share on other sites

 Share

×
×
  • Create New...