Zobrazit plnou verzi příspěvku: Náhled souboru

Radek Pícha
03.10.2018, 07:50
Při otevírání souboru v Inventoru mám v levé části okna Otevřít náhled souboru na kterém stojím. Dá se takový náhled zobrazovat pomocí VBA ? Jde mi zejména o iam, ipt a idw.

Vladimír Michl
03.10.2018, 08:07

Myslíte mimo prostředí Inventoru? Ve VBA je to problém vzhledem ke způsobu jakým komunikuje s 64bitovým Inventorem. Ale jde to např. přes Inventor Apprentice (VB.Net): [CODE]Imports Inventor Imports Microsoft.VisualBasic 'References: Autodesk.Inventor.Interop, Microsoft.VisualBasic.Compatibility, stdole Dim Apprentice As New ApprenticeServerComponentDim doc As ApprenticeServerDocumentdoc = Apprentice.Open("C:\MyFolder\Part1.ipt")Dim summaryInfo As PropertySetsummaryInfo = doc.PropertySets.Item("Inventor Summary Information")Dim thumbProp As Inventor.PropertythumbProp = summaryInfo.Item("Thumbnail")Dim thumbnail As stdole.IPictureDispthumbnail = thumbProp.ValueIf Not thumbnail Is Nothing Then    Dim img As Image = Compatibility.VB6.IPictureDispToImage(thumbnail)   ' Call SavePicture(img, "C:\Img\Thumb.bmp") End If[/CODE]

Radek Pícha
03.10.2018, 08:26
Jde mi právě o VBA...

Radek Pícha
05.10.2018, 06:59
Dal by se použít ShowOpen, tam náhledy fungují. Ale nevím jak se postavit s kurzorem na odpovídající soubor. Zkusil jsem použít SendKeys, ale to občas funguje, občas ne. Asi by bylo nutné nějak mazat buffer klávesnice, ale jak ?Call ThisApplication.CreateFileDialog(oF)Sbr="soubor"oF.InitialDirectory = "cesta"oF.Filter = Sbr + "|" + Sbr + "|Soubory Inventoru (iam / ipt / idw)|*.iam;*.ipt;*.idw"oF.FilterIndex = 1SendKeys "%H", TrueSendKeys "+{TAB}+{TAB}", TrueSendKeys Sbr, TrueoF.ShowOpenJe zajímavé, že se to chová jinak když chci zobrazit soubor z lokálního disku anebo ze serveru.Příkaz:oF.FileName = "cesta+soubor"neudělá nic, ten zřejmě funguje jen pro ShowSave...Nějaký nápad ?

Radek Pícha
08.10.2018, 07:21
Pokouším se použít InventorViewCtrl.ocx, ale při pokusu vložit mu FileName spadne Inventor.Inventor View Control mám verzi 1.0, Inventor 2018, 64bit.Funguje to někomu ?

Vladimír Michl
08.10.2018, 07:36

Máte OCX zaregistrované v systému? Registrace žádnou chybu nehlásila? V Office to funguje?

Radek Pícha
08.10.2018, 08:04
Zaregistrováno mám, žádnou chybu nehlásil.V Office to neodzkouším, mám verzi 2013 a tam je staré VBA (6.5) a pokud si to dobře pamatuji, je to 32 bitová verze. Knihovnu do References... vložím, ale v Additional Controls... se vůbec neobjeví.V Inventoru vložím objekt InventorViewControl do formuláře a jakmile chci vybrat ve FileName nějaký soubor (v jeho Properties - FileName kliknu na [...], vyskočí okno Property Pages, karta Filename, kliknu na tlačítko [ ... ]) Inventor spadne.

Vladimír Michl
08.10.2018, 08:36

Aha, nezkoušel jsem, ale je možné že to naráží na nějakou kolizi - ten prvek nebyl určen pro použití v Inventoru, ale právě v externích aplikacích typu Office nebo ERP/PDM.

Navara
04.02.2019, 14:48

Možná už je to mimo mísu, ale zobrazení náhledu je ve VBA velice jednoduché.Stačí vytvořit formulář s jedním objektem Image a na kliknutí do formuláře napsat kód [code]Private Sub Image1_Click()    Me.Image1.Picture = ThisApplication.activeDocument.PropertySets("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}")("Thumbnail").valueEnd Sub[/code]     


Navara2019-02-04 14:51:22

Radek Pícha
05.02.2019, 14:36
Není to mimo mísu, stále to není vyřešené.Tohle zobrazí náhled otevřeného dokumentu a to nepotřebuji. Chtěl jsem zobrazit náhled dokumentu před otevřením.Moje představa je zobrazit to co je v přiloženém obrázku v červeném rámečku.

Radek Pícha2019-02-05 14:47:01

Vladimír Michl
05.02.2019, 17:30
Pokud to potřebujete pro externí (nenačtený) dokument, musíte jej ve VBA otevřít (nejlépe jako neviditelný). Následující kód částečně funguje, ale jsou tam potíže v komunikaci procesů VBA a Inventor. Zřejmě z toho důvodu zafunguje vždy až napodruhé. Ale můžete když tak zkoumat. UserForm1 je normální formulář s polem obrázku (Image1).[CODE]Const strNew_Filename = "c:\Users\UZIVATEL\Documents\SoucastRnd.ipt"Sub GO()Dim oDoc As DocumentSet oDoc = ThisApplication.Documents.Open(strNew_Filename, False)UserForm1.ShowDim oPropSets As PropertySetsSet oPropSets = oDoc.PropertySetsDim summaryInfo As PropertySetSet summaryInfo = oPropSets.Item("Inventor Summary Information")Dim thumbProp As Inventor.PropertySet thumbProp = summaryInfo.Item("Thumbnail")Dim thumbnail As stdole.IPictureDispSet thumbnail = thumbProp.ValueUserForm1.Image1.Picture = thumbnailoDoc.CloseEnd Sub[/CODE]

Radek Pícha
11.02.2019, 07:42
Právě že nechci soubor otevřít, příliš to zatěžuje systém.Např. hledám nějakou velkou sestavu, soubor má desítky MB a načítá se několik minut. Najít ten správný trvá klidně hodiny.Inventor to dokáže - Otevřít a tam je náhled, ještě před otevřením. Nedal by se ten dialog rozpitvat a zjistit jak to dělá ?

Vladimír Michl
11.02.2019, 08:33

Dialog otevři vychází ze standardního dialogu Windows. Takže buď přes ten Apprentice viz výše, nebo - protože v souboru je náhled uložen jako standardní document.container - jde použít univerzální vytahovač thumbnail obrázků (používáme např. v katalogu bloků zde na CADfóru).