Vytisknout stránku | Zavřít okno

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.



Vytisknout stránku | Zavřít okno