Vytisknout stránku | Zavřít okno

PŘEPSÁNÍ PARAMETRU

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=28534
Datum vytištění: 07.kvě.2026 v 13:33


Téma: PŘEPSÁNÍ PARAMETRU
Odeslal: Lukáš Záruba
Předmět: PŘEPSÁNÍ PARAMETRU
Datum odeslání: 13.bře.2019 v 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 Parameters
Dim 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


-------------
Budu rád za radu i případně všelijaké postřehy.



Odpovědi:
Odeslal: krupicka
Datum odeslání: 14.bře.2019 v 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"
Smile
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 Smile


Odeslal: Lukáš Záruba
Datum odeslání: 14.bře.2019 v 09:48
Díky, přesně to jsem potřeboval. Už mi to funguje.

-------------
Budu rád za radu i případně všelijaké postřehy.


Odeslal: Lukáš Záruba
Datum odeslání: 15.bře.2019 v 11:02
Je možné toto pravidlo napsat tak aby fungovalo i pro sestavu? pokud ano, tak jak to napíšu?

-------------
Budu rád za radu i případně všelijaké postřehy.


Odeslal: Vladimír Michl
Datum odeslání: 17.bře.2019 v 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ů.

-------------
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í: 18.bře.2019 v 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. 


-------------
Budu rád za radu i případně všelijaké postřehy.


Odeslal: Navara
Datum odeslání: 18.bře.2019 v 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.
 


Odeslal: Lukáš Záruba
Datum odeslání: 18.bře.2019 v 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,.... ). 


-------------
Budu rád za radu i případně všelijaké postřehy.



Vytisknout stránku | Zavřít okno