Zobrazit plnou verzi příspěvku: VBA, iLogic
Dobrý denPomalu 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
Vladimír Michl
21.03.2019, 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
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[code]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}[/code]
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.
Dobrý denrád bych definoval několik proměnných najednouzápis je vcelku jasný:Dim Delka(1 To 5) As Double 'Definování 5-ti proměnnýchProblé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 DoubleTakto provedený zápis je neplatný. Chyba Constant expression reqiredJak 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í.
Vladimír Michl
24.03.2019, 11:35
Dynamícká pole lze řešit např. pomocí klauzule "ReDim" (podobně jako v Basicu)
Mohl by jste to trochu rozvést. S VBA jsem se poprvé potkal minulou sobotu.Děkuji
Vladimír Michl
24.03.2019, 13:19
Tak třeba pro seznam názvů polohových reprezentací (dopředu nevím jejich počet):[CODE]Dim RepList() As String ReDim RepList(0 To oPosReps.Count-1)[/CODE]
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
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"
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í"
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.htmlAle v obecné rovině, kdy můžete mít několik uzavřených profilů, překrývající se profily, víceobjemové těleso, vysouvání jako plocha, zúžení, vymezení od-do, atd... tak to úplně taková sranda není. Ale ten profilový ohyb je taky pěkný.
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.
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.
Pokud bych chtěl ve formuláři používat stejné symboly / ikony jako jsou v inventoru, kde je najdu.
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ů.