Ik probeer een macro te maken om elk vel van mijn tekeningen op te slaan in DXF en PDF. Tot nu toe kan ik alle bladen in het juiste formaat opslaan of activeren door met de Solidworks-opties te prutsen.
Toch zou ik graag de naam direct willen kunnen wijzigen zonder elk bestand te hernoemen (zo saai!) Kort. Om dat te doen, wil ik mijn macro kunnen vertellen om een blad te openen, het op te slaan en dan door te gaan naar het volgende. Ik weet dat ik er een meter op moet zetten.... Maar hoe zeg ik hem dat hij het laken1 moet nemen, dan 2, enz.
En, kleine bonusvraag. Is er ergens een samenvatting van alle specifieke commando's van Solidworks?
Voor je "teller" moet je alle vellen doorlussen, als je zeker weet dat het altijd blad1 is, dan 2 enz., alles wat je nodig hebt is een instructie als deze:
[CODE]
i = 1
Doe terwijl (sheet_name bestaan) 'Ik ken de hoofdinstructie niet
sheet_name = "Blad" & i
'Hier is uw code voor export in PDF en DWG
i = ik +1
Strik
[/CODE]
Maar als de persoon blad 1 verwijdert of hernoemt, werkt het niet meer!
U moet dus de naam of het nummer van elk blad ophalen, en de SolidWorks API-hulp biedt een voorbeeld!
Heel erg bedankt Lucas P voor je snelle en gegeven antwoorden.
Tenminste, nu ben ik gepantserd met voorbeelden (gelukkig loopt mijn Engels niet zo ver achter op mij!)
Ja, ik zag je vergelijkbare macro. Ik werd er veel door geïnspireerd voor de mijne door het aan te passen aan mijn behoeften.
Aan de andere kant, van wat ik begrijp in wat je me stuurt, ben ik verplicht de namen van de bladen te kennen. Als het geen probleem is voor mijn korte verhalen, dan lukt het me niet echt wat mijn voorgangers deden.
Dus ik hoopte iets te kunnen vinden zoals in Excel, waar je "Sheet1" kunt plaatsen om ze aan te duiden in plaats van hun namen.
Ik ga een beetje prutsen en terugkomen en de hele code posten als het werkt
Ik heb een macro die soepel gaat ... maar waar niets gebeurt. Ik begrijp niet zo goed waarom en waar het vastloopt. Of iemand een idee heeft?
Sub Opslaan() Dim swapp als SldWorks.SldWorks Dim swdoc als SldWorks.ModelDoc2 Dim Swdraw als SldWorks.ModelDoc Dim swSheet als SldWorks.Sheet Dim vSheetNames als variant Dim Nbfeuille als variant Stel swapp in = Toepassing.SldWorks Stel swdoc = swapp in. ActiveDoc Swdraw instellen = swdoc Stel swSheet in = Swdraw.GetCurrentSheet 'Bevestigingsbericht' ret = MsgBox("wilt u deze tekening converteren naar DXF en PDF?", vbOKCancel + vbExclamation + vbMsgBoxSetForeground + vbSystemModal, "Laser Conversion") Als ret = vbCancel Then End Registratie nieuwe naam Doen newname = InputBox("Geef de nieuwe naam op:", "blabla", newname) Als StrPtr(newname) = 0 dan MsgBox "procedure geannuleerd" Sub afsluiten Einde als 'Verboden tekenvensters controleren Doe terwijl InStr(newname, "/") > 0 Of InStr(newname, "*") > 0 Of InStr(newname, "?") > 0 Of InStr(newname, "<") > 0 Of InStr(newnam, ">") > 0 Of InStr(newnam, "!") > 0 newname = InputBox ("Let op dat de naam ten minste één van de verboden tekens \/:*?" ""<>!" & vbNewLine & vbNewLine & "Geef de nieuwe naam op:", "save-under by LPR", newname) Strik Loop Terwijl newname = " " "Registratiedossier Doen FilePath = InputBox("Specificeer het pad", "recordmap", FilePath) Als StrPtr(FilePath) = 0 dan MsgBox "procedure geannuleerd" Sub afsluiten Einde als 'De \ toevoegen aan het einde van de mapnaam Als Right(FilePath, 1) <> "\" dan is FilePath = FilePath & "\" Als dir$(FilePath) <> "" dan BESTAAT = 1 Anders: MsgBox "de directory bestaat niet, maak hem alsjeblieft aan" Debug.Print Dir$(FilePath) Einde als Loop Terwijl BESTAAT <> 1 'Geeft het aantal vellen aan Nbfeuille = swdoc. GetSheetCount Voor i = 0 Naar Nbfeuille SWDOC. BladVorige volgende i 'Ga naar het volgende blad als < naar het totale aantal Voor i = 0 Naar varSheetCount - 1 Als ik <> 0 dan swmodel. BladVolgende Einde als Opname in DXF en PDF SWDOC. Opslaan als (FilePath + newname + "_" + i + ".dxf") SWDOC. OpslaanAls (FilePath + newname + "_" + i + ".pdf") volgende i Einde Sub