Hallo Forum,
Gibt es eine Möglichkeit, alle in einem Bauteil definierten Toleranzen auf einen Blick anzuzeigen, ohne dass man sich jede Bohrung und Skizze einzeln vornehmen muss?
Wir haben mit dem Parameter-Fenster experimentiert, man muss dazu aber bei der Erstellung der Toleranz zusätzlich eins der bunten Felder (+,-,Dreieck) anklicken. Das ist fehlerträchtig und deswegen würde ich es gerne vermeiden.
Vielen Dank schon mal.
@WR,
Die Themenüberschrift wurde zum besseren Auffindbarkeit editiert von Dennis.Ossadnik
Original: Alle Toleranzen eines Bauteils anzeigen?
Gelöst! Gehe zur Lösung
Gelöst von Juergen_Wagner. Gehe zur Lösung
Hey WR,
meiner Meinung nach geht das nicht über Inventor Std.-Funktionen......
Ich poste das mal in der Idea Station, wäre schon ziemlich toll, wenn man eine Filter dafür hätte (z.B in der Parameter-Liste)
Aber vielleicht hilft dir diese App.
Viel Spass beim ausprobieren.
LG
+dirk+
Auch Hallo, Hallo (Insinderwitz, versteht nur @WR)
In welcher Form sollen die Maße mit Toleranz dargestellt werden? ((Excel-)Tabelle, als eingeblendetes Maß am Modell,..)
Welche Informationen soll z.B. die Tabelle enthalten? Soll das so aussehen wie eine Passungsliste, also in etwa so:
Mit dieser iLogicrgel...
imports System.IO Public Sub Main() Dim partDoc As PartDocument partDoc = ThisApplication.ActiveDocument Dim partDef As PartComponentDefinition partDef = partDoc.ComponentDefinition Dim params As Parameters params = partDef.Parameters Dim modelParams As ModelParameters modelParams = params.ModelParameters Dim modelParam As ModelParameter For Each modelParam In modelParams Call DisplayToleranceInfo(modelParam) Next process.Start(Dateiname) End Sub Public Dateiname As String = "C:\temp\tol.csv" Private Sub DisplayToleranceInfo(Param As Parameter) Dim tol As Tolerance tol = Param.Tolerance If Param.Tolerance.HoleTolerance <> "" Then Using sw As New StreamWriter(System.IO.File.Open(Dateiname, FileMode.Append)) sw.WriteLine(Param.Name & ";" & Param.Expression & ";" & Param.Tolerance.HoleTolerance & ";" & Math.Round(tol.Upper,4) & ";" & Math.Round(tol.Lower,4) & ";" & ";" & Math.Round(Param.Value * 10 + tol.Upper,4) & ";" & Math.Round(Param.Value *10 + tol.Lower,4)) '& ";" & Param.Tolerance.ToleranceType End Using End If If Param.Tolerance.ShaftTolerance <> "" Then Using sw As New StreamWriter(System.IO.File.Open(Dateiname, FileMode.Append)) sw.WriteLine(Param.Name & ";" & Param.Expression & ";" & Param.Tolerance.ShaftTolerance & ";" & Math.Round(tol.Upper,4) & ";" & Math.Round(tol.Lower,4) & ";" & ";" & Math.Round(Param.Value * 10 + tol.Upper,4) & ";" & Math.Round(Param.Value * 10 + tol.Lower,4)) '& ";" & Param.Tolerance.ToleranceType End Using End If End Sub
...bekommst du dieser XLS-Tabelle der Parameter mit Toleranz
So verwendest du eine iLogiceegel:
Wenn die das Programm immer wieder brauchst, mache eine externe Regel
Hallo Dirk, hallo Jürgen,
man kommt ja mit Lesen gar nicht hinterher. Vielen Dank schon mal. Das Plugin von Dirk funktioniert soweit, ist aber noch nicht genau das, was ich brauche. Bei Jürgens iLogic sieht man immerhin die Parameternamen.
Wir modellieren seit etwa einem Jahr die Toleranzen im Modell. Bei schlampigen Konstrukteuren oder alten Modellen sind die Toleranzen nicht im Modell hinterlegt. Ich möchte nun einfach sehen können, welche Geometrie eine Toleranz hat oder nicht. Das ist der fehlende Punkt bei Euren Lösungsvorschlägen, da sieht man nur die Toleranzen aber keine Zuordnung zum Ort.
Keine Ahnung, ob das mit endlichem Aufwand überhaupt besser geht. Ich guck mir jetzt erstmal die iLogic-Regel genauer an.
Danke!
Werner
Hallo Jürgen,
das performt bei mir nicht so richtig:
C:\temp existiert und ich darf rein schreiben. Excel 2010 ist auch installiert und funktioniert sonst im Zusammenspiel mit Inventor. Jedenfalls mit 2015, mit 2018 hab ich es noch nicht getestet.
Gruß,
Werner
Hab eben Inventor 2018 erfolgreich mit meinem alten Excel 2010 ferngesteuert. Daran liegts also wohl nicht.
Na super, das hättest du auch gleich schreiben können, dann hätte ich mir die Arbeit sparen können.
Vielleicht schaue ich später mal, was sich machen lässt...
Du hast eine IDW auf aber in deiner Frage steht "alle in einem Bauteil definierten Toleranzen "
Du musst das Bauteil aufmachen.
Ich bin raus, bis du sagst:
Sorry, aber das ganze hat mich jetzt 1/2 Stunde gekostet für nichts und darauf habe ich keinen Bock mehr...
Sodele, jetzt will ich aber nichts mehr hören 😉
imports System.IO Sub Main() Dim oDoc As PartDocument oDoc = ThisApplication.ActiveDocument Dim oFeature As PartFeature Dim oFeatureDim As FeatureDimension Dim Skizze As PlanarSketch Dim SkizzeBem As Object For Each oFeature In oDoc.ComponentDefinition.Features For Each oFeatureDim In oFeature.FeatureDimensions Call DisplayToleranceInfo(oFeature.Name, oFeatureDim.parameter) Next ' Show all the feature dimensions Next For Each Skizze In oDoc.ComponentDefinition.Sketches For Each SkizzeBem In Skizze.DimensionConstraints Call DisplayToleranceInfo(Skizze.Name, SkizzeBem.Parameter) Next Next process.Start(Dateiname) End Sub 'Public Sub Main() ' Dim partDoc As PartDocument ' partDoc = ThisApplication.ActiveDocument ' Dim partDef As PartComponentDefinition ' partDef = partDoc.ComponentDefinition ' Dim params As Parameters ' params = partDef.Parameters ' Dim modelParams As ModelParameters ' modelParams = params.ModelParameters ' Dim modelParam As ModelParameter ' For Each modelParam In modelParams ' Call DisplayToleranceInfo(modelParam) ' Next ' process.Start(Dateiname) 'End Sub Public Dateiname As String = "C:\temp\tol.csv" Private Sub DisplayToleranceInfo(FName As String, Param As Parameter) Dim tol As Tolerance tol = Param.Tolerance If Param.Tolerance.HoleTolerance <> "" Then Using sw As New StreamWriter(System.IO.File.Open(Dateiname, FileMode.Append)) sw.WriteLine(FName &";" & Param.Name & ";" & Param.Expression & ";" & Param.Tolerance.HoleTolerance & ";" & Math.Round(tol.Upper,4) & ";" & Math.Round(tol.Lower,4) & ";" & ";" & Math.Round(Param.Value * 10 + tol.Upper,4) & ";" & Math.Round(Param.Value *10 + tol.Lower,4)) '& ";" & Param.Tolerance.ToleranceType End Using End If If Param.Tolerance.ShaftTolerance <> "" Then Using sw As New StreamWriter(System.IO.File.Open(Dateiname, FileMode.Append)) sw.WriteLine(FName &";" & Param.Name & ";" & Param.Expression & ";" & Param.Tolerance.ShaftTolerance & ";" & Math.Round(tol.Upper,4) & ";" & Math.Round(tol.Lower,4) & ";" & ";" & Math.Round(Param.Value * 10 + tol.Upper,4) & ";" & Math.Round(Param.Value * 10 + tol.Lower,4)) '& ";" & Param.Tolerance.ToleranceType End Using End If End Sub
Hallo Jürgen,
jetzt hörst Du trotzdem was von mir: Super! Danke!
Es tut mir leid, dass Du für meine unscharfe Frage Zeit verschwendet hast. Ich hatte nicht erwartet, dass sich sofort um mein Problem gekümmert wird. Normalerweise hagelt es erstmal Nachfragen.
Du hast natürlich Recht, kaum macht man das iLogic-Ding im Teil auf, schon funktioniert es.
Der letzte Schritt, der zur Perfektion fehlt: Kannst Du alle betroffenen Skizzen sichtbar machen? Dann sieht man sofort auch den Ort und muss nicht den Baum nach den Skizzen-Nummern durchsuchen. Vielleicht muss man dazu noch die Anzeige der Bemaßung auf "Toleranz" umschalten, das ist bei unseren alten Modellen auch noch nicht eingestellt.
Aber nur, wenns keine Umstände macht.
Danke!
Werner
Nochmal hallo,
ich muss leider noch was anmerken: Ein 2. Aufruf scheitert, weil die tol.csv noch offen ist. Ich hab mal testweise ein
System.IO.File.Close(Dateiname)
angehängt, ging aber nicht.
Gruß,
Werner
Jetzt habe ich in Summe über eine Stunde "verprogrammiert". Das kostet normalerweise einen Kasten Bier 😉
imports System.IO Sub Main() Dim oDoc As PartDocument oDoc = ThisApplication.ActiveDocument Dim oFeature As PartFeature Dim oFeatureDim As FeatureDimension Dim Skizze As PlanarSketch Dim SkizzeBem As Object For Each oFeature In oDoc.ComponentDefinition.Features For Each oFeatureDim In oFeature.FeatureDimensions Call DisplayToleranceInfo(oFeature, oFeatureDim.parameter) Next ' Show all the feature dimensions Next For Each Skizze In oDoc.ComponentDefinition.Sketches For Each SkizzeBem In Skizze.DimensionConstraints Call DisplayToleranceInfo(Skizze, SkizzeBem.Parameter) Next Next process.Start(Dateiname) End Sub Public Dateiname As String = "C:\temp\tol.csv" Private Sub DisplayToleranceInfo(Obj As Object, Param As Parameter) '(FName As String, Param As Parameter) Dim tol As Tolerance tol = Param.Tolerance If Param.Tolerance.HoleTolerance <> "" Then Using sw As New StreamWriter(System.IO.File.Open(Dateiname, FileMode.Append)) sw.WriteLine(Obj.Name &";" & Param.Name & ";" & Param.Expression & ";" & Param.Tolerance.HoleTolerance & ";" & Math.Round(tol.Upper,4) & ";" & Math.Round(tol.Lower,4) & ";" & ";" & Math.Round(Param.Value * 10 + tol.Upper,4) & ";" & Math.Round(Param.Value *10 + tol.Lower,4)) '& ";" & Param.Tolerance.ToleranceType End Using ObjSichtbar(Obj) End If If Param.Tolerance.ShaftTolerance <> "" Then Using sw As New StreamWriter(System.IO.File.Open(Dateiname, FileMode.Append)) sw.WriteLine(Obj.Name &";" & Param.Name & ";" & Param.Expression & ";" & Param.Tolerance.ShaftTolerance & ";" & Math.Round(tol.Upper,4) & ";" & Math.Round(tol.Lower,4) & ";" & ";" & Math.Round(Param.Value * 10 + tol.Upper,4) & ";" & Math.Round(Param.Value * 10 + tol.Lower,4)) '& ";" & Param.Tolerance.ToleranceType End Using ObjSichtbar(Obj) End If End Sub Private Sub ObjSichtbar(obj As Object) Dim oDoc As PartDocument = ThisApplication.ActiveDocument Dim objType As ObjectTypeEnum objType = obj.Type 'MsgBox(objType.ToString) If objType = ObjectTypeEnum.kPlanarSketchObject Then 'obj.Visible = True Call oDoc.SelectSet.Select(obj) Else Call oDoc.SelectSet.Select(obj) End If End Sub
Voll der Hammer, Alter!
Sehr toll, so wollte ich das. Sogar mit temporärer Anzeige der Skizzen, damit man die nicht wieder alle manuell ausblenden muss.
Nice.
Bzgl. Kasten Bier: Gerne. Du musst mir nur versprechen, den auch in 1 Stunde auszutrinken. 🙂 Sonst wärs ja überteuert.
Werner
....bevor alle besoffen sind von dem ganzen Bier, mach doch mal ein screencast und zeig mal was Du da machst!
Gerne. Auch wenn ich für einen screencast derzeit keine Zeit habe; für ein paar Bildschirmfotos reichts.
Ich möchte mit diesem Skript sehen, wo in einem Bauteil evtl. Toleranzen angegeben wurden.
Bild 1: Toleranzen sind in der Extrusion angegeben, deswegen sieht man keine Skizzen. Dafür kann man die manuell geänderte Bezeichnung der Extrusion
lesen. Im Bauteil sind die Extrusionen hervorgehoben.
Bild 2: Hier sieht man alle Skizzen, die Toleranzen enthalten.
Dann kann man prüfen, ob alle richtig/vorhanden/vollzählig usw. sind.
Prima Sache.
Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.