Show messages: All
1-2
3-5
From: Frenchy Pilou (PILOU)
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)
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)
Ce n'est pas encore ça! :)
Show messages: All
1-2
3-5