Vytisknout stránku | Zavřít okno

Automatické přejmenování těles

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: iLogic a ETO
Popis fóra: Funkce a makra iLogic, Inventor Engineering to Order (ETO), automatizace a konfigurace výrobků
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=32751
Datum vytištění: 31.kvě.2026 v 01:02


Téma: Automatické přejmenování těles
Odeslal: madep
Předmět: Automatické přejmenování těles
Datum odeslání: 02.led.2022 v 14:25
Ahoj všem,
Rád používám víceobjemová tělesa jako řídící modely pro sestavy. Abych si ušetřil práci s pojmenováváním souborů při exportu do sestavy, nejdříve si všechna tělesa očísluju. Ruční přepisování je trochu nepohodlné. Podařilo se mi najít výborné pravidlo. Takže všem, kdo takto pracujete je k dispozici níže.

Martin Depta
Eltodo a.s.

'------- start of ilogic ------
'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
'------- End Of ilogic ------



Odpovědi:
Odeslal: Boleslav
Datum odeslání: 02.led.2022 v 15:20
Dík, to by mohlo být užitečné.



Odeslal: Navara
Datum odeslání: 02.led.2022 v 15:49
Moc hezký Clap
Tady jsem jenom udělal pár kosmetických změn
  • Přesunul jsem kontrolu typu dokumentu na začátek
  • Odstranil jsem vícenásobné získávání aktivního dokumentu
  • Sjednotil jsem použití iVlastnosti pro prefix do jedné proměnné
  • Rozdělil jsem použití proměnné prefix pro název iVlastnosti a její hodnotu
  • Zjednodušil jsem formátování finálního názvu tělesa

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

'define the active document
partDoc = ThisApplication.ActiveDocument

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

Dim prefixProperty As Inventor.Property
Try
    prefixProperty = customPropertySet.Item(prefixPropertyName)
Catch
    ' Assume error means not found
    prefixProperty = customPropertySet.Add("", prefixPropertyName)
End Try

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

'get input from user
Dim bodyPrefix = InputBox("Enter a prefix for the solid body names", "iLogic", prefixProperty.Value.ToString())

'write input back to custom iProperty
prefixProperty.Value = bodyPrefix

'rename all solid bodies incrementing suffix
Dim i As Integer = 1
For Each solid As SurfaceBody In partDoc.ComponentDefinition.SurfaceBodies
    solid.Name = String.Format("{0}{1:00}", bodyPrefix, i)
    i += 1
Next
'------- End Of ilogic ------




Vytisknout stránku | Zavřít okno