Download Version 2.0: jj_fillet.pl

Introduction

JJ_Fillet is a tool for bevelling single points into arcs. With the introduction of rounding for point bevels in modo 201 jj_fillet is less useful than before but still has features that are not natively available in 201 - bevel rounding restricts you to certain increments, for example. More importantly, features like adaptive filleting (to give you even spaced edge lengths over multiple selected points, inverse bevels (great for putting circles in the middle of geometry and the maximum features (which fillet to the maximum degree possible) are all unique. Modo 10x users should continue to use version 1.11 (available at the bottom of this page).

  • Updated to work with modo 201
  • Creates both convex and concave arcs at a user-specified distance and step.
  • Lets you create an equal number of steps per arc or, using adaptive, steps that are equidistant.
  • Operates on multiple points (but only one layer at a time).
  • Has two different maximum modes where the arc will be created at the maximum possible size i.e. only constrained by the adjacent points. The two modes are max per poly or max overall.
  • Will directly convert single points to circles inside geometry
  • Will directly convert squares to circles, rectangles to ovals.
  • Can optionally create a centre point and two point poly axis for further manipulation
  • Can smooth out low poly arcs into higher resolution ones
  • Works on points/polys at any orientation
  • Optionally respects underlying poly selections - only fillets points on selected polys

Basic Fillet
Simple fillet.

Args:
jj_fillet.pl .25 5


Max Fillet
The same command but set to max (which overrides the distance in slot one and makes the max possible arc using the step setting i.e. 5):

Args:
jj_fillet.pl .25 5 max

Inverse Fillet
Using Invert lets you take a 'bite' out of a corner:

Args:
jj_fillet.pl .25 5 inv

Inverse Fillet on Centre Point
On a centre point, the fillet will create a circle

Args:
jj_fillet.pl .25 5 inv

Inverse Fillet on Multiple Centre Points
On multiple centre points, the fillet will create multiple circles

Args:
jj_fillet.pl .05 5 inv

Adaptive Off
If you don't use adaptive then you'll get exactly the number of steps you specify. On tighter corners this can lead to the points bunching up or being spread out on obtuse angles.

Args:
jj_fillet.pl .25 5

Adaptive On
With adaptive on, the script tries to create an even spacing between all the points so that the edge lengths are all similar. The unit distance is distance divided by step.

Args:
jj_fillet.pl .25 5 adapt

Max and Max 2
With max on (not max2) each point on each poly will be filleted to its maximum extent (see image adjacent).

Args:
jj_fillet.pl .25 5 max

Max and Max 2 (Cont.)
However, it's probably best to turn on adaptive so that the edge lengths along each arc are more or less equal.

Args:
jj_fillet.pl .25 5 max adapt

Max and Max 2 (Cont.)
With max2 on the fillet is constrained to the smallest max available on all the adjacent polys. This is usually neater.

Args:
jj_fillet.pl .25 5 max2

Axes
You can create a two point poly with one point at the centre of the circle that defines each fillet. You can use the two point poly as a rotation axis for the rotate tool. The axis is 5cm long. Email me if you want to know how to change that :-).

Args:
jj_fillet.pl .25 5 axis

Poly Selections Only
New in version 1.1 is the ability to constrain the fillet to selected polys only. If you have an underlying poly selection, jj_fillet will only fillet points on those polys. Note that if you use this to create a circle from a quad, none of the resulting points will be merged with the rest of the surrounding geometry.

Args:
jj_fillet.pl .25 5 selpolys

Special Cases
In this case you'd almost always want to turn adaptive on otherwise (as on the image on the right) your edges will vary in length around the circle.

Args:
jj_fillet.pl .25 5 inv

Special Cases (cont.)
With adaptive on the edge lengths will be much more even - however, they will not be exactly even i.e. it won't be a perfect circle. Sadly, because I have to round up the edge lengths, I can't guarantee they'll be floating point accurate for each segment.

Args:
jj_fillet.pl .25 5 inv adapt

Special Cases
Square to circle.

Args:
jj_fillet.pl .25 5 max

Special Cases
Square to arch

Args:
jj_fillet.pl .25 5 max

Special Cases
Smoothing out low poly geometry..

Args:
jj_fillet.pl .25 5 max


How to Install JJ_Fillet with the Form



There are currently two components to jj_fillet - the script itself, and a configuration file to set up the form.

jj_fillet.pl - the perl script itself
jj_fillet.cfg - the file that creates the form.

Option 1 (Modo 2 only)
On both a PC and Mac you have a default location for Application Data. Inside the application data directory there is a Luxology directory which usually hosts your config/preference files and licence data. Within that directory modo provides the ultra useful Configs and Scripts directories. Any scripts and configs you place in here will be automatically available to you. This has to be the preferred option.

Option 2
The way the form is configured at the moment means that if you place it directly into your modo resrc folder (on OSX you'll need to open the modo package contents and place it in the Resources folder), the form will become available to you next time you launch the application. This relies on modo's default behaviour but can result in a very cluttered resrc directory (especially if you're leeching a lot of cool stuff from Vertex Monkey). If you then place the script itself in the same directory as modo.app/modo.exe it will be available to the form without any further alterations being required.

Option 3
Alternatively, you can create your own location to store both the script and config file but will need to adjust the path locations in the jj_fillet.cfg file. The benefit of this approach is that you have control over where you keep your external files and they won't get overwritten should you update modo.

It doesn't really matter where you put them so long as you make sure you have correct paths in the relevant files.

Once you've chosen a location for both files then you need to open up the jj_fillet.cfg file in a text editor and put in the relevant path to the actual script using search and replace so that every time the script is called it has the correct path. Here's an example of how a single entry should look (but, remember, every entry for the script should be changed to the correct path using a single search and replace).

On a Mac:

<list type="Control" val="cmd @{/Users/julianjo/Desktop/current pbs/jj_fillet.pl} user">
<atom type="Label">JJ_Fillet</atom>
<atom type="Hash">54409416674:control</atom>
</list>

On a PC:

<list type="Control" val="cmd @{C:\Directory with Spaces\subdirectory\jj_fillet.pl} user">
<atom type="Label">JJ_Fillet</atom>
<atom type="Hash">54409416674:control</atom>
</list>


If the path has a space in it then the script needs to enclosed in curly brackets e.g.

@{/Users/julianjo/folder with spaces/jj_fillet.pl}

It's easy to mistakenly delete a quote mark or a space, so make sure you find and replace just the path.

Once you've configured the path in the config file you're nearly ready to roll. Fire up modo, go to File:Config Import and import the jj_fillet.cfg file you've just amended. This tells modo to load that file (i.e. the menu for Loop Hop), every time you launch modo.

For ease of access to the form simply assign the form to a key.

When The Script Runs I Get Bombarded With an Error Message

The 'General Failure' message is a known issue with modo and can be easily fixed.



Luxology themselves have released a patch for this error message on Vertex Monkey:

http://www.vertexmonkey.com/scripts_bugfix.php

Alternatively, you can just set the 'In the future' drop down to let modo know you don't want to see this message again. The error sounds dramatic but isn't, it's totally inconsequential. Luxology's bugfix script does simply that - it turns off that specific error message.

Known Issues

1. When you first use the form, the values for each of the fields don't exist and the form looks corrupted. You need to run the script once so that modo is aware of the existence of the step, distance, toggle fields etc. You can do this by using F6 to navigate to the script and firing it off once.

Versions

Version 2.0:
jj_fillet.pl
- Current version.

Version 1.11:
jj_fillet.pl
Fixed bug where polys could be flipped when using inv/max functions (24th Oct 2005).

Version 1.1:
jj_fillet.pl
- Added feature to fillet only selected polys

Version 1.0:
jj_fillet.pl
- Original version


Julian Johnson
julian@exch.demon.co.uk