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

Spuštění makra z externího souboru

UživatelPříspěvek
Pavel Krsek

Poslat zprávu | Profil
Datum: 15.5. 2014 | Zobrazeno: 9911x
Konfigurace CATIA:

Text dotazu:
Ahoj, mám prosím následující script:

Sub CATMain()

Dim Params()
Dim ScPath
ScPath = "q:\xxx\xxx\xxxx\"
CATIA.SystemService.ExecuteScript ScPath, catScriptLibraryTypeDirectory, "xxx.CATScript", "CATMain", Params
End Sub

který chodí OK. Když, ale chci přenášet nějaké hodnoty a změním Params() na Params(1) a doplnim řádky:
Params(0) = 20

Params(1) = 30

tak dostanu chybu: "Invalid array size".

Kde dělám prosím chybu?

Michal

Poslat zprávu | Profil
[#4567] | Publikováno: 15.05. 2014 - 08:57
ve VBA se ještě musí nastavit velikost pole, jestli si dobře pamatuju.
ReDim Params(1) vytvoří dvouprvkové pole
nevím přesně jak to bude ve vbscriptu.
Pavel Krsek

Poslat zprávu | Profil
[#4568] | Publikováno: 15.05. 2014 - 10:21
Díky za typ. Bohužel se nadaří ani s takto upraveným kodem:
Sub CATMain()

Dim Params()
Dim ScPath
ReDim Preserve Params(1)
Params(0) = 20
Params(1) = 30
ScPath = "q:\Catia5\Macros\Otvory\"
CATIA.SystemService.ExecuteScript ScPath, catScriptLibraryTypeDirectory, "6H7.CATScript", "CATMain", Params
End Sub


Dostanu stejnou chybovou hlášku
Ing Jan Cinert

Poslat zprávu | Profil
[#4570] | Publikováno: 15.05. 2014 - 12:51
Redim používat nemusíte, stačí velikost pole uvést při deklaraci, takže
Dim Params(1)

je správně. Spíš bych viděl chybu na druhé straně, tedy že volané makro očekává jiný počet argumentů než je velikost pole.

Klíčové slovo Preserve se používá pokud potřebujete změnit rozsah pole při současném zachování stávajícího obsahu.
Pavel Krsek

Poslat zprávu | Profil
[#4571] | Publikováno: 15.05. 2014 - 12:59
Dobrý den,
děkuji za radu. To že nemusí být Redim se mi podařilo již vygooglovat, ale vůbec nevím, jak uchopit tu druhou část tj. co musí být ve spuštěném scriptu za příkaz.
Já chci mít v Catii ikony na které jsou napojené jednoché catscripty, ve kterých budou 2 proměnné v závislosti dle zmáčknuté ikony. Catstript spouští catvba, kde s danými proměnnými potřebuji pracovat, ale vždy to končí na dané hlášce tj. "Invalid parameter array size" ........ Když proměnné nedefinuji v první části, tak vše proběhně až do konce, ale to nechci.
Ing Jan Cinert

Poslat zprávu | Profil
[#4572] | Publikováno: 15.05. 2014 - 14:37
Volaný script CATMain musí mít uvedené parametry, jinak to nebude fungovat. Např. takto:

Ve VBA:
Sub CATMain(Optional ByVal a As Variant, Optional ByVal b As Variant)

MsgBox a & " - " & b
End Sub


Ve VBScriptu pod ikonou:
Sub CATMain()

Dim Params(1)
Params(0) = 10
Params(1) = 20
CATIA.SystemService.ExecuteScript "cesta\makro.catvba", CatScriptLibraryType.catScriptLibraryTypeVBAProject, "nazev makra", "CATMain", Params
End Sub

Vyzkoušeno a funguje.
Pavel Krsek

Poslat zprávu | Profil
[#4573] | Publikováno: 15.05. 2014 - 15:18
Super, diky moc, už to funguje.


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.