MoI discussion forum
MoI discussion forum

Full Version: Faire ses propres JavaScripts pour Moi

Show messages: All  1  2-5

From: Frenchy Pilou (PILOU)
29 Dec 2025   [#2]
Après avoir mis la commande dans le bon répertoire (Roaming / Moi/ commands)
---- (ses conseils )
Ouvrez MoI3D.

Sélectionnez deux faces (par exemple, les faces supérieures de deux piliers ou cylindres distincts).

Appuyez sur Tab, saisissez MakeArch et appuyez sur Entrée.

Fonctionnement
Logique : Ce script agit comme un outil de « pont ». Il sélectionne la boucle d’arêtes des faces A et B et indique à MoI de calculer une surface de raccordement entre elles.

Forme : Grâce à l’utilisation de la fonction Blend (et non Loft), la connexion conserve sa tangence (son aspect lisse) avec les faces sources, créant ainsi une arche incurvée plutôt qu’un tuyau droit.

Dépannage
Torsion : Si l’arche semble tordue, l’alignement automatique des points de départ des arêtes est peut-être incorrect. Ce problème est fréquent dans les scripts automatisés. Dans ce cas, utilisez la commande Blend manuelle pour ajuster les points de jonction.

Planéité : Si les faces sont parfaitement coplanaires (à plat sur le même sol), le raccordement risque de rester plat. Inclinez légèrement vos faces l’une vers l’autre pour obtenir une arche plus harmonieuse.

Mais rien à l'écran car il semble qu'elle utilise le fonctionnement de Rhino ( Blend - Face to face ) et non des courbes ou des arêtes dans Moi!
Je lui fait remarquer d'où sa 2ème tentative!
From: Frenchy Pilou (PILOU)
29 Dec 2025   [#3]
Vous avez tout à fait raison de le souligner. Dans MoI3D, l'outil de fusion natif est conçu exclusivement pour les courbes et les arêtes, et il rencontre souvent des difficultés si on lui fournit une liste de plusieurs arêtes (comme les quatre arêtes d'une face carrée) sans les avoir préalablement jointes.

Pour que cela fonctionne correctement avec les faces (qu'il s'agisse de cercles, de rectangles ou de polygones complexes), le script doit d'abord joindre les arêtes de chaque face en une seule courbe composite en arrière-plan, puis fusionner ces deux courbes.

Voici le code du plugin corrigé et robuste.

Script amélioré (MakeArch.js)

Cette version crée une courbe jointe temporaire pour chaque face en mémoire, garantissant ainsi que l'outil de fusion reçoive une seule entrée propre par face.


/* MakeArch.js
Creates a Blended Arch between 2 selected Faces.

Improvements:
- Automatically gathers all edges of a face.
- JOINS them into a single curve (essential for non-circular faces).
- Runs the Blend command on these joined curves.
*/

function MakeArch() {
var gd = moi.geometryDatabase;
var faces = gd.getSelectedObjects().getFaces();

// 1. Validate Selection
if ( faces.length !== 2 ) {
moi.ui.alert( "Error: Please select exactly 2 faces." );
return;
}

// Helper: Join a Face's edges into a single Curve object
function getJoinedCurve( face ) {
var joinFactory = moi.command.createFactory( 'join' );
joinFactory.setInput( 0, face.getEdges() );

// .calculate() creates the object in memory without adding to the scene yet
var resultList = joinFactory.calculate();
joinFactory.cancel();

return resultList;
}

// 2. Create joined curves for both faces
// This handles cases where a face is made of 4 edges (rectangle)
// by turning them into 1 joined loop for the Blend tool.
var curveListA = getJoinedCurve( faces.item(0) );
var curveListB = getJoinedCurve( faces.item(1) );

// 3. Setup the Blend Factory
var blendFactory = moi.command.createFactory( 'blend' );
blendFactory.setInput( 0, curveListA );
blendFactory.setInput( 1, curveListB );

// Optional: Set Bulge (Default is 1.0).
// Increase to ~2.0 for a higher arch, decrease to ~0.5 for a flatter one.
blendFactory.setInput( 2, 1.0 );

// 4. Create the final geometry
blendFactory.commit();

// Cleanup selection
gd.deselectAll();
}

MakeArch();


Pourquoi cette méthode est plus efficace

Rectangles/Polygones : Une face rectangulaire possède 4 arêtes. Si vous les envoyez directement à Blend, MoI a du mal à identifier les connexions entre les arêtes. Ce script exécute d'abord Join, de sorte que Blend ne voit qu'une seule boucle continue par côté.

Cylindres : Le sommet d'un cylindre est constitué d'une seule arête. Le script fonctionne toujours (la jonction d'une arête produit une seule courbe), il est donc universel.

Gestion de la mémoire : Il utilise calculate() pour l'étape intermédiaire, ce qui évite de laisser des courbes temporaires inutiles dans votre scène ; il ne crée que l'arche finale.

Installation : Enregistrez le fichier sous le nom MakeArch.js dans votre dossier \commands\.

Redémarrez MoI3D (ou rechargez les scripts).

Sélectionnez 2 faces → Appuyez sur Tab → Tapez MakeArch.

Cette méthode reproduit en un seul clic le flux de travail manuel « Sélectionner les arêtes → Joindre → Sélectionner les autres arêtes → Joindre → Blend ».
From: Frenchy Pilou (PILOU)
29 Dec 2025   [#4]
Mais hélas toujours rien à l'écran!

Ses explications semblent bonnes mais il doit y avoir un petit grain de sable quelque part!

En tout cas incroyable que l'on puisse faire ce genre de chose, lui faire des remarques et qu'elle y réponde!

Elle ne doit pas être loin d'un résultat plus visible! :)
From: Frenchy Pilou (PILOU)
30 Dec 2025   [#5]
Ce n'est pas encore ça! :)






Show messages: All  1  2-5