PB met VBA Newsheet4. Hiermee wordt een werkblad in een tekening ingevoegd, maar wordt de geselecteerde basiskaart niet weergegeven. Gedwongen om het handmatig op te laden vanuit SW

Onder Sw 2015 en later kan ik de VBA Newsheet3 of Newsheet4 instructies niet krijgen om een nieuw blad in een tekening in te voegen vanuit een VBA-macro:

Het blad is inderdaad gemaakt met de opgegeven achtergrond, maar het verschijnt niet. Ik moet de tekening in sw openen, bladeigenschappen doen / opnieuw laden zodat deze verschijnt.

Merk op dat het met de voorbeelden van macro's in de help ook niet werkt.

Is er een begin van een oplossing?

Bedankt

 

Hallo

In het voorbeeld van hulp: http://help.solidworks.com/2015/english/api/sldworksapi/Create_Drawing_Sheet_Zones_Example_VB.htm

Ze gebruiken de methode swModel.ForceRebuild3 met de True-stap :

swModel.ForceRebuild3 True

 

Dit komt overeen met "herladen".

Hallo 

Ik heb deze track geprobeerd, het werkt niet beter, ik heb ook geprobeerd om een setupSheet opnieuw uit te voeren, ook om de fdp van vba te bewerken, maar het doet het niet!!

In ieder geval bedankt

A+

Hallo

Als uw basiskaarten zijn aangepast, moet u de informatie uit het originele blad halen, omdat SW uit het geheugen vertrouwt op de standaardsjablonen.

Kijk naar swSheet.GetProperties in de API Help.

1 like

Hallo

Ja, dit zijn aangepaste basiskaarten, maar de sjablonen zijn beschikbaar op 1 server  en  in de instellingen van het nieuwe blad geef ik het juiste pad aan, overigens  werkte NewSheet3 heel goed onder sw2014 met dezelfde parameters voordat de gebieden op de kaartbladen verschenen (configureerbaar in New Sheet4).

aan de andere kant, als ik NewSheet3 (zonder de Zones) gebruik in sw2015 werkt het niet beter. Er is een verandering die ik niet kan vaststellen.

Misschien heeft iemand onlangs newshhet4 met succes gebruikt, het zou interessant zijn om zijn feedback te hebben.

In de bijlage zijn de eigenschappen van het ingevoegde blad (alles lijkt mij normaal) en ik heb gecontroleerd door getTemplateName de juiste fdp is goed in aanmerking genomen.

 


sheetprop_feuille_inseree.jpg

Van mijn kant ben ik onder 2016, met de regel hieronder werkt het zonder problemen:

     boolstatus = swDraw.NewSheet4("Test", swDwgPaperA3size, swDwgTemplateCustom, 1, 1, True, "xxx:\SOLIDWORKS TEMPLATES\Basemaps\a3.slddrt", 0, 0, "", 0.5, 0.5, 0.5, 0.5, 0, 0)
 

1 like

Dank je wel Cyril, 

In feite heb ik net ontdekt dat SW de FDP niet opnieuw kan laden wanneer het nieuwe blad van hetzelfde formaat en dezelfde oriëntatie is als het vorige. Wanneer je een ander  formaat kiest, werkt het.

Ik loste mijn pb op door opzettelijk een verkeerd georiënteerd blad in te voegen en het vervolgens om te draaien met een setupsheet.

mijn code in PJ.

Bedankt 

A+


fonctionne.txt

Verrassend, want de lijn die ik zette en het bestand waarop ik testte was A3 voor A3.

1 like

Hallo

De regel van Cyril.f werkt ook heel goed voor mij, be.adl er is één ding dat me een beetje verbaast in je codevoorbeeld, je definieert een swDraw-variabele als een DrawingDoc, maar je werkt aan de Part-variabele die je hebt gedefinieerd als een ModelDoc2 in je NewSheet3- en SetupSheet5-functies, is dit vrijwillig en zou het verschil in werking daar vandaan komen?

Vriendelijke groeten

Hallo

Sterker nog, door terug te gaan naar Modeldoc2  of drawingDoc heb ik toegang tot activateSheet() voor het nieuwe blad dat is gemaakt o. Ik heb niet gecontroleerd of het echt nodig is, maar het werkt zo.

Wat betreft de werking van Newshhet4(), voor mij stottert het alleen wanneer het nieuwe ingevoegde blad hetzelfde formaat en dezelfde oriëntatie heeft als de bladen die al in het originele document aanwezig zijn.

Groeten A+