Die Inventor FAQ wird unterstützt von:

Inventor FAQ Logo

19.03.2018

Excel-Liste aller tolerierten Maße eines Bauteiles erstellen und in Excel exportieren

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?

Das iLogic-Programm anbei erstellt eine CSV-Datei mit den Parametern, die mit Toleranzen versehen sind.

image

und hebt die Skizzen und Feature hervor, in den die Parameter enthalten sind.

image

imports System.IO
Sub Main()
	Dim oDoc As PartDocument
	oDoc = ThisApplication.ActiveDocument
	
	Dim  Dateiname As String = "C:\temp\" & ThisDoc.FileName(False) & ".csv"
	
	If System.IO.File.Exists(Dateiname) Then System.IO.File.Delete(Dateiname)
	
	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, Dateiname)
		Next 
	Next	
	
	For Each Skizze In oDoc.ComponentDefinition.Sketches 
		
		For Each SkizzeBem In Skizze.DimensionConstraints
			Call DisplayToleranceInfo(Skizze, SkizzeBem.Parameter, Dateiname)
			Next	   	     
		Next	
		process.Start(Dateiname)
End Sub
Private Sub DisplayToleranceInfo(Obj As Object, Param As Parameter, Dateiname As String) 
	
	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

	If objType = ObjectTypeEnum.kPlanarSketchObject Then
		Call oDoc.SelectSet.Select(obj)	
	Else
		Call oDoc.SelectSet.Select(obj)	
	End If
	
End Sub

[Quelle]

3 Kommentare:

  1. Bei einigen Teilen funktioniert das Skript nicht. Fehlermeldung:

    "Fehler in Regel: iLogic_Toleranzen_anzeigen in Dokument: 52-0002-002 holder ring 2 V3.ipt
    Das System kann die angegebene Datei nicht finden"

    Weitere Infos:
    "System.ComponentModel.Win32Exception (0x80004005): Das System kann die angegebene Datei nicht finden
    bei System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
    bei System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
    bei LmiRuleScript.Main()
    bei Autodesk.iLogic.Exec.AppDomExec.ExecRuleInAssembly(Assembly assem)
    bei iLogic.RuleEvalContainer.ExecRuleEval(String execRule)"

    Ich kann leider nicht erkennen, welche Datei nicht gefunden wird. Wie kann ich das eingrenzen?

    AntwortenLöschen
    Antworten
    1. Wahrscheinlich wurde keine csv exportiert weil es keine Toleranzmaße gibt und dann kann auch keine csv geöffnet werden.

      Löschen

War der Beitrag hilfreich oder hast du eine Ergänzung dazu?
Ist noch eine Frage offen?
Ich freue mich auf deine Rückmeldung!

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.

Related Posts Plugin for WordPress, Blogger...
Inventor FAQ Newsletter. Emailadresse: