Zoek een MEP-blad in VBA in solidworks

Hallo mensen.

 

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?

 

Bij voorbaat dank

1 like

Hallo

 

Ik heb een soortgelijke macro gemaakt, maar we gebruiken maar één blad of we willen de 2 vellen in dezelfde PDF hebben.

 

Voor je macro zijn er al "kant-en-klare" exemplaren!

Zie hier:

https://forum.solidworks.com/thread/82929

https://forum.solidworks.com/thread/66753

 

En voor de commando's, heb je het over de VBA-commando's voor SolidWorks?

 

Je moet de hulp van de API's inschakelen:

http://help.solidworks.com/2014/English/api/sldworksapiprogguide/Welcome.htm

 

Of een google-zoekopdracht zorgt vaak voor een sneller antwoord!

2 likes

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!

 

Daar is hij dan:

Edit: update van de link die slecht was

http://help.solidworks.com/2012/English/api/sldworksapi/Get_Sheet_Numbers_and_Names_Example_VB.htm

 

Zie ook deze link:

http://help.solidworks.com/2013/english/api/sldworksapi/save_drawing_sheets_as_dxf_example_vb.htm

2 likes

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

1 like

Sorry, ik heb dezelfde link 2 keer geplaatst, en ik heb de meest interessante niet gepost:

 

http://help.solidworks.com/2012/English/api/sldworksapi/Get_Sheet_Numbers_and_Names_Example_VB.htm

 

Met deze code kunt u door alle bladen in een tekening bladeren:

 

Voor i = 0 Naar UBound(vSheetNames)

        Debug.Print "  SheetName[" & i & "] = " & vSheetNames(i)

volgende i

 

 

En zet gewoon uw code in de plaats van:

        Debug.Print "  SheetName[" & i & "] = " & vSheetNames(i)

1 like

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

1 like