debit piece

Vous pouvez echanger sur les fonctionnalités générales du logiciel.

debit piece

Messagepar sabchebil » Sam 05 Avr 2014, 22:25

bonjour
je cherche dans solidworks 2012 comment savoir le debit de ma piece (largeur,longueur,epaisseur )avec une méthode simple sans utiliser le bouton mesurer que me prend beaucoup des temps surtout j ai un ensemble des pièces
merci
merci beaucoup
sabchebil
Ewok SolidWorks
 
Messages: 25
Inscription: Mar 05 Jan 2010, 21:17

Re: debit piece

Messagepar MarcS » Mar 08 Avr 2014, 18:55

Tu peut trouver la réponse par API

Option Explicit
Public Enum swMassAxes_e
X = 0
Y = 1
Z = 2
End Enum

Sub main()
'Programme pour déterminet les Dimensions d'une piece
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swPart As SldWorks.PartDoc
Dim selMgr As SldWorks.SelectionMgr
Dim swMassProp As SldWorks.MassProperty
Dim swBody As SldWorks.Body2
Dim swMathUtil As SldWorks.MathUtility

Dim bStatus As Boolean
Dim i As Integer

Dim vBodies As Variant
Dim centerOfMass As SldWorks.MathPoint

Dim Ix As SldWorks.MathVector
Dim Iy As SldWorks.MathVector
Dim Iz As SldWorks.MathVector

Dim xLimits(1) As Double
Dim yLimits(1) As Double
Dim zLimits(1) As Double
Dim dist As Double
Dim tempDist(1) As Double

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swPart = swModel
Set swMathUtil = swApp.GetMathUtility

Set swMassProp = swModel.Extension.CreateMassProperty

Set centerOfMass = swMathUtil.CreatePoint(swMassProp.centerOfMass)
Set Ix = swMathUtil.CreateVector(swMassProp.PrincipleAxesOfInertia(swMassAxes_e.X))
Set Iy = swMathUtil.CreateVector(swMassProp.PrincipleAxesOfInertia(swMassAxes_e.Y))
Set Iz = swMathUtil.CreateVector(swMassProp.PrincipleAxesOfInertia(swMassAxes_e.Z))

vBodies = swPart.GetBodies2(SwConst.swBodyType_e.swSolidBody, True)

If Not IsEmpty(vBodies) Then
Set swBody = vBodies(0)
xLimits(0) = GetExtremeDistanceAlongAxis(swBody, centerOfMass, Ix)
xLimits(1) = GetExtremeDistanceAlongAxis(swBody, centerOfMass, Ix.Scale(-1))
yLimits(0) = GetExtremeDistanceAlongAxis(swBody, centerOfMass, Iy)
yLimits(1) = GetExtremeDistanceAlongAxis(swBody, centerOfMass, Iy.Scale(-1))
zLimits(0) = GetExtremeDistanceAlongAxis(swBody, centerOfMass, Iz)
zLimits(1) = GetExtremeDistanceAlongAxis(swBody, centerOfMass, Iz.Scale(-1))

For i = 1 To UBound(vBodies)
Set swBody = vBodies(i)
tempDist(0) = GetExtremeDistanceAlongAxis(swBody, centerOfMass, Ix)
tempDist(1) = GetExtremeDistanceAlongAxis(swBody, centerOfMass, Ix.Scale(-1))
If tempDist(0) > xLimits(0) Then xLimits(0) = tempDist(0)
If tempDist(1) > xLimits(1) Then xLimits(1) = tempDist(1)

tempDist(0) = GetExtremeDistanceAlongAxis(swBody, centerOfMass, Iy)
tempDist(1) = GetExtremeDistanceAlongAxis(swBody, centerOfMass, Iy.Scale(-1))
If tempDist(0) > yLimits(0) Then yLimits(0) = tempDist(0)
If tempDist(1) > yLimits(1) Then yLimits(1) = tempDist(1)

tempDist(0) = GetExtremeDistanceAlongAxis(swBody, centerOfMass, Iz)
tempDist(1) = GetExtremeDistanceAlongAxis(swBody, centerOfMass, Iz.Scale(-1))
If tempDist(0) > zLimits(0) Then zLimits(0) = tempDist(0)
If tempDist(1) > zLimits(1) Then zLimits(1) = tempDist(1)
Next

End If

'Donne la valeur en mm
xLimits(0) = xLimits(0) * 1000
xLimits(1) = xLimits(1) * 1000
yLimits(0) = yLimits(0) * 1000
yLimits(1) = yLimits(1) * 1000
zLimits(0) = zLimits(0) * 1000
zLimits(1) = zLimits(1) * 1000

swApp.Frame.SetStatusBarText "Dimensions de piece = " & CStr(Round((Abs(xLimits(0)) + Abs(xLimits(1))), 4)) & " X " & CStr(Round((Abs(yLimits(0)) + Abs(yLimits(1))), 4)) & " X " & CStr(Round((Abs(zLimits(0)) + Abs(zLimits(1))), 4))
swModel.ClearSelection2 True

End Sub
Function GetExtremeDistanceAlongAxis(swBody As SldWorks.Body2, origin As SldWorks.MathPoint, axis As SldWorks.MathVector) As Double
Dim swApp As SldWorks.SldWorks
Dim swMathUtil As SldWorks.MathUtility
Dim bStatus As Boolean
Dim extCoord(2) As Double
Dim extPt As SldWorks.MathPoint
Dim extVector As SldWorks.MathVector

Set swApp = Application.SldWorks
Set swMathUtil = swApp.GetMathUtility

bStatus = swBody.GetExtremePoint(axis.ArrayData(0), axis.ArrayData(1), axis.ArrayData(2), extCoord(0), extCoord(1), extCoord(2))

If bStatus Then
Set extPt = swMathUtil.CreatePoint(extCoord)
Set extVector = extPt.Subtract(origin)
GetExtremeDistanceAlongAxis = extVector.Dot(axis)
End If
End Function

Si je te donne un poisson tu pourras manger Aujourd’hui
mais si je t’apprend a pêcher tu pourras manger toute ta vie !!!
Salut !

Marc S.
Avatar de l’utilisateur
MarcS
Chevalier Jedi SolidWorks
 
Messages: 305
Inscription: Mar 06 Jan 2009, 20:10
Localisation: Quebec, Quebec SolidWorks 2017 SP 1.0 & SolidWorks 2014 SP 2.0

Re: debit piece

Messagepar tortilla2 » Mer 09 Avr 2014, 9:04

Moi perso je passe, par un bullage d'une vue isométrique en éclaté, ainsi qu’une liste de pièces soudées, avec, une colonne Description, qui me donne la taille de mon profil (hauteur, largeur, épaisseur), et ensuite une colonne longueur, et éventuellement une colonne pour les angles.
Avatar de l’utilisateur
tortilla2
Chevalier Jedi SolidWorks
 
Messages: 414
Inscription: Jeu 19 Jan 2012, 17:11
Localisation: Annemasse, Haute-Savoie (74)

Re: debit piece

Messagepar gt22 » Mer 09 Avr 2014, 9:16

tortilla2 a écrit:Moi perso je passe, par un bullage d'une vue isométrique en éclaté, ainsi qu’une liste de pièces soudées, avec, une colonne Description, qui me donne la taille de mon profil (hauteur, largeur, épaisseur), et ensuite une colonne longueur, et éventuellement une colonne pour les angles.


+1
@+ :wink:
Avatar de l’utilisateur
gt22
Padawan SolidWorks
 
Messages: 198
Inscription: Ven 10 Juin 2011, 19:29

Re: debit piece

Messagepar MarcS » Mer 09 Avr 2014, 16:55

Effectivement si tu utilise les Mecanos Soudé utilise la méthode de Tortilla2
Ma macro est bonne dans un FIchier .SldPrt ou tu utilise pas le Mecano Soudé
Donc pour des forme bizarres

Si je te donne un poisson tu pourras manger Aujourd’hui
mais si je t’apprend a pêcher tu pourras manger toute ta vie !!!
Salut !

Marc S.
Avatar de l’utilisateur
MarcS
Chevalier Jedi SolidWorks
 
Messages: 305
Inscription: Mar 06 Jan 2009, 20:10
Localisation: Quebec, Quebec SolidWorks 2017 SP 1.0 & SolidWorks 2014 SP 2.0

Re: debit piece

Messagepar sabchebil » Jeu 10 Avr 2014, 20:58

merci de votre reponse mais j ai pas arrive a exécuter l api que vous m avez envoyé est que possilble de m explique comment realise la macro sachant que je fait l essai mais sans résultat
voir piece jointe
Fichiers joints
Macro1.rar
(7.44 Kio) Téléchargé 68 fois
merci beaucoup
sabchebil
Ewok SolidWorks
 
Messages: 25
Inscription: Mar 05 Jan 2010, 21:17

Re: debit piece

Messagepar MarcS » Jeu 10 Avr 2014, 21:38

J'ai corriger ta macro
Fichiers joints
Macro1.zip
(10.96 Kio) Téléchargé 93 fois

Si je te donne un poisson tu pourras manger Aujourd’hui
mais si je t’apprend a pêcher tu pourras manger toute ta vie !!!
Salut !

Marc S.
Avatar de l’utilisateur
MarcS
Chevalier Jedi SolidWorks
 
Messages: 305
Inscription: Mar 06 Jan 2009, 20:10
Localisation: Quebec, Quebec SolidWorks 2017 SP 1.0 & SolidWorks 2014 SP 2.0

Re: debit piece

Messagepar sabchebil » Dim 13 Avr 2014, 14:54

kif kif je essayer votre macro toujours pas resultat lorsque je fait la compilation de programme il m'affiche une erreur
l'origine de l erreur : manque bibliotheque solidworks ...2014 library
merci beaucoup
sabchebil
Ewok SolidWorks
 
Messages: 25
Inscription: Mar 05 Jan 2010, 21:17

Re: debit piece

Messagepar MarcS » Lun 14 Avr 2014, 13:53

Il faut remplacer les bibliotheques solidworks ...2014 library par la 2012
Vas dans Macro Edit. Dans le VBA éditeur dans le menu OUTIL, Références, Décocher tous SolidWorks 2014
et remplacer le par SolidWorks 2012
EX; Décocher SldWorks 2014 Type Library tu le remplace par cocher SldWorks 2012 Type Library

Si je te donne un poisson tu pourras manger Aujourd’hui
mais si je t’apprend a pêcher tu pourras manger toute ta vie !!!
Salut !

Marc S.
Avatar de l’utilisateur
MarcS
Chevalier Jedi SolidWorks
 
Messages: 305
Inscription: Mar 06 Jan 2009, 20:10
Localisation: Quebec, Quebec SolidWorks 2017 SP 1.0 & SolidWorks 2014 SP 2.0


Retourner vers SolidWorks : Questions générales

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 9 invités

banniere