Vítejte !   Přihlášení | Registrace
Hlavní menu
CATIA fórum.cz
Novinky
Seriál CATIA
Obecně o CAD
Novinky ze světa DS
Makra pro CATIA V5
Diskuse
Vytvořit téma
Koncepty
Seznam oblíbených
Soukromé zprávy
Pravidla
Live CHAT
VIP žádost
Základy Catia
Ke stažení
Doporučujeme
Pracovní příležitosti
Reklama a kampaně
O fóru
Nápověda

Vložení dat EXCEL do CATIA Parameters

Kompletní přehled příspěvků v tématu Vložení dat EXCEL do CATIA Parameters řazený podle data jejich publikace na fóru.

UživatelPříspěvek
Jan Šponer

Poslat zprávu | Profil
Datum: 26.10. 2013 | Zobrazeno: 10524x
Konfigurace CATIA: V5R21

Text dotazu:
Dobrý den,
jsem začátečník v programování ve VBA. Potřebuji importovat data z EXCEL 2010 do CATIA V5R21.

Pokud chci prvek D4 vložit do Item l_x, který se nachází v objektu Parameters, funguje mi to takto:

Sub Updatecat()
Set CATIA = GetObject(, "CATIA.Application")
Set documents1 = CATIA.Documents
Set partDocument1 = documents1.Item("ReferenceModel.CATPart")
Set part1 = partDocument1.Part
Set parameters1 = part1.Parameters
parameters1.Item("l_x").Value = Worksheets("Sheet1").Range("D4").Value
part1.Update
End Sub

Pokud ovšem chci mít ve stromu pořádek, potřeboval bych vytvořit další set parametrů v základním Parametrs např takto:

Parameters
--- ExternalParameters_1
--- l_x
--- b_x
--- ExternalParameters_2
--- l_x
--- b_x

Zkoušel jsem to takto, bohužel bez úspěchu:

Sub Updatecat()
Set CATIA = GetObject(, "CATIA.Application")
Set documents1 = CATIA.Documents
Set partDocument1 = documents1.Item("ReferenceModel.CATPart")
Set part1 = partDocument1.Part
Set parameters1 = part1.Parameters.ExternalParameters_1
parameters1.Item("l_x").Value = Worksheets("Sheet1").Range("D4").Value
part1.Update
End Sub

Kde dělám chybu?

Děkuji
Jan Šponer

Ing Jan Cinert

Poslat zprávu | Profil
[#4215] | Publikováno: 27.10. 2013 - 00:38
Dobrý den,

tohle samozřejmě fungovat nebude, protože žádná vlastnost ExternalParameters_1 neexistuje. Doporučuju přečíst alespoň základy objektově orientovaného programování.

Musíte nejdřív vytvořit set parametrů, k tomu je funkce CreateSet objektu ParameterSets, což je vlastnost každé kolekce Parameters. Pak si samozřejmě musíte vytvořit každý parametr, do kterého chcete zapisovat hodnoty.z excelu. Na to jsou další metody v objektu Parameters, podle typu parametru (CreateString, CreateInteger, ...).

Nevím jestli vytvoření setu parametrů nebude chtít licenci KWA, v KW1 to standardně nejde.

PS: Jestli chcete přenášet parametry z Excelu, nebyla by pro vás výhodnější Design table?
Jan Šponer

Poslat zprávu | Profil
[#4276] | Publikováno: 17.11. 2013 - 12:35
Dobrý den,
přečetl jsem si základy a je mi to hned jasnější. Také jsem si přečetl článek zde o Design table a máte pravdu, je to pro mě výhodnější - respektive přehlednější.

Přesto, jak pokračuji dále, narazil jsem na problém, který už mě už pár dnů trápí a rád bych se zeptal standardní otázkou, proč to nefunguje, jak bych chtěl. Nebudu zakládat nové téma, i když se to už netýká Excel - Catia.

Nejdříve script, který funguje (Mění názvy Geometrical Setů)
Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part
Set parameters1 = part1.Parameters
Set Relations1 = part1.Relations
Set PocetGS = parameters1.Item("PocetGS")

For i = 1 To PocetGS.value

Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("CrossSection." & i)
hybridBody1.name ="RezCislo." & i
part1.Update ' Updates part
next

End sub

Nyni trochu slozitejsi kod, ktery uz nefunguje. Popis funkce:
V Catia tree existuje nekolik Geometrical Setu nazvanych CrossSection.X kde X je cislo od 1 do n. V kazdem z nich je krivka vytvorena ze Splitu a nazev je Split.X a dale na ni umisten bod Point.Ref.
Nasledujici cast kodu ma za ukol pridat pomoci cyklu for na kazdou tuto krivku dany pocet bodu. Nicmene se toto stane pouze v prvnim Geometrical Setu a v dalsich uz se body nepridaji.

Napadlo me, zda je vubec mozne prepisovat v kazdem cyklu objekty Set hybridBodies1 atd... nebo je nutne mit pro kazdou smycku novy objekt.

Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part
Set parameters1 = part1.Parameters
Set Relations1 = part1.Relations
Set PocetBodu = parameters1.Item("PocetBodu")
Set Old_PocetBodu = parameters1.Item("Old_PocetBodu")
Set New_nr_css = parameters1.Item("New_Nr_Of_CrossSections")

For j = 1 To New_nr_css.value

Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("CrossSection." & j)
Set hybridShapes1 = hybridBody1.HybridShapes
Set hybridShapeSplit1 = hybridShapes1.Item("Split." & j)
Set reference1 = part1.CreateReferenceFromObject(hybridShapeSplit1)
Set hybridShapePointOnCurve1 = hybridShapes1.Item("Point.Ref")
Set reference2 = part1.CreateReferenceFromObject(hybridShapePointOnCurve1)
Set hybridShapeFactory1 = part1.HybridShapeFactory

If Old_PocetBodu.value <PocetBodu.value then

For i = 1 To PocetBodu.value
Set hybridShapePointOnCurve2 = hybridShapeFactory1.AddNewPointOnCurveWithReferenceFromPercent(reference1, reference2, i/(PocetBodu.value+1), False)
hybridBody1.AppendHybridShape hybridShapePointOnCurve2
part1.InWorkObject = hybridShapePointOnCurve2
hybridShapePointOnCurve2.name ="Point." & i
part1.Update
Next

Old_PocetBodu.Value = PocetBodu.Value
part1.Update ' Updates part

End if

If Old_PocetBodu.value > PocetBodu.value then

For i = 1 To Old_PocetBodu.value

Set hybridShapePointOnCurve3 = hybridShapes1.Item("Point." & i)
selection1.Add hybridShapePointOnCurve3
selection1.Delete
Next

Old_PocetBodu.Value = PocetBodu.Value
part1.Update ' Updates part

End if
next

End sub

Omlouvam se za slozitost prispevku i kodu, ale verte, ze kazda pomoc me posune ohromny kus dopredu.

Diky

Jan Sponer
Ing Jan Cinert

Poslat zprávu | Profil
[#4277] | Publikováno: 17.11. 2013 - 20:06
Chyba je jasná - po prvním cyklu pro vytvoření bodů si přepíšete hodnotu parametru Old_PocetBodu, a ji když pak v dalších smyčkách porovnáváte s PocetBodu, hodnota je stejná, podmínka Old_PocetBodu.value > PocetBodu.value neplatí a nic se nestane.

Jinak chyb, resp. neošetřených míst je tam hromada :-)


Uživatel nepřihlášen

Pro zobrazení obsahu stránky / provedení akce (vytvoření nového téma, napsání odpovědi do diskuse apod.) musíte být přihlášeni.