VBA: Bewerk een bestand zonder de 3D te openen

Hallo

Ik heb gemerkt in Excel-macro's dat wanneer ik meerdere bestanden open, sommige niet worden geladen in het Solidworks-scherm, maar ze zijn onderhevig aan de wijzigingen (het is geen probleem van snelheid, want ik heb het al gezien met F8).

Ik merkte dat ik soms de actie Zichtbaar = Waar moet doen, om het bestand op het scherm weer te geven.

Nu vraag ik me af of er een methode is waarmee je bestanden kunt openen zonder ze fysiek in het Solidworks-scherm te laden. Gewoon om deze bug te misbruiken om te controleren of de macro niet sneller is. Een beetje zoals bij Excel wanneer je de automatische berekening of de schermupdate annuleert.

 

Bedankt.

Hallo

Het is geen bug, je kunt het gewoon openen en sneller wijzigingen aanbrengen. (geen herbouw of grafisch laden)

Deze modus is dus met opzet gedaan, maar het is niet mogelijk om wijzigingen in solidworks te starten zonder op zijn minst een solidworks in een verborgen versie te openen.

1 like

Hallo

Voor "maar niet mogelijk om wijzigingen in solidworks te lanceren zonder op zijn minst een solidworks in verborgen versie te openen", met uitzondering van enkele manipulaties via de Solidworks Document Manager-API's waarbij het niet nodig is om Solidworks te hebben geïnstalleerd. Anders ben ik het eens met sbadenis.

Vriendelijke groeten

1 like

"Dus deze modus is met opzet gedaan"

Het openen van Solidworks is geen probleem, maar hoe kun je op deze manier vrijwillig bestanden openen?

Om een macro te versnellen, zijn er verschillende methoden die kunnen worden toegepast.

Als:

swApp.UserControl = Onwaar
swApp.Visible = Onwaar

swModel.Visible = Onwaar

swApp.DocumentVisible(Onwaar, swDocumentTypes_e.swDocPART)
swApp.DocumentVisible(Onwaar, swDocumentTypes_e.swDocASSEMBLY)
swApp.DocumentVisible(Onwaar, swDocumentTypes_e.swDocDRAWING)

swModel.FeatureManager.EnableFeatureTree = Onwaar

swModel.FeatureManager.EnableFeatureTreeWindow = Onwaar

swApp.CommandInProgress = Waar

Dim modView als ModelView
set modView = swModel.ActiveView
modView.EnableGraphicsUpdate = Onwaar

Kijk hier voor meer informatie

Opmerking: Sommige API-functies werken niet als het onderdeel niet zichtbaar is.

2 likes

Ik weet niet welke functie je gebruikt om je documenten te openen , maar hier is bijvoorbeeld een klein fragment uit het document over de OpenDoc7-functie :

"ISldWorks::OpenDoc7 activeert of toont het document niet als het bestand al in het geheugen is geopend in een assemblage of tekening. ISldWorks::OpenDoc7 moet echter een geldige IModelDoc2-aanwijzer  retourneren die kan worden gebruikt met functies waarvoor geen document hoeft te worden weergegeven.

Optioneel zal ISldWorks::ActivateDoc2 of ISldWorks::IActivateDoc3 het document activeren en weergeven. Omdat het aanroepen van ISldWorks::OpenDoc7 het bestand niet activeert of weergeeft, retourneert het aanroepen van de eigenschap ISldWorks::ActiveDoc of ISldWorks::IActiveDoc2 geen aanwijzer naar dit document."

Vriendelijke groeten

1 like