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.
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,.... ).