SUITE DE MEP AVEC TOLERANCE GENERALE AUTOMATIQUE [RESOLU]

vos questions concernant les API SolidWorks

SUITE DE MEP AVEC TOLERANCE GENERALE AUTOMATIQUE [RESOLU]

Messagepar steve » Jeu 11 Aoû 2011, 8:49

Bonjour,

Suite a une demande dans la section MEP (MEP AVEC TOLERANCE GENERALE AUTOMATIQUE) je me tourne vers une solution API.

1)je n'y connais strictement rien
2)le system souhaiter est le suivant:

a) choix global (FINE,MOYEN, GROS)

Suite a ce chois l'ensemble des cotes de la MEP seront dans ce meme gamme de tolerance

b) les cote on une tolérance en fonction de leur taille exemple:

0-10 ±1 ou plus suivant le choix global
10-16 ±1.2
16-25 etc....

bref j'ai déja essayez de faire quelques chose:


Code: Tout sélectionner
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.ActivateView("Vue de mise en plan1")
boolstatus = Part.Extension.SelectByID2("RD1@Vue de mise en plan1", "DIMENSION", 0.1099230766767, 0.2329931281384, 0, False, 0, Nothing, 0)

a = "RD1@Vue de mise en plan1"


If a < 10 Then
boolstatus = Part.EditDimensionProperties2(4, 0.0075, 0, "", "", True, 9, 2, False, 1, 1, "", "", True, "", "", False)
End If
If a > 10 Or a < 16 Then
boolstatus = Part.EditDimensionProperties2(4, 0.0085, 0, "", "", True, 9, 2, False, 1, 1, "", "", True, "", "", False)
End If
 
 
 
  If a <= 25 Or a > 16 Then
     boolstatus = Part.EditDimensionProperties2(4, 0.00085, 0, "", "", True, 9, 2, False, 1, 1, "", "", True, "", "", False)
 End If
   
     If a <= 40 Or a > 25 Then
      boolstatus = Part.EditDimensionProperties2(4, 0.0009, 0, "", "", True, 9, 2, False, 1, 1, "", "", True, "", "", False)
  End If
     
           If a <= 63 Or a > 40 Then
             boolstatus = Part.EditDimensionProperties2(4, 0.001, 0, "", "", True, 9, 2, False, 1, 1, "", "", True, "", "", False)
            End If
             
             If a <= 100 Or a > 63 Then
                boolstatus = Part.EditDimensionProperties2(4, 0.0011, 0, "", "", True, 9, 2, False, 1, 1, "", "", True, "", "", False)
              End If
             
                 If a <= 160 Or a > 100 Then
                 boolstatus = Part.EditDimensionProperties2(4, 0.00125, 0, "", "", True, 9, 2, False, 1, 1, "", "", True, "", "", False)
           End If
           
                  If a <= 250 Or a > 160 Then
                  boolstatus = Part.EditDimensionProperties2(4, 0.0014, 0, "", "", True, 9, 2, False, 1, 1, "", "", True, "", "", False)
             End If
             
                   If a < 400 Or a > 250 Then
                    boolstatus = Part.EditDimensionProperties2(4, 0.0016, 0, "", "", True, 9, 2, False, 1, 1, "", "", True, "", "", False)
                  End If
               



 
End Sub


Donc suite a sa il me manque plusieurs chose:

1) un code pouvant renvoyez le nombre de VUE
2)un code pouvant renvoyez le nombre DIMENSION dans c'est VUE

Aprés je vais voir pour essayez de mieux optimiser l'ensemble.

Merci à tous déja d'avoir lu et ensuite de m'aider.
Dernière édition par steve le Lun 22 Aoû 2011, 10:09, édité 2 fois.
Avatar de l’utilisateur
steve
Ewok SolidWorks
 
Messages: 45
Inscription: Jeu 28 Juil 2011, 8:07

Messagepar Chico » Jeu 11 Aoû 2011, 17:17

Bonjour Steve,

Regarde Ce Code. C'est une bonne base. Ce code repère toutes les Annotations de ta mise en plan. Dans ton cas, tu dois te concentrer seulement sur les Dimensions, qui correspond au type d'objet DisplayDimension.

Le code est commenté, ça devrait t'aider à en comprendre le fonctionnement! :wink: [/quote]
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 steve » Ven 12 Aoû 2011, 8:50

Merci,

Je viens de regardez le code et je ne comprend rien je suis desoler je ne vois meme pas les commentaire.

Encore merci
Avatar de l’utilisateur
steve
Ewok SolidWorks
 
Messages: 45
Inscription: Jeu 28 Juil 2011, 8:07

Messagepar Chico » Mer 17 Aoû 2011, 11:46

Salut,

Dans un code, le commentaire se situe tout de suite après une apostrophe ('). D'ailleurs, si tu prends le code d'Arkamis et que tu le copies dans l'éditeur VB, tu remarqueras que les commentaires sont en Vert. Ça t'aidera peut-être à mieux comprendre le code.
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 Chico » Dim 21 Aoû 2011, 18:10

Salut,

J'ai finalement eu le temps de programmer un peu. Cette macro devrait fonctionner. Il te restera seulement à modifier les valeurs de tes tolérances selon ce que tu veux.

Je t'invite à regarder le code d'Arkamis et voir ce que j'y ai modifié. En espérant que ça réponde à ton problème. :wink:

Code: Tout sélectionner
Sub main()

Dim swApp               As SldWorks.SldWorks
Dim swDrawing           As SldWorks.DrawingDoc
Dim swView              As View
Dim swDispDim           As SldWorks.DisplayDimension
Dim swAnn               As SldWorks.Annotation
Dim swDimension         As SldWorks.Dimension
Dim Tolerance           As Double
Dim swDimTolerance      As SldWorks.DimensionTolerance

Set swApp = Application.SldWorks
Set swDrawing = swApp.ActiveDoc
Set swView = swDrawing.GetFirstView

Do While Not swView Is Nothing
   
    Set swDispDim = swView.GetFirstDisplayDimension5
    Do While Not swDispDim Is Nothing
        Set swAnn = swDispDim.GetAnnotation
        Set swDimension = swDispDim.GetDimension
        Set swDimTolerance = swDimension.Tolerance
       
        If swDispDim.GetOverride Then
            If swDispDim.GetType = 3 Then
               
                Debug.Print "Valeur Affichée            : " & swDispDim.GetOverrideValue * 180 / pi & Chr(176)
           
            Else
               
                Call Tolerances(swDispDim.GetOverrideValue * 1000, Tolerance)
                swDimTolerance.Type = 4
                swDimTolerance.SetValues -Tolerance / 1000, Tolerance / 1000
                             
            End If
           
        Else
            If swDispDim.GetType = 3 Then
           
                Debug.Print "Valeur                     : " & swDimension.GetSystemValue2("") * 180 / pi & Chr(176)
           
            Else
               
                Call Tolerances(swDimension.GetSystemValue2("") * 1000, Tolerance)
                swDimTolerance.Type = 4
                swDimTolerance.SetValues -Tolerance / 1000, Tolerance / 1000
            End If
        End If
       
        Set swDispDim = swDispDim.GetNext3
   
    Loop
    Set swView = swView.GetNextView
Loop


End Sub

Sub Tolerances(Valeur As Double, Tolerance As Double)

Select Case Valeur

    Case Is <= 10
        Tolerance = 1
   
    Case Is <= 16
        Tolerance = 1.2
       
   
    Case Is <= 25
        Tolerance = 1.4
       
   
    Case Is <= 40
        Tolerance = 1.6
       
   
    Case Is <= 63
        Tolerance = 1.8
       
   
    Case Is <= 100
        Tolerance = 2
       
   
    Case Is <= 160
        Tolerance = 2.2
       
   
    Case Is <= 250
        Tolerance = 2.4
       
   
    Case Is <= 400
        Tolerance = 2.6
       
       
    Case Else
        Tolerance = 3

End Select

End Sub
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 steve » Lun 22 Aoû 2011, 8:27

Merci je vais de suite testé le code et de comprendre l'ensemble ;)
Avatar de l’utilisateur
steve
Ewok SolidWorks
 
Messages: 45
Inscription: Jeu 28 Juil 2011, 8:07

Messagepar steve » Lun 22 Aoû 2011, 9:07

J'ai reussit à le modifier à souhait génial un grand merci!!!

:wink: :lol:
Avatar de l’utilisateur
steve
Ewok SolidWorks
 
Messages: 45
Inscription: Jeu 28 Juil 2011, 8:07

Messagepar Chico » Lun 22 Aoû 2011, 11:36

Ça fait plaisir! :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 steve » Jeu 08 Sep 2011, 10:06

Escuser moi la macro ne s'execute pas sur toutes les vues c'est normal?


Merci de votre aide :oops:
Avatar de l’utilisateur
steve
Ewok SolidWorks
 
Messages: 45
Inscription: Jeu 28 Juil 2011, 8:07

Messagepar liryc » Jeu 08 Sep 2011, 11:06

Bonjour,
Met le code afin que l'on puisse t'aider car d'après tes propres messages tu as modifié le code de chico (sur lequel je ne vois pas d'erreur et qui normalement s'exécute sur toute les vues).
liryc
Chevalier Jedi SolidWorks
 
Messages: 479
Inscription: Ven 02 Mar 2007, 8:14
Localisation: Paris - SW2009 SP5.0

Messagepar Chico » Jeu 08 Sep 2011, 11:56

liryc a écrit:Bonjour,
Met le code afin que l'on puisse t'aider car d'après tes propres messages tu as modifié le code de chico (sur lequel je ne vois pas d'erreur et qui normalement s'exécute sur toute les vues).

+1
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 steve » Jeu 08 Sep 2011, 16:24

Je regarde ça!!
Avatar de l’utilisateur
steve
Ewok SolidWorks
 
Messages: 45
Inscription: Jeu 28 Juil 2011, 8:07

Messagepar steve » Ven 09 Sep 2011, 8:22

J'y arrive pas desoler voici le code:
Code: Tout sélectionner
Sub main()

Dim swApp               As SldWorks.SldWorks
Dim swDrawing           As SldWorks.DrawingDoc
Dim swView              As View
Dim swDispDim           As SldWorks.DisplayDimension
Dim swAnn               As SldWorks.Annotation
Dim swDimension         As SldWorks.Dimension
Dim Tolerance           As Double
Dim swDimTolerance      As SldWorks.DimensionTolerance

Set swApp = Application.SldWorks
Set swDrawing = swApp.ActiveDoc
Set swView = swDrawing.GetFirstView

Do While Not swView Is Nothing
   
    Set swDispDim = swView.GetFirstDisplayDimension5
    Do While Not swDispDim Is Nothing
        Set swAnn = swDispDim.GetAnnotation
        Set swDimension = swDispDim.GetDimension
        Set swDimTolerance = swDimension.Tolerance
       
        If swDispDim.GetOverride Then
            If swDispDim.GetType = 3 Then
               
                Debug.Print "Valeur Affichée            : " & swDispDim.GetOverrideValue * 180 / pi & Chr(176)
           
            Else
               
                Call Tolerances(swDispDim.GetOverrideValue * 1000, Tolerance)
                swDimTolerance.Type = 4
                swDimTolerance.SetValues -Tolerance / 1000, Tolerance / 1000
                             
            End If
           
        Else
            If swDispDim.GetType = 3 Then
           
                Debug.Print "Valeur                     : " & swDimension.GetSystemValue2("") * 180 / pi & Chr(176)
           
            Else
               
                Call Tolerances(swDimension.GetSystemValue2("") * 1000, Tolerance)
                swDimTolerance.Type = 4
                swDimTolerance.SetValues -Tolerance / 1000, Tolerance / 1000
            End If
        End If
       
        Set swDispDim = swDispDim.GetNext3
   
    Loop
    Set swView = swView.GetNextView
Loop


End Sub

Sub Tolerances(Valeur As Double, Tolerance As Double)

Select Case Valeur



    Case Is <= 10
        Tolerance = 1.4
   
    Case Is <= 16
        Tolerance = 1.5
       
   
    Case Is <= 25
        Tolerance = 1.6
       
   
    Case Is <= 40
        Tolerance = 1.8
       
   
    Case Is <= 63
        Tolerance = 2
       
   
    Case Is <= 100
        Tolerance = 2.2
       
   
    Case Is <= 160
        Tolerance = 2.5
       
   
    Case Is <= 250
        Tolerance = 2.8
       
   
    Case Is <= 400
        Tolerance = 3.1
       
    Case Is <= 630
        Tolerance = 3.5
       
    Case Is <= 1000
        Tolerance = 4
       
    Case Is <= 1600
        Tolerance = 4.5
       
    Case Is <= 2500
        Tolerance = 5
       
    Case Is <= 4000
        Tolerance = 6
       
    Case Is <= 6300
        Tolerance = 7
       
       
    Case Is <= 10000
        Tolerance = 8
       
    Case Else
        Tolerance = 10

End Select

End Sub

Avatar de l’utilisateur
steve
Ewok SolidWorks
 
Messages: 45
Inscription: Jeu 28 Juil 2011, 8:07

Messagepar liryc » Ven 09 Sep 2011, 8:39

Je n'ai personnellement aucun problème avec ta macro, par contre je suis sous SW2009.
liryc
Chevalier Jedi SolidWorks
 
Messages: 479
Inscription: Ven 02 Mar 2007, 8:14
Localisation: Paris - SW2009 SP5.0

Messagepar steve » Ven 09 Sep 2011, 9:00

j'ai un prob avec ce morceau

Code: Tout sélectionner

                Debug.Print "Valeur                     : " & swDimension.GetSystemValue2("") * 180 / pi & Chr(176)



Il me dit division par zeros impossible????
Avatar de l’utilisateur
steve
Ewok SolidWorks
 
Messages: 45
Inscription: Jeu 28 Juil 2011, 8:07

Suivante

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