Vytisknout stránku | Zavřít okno

VBA, iLogic

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: Inventor
Popis fóra: Otázky k programům Autodesk Inventor Professional, Product Design & Manufacturing Collection, Factory Design; digitální prototypy
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=28572
Datum vytištění: 07.čer.2026 v 12:36


Téma: VBA, iLogic
Odeslal: issin
Předmět: VBA, iLogic
Datum odeslání: 21.bře.2019 v 11:09
Dobrý den
Pomalu pronikám do tajů programování VBA a iLogic. Jak tak procházím různé diskuze a příklady toho co se jak programuje tak jsem narazil na zápisy kdy ve složených závorkách je dlouhý řetězec znaků. Co tyto řetězce znamenají?

Zde je část kódu obsahující takový řetězec:

Dim p As Property
    Set p = prt.PropertySets( _
      "{32853F0F-3444-11D1-9E93-0060B03C1CA6}")("Description")
    p.Expression = sb.Name



Odpovědi:
Odeslal: Vladimír Michl
Datum odeslání: 21.bře.2019 v 13:15
to je tzv. GUID, interní jedinečné označení nějakého objektu nebo typu - obvykle se dá najít v dokumentaci objektového modelu

-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz emea.support.arkance.world)


Odeslal: Navara
Datum odeslání: 21.bře.2019 v 13:52
Trochu to rozvedu.
Vlastnosti jsou ukládány v dokumentu v tzv. sadách (PropertySet) Každý PropertySet je možno identifikovat pomocí jednoho z následujících identifikátorů.
index - pořadí v kolekci všech sad - hodně nespolehlivé, nepoužívá se.
Name - anglický název, podle dokumentace by měl být shodný ve všech jazykových mutacích, lze použít.
DisplayName - Lokalizovaný název sady vlastností, v každé jazykové mutaci je jiný, nepoužívá se.
InternalName - Interní identifikátor (GUID), který je shodný ve všech jazykových mutacích, používám a za posledních 10 let se nezměnil.
 
Tabulka jak jí vrací Inventor
Name                                   | DisplayName                                         | InternalName
-------------------------------------------------------------------------------------------------------------------------------------
Inventor Summary Information           | Souhrnné informace programu Inventor                | {F29F85E0-4FF9-1068-AB91-08002B27B3D9}
Inventor Document Summary Information  | Souhrnné informace dokumentu programu Inventor      | {D5CDD502-2E9C-101B-9397-08002B2CF9AE}
Design Tracking Properties             | Vlastnosti Design Tracking                          | {32853F0F-3444-11D1-9E93-0060B03C1CA6}
Inventor User Defined Properties       | Uživatelsky definované vlastnosti programu Inventor | {D5CDD505-2E9C-101B-9397-08002B2CF9AE}


Odeslal: issin
Datum odeslání: 23.bře.2019 v 13:49
Děkuji za osvětlení oč se jedná.
Pro začátečníka, který teprve zjišťuje jak správně napsat kód a trápí se s tím jak v programu udělat další krok je to věc momentálně nepoužitelná. Tak to nechám na nějakou příští lekci.


Odeslal: issin
Datum odeslání: 24.bře.2019 v 11:16
Dobrý den
rád bych definoval několik proměnných najednou
zápis je vcelku jasný:

Dim Delka(1 To 5) As Double 'Definování 5-ti proměnných

Problém nastává, když chci definovat předem vypočtený počet proměnných n (pro n jsem zkoušel String, Integer i Double):

Dim Delka (1 To n) As Double

Takto provedený zápis je neplatný. Chyba Constant expression reqired

Jak to správně zapsat?
Zatím to řeším tak, že počet definovaných proměnných značně převyšuje teoretický maximální předpokládaný potřebný počet. Ale to mi nepřipadá jako "nejčistší" řešení.


Odeslal: Vladimír Michl
Datum odeslání: 24.bře.2019 v 11:35
Dynamícká pole lze řešit např. pomocí klauzule "ReDim" (podobně jako v Basicu)

-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz emea.support.arkance.world)


Odeslal: issin
Datum odeslání: 24.bře.2019 v 13:04
Mohl by jste to trochu rozvést. S VBA jsem se poprvé potkal minulou sobotu.
Děkuji


Odeslal: Vladimír Michl
Datum odeslání: 24.bře.2019 v 13:19
Tak třeba pro seznam názvů polohových reprezentací (dopředu nevím jejich počet):

Dim  RepList() As  String 
ReDim RepList(0 To oPosReps.Count-1)



-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz emea.support.arkance.world)


Odeslal: issin
Datum odeslání: 24.bře.2019 v 19:56
Děkuji


Odeslal: issin
Datum odeslání: 27.bře.2019 v 06:16
Tak se zase dostávám o kousek dál.
Rád bych začal experimentovat s modelováním.
Příklad:
   Dejme tomu že budu mít vytvořený náčrt a v něm nakreslenou uzavřenou smyčku.
Pomocí VBA bych chtěl udělat vysunutí o konkrétní vzdálenost.
Otázka:
   Jaký by měl být správný postup? Mohl by sem někdo napsat nějakou osnovu, podle které bych mohl postupovat při tvorbě kódu.
Děkuji


Odeslal: Navara
Datum odeslání: 27.bře.2019 v 15:01
Osobně se snažím maximálně vyhnout tomu, že bych něco v modelu tvořil pomocí API. A zrovna vysunutí je docela komplexní operace.
Co se týká nějakého příkladu, tak ty jsou k dispozici v nápovědě k API například pod heslem "ExtrudeFeatures Object"
 
 
 


Odeslal: issin
Datum odeslání: 03.dub.2019 v 16:23
Myslel jsem, že vysunutí (Extrude) bude spíše jedna z těch jednodušších věcí. Porovnám-li to s profilovým ohybem (ContourFlangeFeature) kde je třeba zadat kterým směrem se vytvoří tloušťka plechu a potom kterým směrem a na jakou vzdálenost dojde k "vysunutí"


Odeslal: Navara
Datum odeslání: 03.dub.2019 v 21:07
No jak se to vezme. Například tady je diskuze s jedním krátkým příkladem (nevím, jestli funguje)
https://knowledge.autodesk.com/support/inventor-products/troubleshooting/caas/discussion/t5/Inventor-Customization/Asymmetric-Extrude/td-p/5340853.html" rel="nofollow -


Odeslal: issin
Datum odeslání: 03.dub.2019 v 21:40
bral jsem to tak, že si to učení nebudu komplikovat překrytými smyčkami, ani že nebudu blbnout s výsuvem od-do nebo k nejbližšímu apod. Ostatně tyto parametry "délky" jsou skoro u všech "výsuvů".
Zatím se snažím přijít na to co vše se musí definovat než se přistoupí k samotnému zadání konkrétní funkce. To zda, když v modelu bude jeden náčrt a v něm jedna smyčka, je nutné dělat selectset.select ... nebo stačí při zadání funkce říct že definiční náčrt je náčrt.item(1)
ani nevím zda je možné užít pojmenování náčrtu.
Jsem stále na začátku.


Odeslal: issin
Datum odeslání: 07.dub.2019 v 11:48
Zatím kód stavím spíše systémem pokus omyl a logickou skladbu spíše odhaduji, nicméně jsem zase o malý kousek dál. Nyní řeším práci s náčrtem a z logiky toho co se pokouším řešit makrem docházím k tomu, že bude potřeba náčrt kopírovat (promítat) z jedné pracovní roviny do druhé a tam jej přepnout aby byl jako konstrukční čára.
Jak se nazývá funkce pro přepnutí normální čáry na konstrukční?
Buď jsem slepý nebo nehledám kde mám.
Děkuji za pomoc.


Odeslal: issin
Datum odeslání: 26.dub.2019 v 22:00
Pokud bych chtěl ve formuláři používat stejné symboly / ikony jako jsou v inventoru, kde je najdu.


Odeslal: Navara
Datum odeslání: 29.dub.2019 v 08:30
Oficiálně nikde. Neoficiálně se dají najít zakompilované v DLL souborech, nebo je vytáhnout z tlačítka příkazu jako vlastnost LargeIcon, nebo StandardIcon typu IPictureDisp, ale s tím je opravdu těžká práce.
Část se dá najít i veřejně, pokud si nainstalujete z SDK DeveloperTools, tak součástí je i dokument "Inventor Icon Design Guidelines.pdf", kde je popsaný způsob tvorby a pár příkladů.



Vytisknout stránku | Zavřít okno