[Ch...] Posted June 3, 2019 Share Posted June 3, 2019 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 flexible. Link to comment Share on other sites More sharing options...
[De...] Posted June 3, 2019 Share Posted June 3, 2019 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 More sharing options...
[De...] Posted June 3, 2019 Share Posted June 3, 2019 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 More sharing options...
[Ch...] Posted June 4, 2019 Author Share Posted June 4, 2019 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 More sharing options...
[De...] Posted June 4, 2019 Share Posted June 4, 2019 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 More sharing options...
[Ch...] Posted June 4, 2019 Author Share Posted June 4, 2019 What tool do you use to 'check to determine how far off the rotary table centerline a part'? Link to comment Share on other sites More sharing options...
[De...] Posted June 4, 2019 Share Posted June 4, 2019 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 More sharing options...
[Er...] Posted June 5, 2019 Share Posted June 5, 2019 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 More sharing options...
[Ch...] Posted June 5, 2019 Author Share Posted June 5, 2019 Very nice Eric Link to comment Share on other sites More sharing options...
[De...] Posted June 5, 2019 Share Posted June 5, 2019 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. 🙁 Link to comment Share on other sites More sharing options...
[Er...] Posted June 10, 2019 Share Posted June 10, 2019 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 More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in