macro: lire le format de fond de plan

vos questions concernant les API SolidWorks

macro: lire le format de fond de plan

Messagepar brincast » Mer 14 Mar 2012, 14:46

Bonjour,

J'aimerai savoir comment lire dans une macro, la largeur d'une feuille dans une mise en plan ouverte dans solidworks.
Ou arriver a lire, dans le fond de plan, cette propriété: $PRP:"SW-Taille du fond de plan(Sheet Format Size)"
Qui correspont au format de feuille.
Le but étant d'améliorer une macro d'impression, et ainsi changer les paramètres d'impression en fonction du format de feuille ouvert.
brincast
Ewok SolidWorks
 
Messages: 6
Inscription: Mer 14 Mar 2012, 14:43

Messagepar fred_ecai » Mer 14 Mar 2012, 15:11

Salut

Code: Tout sélectionner
(en plus des déclarations habituelles)
Public PropPerso As SldWorks.CustomPropertyManager

sub ....


Set PropPerso = swDoc.Extension.CustomPropertyManager("")



ensuite tu as accès aux propriétés

par ex ici
Code: Tout sélectionner

IndiceComp = swDoc.GetCustomInfoValue("", "Indice")


j'ai accés a la propriété indice. elle s'écrit dans le string IndiceComp

@+
Avatar de l’utilisateur
fred_ecai
Membres du Conseil SolidWorks
 
Messages: 1450
Inscription: Mar 22 Déc 2009, 9:09
Localisation: loire (42), Slw 2012 SP1.0 XP 64bit (in english please)

Messagepar brincast » Mer 14 Mar 2012, 16:53

La macro bloque sur cette ligne:

Set PropPerso = swDoc.Extension.CustomPropertyManager("")

Je suis sur solidworks 2008, cela a t'il une influence ?
brincast
Ewok SolidWorks
 
Messages: 6
Inscription: Mer 14 Mar 2012, 14:43

Messagepar liryc » Mer 14 Mar 2012, 17:05

Bonjour,
Regarde dans l'aide de l'API à sheet properties.
Tu as un exemple (get sheet properties) qui te liste les valeurs associées au format de page.
liryc
Chevalier Jedi SolidWorks
 
Messages: 479
Inscription: Ven 02 Mar 2007, 8:14
Localisation: Paris - SW2009 SP5.0

Messagepar brincast » Mer 14 Mar 2012, 17:25

j'ai trouver sa:

Get and Set Sheet Properties Example (VB)
This example shows how to get the sheet properties and how to switch projection.



'-------------------------------------------

'

' Preconditions: Drawing document is open in standard 3D view.

'

' Postconditions: Projection switches to third angle

' from first angle or vice versa.

'

'-------------------------------------------

Option Explicit

' Drawing Paper Sizes

Public Enum swDwgPaperSizes_e

swDwgPaperAsize = 0

swDwgPaperAsizeVertical = 1

swDwgPaperBsize = 2

swDwgPaperCsize = 3

swDwgPaperDsize = 4

swDwgPaperEsize = 5

swDwgPaperA4size = 6

swDwgPaperA4sizeVertical = 7

swDwgPaperA3size = 8

swDwgPaperA2size = 9

swDwgPaperA1size = 10

swDwgPaperA0size = 11

swDwgPapersUserDefined = 12

End Enum

' Drawing Templates

Public Enum swDwgTemplates_e

swDwgTemplateAsize = 0

swDwgTemplateAsizeVertical = 1

swDwgTemplateBsize = 2

swDwgTemplateCsize = 3

swDwgTemplateDsize = 4

swDwgTemplateEsize = 5

swDwgTemplateA4size = 6

swDwgTemplateA4sizeVertical = 7

swDwgTemplateA3size = 8

swDwgTemplateA2size = 9

swDwgTemplateA1size = 10

swDwgTemplateA0size = 11

swDwgTemplateCustom = 12

swDwgTemplateNone = 13

End Enum

Sub main()

Dim swApp As SldWorks.SldWorks

Dim swDraw As SldWorks.DrawingDoc

Dim swSheet As SldWorks.Sheet

Dim vSheetProps As Variant

Dim bFirstAng As Boolean

Dim bRet As Boolean

Set swApp = Application.SldWorks

Set swDraw = swApp.ActiveDoc

Set swSheet = swDraw.GetCurrentSheet



' Get current sheet properties

vSheetProps = swSheet.GetProperties



' Current sheet properties

Debug.Print "Name = " + swSheet.GetName

Debug.Print " TemplateName = " & swSheet.GetTemplateName

Debug.Print " PaperSize = " & vSheetProps(0)

Debug.Print " TemplateIn = " & vSheetProps(1)

Debug.Print " Scale1 = " & vSheetProps(2)

Debug.Print " scale2 = " & vSheetProps(3)

Debug.Print " FirstAngle = " & vSheetProps(4)

Debug.Print " Width = " & vSheetProps(5)

Debug.Print " Height = " & vSheetProps(6)







' Switch projection property

bFirstAng = vSheetProps(4)

vSheetProps(4) = Not bFirstAng



' Apply updated sheet properties

swSheet.SetProperties _

vSheetProps(0), _

vSheetProps(1), _

vSheetProps(2), _

vSheetProps(3), _

vSheetProps(4), _

vSheetProps(5), _

vSheetProps(6)



' Current projection property

Debug.Print " "

Debug.Print " New FirstAngle setting = " & vSheetProps(4)



End Sub

'-------------------------------------------



mais je ne comprend se que je doit récupérer la dedans
brincast
Ewok SolidWorks
 
Messages: 6
Inscription: Mer 14 Mar 2012, 14:43

Messagepar fred_ecai » Mer 14 Mar 2012, 17:33

c'est parce que tu n'as pas de SWDOC de déclarer surement.

Sinon j'ai fais ça aussi (dans EPDM)
Code: Tout sélectionner
Dim Part As Object
Dim swsheet As SldWorks.Sheet
Dim vsheetProps As Variant
Dim format As Variant

sub ...

Set Part = swApp.ActiveDoc
Set swsheet = Part.GetCurrentSheet


vsheetProps = swsheet.GetProperties
format = vsheetProps(0)


ensuite si format = 7 alors t'es en A4, 8 en A3 ....
comme indiqué la
swDwgTemplateAsizeVertical = 1

swDwgTemplateBsize = 2

swDwgTemplateCsize = 3

swDwgTemplateDsize = 4

swDwgTemplateEsize = 5

swDwgTemplateA4size = 6

swDwgTemplateA4sizeVertical = 7

swDwgTemplateA3size = 8

swDwgTemplateA2size = 9

swDwgTemplateA1size = 10

swDwgTemplateA0size = 11

@+
Avatar de l’utilisateur
fred_ecai
Membres du Conseil SolidWorks
 
Messages: 1450
Inscription: Mar 22 Déc 2009, 9:09
Localisation: loire (42), Slw 2012 SP1.0 XP 64bit (in english please)

Messagepar liryc » Mer 14 Mar 2012, 18:56

brincast a écrit:j'ai trouver sa:

mais je ne comprend se que je doit récupérer la dedans

Même si fred_ecai t'a donné la réponse, exécute la en pas-à-pas et tu verras quelles données te sont utiles.
Enfin en gros tu récupères à mminima ça:
Code: Tout sélectionner
Sub main()
Dim swApp As Object
Dim swDraw As SldWorks.DrawingDoc
Dim swSheet As SldWorks.Sheet
Dim vSheetProps As Variant

Set swApp = Application.SldWorks
Set swDraw = swApp.ActiveDoc
Set swSheet = swDraw.GetCurrentSheet

vSheetProps = swSheet.GetProperties

Debug.Print " PaperSize = " & vSheetProps(0)
 
End Sub

Et après tu appliques un traitement à base de If vSheetProps(0) = x (de 7 à 10) then...
liryc
Chevalier Jedi SolidWorks
 
Messages: 479
Inscription: Ven 02 Mar 2007, 8:14
Localisation: Paris - SW2009 SP5.0

Messagepar brincast » Jeu 15 Mar 2012, 13:06

Merci beaucoup
cela fonctionne bien :D
brincast
Ewok SolidWorks
 
Messages: 6
Inscription: Mer 14 Mar 2012, 14:43


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 4 invités

banniere