| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | 3-D-Konstruktion, Zeichnungserstellung, Dokumentation , eine Pressemitteilung
|
Autor
|
Thema: Blechabwicklung Basisfläche umkehren mit ilogic (645 / mal gelesen)
|
SimonP Mitglied
 Beiträge: 6 Registriert: 22.02.2024
|
erstellt am: 27. Mrz. 2024 10:55 <-- editieren / zitieren --> Unities abgeben:         
Hallo  , ich bin auf der Suche nach einer Ilogic Regel, die aus einer Baugruppe alle Blechteilabwicklungen 2x die DXF herausschreibt in verschiedenen Ordner, 1x die Ausrichtung Basisfläche Standard und 1x Basisfläche umgekehrt. Der Grund dafür ist, da die Stanzmaschine die Basisfläche Standard benötigt und der Biegeautomat die Basisfläche umgekehrt. Kann mir bitte da vielleicht jemand helfen sowas umzusetzen mit Ilogic, wenn es überhaupt möglich ist. MFG SimonP
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2817 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 27. Mrz. 2024 15:10 <-- editieren / zitieren --> Unities abgeben:          Nur für SimonP
Moin Versuch es mit den FlatPattern.TopFace und FlatPattern.BottomFace. Das sollten die beiden gesuchten Flächen sein. Die als DXF exportieren. Eine Schleife durch die AllReferencedDocuments im AssemblyDocument, dabei alle nicht-Bauteile, Bauteile die nicht Sheetmetal sind und alle SheetMetal die kein FlatPattern besitzen, ignorieren und schon fertig. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
  
 Beiträge: 743 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 27. Mrz. 2024 15:25 <-- editieren / zitieren --> Unities abgeben:          Nur für SimonP
Hi, abgesehen von der zweiten Ausrichtung, sollte sowas gut machbar sein, da bin ich mir recht sicher. Ich habe ein VBA-Makro, das die Abwicklung als dxf speichert. Das entspricht dem Befehl im Kontextmenü der Abwicklung -> Kopie speichern unter -> dxf ... Vorraussetzung ist, dass das Bauteil ein Blechteil ist (sheet metal document). Ggf. wird auch die Abwicklung noch erzeugt, sollte sie noch nicht existieren. Es lässt sich auch Code schreiben, der alle Bauteile einer Baugruppe durchläuft und bei Blechteilen dieses Makro aufruft. Mir ist aber keine Möglichkeit bekannt bei diesem DXF Export die Orientierung zu steuern. Da fällt mir nur der Umweg über eine Zeichnungsableitung ein. Das zu automatisieren stelle ich mir aber nicht ganz leicht vor (vielleicht habe ich aber einfach nur keine Ahnung davon). Nun die Frage: Wie erstellst Du die beiden Ausrichtungen bisher bzw. "zu Fuß"? ------------------ Gruß KraBBy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
  
 Beiträge: 743 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 27. Mrz. 2024 15:48 <-- editieren / zitieren --> Unities abgeben:          Nur für SimonP
Zitat: Original erstellt von rkauskh: Versuch es mit den FlatPattern.TopFace und FlatPattern.BottomFace. Das sollten die beiden gesuchten Flächen sein.
Ein möglicher Stolperstein ist dabei, dass bei diesen Flächen ggf. geprägte Features (die nicht abgewickelt wurden / werden konnten) NICHT enthalten sind. Es wird eben tatsächlich nur jene Fläche exportiert. Beim Export der Abwicklung sind diese Features enthalten. ------------------ Gruß KraBBy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2817 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 27. Mrz. 2024 17:22 <-- editieren / zitieren --> Unities abgeben:          Nur für SimonP
Moin @KraBBy Jain, die Außenkontur jedes Ausschnittes und jeder Prägung ist enthalten. Man kann nur nicht mehr unterscheiden ob das eine Ausklinkung oder eine Prägung ist. Biegelinien fehlen ebenso. Für's Stanzen könnte das reichen, für den Biegeautomaten wird's ohne Biegelinien schwierig. Da kann man aber die normale Abwicklung nehmen. Es wäre besser über das FlatPatternOrientation Objekt zu gehen, eine neue Orientierung zu definieren (oder besser gleich "Standard" und "Invertiert"). In der Orientierung kann man die Basisfläche einfach mit "FlipBaseFace" invertieren. Die jeweilige Orientierung aktivieren und Abwicklung exportieren. Dann sollte alles drin sein.
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2817 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 28. Mrz. 2024 07:47 <-- editieren / zitieren --> Unities abgeben:          Nur für SimonP
Moin Hier mal zum rumspielen:
Code:
Option Explicit On Private Sub Main 'die Ordnernamen für die Ablage (Basispfad ist der Speicherpfad des Bauteiles) Dim sFolderName1 As String = "Standard" Dim sFolderName2 As String = "Standard invertiert" 'die Abwicklungsdefinitionen Dim sFPO1 As String = "Vorgabe" Dim sFPO2 As String = "Invertiert" Dim oApp As Inventor.Application = ThisApplication If Not oApp.ActiveDocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then MsgBox("Funktion nur in Baugruppe verfügbar.", MsgBoxStyle.Critical, "iLogic Export FlatPattern to DXF") Exit Sub End If Dim oAssDoc As AssemblyDocument = oApp.ActiveDocument Dim oRefDoc As Document Dim oPartDoc As PartDocument Dim oSheetMetalCompDef As SheetMetalComponentDefinition For Each oRefDoc In oAssDoc.AllReferencedDocuments If oRefDoc.DocumentType = DocumentTypeEnum.kPartDocumentObject oPartDoc = DirectCast(oRefDoc, PartDocument) If oPartDoc.ComponentDefinition.Type = ObjectTypeEnum.kSheetMetalComponentDefinitionObject Then oSheetMetalCompDef = DirectCast( oPartDoc.ComponentDefinition,SheetMetalComponentDefinition) If oSheetMetalCompDef.HasFlatPattern = True Then Dim oFPO As FlatPatternOrientation = oSheetMetalCompDef.FlatPattern.FlatPatternOrientations.ActiveFlatPatternOrientation ExportFP2DXF(oApp,oPartDoc,oSheetMetalCompDef.FlatPattern, sFolderName1, sFPO1) ExportFP2DXF(oApp, oPartDoc, oSheetMetalCompDef.FlatPattern, sFolderName1, sFPO2) oFPO.Activate End If End If oPartDoc=Nothing End If Next MsgBox("Export beendet",MsgBoxStyle.Information,"iLogic Flat Pattern to DXF") End SubPrivate Sub ExportFP2DXF(ByVal oApp As Inventor.Application, ByVal oPartDoc As PartDocument,ByVal oFP As FlatPattern, ByVal sSide As String, ByVal sFPO As String) Dim sPath As String= System.IO.Path.GetDirectoryName (oPartDoc.FullFileName) & "\" & sSide Dim sExt As String = ".dxf" Dim sName As String = System.IO.Path.GetFileNameWithoutExtension(oPartDoc.FullFileName) Dim sNewName As String = sPath & "\" & sName & sExt If Not System.IO.Directory.Exists(sPath) Then System.IO.Directory.CreateDirectory(sPath) Dim oFPOrientation As FlatPatternOrientation = GetFPOrientation(oFP, sFPO) oFPOrientation.Activate Dim oDataIO As DataIO = oFP.DataIO Dim sOut As String = "FLAT PATTERN DXF?AcadVersion=R12" If System.IO.File.Exists(sNewName) Then System.IO.File.Delete(sNewName) End If oDataIO.WriteDataToFile(sOut, sNewName) End Sub Private Function GetFPOrientation(ByVal oFP As FlatPattern, ByVal sName As String) As FlatPatternOrientation For Each GetFPOrientation In oFP.FlatPatternOrientations If GetFPOrientation.Name = sName Then Return GetFPOrientation End If Next GetFPOrientation = CreateFPOrientation(oFP, sName) End Function Private Function CreateFPOrientation(ByVal oFP As FlatPattern, ByVal sName As String) As FlatPatternOrientation CreatefPOrientation = oFP.FlatPatternOrientations.ActiveFlatPatternOrientation.Copy(sName) If CreatefPOrientation.FlipBaseFace = True Then CreatefPOrientation.FlipBaseFace = False Else CreatefPOrientation.FlipBaseFace = True End If End Function
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SimonP Mitglied
 Beiträge: 6 Registriert: 22.02.2024
|
erstellt am: 28. Mrz. 2024 07:51 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, Danke für die Hilfe! wie müsste so ein Code den aussehen, da sind meine Ilogic Kenntnisse zu schwach. Müssten diese 2 Ausrichtungen(siehe Bild) in der Abwicklung vorhanden sein oder? Zurzeit habe ich diesen Code(siehe Anhang), der über die Baugruppe die DXF herausschreibt, aber wie ich da noch die Basisflächen ansteuere, ist mir so nicht ganz klar. MFG SimonP Dim oAsmDoc As AssemblyDocument oAsmDoc = ThisApplication.ActiveDocument oAsmName = Left(oAsmDoc.DisplayName, Len(oAsmDoc.DisplayName) -4) oPath = ThisDoc.Path oDataMedium = ThisApplication.TransientObjects.CreateDataMedium oContext = ThisApplication.TransientObjects.CreateTranslationContext oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism oOptions = ThisApplication.TransientObjects.CreateNameValueMap Datei_Name = ThisDoc.FileName(False) Dim oRefDocs As DocumentsEnumerator oRefDocs = oAsmDoc.AllReferencedDocuments Dim oRefDoc As Document For Each oRefDoc In oRefDocs iptPathName = Left(oRefDoc.FullDocumentName, Len(oRefDoc.FullDocumentName) -3) & "ipt" If(System.IO.File.Exists(iptPathName)) Then Dim oDrawDoc As PartDocument oDrawDoc = ThisApplication.Documents.Open(iptPathName, False) Datei_Name = Left(oRefDoc.DisplayName, Len(oRefDoc.DisplayName) -4) If oDrawDoc.SubType = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then 'oDrawDoc = ThisApplication.Documents.Open(iptPathName, True) Dim oAssyDoc As AssemblyDocument = ThisDoc.Document Dim oAssyDef As AssemblyComponentDefinition = oAssyDoc.ComponentDefinition Dim oBOM As BOM = oAssyDef.BOM If oBOM.PartsOnlyViewEnabled = False Then oBOM.PartsOnlyViewEnabled = True End If Try Dim Staerke As Integer Try Mate = oRefDoc.ComponentDefinition.Material.Name Catch Mate = "XXX" End Try Try Staerke = oRefDoc.ComponentDefinition.Parameters.Item("BlecStae").Value * 100 Catch Staerke = oRefDoc.ComponentDefinition.Parameters.Item("Stärke").Value * 100 Catch Staerke = "XX" End Try If Mate = ("Stahl, verzinkt") Then Mate = ("VZ") If Mate = ("Edelstahl") Then Mate = ("V2A") If Mate = ("Stahl") Then Mate = ("FE") If Mate = ("Aluminium 6061") Then Mate = ("ALU") If Mate = ("Aluminium") Then Mate = ("ALU") Ordner = oPath & "\" & "Stanz_Zuschnitte" & "\" & Mate & "\" & Staerke.ToString("00") & "_" & "10" If Not System.IO.Directory.Exists(Ordner) Then System.IO.Directory.CreateDirectory(Ordner) End If oDataMedium.FileName = Ordner & "\" & Datei_Name &"_" & (ThisBOM.CalculateQuantity("nur Bauteile", Datei_Name)) & "x" & ".dxf" Dim oCompDef As SheetMetalComponentDefinition oCompDef = oDrawDoc.ComponentDefinition If oCompDef.HasFlatPattern = False Then oCompDef.Unfold Else oCompDef.FlatPattern.Edit End If Dim sOut As String sOut = "FLAT PATTERN DXF?AcadVersion=2000&UnconsumedSketchesLayer=2&OuterProfileLayer=Aussen&InteriorProfilesLayer=Innen&BendUpLayer=4&BendDownLayer=5&InvisibleLayers=IV_ARC_CENTERS;IV_FEATURE_PROFILES_DOWN;IV_TANGENT;IV_FEATURE_PROFILES;IV_FEATURE_PROFILES&OuterProfileLayerColor=0;0;0&BendUpLayerColor=255;0;0&BendDownLayerColor=0;255;0" oCompDef.DataIO.WriteDataToFile( sOut, oDataMedium.FileName) oCompDef.FlatPattern.ExitEdit Catch End Try oDrawDoc.Close Else End If End If Next
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SimonP Mitglied
 Beiträge: 6 Registriert: 22.02.2024
|
erstellt am: 28. Mrz. 2024 08:19 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ralf, Danke für die Hilfe. Habe diesen Cod jetzt versucht, bin der Sache schon ganz nahe In der Abwicklung erstellt er Automatisch diese 2 Ausrichtungen "Standard" , "Standard invertiert" aber de 2 Ordner mit Standard invertiert mit den umgekehrten Teil macht er noch nicht. was müsste ich da noch ergänzen? Mfg SimonP Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2817 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 28. Mrz. 2024 08:43 <-- editieren / zitieren --> Unities abgeben:          Nur für SimonP
Moin Ersetze bitte in Zeile 31 das
Code: ExportFP2DXF(oApp, oPartDoc, oSheetMetalCompDef.FlatPattern, sFolderName1, sFPO2)
durch Code: ExportFP2DXF(oApp, oPartDoc, oSheetMetalCompDef.FlatPattern, sFolderName2, sFPO2)
Dein Code ist etwas unstrukturiert. Hätte man ihn gleich gehabt, hätte man die restlichen Funktionen mit berücksichtigen können. Ein paar Anmerkungen: - Ein Bauteildokument oDrawDoc zu nennen ist vielleicht etwas unglücklich. oPartDoc wäre selbsterklärender. - Die Bauteile sind bereits alle offen, sonst wäre deine angezeigte Baugruppe leer. Nochmal öffnen bringt nichts. Ebenso ist das Schließen am Ende vergebens. Inventor weiß, dass das Bauteil in der Baugruppe steckt und geöffnet bleiben muss. Also ignoriert er deine Schließanweisung einfach. - Wenn du eine Abwicklung codebasiert erstellen lässt, denke daran dass ohne weitere Definition nicht sicher ist, welche Seite in der Standardabwicklung oben liegt. Könnte sonst viele seitenverkehrte Teile geben. - Für den Export muss man nicht den Edit-Modus der Abwicklung aktivieren. Das kostet nur unnötig Zeit, weil Inventor eben im Hintergrund nochmal die Abwicklung aktualisiert. In der Regel ist das nicht erforderlich, außer man hat im Code vorher Parameter geändert und das Teil muss aktualisiert werden. - Warum definierst du einmal oAssDoc und einmal oAssyDoc? Nimm das Zweite raus und ändere den Code entsprechend auf oAssDoc. - Ihr gebt die Blechstärke in Mikrometer an? Das Value eines numerischen Parameters ist jedenfalls in cm. Multipliziert mit 100 wären dann Mikrometer. - oDataMedium, oContext und oOptions stammen aus einem Beispiel für das Translator Addin und werden hier nicht verwendet. Kann weg.
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SimonP Mitglied
 Beiträge: 6 Registriert: 22.02.2024
|
erstellt am: 28. Mrz. 2024 09:41 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |