[Br...] Posted November 2, 2022 Share Posted November 2, 2022 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 More sharing options...
[Ch...] Posted November 2, 2022 Share Posted November 2, 2022 with PCM ? Or you are just looking where to find this info ? I think this is all possible one way or another... more info and I'll help. ➡️ Link to comment Share on other sites More sharing options...
[Ia...] Posted November 2, 2022 Share Posted November 2, 2022 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 More sharing options...
[Br...] Posted November 2, 2022 Author Share Posted November 2, 2022 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 More sharing options...
[Ch...] Posted November 2, 2022 Share Posted November 2, 2022 [/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 More sharing options...
[Ma...] Posted November 2, 2022 Share Posted November 2, 2022 Could you use the Default printout? Link to comment Share on other sites More sharing options...
[Br...] Posted November 3, 2022 Author Share Posted November 3, 2022 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 More sharing options...
[Is...] Posted November 3, 2022 Share Posted November 3, 2022 Please sign in to view this quote. Problem is that Zeiss doesn't like undocumented PCM functions.. 😕 Link to comment Share on other sites More sharing options...
[Kl...] Posted November 3, 2022 Share Posted November 3, 2022 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 Link to comment Share on other sites More sharing options...
[Br...] Posted November 3, 2022 Author Share Posted November 3, 2022 Please sign in to view this quote. Documented or undocumented, does it exist? Link to comment Share on other sites More sharing options...
[He...] Posted November 3, 2022 Share Posted November 3, 2022 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 More sharing options...
[Ch...] Posted November 3, 2022 Share Posted November 3, 2022 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) Link to comment Share on other sites More sharing options...
[Br...] Posted November 3, 2022 Author Share Posted November 3, 2022 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 More sharing options...
[He...] Posted November 3, 2022 Share Posted November 3, 2022 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 More sharing options...
[Br...] Posted November 3, 2022 Author Share Posted November 3, 2022 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 More sharing options...
[Is...] Posted November 4, 2022 Share Posted November 4, 2022 Please sign in to view this quote. Naa, Klaus is a rebel ... and supposedly retired. 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