API/Mise en plan/Renommer les feuilles selon la config [RESO

vos questions concernant les API SolidWorks

API/Mise en plan/Renommer les feuilles selon la config [RESO

Messagepar neo750 » Jeu 26 Mai 2011, 13:41

bonjour à toutes et tous,

Question toute simple !!

J'ai fais une macro qui renomme automatique mes feuilles CONFIG01, CONFIG02.....

Je souhaiterais récupérer pour chaque feuille la configuration du modèle(*) (1 modèle par feuille) et renommer la feuille avec cette variable.

Connaissez vous la manip ?

par avance merci


En compliquant un peu la configuration par vue est interessente aussi ;-)
Dernière édition par neo750 le Jeu 26 Mai 2011, 14:39, édité 1 fois.
Avatar de l’utilisateur
neo750
Padawan SolidWorks
 
Messages: 69
Inscription: Mar 22 Juil 2008, 14:47
Localisation: Paris ---SW 2011 + EPDM 2011

Messagepar neo750 » Jeu 26 Mai 2011, 14:38

Bon et bien voici la solution pour ceux que cela intéresse :cry:

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swSheet As SldWorks.Sheet
Dim swModelview2 As Configuration
Dim vSheets As Variant
Dim swView As SldWorks.View
Dim i As Integer

Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Dim ConfigName As String

vSheets = swDraw.GetSheetNames
For i = 1 To swDraw.GetSheetCount
swDraw.ActivateSheet vSheets(i - 1)
Set swSheet = swDraw.GetCurrentSheet
Count = swDraw.GetModelViewCount

Set swView = swDraw.GetFirstView

Do While Not swView Is Nothing
ConfigName = swView.ReferencedConfiguration
Set swView = swView.GetNextView
Loop
swSheet.SetName "Config N°" & i & " : " & ConfigName
Next i
Exit Sub
Dernière édition par neo750 le Jeu 26 Mai 2011, 15:41, édité 1 fois.
Avatar de l’utilisateur
neo750
Padawan SolidWorks
 
Messages: 69
Inscription: Mar 22 Juil 2008, 14:47
Localisation: Paris ---SW 2011 + EPDM 2011

Messagepar dgé² » Jeu 26 Mai 2011, 14:59

une heure pour solutionner ton probleme.... bien joué :D
et merci de partager ta solution
dgé²
Esprit Jedi Solidworks
 
Messages: 3987
Inscription: Lun 22 Jan 2007, 18:10
Localisation: lyon 2011 sp3 win7 x64

Messagepar neo750 » Jeu 26 Mai 2011, 22:02

je suis en forme olympique !!!

Bon une mise à jour avec une recharge de chaque feuille avec un template prédéfini

******************
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swSheet As SldWorks.Sheet
Dim swModelview2 As Configuration
Dim vSheets As Variant
Dim swView As SldWorks.View
Dim Part As Object
Dim i As Integer

Sub main()

'Le template se trouve dans le dossier template drawing de SW

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Dim ConfigName As String
Dim bRet As Boolean
Dim vSheetProps As Variant




vSheets = swDraw.GetSheetNames
For i = 1 To swDraw.GetSheetCount
swDraw.ActivateSheet vSheets(i - 1)
Set swSheet = swDraw.GetCurrentSheet

Count = swDraw.GetModelViewCount

Set swView = swDraw.GetFirstView

Do While Not swView Is Nothing
ConfigName = swView.ReferencedConfiguration
Set swView = swView.GetNextView
Loop
Set Part = swApp.ActiveDoc
boolstatus = Part.SetupSheet5(swSheet.GetName, 12, 12, 2, 3, True, "a3 - iso - NND.slddrt", 0.42, 0.297, "Par défaut", True)
swSheet.SetName "Config N°" & i & " : " & ConfigName

Next i

swModel.ForceRebuild3 (False)
End Sub
Avatar de l’utilisateur
neo750
Padawan SolidWorks
 
Messages: 69
Inscription: Mar 22 Juil 2008, 14:47
Localisation: Paris ---SW 2011 + EPDM 2011

Messagepar Chico » Ven 27 Mai 2011, 2:06

dgé² a écrit:une heure pour solutionner ton probleme.... bien joué :D
et merci de partager ta solution

+1 :wink:
Il vaut mieux poser une question et risquer d'avoir l'air idiot
une journée que de se taire et d'être bête toute sa vie.

8wd a dit : LA FONCTION RECHERCHE EST TON AMIE
http://www.logiciel-cao.com
Avatar de l’utilisateur
Chico
Esprit Jedi Solidworks
 
Messages: 3120
Inscription: Mer 12 Mar 2008, 19:16
Localisation: Mauricie (Québec) ------SW 2006 SP0.0

Messagepar 8wd » Ven 27 Mai 2011, 8:22

dgé² a écrit:et merci de partager ta solution

Oui, et cette macro n'est pas dépourvue d'intérêt ! 8)
8wd
Esprit Jedi Solidworks
 
Messages: 4247
Inscription: Mer 12 Avr 2006, 16:04
Localisation: Marseille - SW2011_5.0 - Win7x64

Messagepar Keyser-Soze » Jeu 01 Déc 2011, 16:43

Bonjour,
Je me suis inspiré de cette macro pour l'adapter à mon cas...mais je bloque sur certains point.
On fabrique des pièces genre tolerie, tube, isolant....Pour les différencier, elles sont lié à une propriété "famille de code", tolerie = 308, isolant = 381....
Chaque config dans la pièce s'incrémente de 10 en 10, et les configs déplié pareil mais avec SM-FLAT-PATTERN
Pour une MEP tolerie, on aura 2 fois plus de feuilles que de Config. Une pour la MEP (enregistré en PDF), une sans fond de plan à l'échelle 1 avec sa config FlatPattern (enregistré en DXF ensuite)

Je voudrais donc utiliser cette macro pour renommer mes feuilles suivant une certaine façon.
Pour la feuille MEP, la propriété "famille de code" qui est enregistré dans la pièce + nom fichier + nom config
Pour la feuille DXF, le nom de fichier + nom config .La config pour le DXF est crée automatiquement avec le FLAT-PATTERN, d'où la découpe du nom de config avec les IF=17 ou 18

Je suis bloqué à 2 moments. Comment extraire la propriété "famille de code" de ma pièce? J'ai bien trouvé un code, mais ca me mets une erreur. Et la seconde, un peu plus chiant, sur ma MEP (future PDF), j'ai 2-3 vues, et une vue déplié. Comment imposer la vue pour extraire les propriétés?

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swSheet As SldWorks.Sheet
Dim swModelview2 As Configuration
Dim vSheets As Variant
Dim swView As SldWorks.View
Dim i As Integer

Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Dim ConfigName As String, Filename As String, Test As String, CodeFam As String
Dim NbView As Integer

vSheets = swDraw.GetSheetNames
Set swModel = swApp.ActiveDoc

For i = 1 To swDraw.GetSheetCount
swDraw.ActivateSheet vSheets(i - 1)
Set swSheet = swDraw.GetCurrentSheet
Filename = swModel.GetPathName 'Récupérer le nom du fichier en court
Filename = Strings.Left(Filename, Len(Filename) - 7) 'On enlève l'extension SLDDRW
nbr = Len(Filename) ' Comptage nombre de caractères
Position = InStrRev(Filename, "\") ' Détermine la position du dernier SLASH
Filename = Right(Filename, nbr - Position) ' Coupe le nom et on garde que ce qui est à droite du dernier SLASH

Set swView = swDraw.GetFirstView

Do While Not swView Is Nothing
ConfigName = swView.ReferencedConfiguration
Set swView = swView.GetNextView
Loop

nbrcfg = Len(ConfigName) ' Comptage nombre de caractères

If nbrcfg <= 3 Then 'si nom config sup ou égal à 3
CodeFam = swModel.GetCustomInfoValue(ConfigName, "famille de code")
End If

If nbrcfg = 17 Then
ConfigName = Left(ConfigName, 2) 'garder la partie sans le Flat avec config 2 chiffres
CodeFam = ""
End If

If nbrcfg = 18 Then
ConfigName = Left(ConfigName, 3) 'garder que la partie sans le Flat avec config 3 chiffres
CodeFam = ""
End If

swSheet.SetName CodeFam & Filename & ConfigName
Next i
Exit Sub

End Sub
Keyser-Soze
Ewok SolidWorks
 
Messages: 22
Inscription: Mer 19 Oct 2011, 9:34


Retourner vers Questions générales sur les API

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

banniere