Arbeiten mit ISO Passmaßen
Wenn Sie in Ihrer Anwendung ISO Passmaße nach ISO 286 benötigen, so findet man im Internet zahlreiche Excel-Tabellen die sämtliche Abmaße für Bohrung und Welle enthalten.
Ich bin für mein Projekt auf der Seite www.siritec.com fündig geworden. Siritec stellt das Programm „PMTabelle V4.0.1“ für Solid Edge kostenlos zur verfügung, dieser Download enthält u.a. die Excel-Datei PassMassTabelle.xls, auf deren Struktur der folgende Programmcode aufbaut. Die Excel Arbeitsmappe enthält über 60 Arbeitsblätter, für jede Toleranzlage und Bohrung/Welle je eine Seite bei einem Nennmaß bis 500mm.
Der Aufbau im Einzelnen ist folgender:
- Spalte 1: Nennmassbereich untere Grenze (ausschließend)
- Spalte 2: Nennmassbereich obere Grenze (einschließend)
- Spalte 3 bis 38: Toleranzgrade 1 bis 18, wobei jedes Toleranzfeld 2 Spalten umfasst, für die untere und für die obere Abmaße.
- Zeile 2: Toleranzgrade
- Zeile 3: Kennung untere Grenze/obere Grenze
- Zeile 4-28 Toleranzen in µm
Was jetzt folgt ist die Excel Automation als late Binding, die ich nur in Ausschnitten zeigen und erleutern möchte.
Public UTG AS Double Public OTG AS Double ... Sub getPassMasse(istmass, Toleranzlage, Toleranzgrad) Dim ExcelApp AS Object Dim ws AS Long 'Worksheet - Zähler Dim tol AS long 'Toleranzen - Zähler Set ExcelApp = CreateObject("Excel.Application") ExcelApp.Workbooks.Open FileName:="c:\PassMassTabelle.xls", ReadOnly:=True With ExcelApp For ws = 1 To .Sheets.Count 'alle Arbeitsblätter durchsuchen If ExcelApp.Sheets(ws).Name = Toleranzlage Then For tol = 4 To 28 If istmass <= CDbl(ExcelApp.Sheets(ws).Cells(tol, 2)) And istmass > CDbl(ExcelApp.Sheets(ws).Cells(tol, 1)) Then UTG = ExcelApp.Sheets(ws).Cells(tol, 2 * Val(Toleranzgrad) + 1) OTG = ExcelApp.Sheets(ws).Cells(tol, 2 * Val(Toleranzgrad) + 2) GoTo Ausstieg End If Next tol End If Next ws End With Ausstieg: Excel_Terminate End Sub
Zuerst wird das Excel Objekt instanziert und die Arbeitsmappe PassMassTabelle.xls geöffnet.
In der äußeren Schleife werden alle 69 Arbeitsblätter durchsucht nach dem, welches der entsprechenden Toleranzlage entspricht. Ist das Abeitsblatt gefunden werden in einer inneren Schleife die Zeilen 4 bis 28 durchlaufen, und nach dem Nennmassbereich gesucht, in diesen das Istmass gehört. Ist der richtige Bereich gefunden werden die Toleranzen ausgelesen. die richtigen Zellen findet man über den Toleranzgrad. Beispielsweise ergibt Toleranzgrad 7 die Zellen 15 und 16 der entsprechenden Zeile. So wird auf eine zusätzliche Schleife verzichtet. Sind die Toleranzen gefunden erfolgt der Ausstieg über eine Sprungmarke.
Was man bei der Excel Automation immer machen sollte ist eine Prüfung ob Excel schon geöffnet ist oder nicht, damit die Instanzierung des Excel Objektes auch funktioniert.
Die Funktion Excel_Terminate dient dazu, Excel zu schließen oder nur die Arbeitsmappe zu schließen, je nach dem ob beim Start Excel schon geöffent war.
Zu beidem gibts in den Newsgroups bzw. einschlägige Foren genug Beispiele.
UTG und OTG sind unteres und oberes Abmass in µm. das bedeutet, dass das Istmass du beiden hinzuzuaddieren ist, um die Toleranzgrenzen zu erhalten.
Zur Auswahl einer Passung kann man sich z.B. ein kleines Popup-Formular erstellen, das beim schließen die gefundenen Toleranzgrenzen in das Eingabeformular eintragen. Nachfolgend noch ein paar Screenshots wie das aussehen könnte.
AV 2010