Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor
  Multi body Volumenkörper neu nummerieren

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Multi body Volumenkörper neu nummerieren (770 mal gelesen)
Hommel80
Mitglied



Sehen Sie sich das Profil von Hommel80 an!   Senden Sie eine Private Message an Hommel80  Schreiben Sie einen Gästebucheintrag für Hommel80

Beiträge: 12
Registriert: 21.03.2015

Inventor 2022 Pro

erstellt am: 12. Jul. 2021 20:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Guten Abend liebe Forengemeinde,

ich habe ein Problem bei dem Ihr mir vielleicht weiterhelfen könnt.

Bei der Konstruktion mit Master und multi body generiere ich eine Vielzahl von einzelnen Volumenkörpern die vom Inventor nummeriert werden.
Vor der Ableitung von Einzelteilen benenne ich die Volumenkörper um.
Der „Inventor-Suffix“ der Volumenkörper stimmt nicht immer mit der Position im „Tree“ überein. Ich verschiebe den „Endpunkt“ um die Volumenkörper auch nachträglich im passenden Bereich zu erstellen. Das bringt allerdings die Nummerierung durcheinander.
Beispiel:
Volumenkörper 1; Volumenkörper 36;Volumenkörper 2;Volumenkörper 3;Volumenkörper 18;etc.

Für das Umbenennen verwende ich eine Ilogic Code der auch wunderbar funktioniert.
Mein Problem ist das der Suffix anscheinend vom Inventor vorgegeben und von Ilogic nicht neu nummeriert wird.
Nach dem Umrennen bleibt die Nummerierung erhalten

Beispiel nach der Umbenennung durch Ilogic:
Part 001; Part 036; Part 002; Part 003; Part018; etc.

Habt Ihr einen Tipp für mich wie ich die Inventor-Nummerierung durch eine neue fortlaufende Nummerierung ersetzen kann?

Beispiel:
Part001; Part002; Part003; Part004; Part005; etc.

'---------------------------------


'check for custom iProperty and add it if not found
Dim prefix As String = "Prefix"
customPropertySet = ThisDoc.Document.PropertySets.Item _
("Inventor User Defined Properties")

Try
        prop= customPropertySet.Item(prefix)
Catch
      ' Assume error means not found
            customPropertySet.Add("", prefix)
End Try

'write the part number to the Prefix iProperty if it is empty
If iProperties.Value("Custom", "Prefix") = "" Then
iProperties.Value("Custom", "Prefix") = iProperties.Value("Project", "Part Number") & "_"
Else
End If

'check that this active document is a part file 
Dim partDoc As PartDocument
If ThisApplication.ActiveDocument.DocumentType <> kPartDocumentObject Then
MessageBox.Show ("Please open a part document", "iLogic")
End If

'define the active document
partDoc = ThisApplication.ActiveDocument
Dim solid As SurfaceBody
Dim i As Integer

'get input from user
prefix = InputBox("Enter a prefix for the solid body names", "iLogic", iProperties.Value("Custom", "Prefix"))

'write input back to custom iProperty
iProperties.Value("Custom", "Prefix") = prefix
i = 1
'rename all solid bodies incrementing suffix
For Each solid In partDoc.ComponentDefinition.SurfaceBodies
solid.Name = prefix + Iif(i < 10, "0" + CStr(i), CStr(i))
i = i + 1
Next

'---------------------------------
Gruß, Hommel80

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2428
Registriert: 15.11.2006

Windows 10 x64, AIP 2023

erstellt am: 13. Jul. 2021 00:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hommel80 10 Unities + Antwort hilfreich

Hallo

Deine iLogic Regel wird nicht wie gewünscht funktionieren. In partDoc.ComponentDefinition.SurfaceBodies stehen die einzelnen Volumenkörper in der chronologischen Reihenfolge wie sie erstellt wurden. Die Reihenfolge der Volumenkörper im Teilebrowser kann eine andere sein. Zum Beispiel, wie von dir beschrieben, durch Verschieben des Bauteilendes bevor ein neuer Volumenkörper erstellt wird. Daher wird im Teilebrowser scheinbar nicht neu nummeriert. Des weiteren kann ein Volumenkörper nicht den gleichen Namen haben wie ein anderer. Volumenkörper_02 kann nicht in Volumenkörper_03 umbenannt werden, wenn es einen anderen Volumenkörper mit diesem Namen bereits gibt. Entweder muss der Prefix bei jedem Durchlauf geändert werden oder man benennt im ersten Durchlauf alles mit einem temporären Prefix um und vergibt erst im zweiten Durchlauf den korrekten Prefix.

Und nebenbei, wenn du auf einen bestimmten Dateityp prüfst und im Fehlerfall eine Meldung ausgibst, beende auch dein Script im Anschluß.

Versuch mal:

Code:

'check for custom iProperty and add it if not found
Dim prefix As String = "Prefix"
customPropertySet = ThisDoc.Document.PropertySets.Item _
("Inventor User Defined Properties")

Try
        prop= customPropertySet.Item(prefix)
Catch
      ' Assume error means not found
            customPropertySet.Add("", prefix)
End Try

'write the part number to the Prefix iProperty if it is empty
If iProperties.Value("Custom", "Prefix") = "" Then
iProperties.Value("Custom", "Prefix") = iProperties.Value("Project", "Part Number") & "_"
Else
End If

'check that this active document is a part file
Dim partDoc As PartDocument
If ThisApplication.ActiveDocument.DocumentType <> kPartDocumentObject Then
MessageBox.Show("Please open a part document", "iLogic")
Exit Sub
End If

'define the active document
partDoc = ThisApplication.ActiveDocument
Dim solid As SurfaceBody
Dim i As Integer

'get input from user
prefix = InputBox("Enter a prefix for the solid body names", "iLogic", iProperties.Value("Custom", "Prefix"))

'write input back to custom iProperty
iProperties.Value("Custom", "Prefix") = prefix

'i = 1
'rename all solid bodies incrementing suffix
'For Each solid In partDoc.ComponentDefinition.SurfaceBodies
'solid.Name = prefix + IIf(i < 10, "0" + CStr(i), CStr(i))
'i = i + 1
'Next


Dim oBrowserPane As BrowserPane = partDoc.BrowserPanes.ActivePane
For Each oBrowserPane In partDoc.BrowserPanes
If oBrowserPane.InternalName = "PmDefault" Then Exit For
Next

Dim oBrowserNode As BrowserNode
For Each oBrowserNode In oBrowserPane.TopNode.BrowserNodes
If oBrowserNode.BrowserNodeDefinition.Label.StartsWith("Volumenkörper") Then Exit For
Next

For i=1 To oBrowserNode.BrowserNodes.Count
oBrowserNode.BrowserNodes.Item(i).NativeObject.name = "tmp_" + prefix + IIf(i < 10, "0" + CStr(i), CStr(i))
Next

For i=1 To oBrowserNode.BrowserNodes.Count
oBrowserNode.BrowserNodes.Item(i).NativeObject.name =prefix + IIf(i < 10, "0" + CStr(i), CStr(i))
Next


------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Hommel80
Mitglied



Sehen Sie sich das Profil von Hommel80 an!   Senden Sie eine Private Message an Hommel80  Schreiben Sie einen Gästebucheintrag für Hommel80

Beiträge: 12
Registriert: 21.03.2015

Inventor 2022 Pro

erstellt am: 13. Jul. 2021 21:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Ralf,

Danke für die Hilfe, das ist im Wesentlichen die Lösung für mein Problem.

Ich hätte da allerdings noch eine Frage, wenn ich den Code in meine Master-Datei (eine Blech.ipt) ausführen möchte, wird ein Fehler angezeigt, „Der öffentliche Member name für den Typ SheetMetalComponentDefinition wurde nicht gefunden“.

Mir ist nicht klar warum der Fehler angezeigt wird da auf Blech Parameter nicht zugegriffen wird, bzw. was muss ich  ändern damit dieser Code auch bei einer Blech.ipt funktioniert?

Bei einer Norm.ipt funktioniert der Code….

Gruß, Hommel80

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2428
Registriert: 15.11.2006

Windows 10 x64, AIP 2023

erstellt am: 14. Jul. 2021 08:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hommel80 10 Unities + Antwort hilfreich

Hallo

Bei Blechteilen gibt es im Modellbrowser noch die Ebene "Gefaltetes Modell" / "Abwicklung". Hab's ergänzt.

Code:

'check for custom iProperty and add it if not found
Dim prefix As String = "Prefix"
customPropertySet = ThisDoc.Document.PropertySets.Item _
("Inventor User Defined Properties")

Try
        prop= customPropertySet.Item(prefix)
Catch
      ' Assume error means not found
            customPropertySet.Add("", prefix)
End Try

'write the part number to the Prefix iProperty if it is empty
If iProperties.Value("Custom", "Prefix") = "" Then
iProperties.Value("Custom", "Prefix") = iProperties.Value("Project", "Part Number") & "_"
Else
End If

'check that this active document is a part file
Dim partDoc As PartDocument
If ThisApplication.ActiveDocument.DocumentType <> kPartDocumentObject Then
MessageBox.Show("Please open a part document", "iLogic")
Exit Sub
End If

'define the active document
partDoc = ThisApplication.ActiveDocument
Dim solid As SurfaceBody
Dim i As Integer

'get input from user
prefix = InputBox("Enter a prefix for the solid body names", "iLogic", iProperties.Value("Custom", "Prefix"))

'write input back to custom iProperty
iProperties.Value("Custom", "Prefix") = prefix

'i = 1
'rename all solid bodies incrementing suffix
'For Each solid In partDoc.ComponentDefinition.SurfaceBodies
'solid.Name = prefix + IIf(i < 10, "0" + CStr(i), CStr(i))
'i = i + 1
'Next


Dim oBrowserPane As BrowserPane = partDoc.BrowserPanes.ActivePane
For Each oBrowserPane In partDoc.BrowserPanes
If oBrowserPane.InternalName = "PmDefault" Then Exit For
Next

Dim oBrowserNode As BrowserNode
Dim oTopNode As BrowserNode
If partDoc.DocumentSubType.documentsubtypeid = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then 'SheetMetalPart
For Each oBrowsernode In oBrowserPane.TopNode.BrowserNodes
If oBrowserNode.BrowserNodeDefinition.Label="Gefaltetes Modell" Then
oTopNode = oBrowserNode
End If
Next
Else
oTopNode = oBrowserPane.TopNode
End If

For Each oBrowserNode In oTopNode.BrowserNodes
If oBrowserNode.BrowserNodeDefinition.Label.StartsWith("Volumenkörper") Then Exit For
Next

For i=1 To oBrowserNode.BrowserNodes.Count
oBrowserNode.BrowserNodes.Item(i).NativeObject.name = "tmp_" + prefix + IIf(i < 10, "0" + CStr(i), CStr(i))
Next

For i=1 To oBrowserNode.BrowserNodes.Count
oBrowserNode.BrowserNodes.Item(i).NativeObject.name =prefix + IIf(i < 10, "0" + CStr(i), CStr(i))
Next



------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Hommel80
Mitglied



Sehen Sie sich das Profil von Hommel80 an!   Senden Sie eine Private Message an Hommel80  Schreiben Sie einen Gästebucheintrag für Hommel80

Beiträge: 12
Registriert: 21.03.2015

Inventor 2022 Pro

erstellt am: 14. Jul. 2021 23:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Super, vielen Dank.....

Gruß, Hommel80

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz