Comment flechir une partie d'un volume sans utiliser flexion?

Bonjour,

Quels sont les moyens de plier partiellement un volume à un endroit précis, dans une zone précise ?

Zone d’action entre les lignes roses
Point de pivot de la flexion en orange
Axe de départ en vert
Axe visé en rouge

Et qu’on ne me parle pas de cette grosse daube de fonction flexion qui n’est pas foutue d’avoir un positionnement d’axes réglables ni des centres alignés ou alignables et qui me fait que de la m***de.

Merci

La seul solution que j’avais trouvé sur un cas similaire:
Enlèvement de matière dans la zone en rose, déplacement du corps via rotation( et extrusion pour relier les 2 corps (avec fusion)
Pas terrible mais pas trouvé mieux, par ce qu’effectivement on peut pas die que flexion soit super optimisé…

2 « J'aime »

Merci pour la réponse @sbadenis .

Tu penses que ta solution pourrait être animée dans une étude de mouvement ? Le but étant de pouvoir représenter un pincement des 2 parties symétriques à fléchir, pour sortir le rack de son logement où il est calé par les ergots (les espèces de pyramides en pointillés). En résumé la flexion doit être dynamique.

Je savais que tu allais faire cette demande ensuite! :rofl: :rofl: :rofl:
J’en doute fort, malheureusement pour toi.

2 « J'aime »

A moins que tu arrives à changer de confi dans une étude de mouvement et pour alors tu passes par config droite puis config déformé (avec une ou 2 config intermédiaire si besoin pour éviter l’effet trop saccadé si besoin)

Pourquoi je veux toujours faire des trucs impossibles ? :triumph: quel boulet sérieux

1 « J'aime »

L’esprit tordu peut-être? a te torturer l’esprit comme ça tu va mal finir, et peut être même comme développeur chez Dassault pour SW!

1 « J'aime »

Ça c’est sûr dans Solidworks c’est plus facile de se tordre l’esprit qu’un volume… :unamused:

1 « J'aime »

Bonjour @Sylk ,

Décidément, on ne se quitte plus…
Cette m***de de flexion dans SW n’est pas intuitive, mais elle fonctionne. En principe.

Dans une esquisse, placer deux points qui permettent de localiser les futurs plans d’ajustement.

Dans la fonction de flexion, sélectionner ces deux points pour positionner les plans.
Ensuite, jouer avec les 6 paramètres du trièdre :

  • Les translations pour amener l’origine du trièdre sur l’un des plans, qui sera fixe
  • Les rotations pour amener l’axe X du trièdre (axe de flexion) dans la direction souhaitée de la déformation. Les rotations se font autour des axes du repère général.

Fixer la valeur de l’angle de flexion, ou du rayon de courbure de la fibre neutre, et le tour est joué.
Quant à faire une animation, je pense qu’il faut en passe par plusieurs corps dans une pièce, ou plusieurs pièces dans un assemblage.

3 « J'aime »

Après l’ordre, toujours attendre le contrordre.
Comme souvent, une macro peut convenir… Il faut seulement adapter le nom de la fonction (« Flexion2 ») et le nom de la dimension (« D0 »).
C’est sommaire, mais ça bouge. Pas certain que ça s’applique efficacement à un ensemble un peu complexe.

Option Explicit

        Dim swApp       As SldWorks.SldWorks
        Dim swModel     As ModelDoc2
        Dim swFeature   As Feature
        Dim swDim       As Dimension

Function ChangeFlexion(nDeb As Integer, nFin As Integer, incr As Double) As Boolean
        Dim i       As Integer
        Dim pas     As Integer
        Dim ret     As Integer
        
    If nFin > nDeb Then pas = 1 Else pas = -1
    For i = nDeb To nFin Step pas
        ret = swDim.SetValue3(i * incr, swSetValue_InThisConfiguration, Nothing)
        swModel.EditRebuild3
        swModel.GraphicsRedraw2
    Next i
End Function

Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swFeature = swModel.FeatureByName("Flexion2")
    Set swDim = swFeature.Parameter("D0")
    ChangeFlexion 0, 30, 0.5
    ChangeFlexion 29, 0, 0.5  ' Valeurs négatives non autorisée
End Sub
4 « J'aime »

Bonjour @m_blt

Le problème n’est pas tant pour comprendre la fonction que pour lui faire faire ce qu’elle est censée faire.

Au lieu de placer 2 points je me contentais de déplacer les plans d’ajustement via leur valeur, alors dans le doute j’ai utilisé des points mais pas mieux.

Il y a plusieurs problèmes avec cette fonction m***dique :

Les dimensions des plans d’ajustement et leur centre ne sont pas modifiables, ils restent au milieu du volume, alors que c’est plus haut que je veux le plier :


(je sais à quoi vous pensez en voyant ce dessin, mais non :rofl: même si ça illustre bien le trajet que font mes baloches avec cette fonction…)

Ce qui a pour conséquence de déformer la géométrie à des endroits où je ne veux pas :

Donc la soluce (ou pas) pour au moins ne pas déformer ces zones est de déplacer les plans pour sortir la partie du bas de la zone d’action, ce qui déjà fausse tout, sans pour autant tout régler, on voit que la flexion est toujours inexacte :

Déjà je ne comprends pas pourquoi il y a des angles bâtards en x et z alors que la pièce est d’équerre :
image

Bref, si je valide ça avec les arêtes rigides c’est pas aussi pire que ce que j’avais avant, mais pas génial non plus :

Si je valide sans arêtes rigides, c’est moins pire mais pas ouf non plus :

Du moins si on le regarde de profil, car en réalité, c’est comme si seuls les flancs étaient déformés en mode lisse, Du grand n’importe quoi :

En prime, la flexion s’étend bien au delà des limites, et tout ça malgré une soit-disant précision de flexion au max :


Et ça se répercute sur toute la longueur de la pièce ; les faces internes (en pointillés) ne sont plus du tout parallèles, ce qui empêche au passage d’exploiter ces faces dans les contraintes d’assemblage :

Dans le genre daubé ça se pose là, et bien là. Et ce n’est pas fini…

Si je regarde du plan de droite, tout les axes semblent bien alignés :

Alors qu’en fait, loin de là ! Si on se rapproche… :

Le truc c’est que le trièdre et donc l’axe de flexion est placé sur le centre de masse :

Et si pour retrouver l’équilibre je vire un congé que j’avais que d’un côté, tous les axes sont bien alignés :
image

Sans mauvais jeu de mots, ça manque de flexibilité comme fonctionnement.

La solution la moins pire (ou pas), c’est de croiser les plans d’ajustement au centre de la zone à plier. Enfin presque au centre car impossible :

Très loin d’être parfait mais au moins les déformations sont nettement moins flagrantes et se propagent moins sur la longueur de la pièce :



Pas pour autant satisfaisant… Ça laisse penser qu’avec un croisement parfait ces reliquats disparaitraient, mais comme ce n’est pas possible…

En rapprochant encore le point de croisement, j’arrive à éliminer le défaut du bas, mais la flexion reste asymétrique, avec un pli en haut et pas en bas :


Enfin… jusqu’à ce que j’augmente la qualité d’image du document à fond :

Le moins pire, c’est avec arêtes rigides, mais toujours asymétrique, plat devant, plié derrière :


et dessous c’est l’inverse, plié devant, plat derrière :

Alors je me dis que ce n’est peut-être qu’un problème de rendu, mais quand je l’exporte, si une partie de la topologie se voit bien devenir courbée, une autre reste plate :


De quoi rendre fou…

Le plus dingue c’est que de tester l’export pour voir la topologie a débugué l’affichage qui est maintenant conforme à la topo :


Enfin… jusqu’à ce que je réactualise la viewport…

La zone à plier ne fait que 1.5mm alors évidemment avec le degré de précision de la fonction ça n’aide pas :

Bon bref j’arrête là le carnage, c’est de la m**de en barre. Je n’y arriverai pas comme ça.

La seule possibilité d’en tirer quelque chose serait peut-être de séparer la partie à déformer du reste du volume pour que tous les axes soient déjà alignés avec le centre de la zone à plier, ce qui implique de fusionner les corps uniquement après la flexion… (edit: en fait même pas). Tu parles d’une solution et d’une simplification des choses…

Je suis en 2020 mais le plus navrant c’est que je suis sûr que rien n’a changé depuis et que c’est toujours la même m#$rde sur la 2025… merci DS !

Merci pour la macro mais, comme d’hab, tout fonctionne à l’envers chez moi :sweat: ; il se plie en sens inverse. Et comme la macro n’autorise pas de valeur négative, et que je ne peux pas changer le sens de la cotation…

Bon j’ai modifié quelques trucs. Ou plutôt remis les choses comme elles étaient au départ.

Côté géométrie :
J’ai viré le petit décalage* de la rampe, que j’avais mis juste pour essayer d’utiliser la contrainte came mais en vain. C’est toujours ça de géométrie en moins à calculer pour la flexion.
J’ai directement fusionné les rampes au reste, au lieu de les recombiner.
J’ai appliqué la flexion avant la seconde symétrie du corps. Et donc sur la languette du bas, ce qui change le sens de la cotation d’angle.

Côté réglages, j’ai calé un système de coordonnées sur les repères, avec le Z sur la droite X puisque la flexion s’applique selon l’axe X (Mais ça c’est juste pour simplifier le positionnement du trièdre, car ça ne change rien aux bugs) :




Et là, il se plie proprement et de façon régulière :


Après seconde symétrie, la géométrie reste correcte :


Et cette fois la topologie est nickel :

C’est pas dommage !

Conclusion :
3 causes possibles au problème ;

  • la géométrie trop complexe engendrée par le décalage, mais j’en doute puisqu’elle arrivait à l’appliquer proprement d’un côté.
  • la topologie générée par la fonction combiner que la flexion ne sait pas travailler.
  • l’orientation de la flexion, qui était avec un angle positif.

Je penche pour la seconde, sans certitudes.

Et du coup la macro fonctionne aussi dans le bon sens :wink:

Reste à voir comment animer ça dans un assemblage.

Bon, je passe le sujet en résolu car je n’espérais pas trouver d’issue avec flexion, même si je reste intéressé par toute suggestion qui répondrait à la question. En particulier si elle permet un ajustement dynamique dans un assemblage.

Merci à vous.

*par décalage je veux parler de l’espèce de rehaut entre les rampes :
https://forum.mycad.visiativ.com/uploads/default/original/2X/5/5434682c70fba80b85cb57c659ed58b16b847de5.png

Bonjour,

Ajustement dynamique = animation ?
Je vois 3 possibilités d’agir sur la géométrie pour une animation :

  • Déplacer les composants d’un assemblage, y compris d’un sous-assemblage. Le module Etude de mouvement est fait pour cela…

  • Déplacer les corps dans une pièce multicorps. Il me semble que l’étude de mouvement ne le permet pas.
    Une macro peut le faire en agissant sur des fonctions Déplacer/Copier si elles ont été définies aux bon endroits.

  • Modifier des fonctions de la géométrie des pièces : toujours possible par macro, mais beaucoup plus galère dans la mesure ou chaque fonction est spécifique. Et la régénération de la géométrie (rebuild) descend au niveau le plus profond avec des temps de recalcul assez lourds.

Quant à combiner deux ou trois de ces approches, ça tient du rêve. Solidworks n’est pas conçu pour cela…

1 « J'aime »

Bonjour

Disons que j’espérais pouvoir plier selon un axe pivot un composant dans un assemblage pour le libérer de collisions et permettre alors son déplacement. Un comportement conforme à une action dans une situation physique.
Les études de mouvement c’est bien mais les manipulations directes grâce à des contraintes c’est parfois plus pratique.
Déjà je ne comprends pas qu’il n’y ait pas un bouton qui permettre d’activer ou désactiver une détection de collisions et interférences de géométries, qui associée aux contraintes, rende alors des mouvements possibles ou bloqués/limités. Pour, par exemple, qu’un composant avec une glissière et une limite de distance, n’aille pas plus loin s’il touche un autre composant rencontré sur son chemin pendant son déplacement.

Mais j’ai peut-être une idée pour plier un composant par manipulation :

Au lieu d’utiliser flexion, lier un plan au segment d’esquisse à plier, ici la partie droite de la languette. Pour faire la zone de pli, relier le segment languette au reste de la pièce par un arc tangent piloté.
Il devrait alors être possible de manipuler le plan avec des rotations et contraintes pour que la languette suive les mouvements du plan.
Enfin, c’est juste une idée comme ça, j’ai probablement oublié de prendre en compte des choses qui ne rendent pas la chose réalisable.