Contraintes assemblages
  • Topic:
    • SOLIDWORKS

  • 8 réponses
  • 4857 vues

Par jean-bapt' Le 02 avril 2014

Bonjour,

En vba je fait un programme qui ouvre dans un assemblage des pièces (d'une bouteille) et les assembles (bouteille complète).

Mon problème vient pour contraindre les pièces en elles. 

Comme c'est l'utilisateur qui choisit ces pièces, le mixe entre les pièces ouvertes vont changer.ex: fond plat, fond arrondi, bord carré arrondi, bord carré droit etc...

ce que j'ai commencé par faire est de contraindre les plans de chaque epièces.

 

Code d'enregistrement macro

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc

boolstatus = Part.Extension.SelectByID2("Plan de face@Bague couronne 26-1@Assemblage Bord rond", "PLANE", 0, 0, 0, True, 1, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Plan de face@EP-BR-ST-1@Assemblage Bord rond", "PLANE", 0, 0, 0, True, 1, Nothing, 0)

Dim myMate As Object

Set myMate = Part.AddMate3(0, 0, False, 0, 0, 0, 0.001, 0.001, 0, 0.5235987755983, 0.5235987755983, False, longstatus)

Part.ClearSelection2 True

Part.EditRebuild3

 

boolstatus = Part.Extension.SelectByID2("Plan de droite", "PLANE", 0, 0, 0, True, 1, Nothing, 0)

boolstatus = Part.DeSelectByID("Plan de droite", "PLANE", 0, 0, 0)

boolstatus = Part.Extension.SelectByID2("Plan de droite@Bague couronne 26-1@Assemblage Bord rond", "PLANE", 0, 0, 0, True, 1, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Plan de droite@EP-BR-ST-1@Assemblage Bord rond", "PLANE", 0, 0, 0, True, 1, Nothing, 0)

Set myMate = Part.AddMate3(0, 0, False, 0, 0, 0, 0.001, 0.001, 0, 0.5235987755983, 0.5235987755983, False, longstatus)

Part.ClearSelection2 True

Part.EditRebuild3

 

boolstatus = Part.Extension.SelectByID2("Plan_inf@Bague couronne 26-1@Assemblage Bord rond", "PLANE", 0, 0, 0, True, 1, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Plan_sup@EP-BR-ST-1@Assemblage Bord rond", "PLANE", 0, 0, 0, True, 1, Nothing, 0)

Set myMate = Part.AddMate3(0, 1, False, 0.071, 0, 0, 0.001, 0.001, 0, 0.5235987755983, 0.5235987755983, False, longstatus)

Part.ClearSelection2 True

Part.EditRebuild3

 

on voit qu'il y a un espace entre les deux pièces de " 0.071"m et je ne sais pas le définir. (il va changer pour chaque ensemble de pièce donc trop contraignant surtout que la bibliothèque de pièce vas s'agrandir au fur et à mesure)

Dans ma macro j'ai mis intentionnellement des espaces en Y pour séparer les pièces quand je les importes (cf: image) donc je connais l'espace entre l'origine de l'assemblage et le centre de gravité de ma pièce. (c'est bien le centre de gravité qui est pris en compte quand on importe des pièces?)

Est-il possible de récupérer la hauteur de la pièce? (variables vba)

 

Ou toutes autes idées sont bienvenues aussi!

 

merci 

JB

Réponses

jfaradon | 20595 point(s)

Regardez dans l'aide API

GetBox Method (IComponent2) 

ou 

GetPartBox Method (IPartDoc)

 

ils retourne un tableau de coordonnées correspondant au cube enveloppant

pour la hauteur suivant z => values(5) - values(2)

 

 

Chamade | 9868 point(s)

Bonjour,

 

Par contre, sauf erreur de ma part, ce sont les origines qui sont superposées par défaut lors de l'importation. Pas le centre de gravité.

gt22 | 73597 point(s)

Salut @ Jean-bapt

 

je me pose la question ?

tu demande dans un assemblage pouvoir avoir le choix des configues #

 

si tu créer ton assemblage avec x parametre

  • tu as 4 sections
  1. les fonds
  2. les corps
  3. les cols
  4. les goulots
  • dans la section 1 tu as # types

 a_ fond plat

 b_ fond arrondi

 c_ bord carré arrondi

 d_ bord carré droit etc.

  •  dans le section 2 tu as # types
  • a_b_c_d
  •  dans la section 3 tu as # types
  • a_b_c_d
  •  dans la section 4 tu as # types
  • a_b_c_d

pourquoi ne pas jouer sur l'assemblage avec des pieces eclatées

un axe commun pour ce cas d'exemple (ref de contrainte)

tu assemble le tout

tu fais un eclaté en posant dans chaques sections (rectangle en pointillé)

les types correspondants a ces sections

tu cache les types indesirable

tu rassemble ton assemblage pour visualiser

si c'est OK pour toi enregistrement 

il te reste a supprimer les pieces indesirable (qui sont cacher) sur cet enregistrement

enregistrement_ mise en plan_nomenclature_ etc

 

(j'espere avoir ete assez claire dans mon explication)

 

@+ ;-)

 

jean-bapt' | 1020 point(s)

Bonjour Gt22,

 

merci de ta réponse!

(je bossais sur qqch d'autre ces deux dernières semaines)

 

Je n'ai pas bien compris ce que tu veux dire par :

" tu fais un eclaté en posant dans chaques sections (rectangle en pointillé)

les types correspondants a ces sections

tu cache les types indesirable"

 

Ce que j'ai fait dans ma macro est d'insérrer les pièces sauf que je souhaite les insérrer liées.

 

Quand tu mets le mot "tu" je voudrais que ce soit l'API vba qui le fasse.

 

si tu le souhaites je peux te montrer ce que j'ai fait il n'y a rien de secret.

 

Par exemple:

Est-il possible d'insérrer des pièces dans un ordre et de les contraindres sur la pièce insséré précédement?

 

Est-il possible de lier les côtes des pièces entre elles par API?

 

Merci de vos réponses,

 

JB

jean-bapt' | 1020 point(s)

Bonjour,

 

Voici le cahier des charges de mon programme, je souhaite que l’utilisateur puisse :

-          Choisir des éléments prédéfinis dans une bibliothèque

-          Choisir les hauteurs de chaque élément

-          Choisir la largeur ou diamètre de la bouteille

-          Choisir la contenance de la bouteille

-          Choisir le type de verre (matière)

 

Il y a des choses que je pourrai voire aprés, le plus important est la modification de la hauteur des pièces et de la largeur et longeur.

 

ci-joint un assemblage d'une bouteille qui pourrai exister et dont je souhaite faire varier les paramètres.