PB avec VBA Newsheet4. Insère bien une feuille dans une mise en plan, mais ne fait pas apparaitre le fond de plan selectionné. Obligé de le recharger manuellement depuis SW

Sous Sw 2015 et ultérieur, je n' arrive pas à faire fonctionner correctement les instruction VBA Newsheet3 ou Newsheet4 pour inserer depuis une macro VBA une nouvelle feuille dans une mise en plan:

La feuille se trouve bien crée avec le fond de plan spécifié mais il n' apparait pas. Je dois ouvrir le dessin dans sw, faire propriétés de la feuille / recharger pour qu' il apparaisse.

A noter qu' avec les exemples de Macros fournis dans l' aide ça ne marche pas non plus.

Il y a t' il un début de solution?

Merci

 

Salut,

Dans l'exemple de l'aide : http://help.solidworks.com/2015/english/api/sldworksapi/Create_Drawing_Sheet_Zones_Example_VB.htm

Ils utilisent la méthode swModel.ForceRebuild3 avec le pamarètre True :

swModel.ForceRebuild3 True

 

Cela correspond au "recharger".

Bonjour, 

j ai essayé cette piste, ça marche pas mieux, j ai aussi testé de refaire un setupSheet, aussi d' éditer le fdp depuis vba, mais ça ne le fait pas !!

Merci quand même

A+

Bonjour,

Si vos fond de plans sont personalisés, il faut récupérer les informations de la feuille d'origine car de mémoire SW s'appui sur les modèles par défaut.

Regarder du côté de swSheet.GetProperties dans l'aide de l'API.

1 « J'aime »

Bonjour,

oui, il s agit de fonds de plans personnalisés , mais les modèles sont disponibles sur 1 serveur  et  dans les paramètres de la nouvelle feuille je spécifie le bon chemin, d' ailleurs  NewSheet3 fonctionnait tres bien sous sw2014 avec les mêmes parametres avant l' apparition des zones sur les feuilles de map (paramétrables dans new sheet4).

en revanche si j' utilise NewSheet3 (sans les Zones) dans sw2015 ca marche pas mieux. Il y a un changement que je n' arrive pas à determiner.

Peut être quelqu'un s' est il servi récemment de newshhet4 avec succès, il serait intéressant d' avoir son retour d' expérience.

en pièce jointe les propiétés de la feuille insérée ( tout me semble normal) et j' ai verifié par gettemplatename le bon fdp est bien pris en compte.

 


sheetprop_feuille_inseree.jpg

Pour ma part je suis sous 2016, avec la ligne ci-dessous ça fonctionne sans problèmes:

     boolstatus = swDraw.NewSheet4("Test", swDwgPaperA3size, swDwgTemplateCustom, 1, 1, True, "xxx:\MODELES SOLIDWORKS\Fonds de plans\a3.slddrt", 0, 0, "", 0.5, 0.5, 0.5, 0.5, 0, 0)
 

1 « J'aime »

Merci Cyril, 

en fait je viens de trouver que sw n' arrive pas à regharger le fdp quand la nouvelle feuille est du même format et orientation que la précédente. Quand on choisit un format différent  ça marche.

J' ai solutionné mon pb en inserant volontairement une feuille mal orientée et en la retournant par la suite avec un setupsheet.

mon code en PJ.

Merci 

A+


fonctionne.txt

Etonnant car la ligne que j'ai mis et le fichier sur lequel j'ai testé c'était A3 pour A3.

1 « J'aime »

Bonjour,

La ligne de Cyril.f fonctionne aussi très bien pour moi, be.adl il y a une chose qui me surprend un peu dans ton exemple de code, tu définis une variable swDraw comme un DrawingDoc mais tu travailles sur la variable Part que tu as défini comme un ModelDoc2 dans tes fonctions NewSheet3 et SetupSheet5, est-ce volontaire et la différence de fonctionnement viendrait-elle de là ?

Cordialement,

Bonjour,

En fait le fait de repasser en Modeldoc2  ou en drawingDoc me permet d' avoir accès à activateSheet() pour la nouvelle feuille crée o. J'ai pas verifié ci c' est vraiment nécéssaire mais ça marche comme ça.

Quand au fonctionnement de Newshhet4(), pour moi ça beugue seulement quand la nouvelle feuille insérée a le même format et la même orientation que les feuilles deja présentes dans le document d' origine.

Cordialement A+