ARKANCE - globální Platinum partner Autodesk ARKANCE | KONTAKT - CZ | SK | EN | DE
Již 10.000+ CAD tipů. Přes 118.500 registrovaných u nás, celkem 1.094.000 registrovaných (CZ+EN), přes 53.000 CAD/BIM bloků. Vyzkoušejte nový přesný Inženýrský kalkulátor. Kompletní příkazy AutoCADu a proměnné AutoCADu 2026.
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

?
CAD diskuze, rady, výměna zkušeností

CAD Fórum - Homepage Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion, 3ds Max, Vault a s dalšími CAD/BIM/PDM aplikacemi. Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy ARKANCE (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.arkance-systems.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenoVBA pre Inventor

 Odpovědět Odpovědět archiv
Autor
mimo0912 Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 24.říj.2008
Lokalita: Slovensko
Používám:
AutoCAD2011, Inventor2017, SolidEdge
Stav: Offline
Bodů: 122
Přímý odkaz na tuto zprávu Téma: VBA pre Inventor
    Zasláno: 17.led.2013 v 20:44
Pozdravujem,
začal som šprtať trochu do VBA.
Na začiatok som chcel získať parameter, trochu to upraviť pod VBA a vrátiť späť upravený.
Prikladám kód, ktorý hlási chybu pri príkaze Set ... .
Připojené náhledyPřihlaste se pro zobrazení plné verze - 11033/VBA-Inv2011.jpg


Mám veľmi málo skúsenosti z VBA pre Inv a tento kód som našiel v odbornom článku.
Prikladám tiež dialóg References.
Ďakujem.
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
Arkance Systems

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Implementujeme řešení Autodesk
Stav: Offline
Bodů: 21908
Přímý odkaz na tuto zprávu Zasláno: 17.led.2013 v 21:17
Máte tam překlep: ActiveDcoument --> ActiveDocument
Vladimír Michl (moderátor)
ARKANCE CZ - arkance.world
(podpora viz helpdesk.arkance-systems.cz)
Zpět nahoru
mimo0912 Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 24.říj.2008
Lokalita: Slovensko
Používám:
AutoCAD2011, Inventor2017, SolidEdge
Stav: Offline
Bodů: 122
Přímý odkaz na tuto zprávu Zasláno: 18.led.2013 v 22:07
Áno bola to chyba, no nevšimol som si. Skopíroval som to, nepozornosť.

Takže som pokročil a ak zadám:
oParam2 = ThisApplication.ActiveDocument.ComponentDefinition.Parameters.Item("d0").Value
načíta sa mi do premennej hodnota 0,6 pritom skutočná hodnota je 6.
Napr. parameter s hodnotou 1000 načíta do premennej 100.
Je to u všetkých parametroch ktoré sú v mm, t. j. 10x menšie číslo.
Ak je parameter v cm potom je to OK.
Ak je parameter v metroch potom do premennej načíta 100x väčšie číslo.

Je to vlastnosť? Robím chybu ja? Je to v nejakom nastavení?
Prosím o radu. Ďakujem.


Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
Arkance Systems

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Implementujeme řešení Autodesk
Stav: Offline
Bodů: 21908
Přímý odkaz na tuto zprávu Zasláno: 18.led.2013 v 22:18
To je v pořádku, rozměrové parametry jsou v API implicitně vyjádřeny v [cm].
 
Možná ještě pro doplnění - pokud potřebujete rozměr v aktuálních jednotkách dokumentu, můžete použít např.:
oJednotky = oDoc.UnitsOfMeasure
pak funkce
GetStringFromValue(Value As Double, UnitsSpecifier) As String
vrátí přepočtený řetězec rozměru včetně jednotek (přičemž UnitsSpecifier jde zadat buď jako řetězec - např. "in" nebo jao oJednotky)


Upravil Vladimír Michl - 19.led.2013 v 10:56
Vladimír Michl (moderátor)
ARKANCE CZ - arkance.world
(podpora viz helpdesk.arkance-systems.cz)
Zpět nahoru
mimo0912 Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 24.říj.2008
Lokalita: Slovensko
Používám:
AutoCAD2011, Inventor2017, SolidEdge
Stav: Offline
Bodů: 122
Přímý odkaz na tuto zprávu Zasláno: 20.led.2013 v 16:53
Robím v strojárstve a tam je to takmer vždy v [mm], preto by som skôr používal:

Dim oPartDoc As Inventor.PartDocument
Set oPartDoc = ThisApplication.ActiveDocument

Dim oParams As Parameters
Set oParams = moPartDoc.ComponentDefinition.Parameters

oParams("Dlzka").Expression = 800

Samozrejme, že parameter už existuje a sú zname dlžkové jednotky.
-------------
Ešte mám dve otázky:
1) Mám otvorenú zostavu (aktívna). Je možnosť cez VBA upraviť ľubovoľný parameter niektoreho z partov danej zostavy bez jeho aktivácie?
2) Mám otvorený part (aktívny), ktorý je vytvorený ako odvodená súčasť. Je možné zmeniť parameter v základnej komponente, zktorej je aktívny part vytvorený?
Za odpoveď vopred ďakujem
Zpět nahoru
Navara Zobrazit panel
ARKANCE support
ARKANCE support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1637
Přímý odkaz na tuto zprávu Zasláno: 21.led.2013 v 09:19
Jenom pro upřesnění.
Pozor na rozdíl mezi (String) Parameter.Expression a (Double) Parameter.Value
Co se týká úpravy parametru v dílu použitého v sestavě, tak tam záleží na tom, zda je načtený v paměti. To souvisí s úrovní detailu. Pokud je soubor načtený v paměti, je možné ho upravovat, ale je potřeba si ohlídat aktulizaci.
U odvozených součástí je to podobně, ale tady si nejsem jistý, kdy základní komponentu načítá do paměti a s aktualizací to taky bude asi o něco pracnější.
 
Al eobecně jsou oba požadavky proveditelné.
Zpět nahoru
mimo0912 Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 24.říj.2008
Lokalita: Slovensko
Používám:
AutoCAD2011, Inventor2017, SolidEdge
Stav: Offline
Bodů: 122
Přímý odkaz na tuto zprávu Zasláno: 29.led.2013 v 21:27
Skúsil som meniť parameter v parte, ktorý je súčasťou otvorenej zostavy. Funguje to, pri aktualizácii a zmena sa prejavila aj v zostave. Funguje to aj pri odvodenej súčasti.
Teraz som narazil na ďalší nedostatok vedomosti.
Potreboval by som cez VBA s otvorením dokumentu otvoriť dialóg hlásením o nemožnosti upravovať tento dokument. Kliknutím na OK zatvorí sa tento dokument. Niečo také ako "Spúšťač udalosti" v iLogic-u. Nerád by som išiel cez iLogic, ale nevylučujem tú možnosť.
Ďakujem.
Zpět nahoru
flesar Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 15.lis.2005
Lokalita: ČR (JČ)
Používám:
AIP 2009
Stav: Offline
Bodů: 641
Přímý odkaz na tuto zprávu Zasláno: 29.led.2013 v 21:51
Pro automatické spouštění maker jsou určené předdefinované názvy maker, např. AutoOpen, AutoNew, AutoClose ...
V makru už si vytvoříte vlastní dialog a ošetříte si uzavření dokumentu.
Zpět nahoru
Navara Zobrazit panel
ARKANCE support
ARKANCE support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1637
Přímý odkaz na tuto zprávu Zasláno: 30.led.2013 v 08:56

Potíž s těmito automatickými makry je v tom, že musí být obsaženy v dokumentu a ne v projektu aplikace splečné pro všechny dokumenty.

Ve VBA je tato úloha velmi komplikovaně řešitelná. V tomto případě je mnohem jednodušší celé to napsatat jako AddIn, který se sám spouští při startu a dokáže pracovat s mnohem širší paletou takzvaných událostí (např. otevření a uložení  dokumentu, atd.)
Zpět nahoru
mimo0912 Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 24.říj.2008
Lokalita: Slovensko
Používám:
AutoCAD2011, Inventor2017, SolidEdge
Stav: Offline
Bodů: 122
Přímý odkaz na tuto zprávu Zasláno: 12.úno.2013 v 15:48
To by mi nevadilo, skôr to vyhovuje. Ale problém je v tom, že potrebujem pri otváraní partu zakázať jeho otvorenie s upozornrním napr. cez MsgBox, ale pri otvorení zostavy to musí fungovať bez akýchkoľvek upozornrní. V prípade ak je otvorená zostava a edituje sa daný part, opäť by to malo byť uživateľsky znemožnené.
Pozn. Tak ako som pri otvorení tejto témy uviedol, že začínam šprtať do VBA, tak ako to písať cez AddIn ......?!?!Cry
Zpět nahoru
Navara Zobrazit panel
ARKANCE support
ARKANCE support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1637
Přímý odkaz na tuto zprávu Zasláno: 12.úno.2013 v 16:41
Tohle opravdu není úloha pro začátečníka.
V podstatě se na to musí jít tak, že vytvoříte nějaký mechanizmus rozpoznávání, zda je otevíraný dokument možno editovat. Tento mechanizmus musí být nezávislý na tom, jak a kdo dokument otevírá. Například se to dá vyřešit uživatelskou iVlastností.
Druhá část je samotné rozhodování o tom, zda se otevření nebo aktivace povolí či nikoli. K tomu slouží v Inventoru takzvané události. Pro náš případ přichází v úvahu dvě:
ApplicationEvents.OnActivateDocument
ApplicationEvents.OnOpenDocument
 
Během těchto událostí se bude kontrolovat
1) v jakém kontextu dochází o otevření/aktivaci souboru. Zda se jedná o samostatné otevření, nebo o otevření v kontextu jiného souboru.
2) Zda se jedná o zakázaný dokument. Pokud ano, je potřeba danou akci přerušit, nebo vrátit zpět.
 
Podrobnosti k popisovaným událostem najdete v dokumentaci k API Inventoru
Zpět nahoru
mimo0912 Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 24.říj.2008
Lokalita: Slovensko
Používám:
AutoCAD2011, Inventor2017, SolidEdge
Stav: Offline
Bodů: 122
Přímý odkaz na tuto zprávu Zasláno: 12.úno.2013 v 17:22
OK, skúsim sa posunúť o krok vpred.
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 2662:Jak zadat VBA výraz na příkazovém řádku?
Tip 7643:Nastavení iVlastnosti Norma pro kusovník Inventoru.
Tip 6790:VIPPřidání ikony vlastního příkazu/makra v Inventoru.
Tip 9321:VIPNefunguje mi VBA v Inventoru 2016, 2015, 2014 nebo 2013 - příčiny.
Tip 8660:Přehled souborů referencovaných z výkresu Inventoru.
Tip 10689:VIPiLogic: Hromadné nastavení iVlastností pro všechny součásti sestavy


 Odpovědět Odpovědět

Přejít na fórum Oprávnění fóra Zobrazit panel



Stránka byla vygenerována za 0,224 sekund.