| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Artikelnummer für alle Unterbaugruppen und Bauteile (852 / mal gelesen)
|
RP4711 Mitglied Technischer Produktdesigner
Beiträge: 24 Registriert: 01.03.2024 Inventor 2024
|
erstellt am: 01. Mrz. 2024 21:17 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe eine Anfrage. Ich möchte per ilogic als externe Regel, einen Durchlauf starten, bei dem ich die Regel in der höchsten oder in einer Baugruppe auslöse und alle enthaltenen Baugruppen und oder Bauteile durchläuft. Es sollen zwei benutzerdefinierte iPropertie erstellt werden "Artikelnummer", die wiederum aus dem benutzerdefinierten iPropertie "Auftragsnummer" 24A444 beispielsweise und der Bauteilnummer der Baugruppe oder vom Bauteil besteht. Jedes Bauteil und jede Baugruppe muss durchlaufen werden und die entsprechende Nummer erstellt werden. Geht sowas überhaupt? Ich arbeite mit inventor 2024. Vielen Dank im voraus. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2580 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 01. Mrz. 2024 22:09 <-- editieren / zitieren --> Unities abgeben: Nur für RP4711
Moin Willkommen im Forum Zu deiner Frage, ja das geht. Und jetzt? Schätze wir sollen machen. Mal als Anfang zum Testen: Code:
Option Explicit OnPrivate Sub Main() Dim oApp As Inventor.Application = ThisApplication If Not oApp.ActiveEditDocument.DocumentType = kAssemblyDocumentObject Then MsgBox ("Funktion nur in Baugruppen verügbar. Abbruch") Exit Sub End If Dim oAssDoc As AssemblyDocument = oApp.ActiveEditDocument Dim sAuftragsnummer As String Dim oProp As Inventor.Property For Each oProp In oAssDoc.PropertySets(4) If oProp.Name = "Auftragsnummer" Then sAuftragsnummer = oProp.Value Exit For End If Next If sAuftragsnummer = String.Empty Then sAuftragsnummer = InputBox("Auftragsnummer eingeben:", "iLogic SetProps") If sAuftragsnummer = String.Empty Then Exit Sub 'User cancelled Input Else oAssDoc.PropertySets(4).Add(sAuftragsnummer, "Auftragsnummer") End If End If Try oAssDoc.PropertySets(4).Item("Artikelnummer").Value = sAuftragsnummer & "-" & oAssDoc.PropertySets(3).Item("Part Number").Value Catch oAssDoc.PropertySets(4).Add(sAuftragsnummer & "-" & oAssDoc.PropertySets(3).Item("Part Number").Value, "Artikelnummer") End Try Dim oRefedDoc As Document For Each oRefedDoc In oAssDoc.AllReferencedDocuments If oRefedDoc.IsModifiable=True Then Try oRefedDoc.PropertySets(4).Item("Auftragsnummer").Value = sAuftragsnummer Catch oRefedDoc.PropertySets(4).Add(sAuftragsnummer, "Auftragsnummer") End Try Try oRefedDoc.PropertySets(4).Item("Artikelnummer").Value = sAuftragsnummer & "-" & oRefedDoc.PropertySets(3).Item("Part Number").Value Catch oRefedDoc.PropertySets(4).Add(sAuftragsnummer & "-" & oRefedDoc.PropertySets(3).Item("Part Number").Value, "Artikelnummer") End Try end if Next End Sub
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RP4711 Mitglied Technischer Produktdesigner
Beiträge: 24 Registriert: 01.03.2024 Inventor 2024
|
erstellt am: 02. Mrz. 2024 22:53 <-- editieren / zitieren --> Unities abgeben:
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 AutoCAD 2.5 - 2025, Inventor AIP 4-2025 Windows 11 i7, 96 GB, SSD, Quadro P2200
|
erstellt am: 03. Mrz. 2024 14:07 <-- editieren / zitieren --> Unities abgeben: Nur für RP4711
@rkaush Das Makro selbst ist super. @RP4711 Die Sinnhaftigkeit ist eher zweifelhaft. Das kann ja nur für Baugruppen eingesetzt werden, wo kein einziges Teil je in anderen Baugruppen wiederverwendet wird oder wurde. Das ist allerdings nur für Prototypenbau oder sonstige Unikate für mich vorstellbar. Ansonsten kollidiert das dann mit Freigaben/Dokumentenmanagement. Oder werden die Artikelnummern immer durch das erstmalige neue Auftreten in einer Baugruppe festgelegt? Mich würde der Anwendungsfall interessieren - vielleicht kannst du das ja erklären.
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2580 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 03. Mrz. 2024 15:15 <-- editieren / zitieren --> Unities abgeben: Nur für RP4711
Moin Ich kann so einen Anwendungsfall skizzieren. Es gibt Firmen, die fertigen kundenspezifisch. Die Losgröße für jedes Teil ist gleich 1. Die mögliche Variantenzahl geht dabei gegen unendlich. Es macht keinen Sinn dort an Wiederverwendung denken. Die Suche nach einem wiederverwendbaren Teil würde ewig dauern und nur seltenst zum Erfolg führen. Allein schon die Erfassung der relevanten Vergleichsparameter (irgendwer muss ja irgendwie der Suche sagen wonach sie suchen soll) könnte schnell länger dauern als neu modellieren. Insbesondere, wenn Teile sich in vielen nichtgeometrischen Parametern unterscheiden können. Man könnte zwar das modellierte Teil davon unabhängig machen, sprich die Teilenummer bestimmt nur die geometrische Form, aber einfacher wird es meiner Meinung dadurch auch nicht unbedingt. Bei solchen Konstrukten fehlt eigentlich nur noch eine KI. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RP4711 Mitglied Technischer Produktdesigner
Beiträge: 24 Registriert: 01.03.2024 Inventor 2024
|
erstellt am: 03. Jun. 2024 21:24 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bin in der Arbeitsvorbereitung tätig und bekomme vom Kunden Step Daten, die ich quasi für die Fertigung vorbereiten muss. Mit dem sehr guten ilogic Code kann ich sehr schnell in der obersten Baugruppe die Auftragsnummer eintragen und durchlaufen lassen. Das entsprechende Feld habe ich auf meiner Zeichnung erstellt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RP4711 Mitglied Technischer Produktdesigner
Beiträge: 24 Registriert: 01.03.2024 Inventor 2024
|
erstellt am: 03. Aug. 2024 16:44 <-- editieren / zitieren --> Unities abgeben:
Guten Tag, ich habe aktuell noch folgendes Problem. Ich bekomme vom Kunden eine Step Datei, groß und mit Blechbauteilen sowie Standard-Bauteilen. Der Kunde hat die Blechbauteile mit der iPropertie Bezeichnung "Sheet" versehen. Die Regel für die Artikelnummer könnte doch auch für diese Art von externer Regel dienen? Diese Regel um ein Standard Bauteil (Vorlage beim speichern einer Step Datei) in ein Blechteil zu konvertieren habe ich Try 'convert to sheet metal ThisApplication.ActiveDocument.SubType = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Catch 'catch error and exit rule when part can't be converted 'example: multiple solid body part Return End Try Ich möchte quasi die höchste Baugruppe öffnen und die externe Regel ausführen, der Filter "Sheet" oder ähnlich soll dann im Fenster, welches als Eingabeaufforderung dient, eingegeben werden.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2580 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 03. Aug. 2024 21:12 <-- editieren / zitieren --> Unities abgeben: Nur für RP4711
Moin So in etwa?
Code:
If Not ThisDoc.Document.DocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then MsgBox("Funktion nur in Baugruppen verfügbar.", MsgBoxStyle.Exclamation, "iLogic convert parts to sheet metal") Exit Sub End IfDim iFail As Integer Dim iSucc As Integer Dim sSheet As String = InputBox("Bezeichnung eingeben", "iLogic convert parts to sheet metal", "Sheet") For Each oDoc As Document In ThisDoc.Document.AllReferencedDocuments If oDoc.DocumentType = DocumentTypeEnum.kPartDocumentObject Then If oDoc.PropertySets("{32853F0F-3444-11D1-9E93-0060B03C1CA6}").Item("Description").Value=sSheet Then Try 'convert to sheet metal oDoc.SubType = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" iSucc+=1 Catch iFail+=1 End Try End If End If Next If iFail = 0 Then MsgBox(iSucc & " Bauteil(e) erfolgreich konvertiert.", MsgBoxStyle.Information, "iLogic convert parts to sheet metal") Else MsgBox(iSucc & " Bauteil(e) erfolgreich konvertiert." & vbCrLf & iFail & " Bauteil(e) fehlgeschlagen.", MsgBoxStyle.Information, "iLogic convert parts to sheet metal") End If
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RP4711 Mitglied Technischer Produktdesigner
Beiträge: 24 Registriert: 01.03.2024 Inventor 2024
|
erstellt am: 04. Aug. 2024 15:50 <-- editieren / zitieren --> Unities abgeben:
|