Aller au contenu

GO Print

OPENSCAD : polyèdre 3D à bords arrondis


Messages recommandés

Bonjour,

J'aimerais modéliser un polyèdre 3D à bords arrondis et je sèche...

Voici un exemple de ce que je voudrais, sauf que dans ce cas, il s'agit d'un rectangle. Or j'aimerais qu'une base du rectangle soit moins large:

minkowski()
{
 cube([15,22,3]);
 cylinder(r=2,h=1);
}
Lien vers le commentaire
Partager sur d’autres sites

@filament-abs.fr

Bonjour,

La fonction «minkowski» est très intéressante pour créer des formes à bords arrondis mais elle ajoute deux fois le rayon du cylindre à la largeur et la longueur et ajoute la hauteur du cylindre à la hauteur aux dimensions de la forme de base,

Citation

$fn=60;
mm=1.0;
lar=15.0*mm;
lon=22.0*mm;
hau=3.0*mm;
ray=2.0*mm;
hcyl=1.0*mm;
larrect=lar-2*ray; // largeur rectifiée
lonrect=lon-2*ray; // longueur rectifiée
haurect=hau-hcyl;  // hauteur rectifiée

translate([ray,ray,0])
minkowski()
{
 cube([lar,lon,hau]);
 cylinder(r=ray,h=hcyl);
}

translate([ray,ray,10])
minkowski()
{
 cube([larrect,lonrect,haurect]);
 cylinder(r=ray,h=hcyl);
}

🙂

Lien vers le commentaire
Partager sur d’autres sites

@Vector Non  pas tout à fait. Sur les 6 côtés, seuls deux doivent être plus courts que les autres (et eux-même de la même longueur).

- Tu dessines un rectangle,

- tu raccourcis un côté

- tu lui donnes de l'épaisseur.

 

Et merci à @fran6p pour l'astuce 🙂

Lien vers le commentaire
Partager sur d’autres sites

il y a 32 minutes, filament-abs.fr a dit :

- Tu dessines un rectangle,

- tu raccourcis un côté

- tu lui donnes de l'épaisseur.

C'est un trapèze ?

Il faudrait peut-être utiliser la fonction «polyhedron». Un test avec un rectangle (en modifiant les 8 coordonnées du «cube» pour former un trapèze) ? :

Citation

$fn=60;
mm=1.0;
lar=15.0*mm;
lon=22.0*mm;
hau=3.0*mm;
ray=2.0*mm;
hcyl=1.0*mm;
decal=3.0*mm;
larrect=lar-2*ray; // largeur rectifiée
lonrect=lon-2*ray; // longueur rectifiée
haurect=hau-hcyl;  // hauteur rectifiée

/*
minkowski()
{
 cube([lar,lon,hau]);
 cylinder(r=ray,h=hcyl);
}

translate([ray,ray,10])
minkowski()
{
 cube([larrect,lonrect,haurect]);
 cylinder(r=ray,h=hcyl);
}

minkowski()
{
    cylinder(lonrect,lonrect,larrect,$fn=4);
    cylinder(r=ray,h=hcyl);
}
*/
PointsCube=[
[0,0,0],   //0
[larrect,0,0],  //1
[larrect,lonrect,0], //2
[0,lonrect,0],  //3
[decal,decal,haurect], //4
[larrect-decal,decal,haurect], //5
[larrect-decal,lonrect-decal,haurect], //6
[decal,lonrect-decal,haurect]]; //7

FacesCube=[
[4,5,1,0],  //avant
[5,6,2,1],  //droite
[6,7,3,2],  //arriere
[7,4,0,3],  //gauche
[0,1,2,3],  //dessous
[7,6,5,4]]; // dessus

minkowski()
{
    polyhedron(PointsCube,FacesCube);
    cylinder(r=ray,h=hcyl);
}
   

🙂

Lien vers le commentaire
Partager sur d’autres sites

Oui, c'est un trapèze particulier:

difference() 
{
    cube([20,10,4], true);
 
    translate ([17.6,0,0]) rotate ([0,0,15]) cube([20,30,5], true);
    mirror ([1,0,0]) translate ([17.6,0,0]) rotate ([0,0,15]) cube([20,30,5], true);
}

C'est ce truc que j'aimerais mais avec des angles arrondis.

Avec polyhedron je n'arrive pas à obtenir un volume. (D'ailleurs la doc précise que polyhedron est dédié à la 2D).

Je vais essayer de décortiquer ton code, cependant 🙂

Lien vers le commentaire
Partager sur d’autres sites

Si la forme de ta pièce est un trapèze isocèle, alors pour ça il va falloir dans un premier temps que tu installes cette librairie : dotSCAD

https://github.com/JustinSDK/dotSCAD

Et là, si t'es sur MAC, ben c'est le drame, je ne pourrais pas t'aider plus à ce sujet, infos ici :

https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries

Quand tu auras installé et vérifié la librairie, tu m'appelleras 📣

Modifié (le) par Vector
Lien vers le commentaire
Partager sur d’autres sites

Ha zut, je n'ai jamais réussi à installer une bibliothèque pour OpenScad (sur Mac en effet).

J'ai mis la nouvelle bibliothèque au même endroit que la bibliothèque de base MACD mais rien à faire, ça ne fonctionne pas.

Bon je vais creuser.

Sinon, pourrais-tu afficher le code? Ainsi je pourrais l'essayer dès que j'aurais réussi à installer la bibliothèque?

Lien vers le commentaire
Partager sur d’autres sites

Voici mon code :

Citation

use <shape_trapezium.scad>;
use <path_extrude.scad>;
use <bezier_curve.scad>;

 

t_step = 1;

$fn=200;

B = 60;
b = 25;
h = 30;
epaisseur = 10;
arrondi = 5;


shape_pts = shape_trapezium(
    [B, b], h , corner_r = arrondi
);

 

p0 = [0, 0.001, 0];
p1 = [0, 0, epaisseur];

path_pts = bezier_curve(t_step,
    [p0, p1]
);

 

path_extrude(shape_pts, path_pts);

 

 

image.thumb.png.e65e4cd8f4a57cd21b7035ad883038d2.png

L'idée de ce code vient d'ici https://openhome.cc/eGossip/OpenSCAD/lib-shape_trapezium.html

 

Bon, il va falloir investir dans un PC au bout d'un moment, hein ... 🤪

Modifié (le) par Vector
Lien vers le commentaire
Partager sur d’autres sites

Le 13/12/2020 at 19:09, filament-abs.fr a dit :

(D'ailleurs la doc précise que polyhedron est dédié à la 2D).

Bizarre 😉

polyhedron.thumb.jpg.a858d1bb985dfaa39de15a20fb5c4fce.jpg

polygon est son pendant pour la 2D.

Les bibliothèques proposées par @Vector sont très bien. Je suis aussi obligé de mettre le chemin d'accès complet pour qu'OpenSCAD trouve les bibliothèques alors que ma variable d'environnement est correctement déclarée (Windows 10) 🤔

🙂

Lien vers le commentaire
Partager sur d’autres sites

Salut @fran6p,

Sur mon PC Windows 10, j'ai rajouté dans Variables d'environnement > Variables utilisateur pour xxxxxx > Nouvelle :

- Nom de la variable : OPENSCADPATH
- Valeur de la variable : C:\Users\xxxxxx\Documents\OpenSCAD\libraries\dotSCAD\src


La librairie dotSCAD est située dans :

C:\Users\xxxxxx\Documents\OpenSCAD\libraries\dotSCAD


Pour vérification dans OpenSCAD :

Menu fichier > Afficher le dossier des bibliothèques :

C:\Users\xxxxxx\Documents\OpenSCAD\libraries

Modifié (le) par Vector
Lien vers le commentaire
Partager sur d’autres sites

Il y a 3 heures, fran6p a dit :

Bizarre 😉

polyhedron.thumb.jpg.a858d1bb985dfaa39de15a20fb5c4fce.jpg

polygon est son pendant pour la 2D.

😄 J'ai dû lire la doc de travers. Quoiqu'il en soit, les formes 3D que je réalisais avec polyhedron étaient "creuses". Un artefact très curieux.

 

@Vector de mon côté, étant sur Mac le menu "Afficher le dossier des bibliothèques" affiche bien le bon répertoire avec ta bibliothèque. 

Modifié (le) par filament-abs.fr
Lien vers le commentaire
Partager sur d’autres sites

  • 10 months later...

déterrage du sujet

voici le code (simple)sans la moindre bibliothèque et totalement modifable dans les dimensions

 

$fn=100;
H=10; // hauteur de l'objet Z
R=5; // rayon des arrondi
B= 25; // dimension de la base du trapeze
S=15;// dimension du sommet du trapeze
L=10; // largeur du trapeze


hull(){
cylinder(H,R,R);
translate([B,0,0]){cylinder(H,R,R);}
translate([B-S/2,L,0]){cylinder(H,R,R);}
translate([B-S,L,0]){cylinder(H,R,R);}
}

Lien vers le commentaire
Partager sur d’autres sites

Le trapèze n'est pas régulier. En changeant une des dimensions du «trapèze», il devient encore plus irrégulier 😞

oscad-trapeze-coins-arrondis.jpg.ce62846d750436df75c982acf241d2d9.jpg

🙂

Modifié (le) par fran6p
Lien vers le commentaire
Partager sur d’autres sites

Il y a 6 heures, fran6p a dit :

Le trapèze n'est pas régulier. En changeant une des dimensions du «trapèze», il est devient encore plus irrégulier 😞

oscad-trapeze-coins-arrondis.jpg.ce62846d750436df75c982acf241d2d9.jpg

🙂

j'ai écris ce bout de code en quelques secondes, juste pour exemple que c'est possible sans bibliotheques extérieure

l’intérêt d'openscad et de ses variable en début de programme, c'est qu'on change toutes les dimensions en changeant un seul chiffre

j'ai écris de nombreux objet que je redimensionne à volonté selon mes besoins du moment

en cours de finition, le plan d'une maquette de maison avec modification de toutes se dimensions, y compris l'angle de la toiture garnie de tuiles dont le nombre est affiché par "echo"

cloisons amovible, et même en angle si on le veux

menuiseries a volonté et modifiable

attention ordinateur ultra rapide nécessaire pour faire apparaitre le rendu

Lien vers le commentaire
Partager sur d’autres sites

il y a 39 minutes, Patrick76 a dit :

j'ai écris ce bout de code en quelques secondes, juste pour exemple que c'est possible sans bibliotheques extérieure

Certes on pourrait ne pas utiliser de bibliothèque extérieure mais ça ne produit pas ce que souhaitait @filament-abs.fr

Mon ordinateur n'est plus un foudre de guerre mais me permet tout de même d'obtenir un rendu correct. Il faut juste être patient 😉

La fonction «hull» d'Openscad n'est pas une fonction «facile». De nombreuses bibliothèques permettent d'ajouter de nombreuses fonctions, pourquoi s'en passer alors qu'elles sont disponibles gratuitement 🤔

Les variables quand elles sont bien «écrites» permettent d'utiliser le «customizer» (onglet Window, Customizer) même pas besoin d'intervenir dans le  code :

customizer.jpg.0ce7d7f5ddc18e782c19f6f2f26ee25a.jpg

🙂

Lien vers le commentaire
Partager sur d’autres sites

il y a 4 minutes, fran6p a dit :

Les variables quand elles sont bien «écrites» permettent d'utiliser le «customizer» (onglet Window, Customizer) même pas besoin d'intervenir dans le  code :

 

🙂

sauf lorsque la variable n'as de valeur fixe, mais calculée

en effet les bibliothèques sont une aide précieuse dans de nombreux cas , mais au début, j'ai tenter d'écrire le plus simplement possible sans aide extérieure

maintenant, j'écris mes propres bibliothèques que j'utilise pleinement.

Lien vers le commentaire
Partager sur d’autres sites

  • 8 months later...
Le 30/10/2021 at 22:28, Patrick76 a dit :

déterrage du sujet

voici le code (simple)sans la moindre bibliothèque et totalement modifable dans les dimensions

 

$fn=100;
H=10; // hauteur de l'objet Z
R=5; // rayon des arrondi
B= 25; // dimension de la base du trapeze
S=15;// dimension du sommet du trapeze
L=10; // largeur du trapeze


hull(){
cylinder(H,R,R);
translate([B,0,0]){cylinder(H,R,R);}
translate([B-S/2,L,0]){cylinder(H,R,R);}
translate([B-S,L,0]){cylinder(H,R,R);}
}

Plutôt que de faire un hull coûteux je ferais d'abord un plan 2D avec 4 cercles puis un linear_extrude...

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...