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.
und hebt die Skizzen und Feature hervor, in den die Parameter enthalten sind.
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]
Super, jetzt noch toller.
AntwortenLöschenBei einigen Teilen funktioniert das Skript nicht. Fehlermeldung:
AntwortenLöschen"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?
Wahrscheinlich wurde keine csv exportiert weil es keine Toleranzmaße gibt und dann kann auch keine csv geöffnet werden.
Löschen