Arbeiten mit ISO Passmaßen

By , 6. Januar 2010

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

Leave a Reply

You must be logged in to post a comment.

OfficeFolders theme by Themocracy