Zobrazit plnou verzi příspěvku: PŘEPSÁNÍ PARAMETRU

Lukáš Záruba
13.03.2019, 13:23
Zdravím,Mám pravidlo které mi založí a vyplní parametr "POLOTOVAR". jak mám napsat aby se mi parametr který již existuje přepsal tímto s více hodnotami?Dim oParams As ParametersDim oPartDoc As PartDocument = ThisDoc.Document
Dim oPartCompDef As PartComponentDefinition = oPartDoc.ComponentDefinition
oParams = oPartCompDef.Parameters

Dim oUserParams As UserParameters = oParams.UserParameters

Try
p = Parameter("POLOTOVAR")
Catch
oUserParams.AddByValue("POLOTOVAR","", UnitsTypeEnum.kTextUnits)
MultiValue.SetList("POLOTOVAR",
"PLECH",
"JAKL",
"TRUBKA 4HR",
"TRUBKA OBD",
"TY� PLOCH�",
"TY� KULAT�",
"TY� Z�VITOV� (DIN 975)"
)
End Try

krupicka
14.03.2019, 09:14
Dobrý den,    Musíme ověřit existenci parametru. V případě, že existuje, jej odstranit a vytvořit nový.Šel jsem na to procházením všech parametrů a porovnáváním jejich názvů s názvem "POLOTOVAR"Dim oParams As Parameters
Dim oPartDoc As PartDocument = ThisDoc.Document
Dim oPartCompDef As PartComponentDefinition = oPartDoc.ComponentDefinition
oParams = oPartCompDef.Parameters
Dim ParaExist As Boolean = False

Dim oUserParams As UserParameters = oParams.UserParameters

Try
For i = 1 To oParams.Count
If oParams(i).Name = "POLOTOVAR" Then
ParaExist = True
Exit For
End If
Next
Catch

End Try


MessageBox.Show(ParaExist, "Existence parametru POLOTOVAR")

If ParaExist = True Then
Parameter.Param("POLOTOVAR").Delete
End If

Try
p = Parameter("POLOTOVAR")
Catch
oUserParams.AddByValue("POLOTOVAR","", UnitsTypeEnum.kTextUnits)
MultiValue.SetList("POLOTOVAR",
"PLECH",
"JAKL",
"TRUBKA 4HR",
"TRUBKA OBD",
"TYC PLOCHA",
"TYC KULATA",
"TYC ZAVITOVA (DIN 975)"
)
End Try
S pozdravem Martin Krupička, CAD Studio

Lukáš Záruba
14.03.2019, 09:48
Díky, přesně to jsem potřeboval. Už mi to funguje.

Lukáš Záruba
15.03.2019, 11:02
Je možné toto pravidlo napsat tak aby fungovalo i pro sestavu? pokud ano, tak jak to napíšu?

Vladimír Michl
17.03.2019, 08:10
Pro parametr sestavy nebo pro parametry všech komponent sestavy a podsestav? (to už je složitější). Pro parametr sestavy stačí upravit záhlaví - typy objektů.

Lukáš Záruba
18.03.2019, 08:40
Zdravím, Chtěl bych tímto pravidlem vyhledat, vymazat a znovu vytvořit uživatelský parametr "POLOTOVAR" v sestavě. Toto pravidlo funguje pro díl ale v sestavě hlásí chybu. Jedná se mi o to že budu postupně připisovat hodnoty do pravidla v "MultiValue.SetList" a proto když bude tato změna tak potřebuji aby byl starý seznam hodnot nahrazen novými. Hlavně u starých nebo převzatých projektů kde tento parametr není, nebo je vyplněn jinak. 

Navara
18.03.2019, 09:30

Tohle už začíná být docela rozsáhlé.Co se týká zpracování sestavy, tak stačí upravit záhlaví, ale doporučuju to udělat tak, aby to fungovalo pro obojí (sestava i součást). To znamená získat oUserParams jak pro sestavu, tak pro součást. Zbytek uzavřít do metody s argumentem oUserParams.No a v té metodě před smazáním parametru zkontrolovat, jestli je to přegenerování parametru nutné. Jinak totiž dochází ke změně souboru a budou neustále vznikat nové verze, které bude nutné ukládat i v případě, že fakticky k žádné změně nedojde. 

Lukáš Záruba
18.03.2019, 11:04
Děkuji za nápad pane Navaro, mohl byste mi napsat jak by šlo upravit abych získat oUserParams? Co se týče zjišťování nutnosti přegenerování, tak bych si s tím nelámal hlavu. Jelikož toto pravidlo je spouštěno ručně, pouze při nutnosti použít starý projekt nebo přenzané díly jako nový. Tím pádem se vždycky něco změní ( materiál, geometrie,.... ).