Jump to content

4. größter Messwert


---
 Share

Recommended Posts

Hallo Community!

Ich habe 20 Einzelabstände ( Messwerte ), aus denen ich mit einem Resultatselement das Maximum ermittle.
Jetzt dürfen aber 3 der Abstände ( Messwerte ) die maximale Toleranz überschreiten. Somit möchte ich den 4. größten Messwert aus den
20 Messwerten ermitteln. PCM steht zur Verfügung.

Hat jemand von euch eine Idee wie ich die Aufgabe lösen kann.

Vielen Dank schon mal.
Link to comment
Share on other sites

Hallo Andreas!

Super Variante. Wie bekomme ich diese Exceldatei bzw. das Makro in meinen Prüfplan?
Der Ablauf sollte automatisch ablaufen.
Gruß und Danke!
Helmut Schuh
Link to comment
Share on other sites

Hallo Helmut,
die Datein mit <addToFile> in eine Datei schreiben.(In meinem Fall testX.txt auf C:\\temp)
Diese kann dann mit folgendem Befehl ausgelesen werden:

mynumber = readListFile("C:\\temp\testX.txt").asSortedCollection
mynumbermax = mynumber.last // Letzter Wert ist der Max Wert
display("Max.Wert = ",mynumbermax)
mynumbermax4 = getTechnologySegment(mynumber,17) // Wert Nummer 17 = 4. größter Wert)
display("4.größter Wert = ",mynumbermax4)

Grüße Reiner
Link to comment
Share on other sites

Hallo Reiner!

Vielen Dank für deine Hilfe!!!!! 😃 😃 😃 😃
Wir haben es heute getestet und es hat den gewünschten Erfolg gebracht.

Gruß Helmut
Link to comment
Share on other sites

Habe gerade auch mal mit der Idee von Reiner gespielt, allerdings treffe ich auf Komplikationen, siehe Bild. Die Zahl 10.1 wird nicht korrekt sortiert, dementsprechend stimmen die Ergebnisse nicht. Das hat nichts mit Punkt und Komma zu tun, das habe ich schon versucht, indem ich die Punkt durch Komma in der *.txt ersetzt habe. Irgendwie erschliesst sich mir die Logik von Calypso an der Stelle nicht.303_5c927580f65c8735143e12c0b06d7170.jpg
Link to comment
Share on other sites

Ja, Reiner hat wahrscheinlich vergessen, das readListFile() string objekte zurückgibt. Und zeichenfolgen werden nicht so sortiert, wie sie es von dezimalzahlen erwarten.

Hier ist eine ineffiziente lösung, die jedoch das problem beleuchtet.
aListObjectContainingStrings=readListFile("c:\...\file.txt")

for i = 1 to aListObjectContainingStrings.size
	if i == 1
		aNumericalBuild=getParameterNamed(aListObjectContainingStrings,i).asDouble
	else
		aNumericalBuild=aNumericalBuild+", "+getParameterNamed(aListObjectContainingStrings,i).asDouble
	endif
next i

your4thHighestValue=compute("getParameterNamed(list("+aNumericalBuild+").sort,list("+aNumericalBuild+").size-4)")
In Ihrem fall sehe ich jedoch keinen grund, in eine externe datei z lesen / schraiben.
for i = 1 to 10
	if i == 1
		aNumericalBuild=getActual("Durchmesser_Kreis"+i).actual
	else
		aNumericalBuild=aNumericalBuild+", "+getActual("Durchmesser_Kreis"+i).actual
	endif
compute("getParameterNamed(list("+aNumericalBuild+").sort,list("+aNumericalBuild+").size-4)")
Ich habe einen vorschlag in "My Voice", der dieses "problem" mit einer einfachen Lösung angeht. https://portal.zeiss.com/my-voice/product/066cc67a-e50f-470f-9884-a3ec3253c37c/request/7769f237-fb02-4948-b5d5-42724ae58ed4
Link to comment
Share on other sites

 Share

×
×
  • Create New...