Jump to content

Get Data from Roundness Filter with PCM


---
 Share

Recommended Posts

I'm trying to get the following data from a Roundness characteristic with a low-pass Gauss filter. The feature being evaluated is a circle. Using Calypso 5.6

1) Filter Type
2) Filter Method
3) Filter UPR
4) Number of scan points
5) Min deviation from filtered points and its index
6) Max deviation from filtered points and its index

Is this possible? Any help is appreciated!
Link to comment
Share on other sites

Not at a workstation at the moment, but if you report the graph of that characteristic in piweb, I believe you get all the information you're after.

Unless you need that data output as separate characteristics... you'll need someone smart for that.
Link to comment
Share on other sites

Please sign in to view this quote.

PCM or not, I'm just looking for the correct syntax to access the data. I'm sure it's possible, I just don't know where to start. The getActual().result.filter functions don't have anything on the number of points.

Please sign in to view this quote.

I'm looking to output the data to a text file so PiWeb is not an option at this time.
Link to comment
Share on other sites

[/quote]
PCM or not, I'm just looking for the correct syntax to access the data. I'm sure it's possible, I just don't know where to start. The getActual().result.filter functions don't have anything on the number of points.
[/quote]

The getActual().result.filter functions is what I would suggest for most items, Further research shows you can use setFilter but not getFilter...hmm..

Regarding the actual point numbers, those might be tricky, however you might use a minimum coordinate/maximum coordinate characteristic - you could recall polar position points with a LOOP and find the smallest/largest RAD value, etc.

that's about all I got off the top of my head, I'll research a bit more when I can.

good luck.
Link to comment
Share on other sites

Update, after playing around I can get the number of points after the filter is applied with:
getActual("Circle1").numberOfPoints
I can also get the total number of points (unfiltered) and then loop through those points getting the X,Y,Z values with:
ptlist=getActual("Circle1").points.vectors
for i = 1 to ptlist.size

ptx = getParameterNamed(ptlist,i).x
pty = getParameterNamed(ptlist,i).y
ptz = getParameterNamed(ptlist,i).z

next i
This method is so close, but the problem is I need to loop through the filtered points, not all of them. There has got to be a way to pull the filtered points data from the feature.

Anyone know?
Link to comment
Share on other sites

He,
put the code below inside postparameter of the feature.
Output will be send to the display-window.
Have fun 🤣

Dosn't work at characteristics 😮

Code: CALYPSO 6.20 runs also 7.40
-------------------------------------------
display("#displayCLOSE")
display("#displayON")

feature = getNominal().testPlanGeometry.identifier
display("Feature")
display("---- ---- ---- ---- ----")
display(feature)
display("EvalMethod = ", getActual(feature).result.evalType)
display("NumberOfPoints = ", getActual(feature).numberOfPoints)
display("Form = ", getActual(feature).form.decimalString)
display("MinIndex = ", getActual(feature).result.indexOfMinDev)
display("MinDev = ", getActual(feature).minDev.decimalString)
display("MaxIndex = ", getActual(feature).result.indexOfMaxDev)
display("MaxDev = ", getActual(feature).maxDev.decimalString)
display("Sigma = ", getActual(feature).sigma.decimalString)


FilterType = getActual(feature).result.filter.method

if FilterType == "waves"
display()
display("Wave Filter ")
display("---- ---- ---- ---- ----")
display("FilterActive = ", getActual(feature).result.filter.filter)
display("FilterType = ", getActual(feature).result.filter.type)
display("FilterKind = ", getActual(feature).result.filter.kindOfPass)
display("FilterPercentage = ", getActual(feature).result.filter.percentage)
display("NoOfWaves = ", getActual(feature).result.filter.nbOfWaves)
display("NoOfWavesTo = ", getActual(feature).result.filter.nbOfWavesTo)
endif

if FilterType == "lambda"
display()
display("Lambda Filter ")
display("---- ---- ---- ---- ----")
display("FilterActive = ", getActual(feature).result.filter.filter)
display("FilterType = ", getActual(feature).result.filter.type)
display("FilterKind = ", getActual(feature).result.filter.kindOfPass)
display("FilterPercentage = ", getActual(feature).result.filter.percentage)
display("WaveLength = ", getActual(feature).result.filter.waveLength)
display("WaveLengthTo = ", getActual(feature).result.filter.waveLengthTo)
endif

display()
display("Outlier ")
display("---- ---- ---- ---- ----")
lable = getActual(feature).geometry
display("Type = ", lable)

if lable == "curve"
display("OutlierActive = ", getActual(feature).outlier.mode)
display("OutlierCompensation = ", getActual(feature).outlier.compensation)
display("OutlierDocumentation = ", getActual(feature).outlier.documentation)
display("OutlierInside = ", getActual(feature).outlier.factorInside)
display("OutlierOutside = ", getActual(feature).outlier.factorOutside)
display("OutlierMaskmode = ", getActual(feature).outlier.maskMode)
display("OutlierMode = ", getActual(feature).outlier.mode)
display("OutlierNeighbours = ", getActual(feature).outlier.nbOfNeighbours)
else
display("OutlierActive = ", getActual(feature).result.outlier.mode)
display("OutlierCompensation = ", getActual(feature).result.outlier.compensation)
display("OutlierDocumentation = ", getActual(feature).result.outlier.documentation)
display("OutlierInside = ", getActual(feature).result.outlier.factorInside)
display("OutlierOutside = ", getActual(feature).result.outlier.factorOutside)
display("OutlierMaskmode = ", getActual(feature).result.outlier.maskMode)
display("OutlierMode = ", getActual(feature).result.outlier.mode)
display("OutlierNeighbours = ", getActual(feature).result.outlier.nbOfNeighbours)
endif
1633_d4af77133fe3faec5b4055a44325bb41.jpg
Link to comment
Share on other sites

Please sign in to view this quote.

I love this statement only 16 minutes before Mr Arch-Zeiss himself drops a buttload of undocumented PCM. in the next post.
Link to comment
Share on other sites

Wow, nicely done.

After looking through a list of commands from Eric Mober's Mimir App :

I was able to find the following, however no luck on getting any output in 6.4.2803 (2017)
3239_d600325dc1c3a2871fd58cef0b0c05f0.png
Link to comment
Share on other sites

Mimir was helpful in getting me this far, but it seems those filter attributes don't work in 5.6.

Even if they did, I don't see anything in that list that would allow me to loop through the filtered points.

Maybe Eric could chime in if he sees this
Link to comment
Share on other sites

Please sign in to view this quote.

If you want the filtered points you can use the command writeActualsToFile()
The downside is that that will give you a file (duh).
But something like this:
writeActualsToFile("characteristic name",true,"alignment 1","C:\temp\points.txt")
ListWithAllFilteredPoints = readListFile("C:\temp\points.txt")
for i = 1 to ListWithAllFilteredPoints.size
row = getParameterNamed(ListWithAllFilteredPoints,i)
display(row)
next i

This will go through all the points in the file and print them in the display-window. Of course you do something else with them. Whatever you need to.
All the points that has a status other than 0 is masked for some reason (outlier, masking in the start or end etc.)
Link to comment
Share on other sites

Please sign in to view this quote.

Thanks for the response! This was a great idea and works well except it writes all points.

However, this led me to the writeActualsToVDA() function which outputs only the filtered points, albeit in VDA format but something I can work with nonetheless.

I think I'm going to run with it because my brain hurts and this works. Thanks all for the help!
Link to comment
Share on other sites

 Share

×
×
  • Create New...