VLOŽENÍ VÍCE UŽIVATELSKÝCH IVLASTNOSTÍ NAJEDNOU
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=27870
Datum vytištění: 09.kvě.2026 v 05:09
Téma: VLOŽENÍ VÍCE UŽIVATELSKÝCH IVLASTNOSTÍ NAJEDNOU
Odeslal: Lukáš Záruba
Předmět: VLOŽENÍ VÍCE UŽIVATELSKÝCH IVLASTNOSTÍ NAJEDNOU
Datum odeslání: 20.říj.2018 v 10:55
|
Zdravím,
Mám Ilogic který mi poskládá název "Title" z už.vl.+rozměrů ale nevím jak napsat aby před složením Názvu vytvořil všechny ivlastnosti a parametry do modelu. (
Dim propertyName As String = "PREDNAZEV"
Dim propertyValue As String = ""
customPropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties")
Try
prop = customPropertySet.Item(propertyName)
Catch
customPropertySet.Add("", propertyName)
End Try
iProperties.Value("Summary", "Title") = iProperties.Value("Custom", "PREDNAZEV")&" "&iProperties.Value("Custom", "TYP")&" - "&Parameter("DÉLKA")&"mm"
'PREDNAZEV - MUSÍ BÝT V UŽVATELSKÝCH IVLASTNOSTECH V MODELU' 'typ - MUSÍ BÝT V UŽVATELSKÝCH IVLASTNOSTECH V MODELU' 'DÉLKA - MUSÍ BÝT PARAMETR DÉLKY DÍLU'
------------- Budu rád za radu i případně všelijaké postřehy.
|
Odpovědi:
Odeslal: Vladimír Michl
Datum odeslání: 20.říj.2018 v 14:37
To je na vás. Nebo se generují také nějak automaticky? Nebo jen chcete zkontrolovat, zda už je uživatel správně vytvořil?
------------- Vladimír Michl (moderátor) ARKANCE CZ - https://arkance.world - arkance.world (podpora viz helpdesk.arkance-systems.cz)
|
Odeslal: Lukáš Záruba
Datum odeslání: 20.říj.2018 v 22:17
|
Dosud jsem to používal jen v nových projektech kde mám již v šabloně připraveny:
uživatelské ivlastnosti: "PREDNAZEV" ; "TYP" uživatelský parametr: Délka
Teď ale musím pracovat i se staršími projekty, které to nemají tahle přesně nastavený a proto chci pomocí ilogicu automaticky před vlastním složením názvu zkontrolovat zda jsou nebo je vytvořit.
------------- Budu rád za radu i případně všelijaké postřehy.
|
Odeslal: Vladimír Michl
Datum odeslání: 21.říj.2018 v 09:57
Rozumím. Když si to skládání Title dáte do větve Try (té stávající nebo nové), můžete tím ošetřit stav, kdy parametr neexistuje a zobrazit třeba upozornění (MsgBox).
------------- Vladimír Michl (moderátor) ARKANCE CZ - https://arkance.world - arkance.world (podpora viz helpdesk.arkance-systems.cz)
|
Odeslal: Lukáš Záruba
Datum odeslání: 21.říj.2018 v 18:36
|
Takže nějak takhle? ale tohle mi nějak nefunguje. nevím kde je chyba.
Try
p = Parameter("DÉLKA")
Catch
oUserParams.AddByValue("DÉLKA","","mm")
End Try
Try
prop = customPropertySet.Item("PREDNAZEV")
Catch
customPropertySet.Add("Custom","PREDNAZEV")
End Try
Try
prop = customPropertySet.Item("TYP")
Catch
customPropertySet.Add("Custom","TYP")
End Try
iProperties.Value("Summary", "Title") = iProperties.Value("Custom", "PREDNAZEV")&" "&iProperties.Value("Custom", "TYP")&" - "&Parameter("D�LKA")&"mm"
'PREDNAZEV - MUSÍ BÝT V UŽVATELSKÝCH IVLASTNOSTECH V MODELU'
'TYP - MUSÍ BÝT V UŽVATELSKÝCH IVLASTNOSTECH V MODELU'
'DÉLKA - MUSÍ BÝT PARAMETR DÉLKY DÍLU'
------------- Budu rád za radu i případně všelijaké postřehy.
|
Odeslal: Vladimír Michl
Datum odeslání: 21.říj.2018 v 18:43
ne, to nastavení Title musíte mít v tom Try
konstrukce Try-Catch je v principu:
zkus tohleto, a když to selže, tak proveď tohleto
------------- Vladimír Michl (moderátor) ARKANCE CZ - https://arkance.world - arkance.world (podpora viz helpdesk.arkance-systems.cz)
|
Odeslal: Lukáš Záruba
Datum odeslání: 21.říj.2018 v 18:49
|
No ale já potřebuju aby mi ilogic prozkoumal jestli v modelu je a pokud není tak vložil:
1x uživatlský parametr "DÉLKA" a 2X Uživatelskou ilvastnost "PREDNAZEV" + "TYP"
zbytek tohoto pravidla když když je v modelu kde tyto věci jsou funguje bez chyby iProperties.Value("Summary", "Title") = iProperties.Value("Custom", "PREDNAZEV")&" "&iProperties.Value("Custom", "TYP")&" - "&Parameter("D�LKA")&"mm"
'PREDNAZEV - MUSÍ BÝT V UŽVATELSKÝCH IVLASTNOSTECH V MODELU'
'TYP - MUSÍ BÝT V UŽVATELSKÝCH IVLASTNOSTECH V MODELU'
'DÉLKA - MUSÍ BÝT PARAMETR DÉLKY DÍLU'
------------- Budu rád za radu i případně všelijaké postřehy.
|
Odeslal: Navara
Datum odeslání: 22.říj.2018 v 12:00
Tady už je asi potřeba přemýšlet trochu víc jako programátor. To co bych doporučil je začít využívat funkce místo psaní přímočarého skriptu. Vede to potom na mnohem čitelnější a kratší kód, než v prvním případě.
Sub Main() Dim doc As Document = ThisDoc.Document SetTitle(doc) End Sub Private Sub SetTitle(doc As Document) Dim delka As String = GetParameterValue(doc, "DÉLKA") Dim prednazev As String = GetPropertyValue(doc, "PREDNAZEV") Dim typ As String = GetPropertyValue(doc, "TYP") doc.PropertySets("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}")("Title").Value = String.Format("{0} {1}-{2}", prednazev, typ, delka) End Sub Private Function GetPropertyValue(doc As Document, propertyName As String) As String Dim userDefinedProperties As PropertySet = doc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}") Dim prop As Inventor.Property Try prop = userDefinedProperties(propertyName) Catch ex As Exception prop = userDefinedProperties.Add("", propertyName) End Try Return prop.Value.ToString() End Function Private Function GetParameterValue(doc As Document, paramName As String) As String Dim part As PartDocument = doc Dim userParameters As UserParameters = part.ComponentDefinition.Parameters.UserParameters Dim param As Parameter Try param = UserParameters(paramName) Catch ex As Exception userParameters.AddByValue(paramName, 0, "mm") End Try 'Nastavit propisovani parametru do iVlastnosti param.ExposedAsProperty = True Dim value As Double = param.ModelValue * 10 Return String.Format("{0} mm", value) End Function
|
Další možností je využití interní funkce Inventoru na skládání hodnot iVlastností pomocí výrazů. Tady stačí ten kód spustit jenom jednou a potom už se hodnota Title mění automaticky při změně jedné z použitých iVlastností.
Sub Main() Dim doc As Document = ThisDoc.Document SetTitleAsExpression(doc) End Sub
Private Sub SetTitleAsExpression(doc As Document) Dim delka As String = GetParameterValue(doc, "DÉLKA") Dim prednazev As String = GetPropertyValue(doc, "PREDNAZEV") Dim typ As String = GetPropertyValue(doc, "TYP") doc.PropertySets("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}")("Title").Expression = "=<PREDNAZEV> <TYP>-<DÉLKA>" End Sub
|
|
Odeslal: Lukáš Záruba
Datum odeslání: 22.říj.2018 v 13:05
Děkuji za radu, zkusím to.
------------- Budu rád za radu i případně všelijaké postřehy.
|
|