• Home
  • Le script
    • Ajouter une icône
    • Commenter une commande
    • Fenêtre Flottante
    • Liste Scripts Commandes
    • Palette de Scripts
    • Panneaux Etendus
    • Raccourci sur une commande
    • Simplifier un script
    • Polygones vers Nurbs
  • "Script en ligne"
    • Autres >
      • Bascules
      • Browser
      • Camera&TargetPoint to Clipboard
      • Cartouche
      • CTRL C CTRL V
      • CurveLength
      • CurveLengthBeingDrawn
      • Golden
      • MatchObjectName
      • Plan Aux
      • Points
      • Print Screen
      • PurgeLayer
      • SetObjectName
      • Styles >
        • AddStyle
        • EditStyle
        • Assign Styles to solids
        • RandomColor
        • Random Style Solid Color
        • CreateStyleFromObjectName
        • Make gradient Styles
      • TakeSnapshot
    • Déplacer la vue/Objet >
      • MoveTargetToObjectsV2
    • Sélection >
      • SelectStyleV2 V3
      • SelectUnnamedObjectsV2
      • Selection Loop
      • Select by Length
      • Select Biggest / Smallest
      • RandomSelection
      • Naked edges
      • LastObjectsCreated
      • SetSelectedObjectToWireframe V2
      • SetSelectedObjectToWireframe & Lock V2
    • Affichage >
      • Filaire Ombré
      • LightingOptions
      • Pers/Parallèle
      • RandomizeStyleColors
      • ViewStack
    • Cacher >
      • HideSeamEdge
      • HideToHidden
      • Isolate
      • Hide Controls & Grid & Axes
    • Vues >
      • Cycler les vues
      • Dimetric
      • Isometric
      • Perpective
      • Zoom 4 Vues
      • Position Caméra
  • Les Commandes
    • Fonctions >
      • Fonctions Cachées
      • BisectorLine
      • CenterAtOrigin PutOnGround
      • Chanfreins
      • Dégradés
      • Copier
      • DividingPlanes
      • Effacer les Congés
      • Eraser
      • Hachures
      • Intersect2Circles
      • MoveSliceToPoint
      • OffsetMultiStep
      • QuickTrim
      • Randomize
      • ScaleIndividual
      • SelectIntersected
      • Tournette
      • TrimStencil
    • Courbes >
      • CCC
      • Close Curves
      • Conversion Courbe
      • Courbes en Cercles
      • Courbes par Lot
      • DelCorners
      • InsertCircles
      • LineWeb
      • MultiIso
      • MultiIso+
      • Ordre Courbes
      • Pts d'une courbe
      • Reconstruct Curves
      • RotateHistoryAray
      • ShrinkLines
      • UnwrapCurve
      • UVchanger-plane
    • Objets. >
      • Distributions
      • Anneaux
      • Boulons Filetés
      • Portes et Fenêtres
      • RotateObjects
      • Toroïdal Knots
      • Tubes
    • Scripts de Max Smirnov >
      • Scripts de Max Smirnov
      • Calculateur de Volume
      • Customiser l'Ui
      • Cycles pour Moi
      • Ecrous et Boulons
      • Cotations
      • Dispersions
      • Elephant Système Nodal
      • Engrenages
      • Fx Graph
      • Fx Graph 3D
      • Heightmap
      • Simulation Tissu
      • Subdivision
      • Bridge
    • 4 vues 2D
    • AssignName
    • AssignPresetName
    • BlendCap
    • FullScreen
    • Géométries par Bemfarmer
    • Importer des MNT
    • Lignes d'Aide
    • Points XYZ
    • r2d3
    • Sauvegardes Multiples
    • ScaleArray
  • Gif Animés
    • Cadre de Manipulation >
      • Cadre de Manipulation01
      • Cadre de Manipulation 02
      • Cadre de Manipulation 03
      • Cadre de Manipulation 04
      • Cadre de Manipulation 05
    • Orientation >
      • Oriente 01
      • Oriente 02
      • Oriente 03
      • Oriente 04
      • Oriente 05
      • Oriente 06
      • Oriente 07
      • Oriente 08
      • Oriente 09
    • Creux >
      • Creux 01
      • Creux 02
      • Creux 03
    • Offset
    • Accroche à une surface
    • Snap sur alignement
    • Trame droite
    • Trame sur courbe
    • Arcs et cercles tangents
    • Image d'arrière Plan
    • Propriété d'Objets
    • Rotation
    • Tension automatique
  • Utilitaires
    • Nouveautés V5
    • Nouveautés V4
    • V4 Quoi de neuf ?
    • V3 Quoi de neuf?
    • Liste des mises à jour
    • Aile Naca
    • Companion
    • Console
    • CutList
    • DESIGN CONCEPT
    • Engrenages en bois
    • Format OBJ en 3DM >
      • Instant Meshes
      • _importObj
      • obj23dm
    • Kitbash
    • Mannequin
    • MGB (Interface)
    • MergeOBJ
    • Moi et Modo
    • Paint 3D
    • Pont Moi Nvil KeyShot
    • Proflow
    • Raccourcis Pro
    • Rocket 3F
    • SpeedFlow
    • Somsky
    • Vectorisation
    • Vers ZBrush
    • ZSurf
  • Vidéos
    • Mini Vidéos
    • Nouveauté Béta V3 >
      • Enrobage d'objet V3
      • Enrobage d'un Tore V3
      • Twist V3
      • Isocurve V3
      • Découpe Iso V3
      • Extrusion V3
      • Nsided V3
    • Inutilitaires >
      • Inutilitaire 1
      • Inutilitaire 2
      • Inutilitaire 3
      • Inutilitaire 4
    • Menu Oriente >
      • Oriente
      • Ligne-Ligne
      • Vue-Vue
      • Bonus
    • Deux Rails
    • Tubage Booléen
    • Tendre
    • LineWeb (toile d'araignée)
    • Texte + Booléen Intersection
    • Escalier hexagonal
    • Sélecteur
    • Déplacer des objets
    • Pivoter des objets
    • ShiftArray
    • ScriptArray
    • Les Maîtres
  • Tutos
    • Trucs & Astuces >
      • Trucs Astuces
      • Truc Astuces 2
    • 3D Primer >
      • 3D Primer 1
      • 3D Primer 2
      • 3D Primer 3
      • 3D Primer 4
      • 3D Primer 5
    • Les Objets >
      • Anneau Strié
      • Avion
      • Bague
      • Bateau Riva
      • Batteur d'oeufs
      • Boîte
      • Boîtier
      • Bouteille Cognac
      • Bouteille plastique
      • Bouteille de soda
      • Chaise d'école
      • Chaussure
      • Cordon
      • Détergent
      • Haut-parleur
      • Jante
      • Lunettes de Mauro
      • Plaque électrique
      • Pneus
      • Poêle en fonte
      • Pomme Douche
      • Radio
      • Rasoir
      • Voiture
    • Les Surfaces >
      • Surfaces
      • Surfaces 2
      • Surface de Gordon
      • Les objets de Zarkow
    • L'éclairage dans Moi
    • Raccords manuels
    • Les Raccords
    • La SubDivision
    • Le tuto de Mauro
    • Solides
    • Tourbillon
    • Tutos by Liminal
    • Vasarely
    • Fiat Abarth
    • Le Truck de ED
    • La voiture de Ed
    • La Vespa de Mauro
    • Les voitures de MacGreggor
    • La Voiture de Zarkow
  • Divers
    • Free online >
      • BlockBench
      • Cables
      • Effaceurs Arrière-Plan
      • Fractal Lab
      • Gaugan
      • Gravit Designer
      • Kinematic Simulator
      • Light Tracer
      • Image En Large
      • Monster Mash
      • Objets 3D
      • Origami Simulator
      • ONSHAPE >
        • Onshape extrude
      • p5.Js Web Editor
      • Pix2Pix
      • Piskel
      • Sculpt GL
      • Shapr3D
      • SketchUp
      • Snap
      • SPLINE
      • Stable Diffusion
      • Sumo Paint
      • TinkerCad
      • Topotopo
      • Vectary. >
        • Vectary
        • Doc Vectary VF
      • Vectr
      • Vervette
      • Voronator
      • Voxelizer
      • Wombo
      • Womp
    • Manuels >
      • Sauce Tomate (SU) >
        • 1001
        • Artisan: le Manuel
        • BoolTool 2
        • Doh
        • Flex - Series
        • Le Mètre à Ruban
        • LightUp >
          • Sur LightUp >
            • Au sujet de Lightup
            • Avis des Utilisateurs
            • Listes des mises à jours
          • LightUp 1.0 (31 pages)
          • LightUp Player >
            • Le Player
            • Le Web Player
            • Publier sur le Net
          • Tutos LightUp >
            • Eclairage IES
            • Lumière Volumétrique
            • Lumière Néon
            • Profondeur de Champ
            • Suppression des Lignes Cachées
            • Grilles de Lumières Paramétriques
            • Ombres sur Arrière-Plan
            • Réflexion
            • Eclairage Intérieur
          • Ressources
          • Exemples >
            • Interieur
          • LightUp 3.0 (6 pages)
          • LightUp Manuel 3.3 (77 pages)
          • LightUp 4.4 >
            • Eclairer Un Salon 1
            • Eclairer Un Salon 2
            • Eclairer un Salon 3
        • Medeek Construction
        • MSPhysics
        • PBR
        • PomPi
        • Podium >
          • Rendu Photoréaliste
          • Site Podium VF
        • Profil Builder 2
        • Samuel Tallet
        • Simfonia >
          • Déformations
          • Rotations 1
          • Tableur
          • Texte
          • Visibility
          • Discret
          • Table
        • SketchUV
        • SUbD
        • SU vers OpenSpace3D
        • Twilight Render V2
        • Video01 Plug SU >
          • Video01 Plug SU
          • Video02 Plug SU
          • Video03 Plug SU
          • Video04 Plug SU
          • Video05 Plug SU
        • Vertex Tools: le Manuel
        • Viz pour SketchUp
        • Visualizer
      • ArtForm
      • Cv3D Nurbs free
      • Flowscape
      • GAEA
      • GifCam
      • GroBoto : Le Manuel etc
      • Manuel 3DCoat V4 VF
      • Monolith
      • SCULPTRIS
      • SimLab Composer 2016
      • VPaint
      • White Rabbit CAD
    • DesignSpark Mechanical >
      • DesignSpark
      • DesignSpark 1
      • Video DesignSpark
    • PolyCAD >
      • PolyCAD
      • Charger PolyCAD Free
      • Courbes & Surfaces
      • X - Topologie
      • Utilisation d'Images
      • Transformer
      • Générateur de Coques
      • Nuages de Points
      • Sections
      • Intersection/Ajustement
      • IntelliHull
      • Scripter PolyCAD
      • Edition 3D
      • Contraintes
      • Exemple IntelliHull
      • Vidéos PolyCad
      • Aide - Divers PolyCAD
      • Holtrop
      • Format E57
      • Image Editeur
      • Hydro
      • Geometric Analysis
    • Qubicle Conctructor >
      • Qubicle 2.0
      • Qubicle
      • Export OBJ
    • 3DCoat Print free
    • Clavicula
    • FlowScape.
    • Goxel
    • MagicaCSG
    • MagicaVoxel
    • MarkovJunior
    • Meadow
    • Origami Robert Lang
    • pCon-planner
    • Pearltrees
    • Plasticity
    • PolyBrush
    • Shape
    • SolveSpace
    • Tablettes Chocolat
    • TwinMotion
    • TreeIt
    • Verve
    • Vengi
Moment Of Inspiration: Ze Zen Nurbs Modeleur !

Selection loop: Sélection d'arêtes qui se suivent . By Michael Gibson

Permet de sélectionner les arêtes d'une face sélectionnée
L
script:/*Loop selection*/moi.geometryDatabase.selectLoop();
​Etendre une sélection By Max Smirnov (Extend Selection)
script:/*Etendre selection*/ function es(edg){ var i,f; for (i=0; i<edg.length; i++) {f=edg.item(i).getFacesOfEdge(); f.setProperty('selected',1);}} var so = moi.geometryDatabase.getSelectedObjects(), sf=so.getFaces(), i; for ( i=0; i<sf.length;i++) es(sf.item(i).getEdges()); es(so.getEdges());

Réduire une sélection 
By Max Smirnov (Reduce Selection)
script:/*Réduire Loop selection*/ function es(edg){ var i,f; for (i=0; i<edg.length; i++) {f=edg.item(i).getFacesOfEdge(); f.setProperty('selected',0);}} var gd = moi.geometryDatabase; gd.invertSelection(); var so = gd.getSelectedObjects(), sf=so.getFaces(), i; gd.invertSelection(); for ( i=0; i<sf.length;i++) es(sf.item(i).getEdges());
By Michael
switching from the selection of the selected faces to the edges of the faces adjacent to the unselected faces
​script : /* commutation de la sélection des faces sélectionnées vers les arêtes des faces adjacentes aux faces non sélectionnées */ var gd = moi.geometryDatabase ; var seledges = moi.geometryDatabase.createObjectList() ; var faces = gd.getSelectedObjects().getFaces() ; for ( var i = 0 ; i < faces.length ; ++i ) { var edges = faces. item(i).getEdges() ; for ( var j = 0 ; j < edges.length ; ++j ) { var edge = edges.item(j) ; var allselected = true ; var facesofedge = edge.getFacesOfEdge() ; for ( var k = 0 ; k < facesofedge.length ; ++k ) { if ( !facesofedge.item(k).selected ) { allselected = false ; } } if ( !allselected || facesofedge.length == 1 ) { seledges.addObject( edge ) ; } } gd.deselectAll() ; seledges.setProperty( "selected", true ) ;)
evolve the face selection to a neighboring face that is coplanar with the current face selection
script: /* faire évoluer la sélection des faces vers une face voisine qui soit coplanaire avec la sélection actuelle des faces */ var faces = moi.geometryDatabase.getSelectedObjects().getFaces(); for ( var i = 0; i < faces.length; ++i ) { var f = faces.item(i); var edges = f.getEdges(); for ( var j = 0; j < edges.length; ++j ) { var e = edges.item(j); var faces2 = e.getFacesOfEdge(); for ( var k = 0; k < faces2.length; ++k ) { var f2 = faces2.item(k); if ( f2.id != f.id && f2.isPlanar && f.isPlanar && f.isOnPlane( f2.planarFrame ) ) f2.selected = true; } } }

 grow face selection to all neighboring faces that are coplanar with the current face selection:

script: /* étendre la sélection de faces à toutes les faces voisines qui sont coplanaires avec la sélection de faces actuelle :*/ while ( true ) { var did_one = false; var faces = moi.geometryDatabase.getSelectedObjects().getFaces(); for ( var i = 0; i < faces.length; ++i ) { var f = faces.item(i); var edges = f.getEdges(); for ( var j = 0; j < edges.length; ++j ) { var e = edges.item(j); var faces2 = e.getFacesOfEdge(); for ( var k = 0; k < faces2.length; ++k ) { var f2 = faces2.item(k); if ( f2.id != f.id && f2.isPlanar && f.isPlanar && f.isOnPlane( f2.planarFrame ) ) if ( !f2.selected ) { f2.selected = true; did_one = true; } } } } if ( !did_one ) break; }
This should extend the edge selection to neighboring edges that are within a 20 degree angle.
​Cela devrait étendre la sélection des arêtes aux arêtes voisines qui se trouvent dans un angle de 20 degrés.
script: /* Etendre la Sélection d'arête d'un pas */ var angle_degrees = 20; var cos_ang = Math.cos(angle_degrees * Math.PI / 180.0); var edges = moi.geometryDatabase.getSelectedObjects().getEdges(); for ( var i = 0; i < edges.length; ++i ) { var e = edges.item(i); var ptA = e.getStartPt(); var ptB = e.getEndPt(); var done = []; var faces = e.getFacesOfEdge(); while ( faces.length> 0 ) { var f = faces.item( faces.length-1 ); faces.removeObjectAt( faces.length-1 ); if ( done[f.id] ) continue; done[f.id] = true; var edges2 = f.getEdges(); for ( var j = 0; j < edges2.length; ++j ) { var e2 = edges2.item(j); var ptC = e2.getStartPt(); var ptD = e2.getEndPt(); var tol = 1.0e-6; var A = false, B = false, C = false, D = false; if ( moi.vectorMath.distance( ptA, ptC ) < tol ) { A = true; C = true; } else if ( moi.vectorMath.distance( ptA, ptD ) < tol ) { A = true; D = true; } else if ( moi.vectorMath.distance( ptB, ptC ) < tol ) { B = true; C = true; } else if ( moi.vectorMath.distance( ptB, ptD ) < tol ) { B = true; D = true; } if ( A || B ) { var tan_e = e.evaluateTangent( A ? e.domainMin : e.domainMax ); var tan_e2 = e2.evaluateTangent( C ? e2.domainMin : e2.domainMax ); if ( Math.abs( (tan_e.x * tan_e2.x) + (tan_e.y * tan_e2.y) + (tan_e.z * tan_e2.z) )> cos_ang ) e2.selected = true; var faces2 = e2.getFacesOfEdge(); for ( var k = 0; k < faces2.length; ++k ) { var f2 = faces2.item(k); if ( !done[f2.id] ) faces.addObject( f2 ); } } } } }
allows you to enter a longer string in one go
​Et voici une version qui permet de saisir une chaîne plus longue en une seule fois :

script : /* Etendre la sélection d'arêtes */ var angle_degrees = 20; var cos_ang = Math.cos( angle_degrees * Math.PI / 180.0 ); var done_edges =[]; while ( 1 ) { var any_change = false; var edges = moi.geometryDatabase.getSelectedObjects().getEdges(); for ( var i = 0; i < edges.length; ++i ) { var e = edges.item(i); if ( done_edges[e.id] ) continue; done_edges[e.id] = true; var ptA = e.getStartPt(); var ptB = e.getEndPt(); var done_faces = []; var faces = e.getFacesOfEdge(); while ( faces.length> 0 ) { var f = faces.item( faces.length-1 ); faces.removeObjectAt( faces.length-1 ); if ( done_faces[f.id] ) continue; done_faces[f.id] = true; var edges2 = f.getEdges(); for ( var j = 0; j < edges2.length; ++j ) { var e2 = edges2.item(j); var ptC = e2.getStartPt(); var ptD = e2.getEndPt(); var tol = 1.0e-6; var A = false, B = false, C = false, D = false; if ( moi.vectorMath.distance( ptA, ptC ) < tol ) { A = true; C = true; } else if ( moi.vectorMath.distance( ptA, ptD ) < tol ) { A = true; D = true; } else if ( moi.vectorMath.distance( ptB, ptC ) < tol ) { B = true; C = true; } else if ( moi.vectorMath.distance( ptB, ptD ) < tol ) { B = true; D = true; } if ( A || B ) { var tan_e = e.evaluateTangent( A ? e.domainMin : e.domainMax ); var tan_e2 = e2.evaluateTangent( C ? e2.domainMin : e2.domainMax ); if ( Math.abs( (tan_e.x * tan_e2.x) + (tan_e.y * tan_e2.y) + (tan_e.z * tan_e2.z) )> cos_ang ) { if ( !e2.selected ) { e2.selected = true; any_change = true; } } var faces2 = e2.getFacesOfEdge(); for ( var k = 0; k < faces2.length; ++k ) { var f2 = faces2.item(k); if ( !done_faces[f2.id] ) faces.addObject( f2 ); } } } } } if ( !any_change ) break; }
extend the selection tangentially
​Etendre la sélection tangentiellement by Cemortan_Tudor
Bascule une Sélection de Faces en Sélection d'Arêtes!!! Original

script: /* Bascule Sélection de Faces en Sélection d'Arêtes */ var gd = moi.geometryDatabase; var faces = gd.getSelectedObjects().getFaces(); gd.deselectAll(); for ( var i = 0; i < faces.length; ++i ) faces.item(i).getEdges().setProperty( 'selected', true );
​
Photo

Bascule une sélection d'arête en sélection de faces! Original
script: /* Bascule Sélection d'Arêtes en Sélection de Faces */  var processed_faces = [], processed_edges = []; var edges = moi.geometryDatabase.getSelectedObjects().getEdges(); for ( var i = 0; i < edges.length; ++i ) { var edge = edges.item(i); var faces = edge.getFacesOfEdge(); for ( var j = 0; j < faces.length; ++j ) { var face = faces.item(j); if ( processed_faces[face.id] ) { continue; } processed_faces[face.id] = true;  var all_selected = true;  var these_edges = face.getEdges();  for ( var k = 0; k < these_edges.length; ++k ) { var this_edge = these_edges.item(k); if ( !this_edge.selected ) { all_selected = false; break; } }  if ( all_selected ) { for ( var k = 0; k < these_edges.length; ++k ) { var this_edge = these_edges.item(k); processed_edges[this_edge.id] = true; }  face.selected = true; } } }  for ( var i = 0; i < edges.length; ++i ) { var edge = edges.item(i); if ( processed_edges[edge.id] ) { edge.selected = false; } }
A remarquer : pas besoin de cliquer 2 fois sur une arête commune, des arêtes orphelines ne sélectioonnent pas de faces!
Photo

Sélection du contour d'après une sélection d'arêtes original
script: /* Select Outlines v1.4 */ var gd=moi.geometryDatabase, so=gd.getSelectedObjects(); function ss(o,v){o.setProperty("selected",v)} function sl(o){ for ( var i=0; i<o.length; ++i ) o.item(i).getEdges().invertProperty("selected");} gd.selectLoop(); sl(so.getFaces()); sl(so.getSolids()); sl(so.getOpenBReps()); sl(so.getSingleFaceBReps()); ss(so.getBReps(),0); ss(so.getFaces(),0);

Isolation des objets sélectionnés Original
script: /* Isolation Multi-niveaux */ var states = []; var objs = moi.geometryDatabase.getObjects(); for ( var i = 0; i < objs.length; ++i ) { var obj = objs.item(i); states[obj.id] = obj.hidden; if ( !obj.selected ) { obj.hidden = true; } } var levels = []; try { levels = moi.command.getOption( 'multi-level isolate' ); } catch(e) {}; levels.push( states ); moi.command.setOption( 'multi-level isolate', levels );

Et pour récupérer les sélections​ multi-niveaux:

script: /* Révéler l'isolation*/ var levels = []; try { levels = moi.command.getOption( 'multi-level isolate' ); } catch(e) {} if ( levels.length > 0 ) { var states = levels.pop(); moi.command.setOption( 'multi-level isolate', levels ); var objs = moi.geometryDatabase.getObjects(); for ( var i = 0; i < objs.length; ++i ) { var obj = objs.item(i); var state = states[obj.id]; if ( state != undefined ) { obj.hidden = state; } } }Cliquer ici pour modifier.