User-Friendly Approach to 3D Modeling for Non-CAD Users

by Kenneth Lianto in Design > 3D Design

256 Views, 1 Favorites, 0 Comments

User-Friendly Approach to 3D Modeling for Non-CAD Users

OverallLayout.png

Turn Photos into 3D Printable Replacement Parts - No CAD Skills Required

Ever broken a plastic part on a household item and couldn't find a replacement? This Grasshopper script lets you create 3D printable replacement parts using just photos of the broken piece, no traditional CAD software or 3D modeling experience needed.

Simply take a few orthogonal (straight-on) photos of your object using your phone and a basic setup, process them to adjust contrast and crop, then let the script do the heavy lifting. The system automatically vectorizes your images, detects and smooths problem areas, and generates a 3D model you can immediately 3D print.

The script works best for relatively simple parts like towel hooks, cabinet knobs, belt buckles, curtain rings, and similar household items. Even for more complex objects, it creates a solid "starting point" model that you can refine in CAD or your 3D printer's slicer software.

Perfect for repair cafés, makerspaces, or anyone wanting to quickly recreate broken plastic parts without spending hours learning CAD software. If you can take a photo and measure with a caliper, you can make replacement parts!

Supplies

WorkflowProcess.png

Software Needed:

  1. Rhino 8
  2. Rhino plugins required
  3. Vectorize
  4. Human UI
  5. Elefront
  6. Metahopper
  7. Image manipulation software such as Photoshop or Adobe Lightroom

Hardware Needed

  1. Camera (Phone camera will suffice)
  2. A photobox or some way of getting consistent soft lighting to eliminate shadows
  3. Flatbed Scanner (Optional, but can be nice to get clean images for parts with flat surfaces)


The RAR file containing the Grasshopper script and the README file can be found on the GitHub page below

https://github.com/AtlasofWorlds/Orthogonal-Modelling/tree/main


The full detailed walkthrough on how to use the script can be found in the read me file attached below, the instructions on this instructables page is only a brief explanation

Taking Photos

unnamed (5).png
unnamed (6).png
unnamed (7).png

You can take pictures of the objects in a variety of ways. For example, I used a 30 euro lightbox, which was purchased from Amazon with an LED ring light at the top to evenly light the object and minimize harsh shadows, which would affect the quality of the vectorized curve.

If you don't want to purchase additional equipment, there are several guides online on how to make a DIY one yourself with a cardboard box and other extra materials. As long as the setup produces images where the object is evenly lit and free of harsh shadows, it will suffice.

You can even use a flatbed scanner to obtain images of parts. This really only works for objects that can rest evenly on the flatbed for most, if not all, of their relevant views, but for those objects, this works especially well.

Process Photos

ProcessedUnprocessed.png

Once you've captured the images using any of the methods described, process them in image manipulation software such as Photoshop, Lightroom, or your phone's built-in photo editor. Adjust the contrast and brightness to get a clear outline of the desired shape. Next, crop the images tightly so the object extends as close to the frame edges as possible; this maximizes accuracy when scaling the image to real-world dimensions.

In the images above the left side are unprocessed images and the right are the processed images

Choose Planes and Operations

PlaneOrientation.JPG
Screenshot 2025-10-22 233224.png
Screenshot 2025-10-22 233241.png
OverlapvsSubtract.png

Choose the planes that you require based on the photos you took and what kind of operation you want to do between the different surfaces you create. Overlap and Subtract are two operations available. The difference between the two operations can be see in the last image above

Insert Images and Vectorize

unnamed (10).png


In this section, you choose the image file you want to vectorize and input a threshold value that would provide the cleanest vector image. There is also a toggle that you have to click before the vectorized result is let through the rest of this script. This is so that you can tweak the threshold value till the result is satisfactory without causing massive performance issues.


Problem Area Detection

unnamed (11).png

In this section of the window, you find areas that aren’t as smooth as they are on the actual object and clean them up to achieve better results. The viewport shows the irregular parts of the curve being marked red. This section has two slider inputs, in which you can tweak how sensitive the script flags problem areas to more precisely only detect areas that are truly problematic, instead of also including areas that are part of the intended geometry. Samples (50-200, default 100) determine how many points along the curve are analyzed - more samples give better detection of small irregularities but take longer to process, while fewer samples run faster but might miss subtle irregularities. Threshold (0.00-1.00, default 0.15) sets the sensitivity for detection - lower values like 0.05 catch subtle bumps and minor roughness, while higher values like 0.4 or above only flag major problem areas.


Smooth Problem Areas

unnamed (12).png

Once problem areas are identified, the script separates the curve into the smooth sections (areas that don't need fixing) and the problem sections. You are output separately, so it is possible to edit only the problematic segments and then join everything back together into a clean, smooth curve. The viewport shows the areas of the curve that were flagged by the script as being irregular and have been smoothed out.

The two inputs are the Smoothing factor that determines how much each point moves toward this averaged position (0.00-1.00, Default 0.20 ), and the number of Iterations (0-50, Default 10). This process is repeated, with each pass making the curve progressively smoother. Again, just like in step 4, there is another toggle that the user needs to click before the smoothed result is let through the rest of the script.

Insert Obtained Measurements

Screenshot 2025-10-22 232457.png
unnamed (14).png

In this section of the window, you input the measurements of the object you want to recreate. It also includes a preview of the final surface after being resized. This is shown in Figure 18. There is also a short disclaimer regarding how the measurements might need to be varied slightly between the different planes, since Grasshopper’s boolean intersection/difference operations don't function well if the edges are exactly coincident.

The image with the example model also shows the dimensional axes

Repeat Steps 4-7 for All Planes Chosen in Step 3

Repeat steps 4-7 for all the planes you chose

Check and Create Final Model

Screenshot 2025-10-22 232805.png

But once you fill in the relevant fields for each of the plane subwindows, you can check the final model preview, which is found at the bottom of the main window, if everything is as you expected, and make changes if necessary. Once you are satisfied with the result, you can click a button found below the preview to bake the model, which is then ready to be exported as an STL file to be 3D printed.

Post Processing

Screenshot 2025-10-22 232944.png
Screenshot 2025-10-22 232930.png

Post-processing is done to the models to clean them up or add features that could not be added with the workflow. This can be added using CAD software of the user’s choice or using a feature built into most 3D printing slicing software. The latter is much easier to use for users who aren’t familiar with CAD.

The slicer allows you to add or subtract geometry, mirror parts, and perform other operations on models generated by the script.