Ik probeer een macro te maken om een assemblage te openen. Ik werd geïnspireerd door het document dat door Dassault werd voorgesteld, maar ik kan het niet...
Ik krijg een Run Time Error type 13 (type komt niet overeen). Op het niveau van mijn lijn:
Ik ben het bijvoegen van mijn macro .... Kun je me vertellen wat ik verkeerd doe?
Bij voorbaat dank voor uw hulp
LSE
Sub hoofd()
Dim swModel als ModelDoc2 Dim swModelDocExt als ModelDocExtension Zon swSelMgr Als SelectieMgr Dim partFile als tekenreeks AssemblyFile dimmen als tekenreeks Tekening dimmenBestand als tekenreeks Dim fouten als geheel getal Waarschuwingen dimmen als geheel getal
Stel swApp = Toepassing.SldWorks in
Deel instellen = swApp.ActiveDoc myModelView dimmen als object Stel myModelView = Deel.ActiveView in myModelView.FrameState = swWindowState_e.swWindowMaximized
' Open een assemblagedocument en selecteer alle componenten in de assemblage
assemblyFile = "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\samples\introsw\bolt-assembly.sldasm" Stel swApp = CreateObject("SldWorks.Application") in Stel swModel = swApp.GetOpenDocumentByName(assemblyFile) in
Ik heb de macro niet geprobeerd, maar op de opmerking: "Ik krijg een Run Time Error type 13 (typ mismatch)", zou het me niet verbazen als het komt van het typen van de variabelen "Dim errors As Integer" en "Dim warnings As Integer" die normaal gesproken "Long" zou moeten zijn. Natuurlijk moet u ook controleren of het bestand dat in de variabele "assemblyFile" is gedefinieerd, bestaat.
Voor de vraag "Kun je me vertellen wat ik verkeerd doe?" Ik zal niet bij mezelf stilstaan, want mijn aanstaande collega's Sbadenis en Mandrake zijn al begonnen te reageren... Maar ik ben het eens, of zelfs meer, met de opmerking "maar het is niet de schoonste" van Sbadenis.
Als de mijne niet werkt, is het normaal, het is gespecificeerd 'Deel' en niet ASM. Ik heb het net herschreven met je variabele en mijn fout gecorrigeerd.
Optie Expliciete
Dim swApp als SldWorks.SldWorks Dim doc als SldWorks.ModelDoc2 Dim fileerror zo lang Dim filewarning zo lang
AssemblyFile dimmen als tekenreeks
Sub hoofd()
Stel swApp = Toepassing.SldWorks in swApp.Visible = Waar
In theorie is de assemblage al open, dus solidworks gaat deze niet heropenen.
Je moet met andere functies spelen denk ik, zet je 130101 verlichten en activeer je macro, kijken of het gaat oplossen.
Het is informatica, software kan heel 'dom' zijn. Er zijn veel verschillende functies voor elke functie, ik zag een '
swApp. CreateNewWindow' die u zeker kan helpen dwong de software om uw 130101 in een nieuw venster te openen.
Daarna hebben we veel mensen die hier api doen als je ons wat meer informeert over wat je wilt doen en waarom iemand het al kan doen of we kunnen je sneller begeleiden.
Als je subassemblage al open is in SW, dan moet je de functie "ActivateDoc3" gebruiken om het te openen (in werkelijkheid is het activeren dat je moet zeggen omdat het al open is) in een nieuw SW-venster.
@mandragore: Ik ben het niet helemaal eens met de opmerking "Het is informatica, software kan heel 'dom' zijn. Er zijn veel verschillende functies voor elke functie", vind ik dat API's juist vrij logisch zijn. In dit geval is er een verschil tussen "open" en "activeren"...