Aller au contenu

Messages recommandés

Posté(e)

    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.

Posté(e)

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.

Posté(e)

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 ?

Posté(e)

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(); }

}

Posté(e)

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);};

 

Posté(e)
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

  • Merci ! 1
Posté(e)

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.

Posté(e)
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 🤔.

🙂 

Posté(e)

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 ? 

Posté(e)

@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.

  • J'aime 1
Posté(e)
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 😉)

Posté(e)
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.

🙂 

Posté(e)

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 🙄.

🙂 

Posté(e)

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.😜

  • Haha 1

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
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...