ART| KJELL EMANUELSSON
keKit 1.037 181114 - Collection of some of my fire & forget scripts, more or less niche case uses. (the best kind!)
Installation: Open user content folder (available in modo menu) and put the kit folder in the plugin folder. See kit install video.
Use: Mouse-hover over entries in the kit menu in modo, or,
Most scripts have info (instructions & argument options etc) in the top of the .py file: Just open them in a text editor.
If you already have any of these scripts installed separately - You need to remove those to avoid conflicts with the kit.
You may of course download the kit and just use scripts separately (It may or may not work, I make no promises! )
For loose scripts: Place the .py (and if included, .cfg) files in user scripts / config - unless otherwise noted. (Helpful tutorial here ).
Tested on modo 12.1v1 mostly. Some on modo10 & 11. Some scripts will probably not work on older versions.
Update: Overwrite old kit!
Should work 99% of time, but, Modo *may* still retain info in the main cfg causing some compatibility issues.
No easy fix here afaik? Remove all kit entries from main cfg or just use a fresh cfg....
Download by clicking banner:
Update 1.037 - Fixed & Added new toolmode for bbox: Local (uses item transforms for orientation) + (working in both world space and local space)
Update 1.037 - MouseMirror 2.0 - Functionality change : In POLY MODE now only mirrors SELECTION. VERT or EDGE selection will CONNECT.
Update 1.036 - Unrotator 1.23 - bugfix! doh.
Update 1.036 - Unrotator 1.22 (should not need using "flip" as much now) and some adjustments to unwrapper & uvplanarselected.
Update 1.035 - Added ke_fit2grid v1.0 Instructions pic here
Snaps every selected vert from element selection (or all verts, if in item mode) to nearest grid position as specified.
Meant for low poly use, a few verts at a time - will be very very slow on > 1k vert selections.
- Verts already on the specified grid will not be fit to grid.
- See the count of fitted verts in the event log.
- Fitted verts will be selected. ( set "select_fitted" variable to False to skip. )
- Could be useful just to check if you are actually on grid...
- Assuming metric units used (meters: just convert the arguments (yourself!) in the pie cfg if needed;>)
Update 1.034 - Added ke_slice and ke_fillslicer (unlisted) + ke_edgesplit (unlisted) -bugfixes to ke_center2selected (works in item mode now...) and TripleSplitSpin.
Update 1.033 - Updated TripleSplitSpin 1.3 - Added default split behaviour mode (splits all polys sharing verts)
Update 1.032 - Updated TripleSplitSpin 1.2 - Now stand alone! Also, has spikey! (see video here)
Update 1.021 - Updated Unrotator with edge selection tweak.
Update 1.02 - Added Mesh Item (& instance) support to Mouse Mirror & Mouse Flip (+ pie menu w. macro)
Update 1.0 - Somewhat final - added Unrotator, CircleQuad +some minor tweaks & stuff. Some scripts have been replaced in the menu, still in the kit tho.
Update 0.21 - Nailgun 1.0
Update 0.2 - Speed improvements: Nailgun (Major), QuickPaste (minor), also added the slots to Nailgun, finally. new script "placeItemThere"
Update 0.15 - Added Rot2GroundCenter, offsetWP2sel, RotWPy90 + pie menu update.
NOTE : ALL SCRIPTS ARE IN THE KIT
Script specific info / videos: (Somewhat older Selection, not exhaustive list, probably not updated...check update comments :))
Simple script that fits/aligns the work plane contextually and activates your primitive tool of choice:
Nothing selected = Default primitve tool, at current scene work plane.
Element selected = Aligns workplane to selection and fires set primitive tool.
Mouse over = Aligns workplane to (unselected) element under the mouse cursor and fires set primitive tool.
2.1 Update : Added "unit" argument - replaces CTRL-clicking for unit prim at 0,0,0 +does not reset settings (seg/sides etc) for cylinder, sphere and cone tool!
Complementary Macro : ke_tooldrop - to reset work plane when you are done and drop the tool, you can map this to 'Q' or what not. See video HERE.
Note :The Macro is included in the kit.
Creates unit size (+length fitting modes) primitives based on different types of selection. First selected "island" is intended prim pos/size.
- Uses modos built in primitive tool for prim settings/creation.
- User argument overrides available for sides and segments values
- Multiple item support (only processes first two items) --> Item Selection order is important <-- First item selections always first island.
- Basic symmetry support (world axis ONLY - does not support item transform compensation or workplane symmetry)
2.43 : Default to poly from item mode, Unitconversion fixes
2.41 : Added unit conversion (All SI & Imperial units + Game Units)
2.3 : No-Select symmetry fix
2.1 : Fixed item transform compensation issue (from vert position type)
Extracts selected polygons and thickens them - automatically setting the shifted distance to the shortest edge length OR
sets shift to the distance to the second selection island (via point to plane calculation).
Selection order important - first island is the intended operation, second is distance.
With multiple items selected, order is important : first mesh is op, second is distance.
NOTE : Symmetry is not supported. it will restore symmetry to avoid dupe polys, but selection treated as above (if islands)
Work plane will be retained also.
Doubles or halves size - When scaletool is active.
Doubles by default. add "half" as argument to half size selection: "ke_stepscale.py half"
(will not keep element scale values - always at 100% in tool)
Suggest mapping contextual hotkey to "transform" tool (weirdly same mapping for scaling - will only work when scale tool is active still)
Note: if mapped to mouse btns = modo jankiness -> req perfectly still mouse...
Makes a bbox. Everyone has to make one of these scripts, right? More like a reminder that I really want a convex hull script (not sure I want to/can make one tho)
Selectngons, weightngons & selectbetween:
A few simple macros for quicker selections: Select all connected ngons -> a version that also applies edge weighting.
Also, a useful macro to 'select between' a little easier.
EDIT: It seems this type of 'select between' is already standard in Modo (at least in 11.2, I have no idea when it was introduced (9?), had this macro since the age of the dinosaurs...) So, You dont need it - just hit SHIFT-RMB....doh.
Makes pipes along element selections (using tube tool):
VERTS (in selected order),
EDGES (in any order - crossing loops will cause random directions), and POLYGON faces (makes a border edge selection)
(at least 2 verts, 1 edge or 1 face. vert mode only makes one tube.)
Edge loops ,if continous, are CLOSED unless using the scale argument, leaving uncontinous loops OPEN.
By default it uses the values from the TubeTool for sides,segments and radius.
Symmetry is turned off during operation and turned on again afterwards if on.
Workplane placement will be retained after operation.
Mirrors selected mesh (select edges or polys) towards mouse pointer locally - meaning next to the bounding box (on relevant axis, as indicated by axis gizmo down left)
Flips your selected & connected polygons based on the mouse pointer position in relation to your selection and your viewport orientation:
Basic world axis symmetry support.
Option: Fit workplane beforehand for custom angles. (mouse placement not important)
Tip: dont place mouspoint *too* close to selection, pref a bit outside selection bbox.
Known issue: If you undo, the WP might be locked to preferred angle: Just reset wp to unlock.
Nailgun 1.0 & QuickPaste 1.1
1.0 - Enabled symmetry move. Fixed offset. Fixed selection bug(s).
0.91 - Workflow improvements (repositions when selecting instanced items now)
0.5 - Major speed improvement, added the slots!
Instances "loaded" item to where you point the mouse (on *any* mesh item - *except instances*)
1.1 - Minor speed improvement, no longer uses Paste.Tool, removed "fit" opt.
Select POLYS to copy and point your mouse at intended target poly to align to.
Source polys should be oriented "straight up" in Y axis. Option: Set WP beforehand for specific wp-placement.
Aligns element selection straightens/unrotates with position + 'unrotation' (rotation resets) from aligned workplane
1. Fit Workplane to where you want the 'bottom'
2. Select any elements. Connected elements will be selected, so no need to select all.
Note : Workplane Y axis should point 'outwards'..
Turns element selection to a new item with position and rotation from aligned workplane.
1. Fit Workplane to where you want the 'bottom' of your new item.
2. Pick EDGES or POLYGONS that will be itemized. Connected mesh will be selected, so no need to select all.
3. The FIRST vertex selection = CENTER offset position (where your center POSITION will be) instead of workplane center.
(Verts will thus also be checked in EDGE/POLY mode, so keep vert selections empty unless you want an offset center.)
argument : dupe - Makes new item. if you prefer to keep the original geo too.
Note : Workplane Y axis should point 'outwards'.
offsetWP2sel 1.0 ( and RotWPy90 )
Rotate to ground and center - "Bottom" determined from first selected poly (or pre-fitted Workplane). Select additional polys to be included. (Script will use select.connect, so no need select all connected polys.)
Option: Select one vert to offset centered placement (origo position) *** Make sure no verts are selected if you dont want this ***
Offsets an active work plane to the average position of any element(s) selected.
RotWPy90 - Rotates active wp along Y (to re-orient X & Z directions)
1.21 - Quick fix for open border edge selections to reduce need of flip command.
This will auto-flip when vert in edge selection is part of an open border (no cap cyl)
TLDR: Do you know the "rotate to or unrotate" script by seneca menard? It's like that.
Else: When you point at the connected mesh (or to "space") the script Unrotates connected element selection, using the selection geo as vectors to "straighten" it, OR,
Places connected geo on OTHER mesh surfaces you point to. OR, where an active Workplane is fitted, if any.
Poly mode: First face is the new "bottom" used for vector calc. Add more to include unconnected geo.
Edge/Vert mode: Have at least three verts. Use poly mode to add unconnected geo. Be sure to be in edge/vert mode for those to be used as bottom.(Also make sure to *not* have polys selected in vert/edge mode if you *dont* want them included)
Item mode: Unrotates simply resets item rotation. Place by pointing at other mesh surface.
Duplicate/Instance - Duplicates selection (items) when placing.
Symmetry: Applies simple world mirror operation. (It checks for VISIBLE (hidden =/= invisible!) items at the mirror position. jfyi.)
Bevels a subdivided circle ngon from poly selection islands (for making holes or cylindrical protrusions or sumn)
Note: Uses radial align. In a very slow macro-ish way - expect LONG waits on large selections.
Also, intended for square-ish selections - may get wonky on long rectangles ( and uneven ngons).
Optional modes :
each face - Bevels each single face instead of selection islands
perfc - Uses Seneca Menards "perfectcircle.pl" instead, if you have it. (each has use cases)