Hallo, ik heb lang geprobeerd om een eenvoudige macro te maken om de huidige weergave van mijn onderdeel (.part) in DXF te exporteren, hoe vaak ik ook probeer exporttoDWG2 te gebruiken, ik slaag er nooit in om mijn maccro aan het werk te krijgen, ik begin van ver in VBA, ook heb ik geprobeerd om verschillende code te hacken die ik over andere onderwerpen heb gevonden, maar niets helpt. en ChatGPT slaagde er niet in om aan mijn behoefte te voldoen, ook al lijkt het eenvoudig.
Kan niet wachten om je te lezen het forum ingenieurs
ChatGPT ... Maar wat hebben jullie nu allemaal met dit ding? Het is nooit zomaar een robot die stukjes tekst kopieert en plakt die hij ziet. Kort
Heb je geprobeerd een macro te maken door te leren door je bewegingen op te nemen bij het maken van een DXF? Het kan u in staat stellen de basisfuncties te zien die voor uw actie worden opgeroepen
Het is een Gpt-tool, het is naar mijn mening veel meer dan dat, maar ja, het haalt deze informatie uit een grote database. in het kort²
Ja, ik ben begonnen met dit te doen, maar zelfs als ik een DXF van mijn onderdeel maak, voert het een code uit, ik probeer het opnieuw met hetzelfde onderdeel door de DXF die eerder is gedaan te verwijderen, het wordt gestart maar lijkt geen actie te ondernemen, en geen DXF-creatie in de uitvoer ...
' ******************************************************************************
' macro recorded on 04/21/23 by CAO21
' ******************************************************************************
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
' Save As
longstatus = Part.SaveAs3("mon chemin.DXF", 0, 2)
' Redraw
Part.GraphicsRedraw2
Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameLeft = 0
myModelView.FrameTop = 22
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
Set Part = swApp.NewDocument("C:\ProgramData\SolidWorks\SOLIDWORKS 2020\templates\Mise en plan.drwdot", 0, 0, 0)
swApp.ActivateDoc2 "Mise en plan25 - Feuille1", False, longstatus
Set Part = swApp.ActiveDoc
Set Part = swApp.ActiveDoc
Set myModelView = Part.ActiveView
myModelView.FrameLeft = 0
myModelView.FrameTop = 22
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
swApp.ActivateDoc2 "nom piece", False, longstatus
Set Part = swApp.ActiveDoc
' New View
Part.NameView "*En cours"
Dim myView As Object
Set myView = Part.CreateDrawViewFromModelView3("cheminpiece", "*En cours", 0, 0, 0)
boolstatus = Part.DeleteNamedView(*En cours)
Part.ClearSelection2 True
End Sub
Hier is de code die het komt naar mij toe ... en als ik het daarna uitvoer, krijg ik een synthaxis-foutmelding
Hallo Voor de syntaxisfout is dit te wijten aan het vergeten van de aanhalingstekens rond *In uitvoering. Zonder de aanhalingstekens beschouwt het het als een variabele, dus aangezien het niet bestaat of leeg is, retourneert het een fout.
Hallo Cyril, bedankt voor je antwoord, het heeft de synthaxe-fout opgelost, maar het probleem beweegt een beetje lager, wanneer ik de macro start, heb ik het bericht volgend:
De lijn
Set myView = Part.CreateDrawViewFromModelView3("chemin de ma pièce.SLDPRT", "*En cours", 0, 0, 0)
is nu gemarkeerd,
Als ik de macro uitvoer, wordt er ook een lege tekening geopend.
De bijgevoegde macro moet in staat zijn om de huidige weergave van een onderdeel in DXF- of DWG-formaat op te slaan. Het document moet open en het document actief zijn. Houd er rekening mee dat oppervlaktelichamen niet in aanmerking worden genomen in de exportfunctie van SolidWorks.
EDIT: het werkt perfect op 2 van de 3 stations, op de 3e werkt de macro, maar dan is het onmogelijk om een nieuwe kamer te maken, het probleem blijft bestaan tot de opening van een andere kamer. Enig idee waar deze bug vandaan zou kunnen komen? (Dit is een detail, gezien het feit dat we in de DXF-creatiefase theoretisch niet langer in een fase van het maken van nieuwe onderdelen zitten)
Ik heb hetzelfde gedrag op mijn pc, het menu dat is gekoppeld aan de creatiefunctie reageert niet na het uitvoeren van de macro. Door de stapsgewijze uitvoering te volgen, is het maken van een nieuw onderdeel mogelijk gedurende de hele macro, tot aan de ExportToDWG2-functie, en wordt het onmogelijk nadat... Het lijkt de oorzaak van het probleem te zijn, en ik heb geen idee hoe ik het kan omzeilen.
Het lijkt erop dat deze GPT de code niet goed heeft gestructureerd, maar het toonde een goede logica van {think}, maak een MEP van de huidige weergave en exporteer vervolgens naar dxf, niet slecht,
Option Explicit
Dim swApp As Object
Dim swModel As ModelDoc2
Dim swdrawing As DrawingDoc
Dim status As Boolean
Const modelPath As String = "C:\ProgramData\SOLIDWORKS\SOLIDWORKS 2018\templates\Drawing.drwdot"
Const nameView As String = "Current"
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If Not (swModel.GetType() = 1 Or swModel.GetType() = 2) Then
MsgBox "Fonctional only on 'Part' or 'Assembly' documents.", vbCritical
End
End If
Dim path As String
path = swModel.GetPathName
On Error GoTo err
swModel.nameView nameView
Set swdrawing = swApp.NewDocument(modelPath, 0, 0, 0)
swdrawing.CreateDrawViewFromModelView3 path, nameView, 0, 0, 0
Set swModel = swApp.ActiveDoc
path = Left(path, InStr(1, path, ".")) + "dxf"
Dim error As Long, warning As Long
status = swModel.Extension.SaveAs(path, 0, 1, Nothing, error, warning)
swApp.CloseDoc ""
Set swModel = swApp.ActiveDoc
swModel.DeleteNamedView nameView
If status = False Then GoTo err
MsgBox "Success", vbInformation
Exit Sub
err:
MsgBox "Error in processing", vbCritical
End Sub
Hij zou hebben kunnen raden dat de naam (*In uitvoering) bij het weergavepalet hoort, niet bij het sjabloon
Hallo Ik denk dat het meer te maken heeft met het feit dat je geen objecten uit het geheugen leegt. Het formulier blijft thuis actief, maar weerhoudt me er niet van om in ieder geval een nieuw bestand aan te maken (ik heb niet geprobeerd er iets in te doen). Ik denk dat ik "Set xxx = Nothing" op verschillende punten in de macro moet toevoegen.
@m_blt met deze macro heb ik geen problemen na de export voor het maken van een nieuw onderdeel, maar ik had het probleem met een ander, ik had geen tijd om ernaar te kijken om het verschil tussen de twee te zien, maar als het helpt.