Zobrazit plnou verzi příspěvku: PŘIDÁNÍ PARAMETRU ANO/NE POMOCÍ I-LOGIKU

Lukáš Záruba
12.07.2019, 11:34
Zdravím, mám pravidlo viz níže, které mi přidává i-vlastnosti + parametry ( číselné i textové ). Potřebuji nyní přidat parametr ano/ne a jak tedy rozšířit toto pravidlo aby to fungovalo?

Sub Main()
Dim userParams As UserParameters = GetUserParams(ThisDoc.Document)

EnsureParameter(userParams, "NR0", comment:="NADPIS - ROZM�R")
EnsureParameter(userParams, "NR1", comment:="NADPIS - ROZM�R")
EnsureParameter(userParams, "NR2", comment:="NADPIS - ROZM�R")
EnsureParameter(userParams, "NR3", comment:="NADPIS - ROZM�R")
EnsureParameter(userParams, "NR4", comment:="NADPIS - ROZM�R")
EnsureParameter(userParams, "NR5", comment:="NADPIS - ROZM�R")
EnsureParameter(userParams, "PR1", comment:="POPIS - ROZM�R")
EnsureParameter(userParams, "PR2", comment:="POPIS - ROZM�R")
EnsureParameter(userParams, "PR3", comment:="POPIS - ROZM�R")
EnsureParameter(userParams, "PR4", comment:="POPIS - ROZM�R")
EnsureParameter(userParams, "PR5", comment:="POPIS - ROZM�R")
EnsureParameter(userParams, "D�LKA", comment:="D�LKA PROFILU")
EnsureParameter(userParams, "STRANA_A_Y", comment:="ROZM�R PRO OSU Y (V�T�INOU D�LKA)")
EnsureParameter(userParams, "STRANA_B_X", comment:="ROZM�R PRO OSU X")
EnsureParameter(userParams, "STRANA_C_Z", comment:="ROZM�R PRO OSU Z")
EnsureParameterTEXT(userParams, "MAT", comment:="MATERI�L")
EnsureParameterTEXT(userParams, "POPIS_DILU", comment:="GRAV�RA")
EnsureParameterTEXT(userParams, "POLOTOVAR", comment:="PRO V�ECHNY")

Dim customPropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties")

EnsureProperty(customPropertySet, "N0")
EnsureProperty(customPropertySet, "N0-M")
EnsureProperty(customPropertySet, "N1")
EnsureProperty(customPropertySet, "N1-M")
EnsureProperty(customPropertySet, "N2")
EnsureProperty(customPropertySet, "N2-M")
EnsureProperty(customPropertySet, "N3")
EnsureProperty(customPropertySet, "N3-M")
EnsureProperty(customPropertySet, "N4")
EnsureProperty(customPropertySet, "N4-M")
EnsureProperty(customPropertySet, "N5")
EnsureProperty(customPropertySet, "N5-M")

EnsureProperty(customPropertySet, "NR0")
EnsureProperty(customPropertySet, "NR0-M")
EnsureProperty(customPropertySet, "NR1")
EnsureProperty(customPropertySet, "NR1-M")
EnsureProperty(customPropertySet, "NR2")
EnsureProperty(customPropertySet, "NR2-M")
EnsureProperty(customPropertySet, "NR3")
EnsureProperty(customPropertySet, "NR3-M")
EnsureProperty(customPropertySet, "NR4")
EnsureProperty(customPropertySet, "NR4-M")
EnsureProperty(customPropertySet, "NR5")
EnsureProperty(customPropertySet, "NR5-M")

EnsureProperty(customPropertySet, "P1")
EnsureProperty(customPropertySet, "P1-M")
EnsureProperty(customPropertySet, "P2")
EnsureProperty(customPropertySet, "P2-M")
EnsureProperty(customPropertySet, "P3")
EnsureProperty(customPropertySet, "P3-M")
EnsureProperty(customPropertySet, "P4")
EnsureProperty(customPropertySet, "P4-M")
EnsureProperty(customPropertySet, "P5")
EnsureProperty(customPropertySet, "P5-M")

EnsureProperty(customPropertySet, "PR1")
EnsureProperty(customPropertySet, "PR1-M")
EnsureProperty(customPropertySet, "PR2")
EnsureProperty(customPropertySet, "PR2-M")
EnsureProperty(customPropertySet, "PR3")
EnsureProperty(customPropertySet, "PR3-M")
EnsureProperty(customPropertySet, "PR4")
EnsureProperty(customPropertySet, "PR4-M")
EnsureProperty(customPropertySet, "PR5")
EnsureProperty(customPropertySet, "PR5-M")

EnsureProperty(customPropertySet, "MAT")
EnsureProperty(customPropertySet, "MAT-M")
EnsureProperty(customPropertySet, "MAT2")
EnsureProperty(customPropertySet, "MAT2-M")
EnsureProperty(customPropertySet, "TYP1")
EnsureProperty(customPropertySet, "TYP1-M")
EnsureProperty(customPropertySet, "TYP2")
EnsureProperty(customPropertySet, "TYP2-M")
EnsureProperty(customPropertySet, "POPIS_REVIZE")
EnsureProperty(customPropertySet, "POLOTOVAR")

End Sub

Function GetUserParams(doc As Document) As UserParameters
If (doc.DocumentType = DocumentTypeEnum.kAssemblyDocumentObject) Then
Dim asm As AssemblyDocument = doc
Return asm.ComponentDefinition.Parameters.UserParameters
ElseIf (doc.DocumentType = DocumentTypeEnum.kPartDocumentObject) Then
Dim prt As PartDocument = doc
Return prt.ComponentDefinition.Parameters.UserParameters
Else
Throw New ArgumentOutOfRangeException("Document can be AssemblyDocument or PartDocument")
End If
End Function

Function EnsureParameter(
userParams As UserParameters,
paramName As String,
Optional defaultValue As Double = 0,
Optional units As String = "mm",
Optional comment As String = "") As Parameter
Dim p As Parameter
Try
p = userParams(paramName)
Catch ex As Exception
p = userParams.AddByValue(paramName, defaultValue, units)
p.Comment = comment
End Try
Return p
End Function

Function EnsureParameterTEXT(
userParams As UserParameters,
paramName As String,
Optional defaultValue As String= "",
Optional comment As String = "") As Parameter
Dim p As Parameter
Try
p = userParams(paramName)
Catch ex As Exception
p = userParams.AddByValue(paramName, defaultValue, "TEXT")
p.Comment = comment
End Try
Return p
End Function

Function EnsureProperty(propertySet As PropertySet, propName As String, Optional defaultValue As String = "") As [Property]
Dim p As [Property]
Try
p = propertySet(propName)
Catch ex As Exception
p = propertySet.Add(defaultValue,propName)
End Try
Return p
End Function


Vladimír Michl
12.07.2019, 14:07

To máte nějaké složité, mělo by stačit automatické vytváření správných typů parametrů - něco jako: [CODE]customPropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties")customPropertySet.Add("Bukové dřevo", "NášMateriál")customPropertySet.Add(False,"AplikujPískování")[/CODE] asi obalené to Try/Catch 

Lukáš Záruba
17.12.2019, 11:23
Zdravím, Potřebuji dostat do sestavy cca 6 parametrů booleovských parametrů (ANO/NE), do sestavy. Chtěl bych to dostat pomocí i-logicu. Jak to napíšu? jde to vůbec?

Vladimír Michl
17.12.2019, 12:40
Výše je to naznačeno - např.:Dim customPropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties")
Try
customPropertySet.Add(True, "AntikorozníÚprava")
customPropertySet.Add(False, "AplikujPískování")
Catch
End Try

Lukáš Záruba
17.12.2019, 13:17
Děkuji, na uživatelské i-vlastnosti mi to funguje ale potřebuji to dostat do uživatelských parametrů sestavy. 

Navara
17.12.2019, 13:30
Je to stejné, jako u parametru text[code]ActiveAsm.ComponentDefinition.Parameters.UserParameters.AddByValue("MyBoolParam", True, "BOOLEAN")[/code]

Lukáš Záruba
17.12.2019, 14:52
DÍKY UŽ MI TO FUNGUJE