Configuration mise en plan

Bonjour,

J'ai un modèle de mise en plan sur lequel il y a une vue de face d'une bride. Pour afficher la vue de face, je dois sélectionner la vue de dessous de la bride.
Je souhaite, via une macro, changer la configuration de cette vue (c'est le DN qui change).

L'enregistreur de macro me donne un code qui fonctionne mais quand j'exécute la macro une première fois, elle crée une configuration qui se termine par "-SM-FLAT-PATTERN" et je suis obligé de la lancer une seconde fois pour que la configuration change (elle affiche la configuration créée lors du premier lancement).

Je ne souhaite pas créer de nouvelles configurations et exécuter la macro une seule fois.

Ci-dessous le code obtenu :

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("Vue de mise en plan1", "DRAWINGVIEW", 0.267271785970659, 0.323684671386922, 0, False, 0, Nothing, 0)
boolstatus = Part.ChangeRefConfigurationOfFlatPatternView("O:\Bride FJS type11B ASA300.SLDPRT", "DN040")
Part.ClearSelection2 True
End Sub

Merci pour votre aide.

 

Bonjour,

Qu'est ce que le DN dans la phrase "c'est le DN qui change" ?

Il faut le faire sur de nombreux plans ? La vue a toujours le même nom et la configuration aussi ?

Edit : en fait le DN correpond au différentes configurations

.PL,

Le DN correspond au diamètre de la bride.

Oui, j'essaye d'automatiser cette fonction car il faut le faire sur de nombreux plans par mes collègues et moi-même. La vue à toujours le même nom mais la configuration change. Je joint une image des configurations.
Je souhaite faire changer la configuration en fonction de la valeur du DN.

 

J'ai trouvé un code qui fonctionne mais qui demande quelle configuration je veux afficher mais j'aimerais que ça se fasse automatiquement en fonction de la valeur du DN (je récupère cette valeur dans un fichier Excel) :

  • Sub ChangeRefConfig()  
  • Dim myApp As SldWorks.SldWorks  
  • Set myApp = Application.SldWorks  
  • Dim myDraw As DrawingDoc  
  • Set myDraw = myApp.ActiveDoc  
  • Dim myView As View  
  • Set myView = myDraw.ActiveDrawingView  
  • Dim myModel As ModelDoc2  
  • Set myModel = myView.ReferencedDocument  
  • Dim msg As String  
  • msg = "Please select config to change to for view " & myView.Name & vbCrLf  
  • For i = 0 To UBound(myModel.GetConfigurationNames)  
  •     msg = msg & i + 1 & vbTab & myModel.GetConfigurationNames(i) & vbCrLf  
  • Next  
  • X = InputBox(msg, "Select config", 1)  
  • Dim config As String  
  • config = myModel.GetConfigurationNames(X - 1)  
  • myView.ReferencedConfiguration = config  
  • myDraw.ForceRebuild  
  • MsgBox "Done"  
  • End Sub

configurations.png

Bonjour,

en fait elle  te crée une config  de tolerie en version deplié d'ou le nom "-SM-FLAT-PATTERN" et pour répndre à PL le DN est le Diamètre Nominal de la bride. Peut être que la bride et tolerie et c'est pour ça qu'elle te crée la version flat-pattern..

DN =Diamètre nominale d'un tube utilisé en tuyauterie et donc sur une bride DN100, DN 200, ....

 

@manu67,

 

Je ne comprends pas pourquoi elle crée une configuration de tolerie car la pièce est créee comme un corps volumique...

Je suis en train de chercher du coté de la fonction "ShowConfiguration2" car cette fonction marche dans le 3D mais pas dans la mise en plan.

Ci-dessous le code pour le 3D:

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.Extension.SelectByID2("DN300@Bride FJS type11B ASA300.SLDPRT", "CONFIGURATIONS", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.ShowConfiguration2("DN050")
End Sub

 

Quelqu'un peut-il m'aider à l'adapter à la mise en plan ?

Regarde dans le code de ta question, la 4 ligne en partant du bas tu as:                                                                                                                                                                     "boolstatus = Part.ChangeRefConfigurationOfFlatPatternView("O:\Bride FJS " je pense qu'il faudrait modifier cette partie du code ou la supprimer pour ne plus qu'elle crée la version flatpattern

 

J'ai déjà essayé de modifier cette ligne mais j'obtient une erreur.

Mes recherches dans l'aide API SolidWorks ne m'ont pas fait avancer non plus.

Essaie voir celui-ci:

 

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("Vue de mise en plan1", "DRAWINGVIEW", 0.267271785970659, 0.323684671386922, 0, False, 0, Nothing, 0)
boolstatus = Part.ChangeRefConfigurationOfDefautView("O:\Bride FJS type11B ASA300.SLDPRT", "DN040")
Part.ClearSelection2 True
End Sub

Ce code devrait marcher :

Set swView = swDraw.IGetFirstView

Do
    Set swView = swView.GetNextView
    If swView Is Nothing Then Exit Do
    swView.ReferencedConfiguration =  ConfigName

Loop

 

Bonjour à tous,

Merci manu67 et .PL pour vos réponses.

J'ai essayé les deux codes mais aucun ne marche.

Pour le code de manu67, l'erreur se situe dans la ligne boolstatus = Part.ChangeRefConfigurationOfDefautView("O:\Bride FJS type11B ASA300.SLDPRT", "DN040". L'erreur affichée est la suivante : "Erreur d'exécution '438': Propriété ou méthod"e non géreé par cet objet"

Pour le code de .PL, l'erreur est dans la ligne Set swView = swDraw.IGetFirstView : "Erreur d'exécution '424':  objet requis. J'ai essayé de déclarer la variable ConfigName mais l'erreur est la même :

Dim ConfigName As String
ConfigName = "DN040"

Il faut déclarer swDraw avant, essaye ceci :

Set swDraw = swApp.ActiveDoc

Set swView = swDraw.IGetFirstView

Dim ConfigName As String
ConfigName = "DN040"

Do
    Set swView = swView.GetNextView

    If swView.GetName2 = "Vue de mise en plan1" then
    swView.ReferencedConfiguration =  ConfigName

    end if

Loop

Le problème est toujours là.

Ci-dessous le code obtenu :

Sub main()

Dim ConfigName As Variant

Dim swView As IView
Dim swDraw As IDrawingDoc
Set swDraw = swApp.ActiveDoc
Set swView = swDraw.IGetFirstView

Do
    Set swView = swView.GetNextView
    If swView Is Nothing Then Exit Do
    swView.ReferencedConfiguration = ConfigName

Loop

End Sub

question stupide pardon ;-(

as tu fais une famille de pieces pour tes differentes bride

et ranger dans un fichiers et biblio specifique perso hors biblio SW

pourquoi une biblio perso ?

pour pouvoir le cas echeant garder tes biblio quant tu change de version SW

@+ ;-)

gt22,

Oui, les différentes configurations sont gérées dans une famille de picèes et elles sont enregistrées dans un dossier spécifiques hors SolidWorks.

 

Mais ça ne répond pas à ma question...

J'ai trouvé la solution à mon problème. Je mets le code ci-dessous :

Sub ChangeRefConfig()
Dim myApp As SldWorks.SldWorks
Set myApp = Application.SldWorks
Dim myDraw As DrawingDoc
Set myDraw = myApp.ActiveDoc
Dim myView As View
Set myView = myDraw.ActiveDrawingView
Dim myModel As ModelDoc2
Set myModel = myView.ReferencedDocument
Dim msg As String
myView.ReferencedConfiguration = "DN125"
myDraw.ForceRebuild
MsgBox "Done"
End Sub

Entre guillemets, je tape le nom de la configuration que je souhaite et la macro change la configuration dans la mise en plan

Bonne journée