On peut déjà voir la surface de la pièce mais cela prend toutes les surfaces de chaque pièce, or moi je souhaiterai uniquement les surfaces que l'on peut peindre.
Pour calculer la quantité de peinture nécessaire sur une pièce ou un assemblage.
On peut déjà voir la surface de la pièce mais cela prend toutes les surfaces de chaque pièce, or moi je souhaiterai uniquement les surfaces que l'on peut peindre.
Pour calculer la quantité de peinture nécessaire sur une pièce ou un assemblage.
Bonjour
Pour atteindre votre but vous devez procéder en deux étapes.
- Vous devez peindre chaque surface individuellement (regardez le mini-tuto que j'ai proposé https://www.lynkoa.com/forum/conception-3d/rendu-couleur-des-assemblage-sur-solidworks?page=0#answer-1083308)
- Vous devez sélectionner la surface et activer la fonction mesurer vous aurez la surface automatiquement.
Ce sont les deux méthodes ultra-basiques mais mes collègues vous donneront je l'espère d'autres solutions plus automatisables.
Cordialement
D'accord merci pour la réponse.
Mais oui ce que je recherche c'est quelque chose d'automatique car ça servirait à un programme qui prendrait cette donnée directement sans avoir à renseigner quoi que ce soit.
Bonjour
Cela dépend de ce que l'on appelle automatique car il faudra bien désigner à un moment considéré la surface à peindre. Cela dépend comme le volume est réalisé par exemple si à partir vous faite un cube et que vous voulez peindre une seul face et bien vous ne pouvez pas utiliser l'extrusion telle qu'elle car il faut passer par les apparences car le dsplay nanager est d'aucune utilité dans votre cas.
Cela veut sûrement dire d'être capable soit de désigner cliquer à la main (ou par un code la surface à peindre). Puis avec obligatoirement une macro qui va lancer la mesure de surface et constituer une liste avec "N" caractéristiques mis dans un fichier exploitable sous Excel.
Avez vous regardez le tuto pour vous rendre compte de la complexité de ce que vous souhaitez faire comparer à ==> sélectionner la face ==> cliquer sur mesurer ==> mettre l'information dans un ??? lié à la pièce.
Cordialement
Bonjour;
Avez-vous pensé aux Capteurs ?
http://help.solidworks.com/2020/French/SolidWorks/sldworks/c_Sensors_OH.htm
A afficher directement dans une Nomenclature ?
Bonjour,
Comme vous pouvez voir en exemple dans ma pièce jointe, la pièce est soudée, puis peinte et que je souhaiterai avoir c'est uniquement la surface de ce qui est en rouge et non ce qui est à l'intérieur. Autrement dit les surfaces visiblent à l'oeil nu, les surfaces extérieures. Vous voyez ?
Donc les capteurs ne me sont d'aucune utilité à part s'ils ont une fonction que je ne connais pas.
Oui j'ai conscience de la complexité de ce que je demande, mais le développement d'un programme ne serait pas possible ?
Bonjour,
Au vu du symbole de centre de gravité sur la dernière capture, il s'agit d'un assemble ?
Dans ce cas, il est possible de créer une pièce dans le contexte, puis avec la fonction « surface décalé » de copier toutes les faces de la même couleur (voir les décaler de 0.05mm pour éviter les bugs d’affichage), puis il suffit de récupérer la variable de surface de cette pièce dans la nomenclature.
L’opération peut être répété pour chaque couleurs.
PS: les solution de @ZozoMP combiné à celle de @Maclane sont les 1ere qui me sont venu à l'esprit également.
Oui il s'agit d'un assemblage et il y a beaucoup de composants sous les tôles de fermeture alors la superficie n'est pas assez précise et nous ferait commander beaucoup trop de peinture.
C'est possible de copier d'un coup toutes les faces de la même couleur ? Sans avoir à toutes les sélectionner ?
Bonjour @l.manceau
"C'est possible de copier d'un coup toutes les faces de la même couleur ? Sans avoir à toutes les sélectionner ?" ce n'ai pas sur il faut essayer
Bonjour,
Cela me semble possible par macro, en voici une qui doit pouvoir te servir de base de départ, c'est probablement à adapter à ton besoin :
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim Assembly As SldWorks.ModelDoc2
Dim myAssy As SldWorks.AssemblyDoc
Dim myComps As Variant
Dim myCmp As Component2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swSelData As SldWorks.SelectData
Dim swPart As SldWorks.PartDoc
Dim swBody As SldWorks.Body2
Dim swFace As SldWorks.Face
Dim swEnt As SldWorks.Entity
Dim bRet As Boolean
Dim vBodies As Variant
Dim vMatProp As Variant
Dim mySurface As Double
Dim myColor As String
Dim mySearchColor As String
Dim i As Long
Dim ninfo As Long
Set swApp = CreateObject("SldWorks.Application")
Set Assembly = swApp.ActiveDoc
Set myAssy = Assembly
mySurface = 0
myColor = ""
myComps = myAssy.GetComponents(False)
For i = 0 To UBound(myComps)
Set myCmp = myComps(i)
bRet = myCmp.Select2(False, 0)
bRet = myAssy.EditPart2(True, True, ninfo)
Set swModel = myAssy.GetEditTarget
Set swPart = swModel
swModel.ClearSelection2 True
Set swSelMgr = swModel.SelectionManager
Set swSelData = swSelMgr.CreateSelectData
vBodies = swPart.GetBodies2(swAllBodies, True)
Set swBody = vBodies(0)
Set swFace = swBody.GetFirstFace
'C'est ici que l'on définit la couleur à chercher
mySearchColor = "[255, 0, 0]" 'rouge
'mySearchColor = "[0, 255, 0]" 'vert
'mySearchColor = "[0, 255, 255]" 'cyan
Do While Not swFace Is Nothing
vMatProp = swFace.MaterialPropertyValues
If Not IsEmpty(vMatProp) Then
myColor = "[" & vMatProp(0) * 255# & ", " & vMatProp(1) * 255# & ", " & vMatProp(2) * 255# & "]"
If myColor = mySearchColor Then
Set swEnt = swFace
bRet = swEnt.Select4(True, swSelData)
mySurface = mySurface + swFace.GetArea
End If
End If
Set swFace = swFace.GetNextFace
Loop
myAssy.EditAssembly
Next i
Debug.Print ""
Debug.Print "Surface totale de couleur " & mySearchColor & " : " & mySurface
End Sub
Cordialement,