Macro Solidworks

Hoi allemaal

Ik wil een macro maken om mijn presentaties in PDF & DWG formaat te exporteren.

Tot zover geen zorgen, ik kom er wel, maar ik wil dat mijn PDF- en DWG-bestand dat via deze macro is gemaakt, de naam van mijn open presentatie heeft?

Daar heb ik gedronken, ik begreep het macrobewerkingssysteem, maar ik weet niet wat ik moet invoeren.

' Opslaan als
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\ hier. DWG", 0, 0)
Einde Sub

Ik denk dat alles speelt waar ik hier schreef, je moet waarschijnlijk iets als "Bestandsnaam" invoeren, toch?
Bij voorbaat dank;)

EDIT: Als je links hebt van waar ik alle macro-opdrachten kan ophalen ben ik geïnteresseerd:D

Hallo

Het is blijkbaar de GetTitle-functie waarnaar u op zoek bent. Dus in je macro moet je deze GetTitle ophalen en het pad van je bestand herwerken met het resultaat dat is verkregen uit de GetTitle.

Vriendelijke groeten

 

2 likes

Hallo en bedankt voor het antwoord,

Sorry, het is de 1e keer dat ik voet aan wal zet in de Macro, ik begrijp het niet, het werkt niet ^^

' Opslaan als
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\GetTitle.PDF", 0, 0)
Einde Sub

Is het niet?

 

Hallo

Nee, zo is het helemaal niet!

GetTitle is een API-functie waarmee je in tekstvorm de naam kunt ophalen van het bestand dat in Solidworks is geopend, daar heb je zojuist geschreven dat je PDF-bestand GetTitle.PDF moet heten .

Als je nog nooit een macro hebt gemaakt en/of hebt geprogrammeerd, moet je ofwel een beetje onderzoek doen naar hoe een programmeertaal werkt voordat je het doet, of je moet je volledige macro posten en uitleggen hoe je de manier waarop het werkt wilt veranderen, in de hoop dat iemand bereid zal zijn om eraan vast te houden.

Ik geef toe dat ik de opmerking "Tot nu toe geen zorgen, ik kom er wel" aan het begin van je vraag niet begrijp.

Vriendelijke groeten

Ja, je moet eerst de naam van je bestand krijgen met de getTitle functie.

Ik geef ook toe dat ik de "Tot nu toe geen zorgen, ik kom er wel" niet echt begrijp...

Probeer het volgende:


'déclaration des variables
Dim swApp As Object
Dim Part As Object
Dim longstatus As Long
dim nomfichier as string

Sub enregistrement()

'initialisation des variables objet
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc

'récupération du nom fichier part
Nomfichier = Part.GetTitle

'suppression de l'extension solidworks
Nomfichier = Strings.Left(Nomfichier, Len(Nomfichier) - 7)

'enregistrement du fichier en pdf
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\" & nomfichier & ".PDF", 0, 0)

end sub

 

 

2 likes

OK geen probleem.

In principe begrijp ik hoe het werkt, als je wilt, maar ik moet me inderdaad meer afvragen over het probleem en het programmeren.

In feite is het relatief eenvoudig en ik denk zelfs dat deze macro al moet bestaan.

Ik zou alleen willen dat als mijn tekening klaar is, ik op een knop klik, die een PDF en een DWG voor mij genereert in een map, maar met de naam van de tekening open.

Als ik een nieuwe tekening open, wil ik dat deze macro andere afzonderlijke en benoemde bestanden met deze tekening genereert.

Sorry, ik weet niet zeker of ik te duidelijk ben...

Dit is wat het voorbeeld van Bengous doet, het enige wat u hoeft te doen is de DWG-opname toe te voegen volgens hetzelfde principe als voor de PDF ...

1 like

Ja, ik zet je met de pdf-extensie, maar ik denk dat het zou moeten werken als je de regel toe te voegen

longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\" & nomfichier & ".DWG", 0, 0)

 

Net na degene die je pdf maakt. En ik weet niet of het werkt, ik heb deze macro niet uitgevoerd.

1 like

Ik weet het goed, D.Roger, er was een bug, ik kon de opmerkingen niet meer zien, we moesten eigenlijk tegelijkertijd antwoorden.
Ik zal het testen en contact met je opnemen om het je te vertellen;)
Dank u in ieder geval:D

EDIT: Mijn visuele basis is in het Engels, kan het spelen?

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
Part.SheetPrevious
Part.SheetNext
boolstatus = Part.EditRebuild3()

' Redraw
Part.GraphicsRedraw2

' Zoom to Area
Part.ViewZoomTo2 0, 0, 0, 0.1, 0.1, 0.1

' Zoom to Area
Part.ViewZoomTo2 0, 0, 0, 0.1, 0.1, 0.1

' Zoom To Fit
Part.ViewZoomtofit2

' Redraw
Part.GraphicsRedraw2

' Save As
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\???.DWG", 0, 0)

' Save As
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\???", 0, 0)
End Sub

 

Ik heb een code voor je gemaakt die je niet eens hebt gebruikt...

Nou, probeer het maar eens zo te doen

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
dim nomfichier as string

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Part.SheetPrevious
Part.SheetNext
boolstatus = Part.EditRebuild3()

' Redraw
Part.GraphicsRedraw2

' Zoom to Area
Part.ViewZoomTo2 0, 0, 0, 0.1, 0.1, 0.1

' Zoom to Area
Part.ViewZoomTo2 0, 0, 0, 0.1, 0.1, 0.1

' Zoom To Fit
Part.ViewZoomtofit2

' Redraw
Part.GraphicsRedraw2

'récupération du nom fichier part
Nomfichier = Part.GetTitle

'suppression de l'extension solidworks
Nomfichier = Strings.Left(Nomfichier, Len(Nomfichier) - 7)

' Save As
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\" & nomfichier & ".DWG", 0, 0)

' Save As
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\" & nomfichier & ".pdf", 0, 0)
End Sub

 

En ik denk dat je zooms afhangen van de startpositie, dus ik denk dat het beter is dat je jezelf kadreert voordat je gaat opnemen.

1 like

Bengous neemt het niet slecht op, ik ben nieuw in het ding ^^
Als ik je code goed heb geprobeerd, neem het dan helemaal niet slecht, het is gewoon dat ik ontdek

Tegen de tijd dat ik bij deze regel kom:

' Save As
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\ & "nomfichier" & ".DWG", 0, 0)

 

Hij zei tegen mij:
"Compilatie fout
Overwegende hetgeen volgt: lijstscheidingsteken of )"

Het is oké dat het werkt, heel erg bedankt voor je geduld.

Nogmaals sorry, maar ik moet alles begrijpen.

Ja, ik was de "Ik corrigeer

Geen zorgen, ik neem het nogal wat

Weet je een of andere site waar ik wat basisprincipes kan leren etc

Fijne dag, nogmaals bedankt;)

Hallo Maxbzh,

Je vindt HIER een discussiedraad die ging over het onderwerp leren programmeren op Solidworks, ik raad je aan om het tot het einde te lezen, je zult een heleboel interessante links vinden.

Vriendelijke groeten