Trice Posté(e) Mars 8 Posté(e) Mars 8 Bonjour, Openscad est formidable, bien que la syntaxe soit tellement différente des classiques genre C qu'il est difficile de s'y mettre. Mon système est OpenSUSE Leap 15.6, et mon gestionnaire de fenêtres est KDE3 (je suis un vieux qui a trop d'habitudes profondément ancrées !). Ce logiciel courent indique : "OpenSCAD version 2021.01, Copyright (C) 2009-2021 The OpenSCAD Developers". J'ai essayé d'installer la dernière version stable mais impossible sous OpenSUSE ! De même que j'ai échoué à l'installation de cadquery-editor. Ça fait maintenant 20 ans que j'utilise quasi exclusivement Linux, et avec plaisir, sauf sur ce dernier point. Quelqu'un pourrait-il me dire pourquoi ce code ne fonctionne pas du tout : module linear_extrud0 (hauteur=5, centre=false, convexite=10) { /// ****************************************************************************************** echo("linear_extrud0: hauteur=",hauteur," centre=",centre, " convexite",convexite," "); // now : linear_extrude( height = 5, before : height, // v = [0, 0, 1], // center = true, center, // convexity = 10, convexity, // twist = -fanrot, twist, // slices = 20, slices // scale = 1.0, // $fn = 16) {...} {...} linear_extrude(height=hauteur, center=centre, convexity=convexite); } /// ****************************************************************************************** echo("_____________________________________________________________________________________"); color ("green", 1) translate([0, 0, (100/2)-0]) cube([.3, .3, 100], true); // Utile au dev. rootPath="/home/pserru/Developpements/Horloge_à_balancier/Pendule_0·5Hz/OpenScad/"; linear_extrud0(10) circle(d=5); linear_extrud0(10, true) circle(d=5); linear_extrud0(10, true, 10) circle(d=5); linear_extrud0(hauteur=10, centre=true, convexite=10) circle(d=5); Merci pour l'attention que vous aurez postée à ce post.
pjtlivjy Posté(e) Mars 8 Posté(e) Mars 8 bonsoir @Trice pour commencer il n'y aucun enfant défini Dans OpenSCAD, linear_extrude(...) doit entourer une forme géométrique. Or, dans ton module, linear_extrude(...) est appelé mais ne contient aucune instruction de géométrie.
Trice Posté(e) Mars 8 Auteur Posté(e) Mars 8 Mais j'ai bien suivi de "circle(d=5)" les appel au module "linear_extrud0()", sans `; entre les deux ! J'ai ajouté la ligne "linear_extrude(10) circle(d=5);" devant les autres appels et ça fonctionne. Merci pour la réponse. Peut-être que quelqu'un à une solution pour éviter la "verbosité" de l'utilisation de linear_extrude quand il faut nommer les paramètre passés ?
pjtlivjy Posté(e) Mars 8 Posté(e) Mars 8 en fait non @Trice module linear_extrud0(hauteur=5, centre=false, convexite=10) { echo("linear_extrud0: hauteur=", hauteur, " centre=", centre, " convexite=", convexite); linear_extrude(height=hauteur, center=centre, convexity=convexite) { children(); } }
Trice Posté(e) Mars 9 Auteur Posté(e) Mars 9 Une partie de la solution se trouve dans la documentation… (chercher “Use of children”), mais le résultat est tout de même décevant. module linear_extrud0 (hauteur=5, centre=false, convexite=10) { /// ****************************************************************************************** echo("linear_extrud0: hauteur=",hauteur," centre=",centre, " convexite",convexite," "); // now : linear_extrude( height = 5, before : height, // v = [0, 0, 1], // center = true, center, // convexity = 10, convexity, // twist = -fanrot, twist, // slices = 20, slices // scale = 1.0, // $fn = 16) {...} {...} linear_extrude(height=hauteur, center=centre, convexity=convexite); children(); } /// ****************************************************************************************** echo("_____________________________________________________________________________________"); color ("green", 1) translate([0, 0, (100/2)-0]) cube([.3, .3, 100], true); // Utile au dev. rootPath="/home/pserru/Developpements/Horloge_à_balancier/Pendule_0·5Hz/OpenScad/"; linear_extrude(10) circle(d=5); translate([10,0,0]) linear_extrud0(8) circle(d=5); translate([20,0,0]) linear_extrud0(6, false) circle(d=5); translate([30,0,0]) linear_extrud0(4, false, 10) circle(d=5); translate([40,0,0]) linear_extrud0(hauteur=2, centre=false, convexite=10) circle(d=5); translate([-10,0,0]) linear_extrud0(8) {circle(d=5);}; translate([-20,0,0]) linear_extrud0(6, false) {circle(d=5);}; translate([-30,0,0]) linear_extrud0(4, false, 10) {circle(d=5);}; translate([-40,0,0]) linear_extrud0(hauteur=2, centre=false, convexite=10) {circle(d=5);}; Une autre page de la documentation dit : linear_extrude(height = 5, v = [0, 0, 1], center = true, convexity = 10, twist = -fanrot, slices = 20, scale = 1.0, $fn = 16) {...} Du coup, je ne comprends pas la figure correspondante à la ligne /*1*/ (usage "normal") puisque l'argument center aurait du avoir été assigné à la valeur true valeur par défaut, et ce n'est pas ce qui est dessiné... image ci-dessous NB Cet éditeur (de message / post) est très inconfortable ! Correction du code inséré : module linear_extrud0 (hauteur=5, centre=false, convexite=10) { /// ****************************************************************************************** echo("linear_extrud0: hauteur=",hauteur," centre=",centre, " convexite",convexite," "); // now : linear_extrude( height = 5, before : height, // v = [0, 0, 1], // center = true, center, // convexity = 10, convexity, // twist = -fanrot, twist, // slices = 20, slices // scale = 1.0, // $fn = 16) {...} {...} linear_extrude(height=hauteur, center=centre, convexity=convexite); children(); } /// ****************************************************************************************** echo("_____________________________________________________________________________________"); color ("green", 1) translate([0, 0, (100/2)-0]) cube([.3, .3, 100], true); // Utile au dev. rootPath="/home/pserru/Developpements/Horloge_à_balancier/Pendule_0·5Hz/OpenScad/"; /*1*/linear_extrude(10) circle(d=5); /*2*/translate([10,0,0]) linear_extrud0(8) circle(r=2.5); /*3*/translate([20,0,0]) linear_extrud0(6, false) circle(r=2.5); /*4*/translate([30,0,0]) linear_extrud0(4, false, 10) circle(r=2.5); /*5*/translate([40,0,0]) linear_extrud0(hauteur=2, centre=false, convexite=10) circle(r=2.5); /*6*/translate([-10,0,0]) linear_extrud0(8) {circle(r=2.5);}; /*7*/translate([-20,0,0]) linear_extrud0(6, false) {circle(r=2.5);}; /*8*/translate([-30,0,0]) linear_extrud0(4, false, 10) {circle(r=2.5);}; /*9*/translate([-40,0,0]) linear_extrud0(hauteur=2, centre=false, convexite=10) {circle(r=2.5);};
Trice Posté(e) Mars 9 Auteur Posté(e) Mars 9 module linear_extrud0 (hauteur=5, centre=false, convexite=10) { /// ****************************************************************************************** echo("linear_extrud0: hauteur=",hauteur," centre=",centre, " convexite",convexite," "); linear_extrude(height=hauteur, center=centre, convexity=convexite) children(); } Merci pjtlivjy. J'avais oublié de le '; devant children(); Résolu 1
pjtlivjy Posté(e) Mars 10 Posté(e) Mars 10 bien content de t'avoir aidé @Trice il est sur que la lecture d'une page de codage n'est pas simple surtout qu' Openscad utilise un analyseur syntaxique qui ne vérifie pas toujours strictement la conformité aux règles de syntaxe attendues.
fran6p Posté(e) Mars 11 Posté(e) Mars 11 Le 10/03/2025 at 01:55, pjtlivjy a dit : surtout qu' Openscad utilise un analyseur syntaxique qui ne vérifie pas toujours strictement la conformité aux règles de syntaxe attendues. Un lien pour cette assertion ? Utilisant majoritairement OpenSCAD, quand la syntaxe dans un projet est incorrecte, il m'a toujours signalé l'erreur .
pjtlivjy Posté(e) Mars 12 Posté(e) Mars 12 alors @fran6p plutôt que de te répondre directement, je vais te retourner la question en t'en posant 2 primo pourquoi l'éditeur n'a pas indiqué à notre ami qu'il manquait un simple ; secundo pourquoi la communauté a développé plusieurs éditeurs alternatifs ?
Trice Posté(e) Mars 12 Auteur Posté(e) Mars 12 @pjtlivjy : Citation Pourquoi l'éditeur n'a pas indiqué à notre ami qu'il manquait un simple ; Probablement parce que syntaxe est correcte sans ce '; ... c'est ce que j'ai cru comprendre. 1
pjtlivjy Posté(e) Mars 12 Posté(e) Mars 12 il y a 4 minutes, Trice a dit : @pjtlivjy : Probablement parce que syntaxe est correcte sans ce '; ... c'est ce que j'ai cru comprendre. oui tout à fait il a une certaine "souplesse" surtout sur les fonctions puisque'à ce stade elles ne sont pas appelés sur VS Studio ça ne serait pas passé car il y a une analyse syntaxique poussée (et colorée )
fran6p Posté(e) Mars 12 Posté(e) Mars 12 Il y a 15 heures, pjtlivjy a dit : plutôt que de te répondre directement Comme d'habitude, à chaque fois que des sources sont demandées . C'est bien d'affirmer de choses, c'est toujours mieux de les sourcer, afin que chacun puisse se faire son propre avis.
pjtlivjy Posté(e) Mars 12 Posté(e) Mars 12 je suis là pour aider @Trice pas pour entrer dans de stériles et puériles polémiques @fran6p ça n'est pas le but du forum qu'ont créer @Motard Geek & @Julien 1
fran6p Posté(e) Mars 13 Posté(e) Mars 13 MDR, l'appel à l'autorité Je constate simplement qu'encore une fois, tu ne réponds pas à ma question. Si j'ai bien compris, te poser une question afin de pouvoir vérifier tes assertions, c'est polémiquer. En gros, toute discussion à moins qu'elle ne contredise pas tes propos est stérile .
gerardm Posté(e) Mars 13 Posté(e) Mars 13 Paix au Vietnam ! Sur un message écrit on n'a pas le ton et des fois on peux penser qu'il y a de l'agressivité. Et de fois il y en a. Il est temps de faire intervenir Donald Trump pour calmer le jeu. 1
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant