Basemap maken / herladen: bestaande blokken gebruiken

Hallo SolidWorkers!

We hebben een script bij het openen van tekeningen (en een macroknop voor handmatig starten) om de basismap opnieuw te laden op alle bladen in een tekening.

De basiskaart heeft 3 blokken (cartridge, liniaal, oriëntatiemarkering).

Ik realiseerde me dat het script dat gebruikmaakt van de SetUpSheet* en ReloadTemplate API's, voor elk blad de 3 blokken van de tekening dupliceert.

Terwijl de handmatige bediening van het toevoegen van een blad of het herladen van een basismap op een bestaand werkblad, het systeem ons vraagt om te kiezen of we nieuwe blokken willen hernoemen of bestaande willen gebruiken, lijkt ons script automatisch ja te antwoorden op deze vraag:
image

Hoe antwoord ik automatisch nee en geen dubbele blokken?
Welke API's en/of API-parameterwaarden kan ik gebruiken om het gewenste gedrag te bereiken?

We hebben plannen die tot 112 pagina's lang kunnen zijn; We eindigen met 336 blokken in de boom.

Bij voorbaat dank.

Hallo Silver_Surfer,
Zonder je code te delen, is het een beetje ingewikkeld om te vinden :stuck_out_tongue_winking_eye:

De code in kwestie doet veel andere dingen op Solidworks, SmarTeam en andere niveaus die niet relevant zijn om te delen.
Het deel van deze code dat de basismap opnieuw laadt, is min of meer hetzelfde (SetUpSheet API-parameters) als het in de help wordt gevonden.

Maar hier is de code die me problemen bezorgt:

Sub main()


Dim swApp                       As SldWorks.SldWorks
Dim swModel                     As SldWorks.ModelDoc2
Dim swDraw                      As SldWorks.DrawingDoc
Dim swSheet                     As SldWorks.Sheet
Dim swView                      As SldWorks.View
Dim vSheetProps                 As Variant

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Set swSheet = swDraw.GetCurrentSheet
vSheetProps = swSheet.GetProperties

Dim size As String
If vSheetProps(0) = 7 Then
            '7 = A4 Portrait
            templateFormat = "A4.SLDDRT"
            size = "A4"
ElseIf vSheetProps(0) = 8 Then
            '8 = A3 Paysage
            templateFormat = "A3.SLDDRT"
            size = "A3"
ElseIf vSheetProps(0) = 9 Then
            '9 = A2 Paysage
            templateFormat = "A2.SLDDRT"
            size = "A2"
ElseIf vSheetProps(0) = 10 Then
            '10 = A1 Paysage
            templateFormat = "A1.SLDDRT"
            size = "A1"
ElseIf vSheetProps(0) = 11 Then
            '11 = A0 Paysage
            templateFormat = "A0.SLDDRT"
            size = "A0"
End If


boolstatus = swModel.SetupSheet5( _
    swSheet.GetName, _
    vSheetProps(0), _
    vSheetProps(1), _
    vSheetProps(2), _
    vSheetProps(3), _
    True, _
    templateFormat, _
    vSheetProps(5), _
    vSheetProps(6), _
    "Par défaut", _
    True _
)
               
swSheet.ReloadTemplate False
End Sub

Die keuze kun je niet hebben met de API.
Als u al deze blokken in uw boom wilt vermijden, is de eenvoudigste manier om deze van de basiskaart te verwijderen en de schetsen vast te leggen (of ze op te meten en de afmetingen te verbergen).
Anders kunt u een code maken waarmee alle blokken worden verwijderd, behalve de blokken op het eerste blad, en deze vervolgens in de volgende bladen invoegen. Deze aanpak houdt zich aan het gedrag dat je wilt, maar het is iets meer werk om te coderen (hoewel...)