Introduzione #
Lo script qui fornito, utilizzabile con il modellatore 3D OpenSCAD, consente di estrudere in altezza un qualsiasi disegno vettoriale in formato SVG
.
Lo script può trovare particolare utilità nella Stampa 3D, qualora si debba ottenere rapidamente un solido STL a partire da un disegno vettoriale, con l’ulteriore vantaggio di poter applicare una pendenza e una torsione al profilo di estrusione.
Utilizzo #
Posizionare un file SVG denominato draw.svg
all’interno della cartella che contiene lo script.
Aprire lo script con OpenSCAD, variare i parametri a piacimento e avviare la generazione del modello 3D.
I parametri di estrusione sono i seguenti:
Parametro | Descrizione |
---|---|
Base width |
La larghezza (mm) della base del modello risultante. |
Extrusion height |
L’altezza di estrusione |
Twist |
La torsione (in gradi) applicata al modello. |
Slope |
La pendenza (in gradi) applicata al profilo di estrusione. |
Layer height |
L’altezza di ogni passo di estrusione (ridurre il valore per incrementare la risoluzione della mesh) |
Il codice #
Il codice seguente:
- è stato verificato come funzionante con la versione 2021.01 di OpenSCAD;
- è distribuito con licenza Creative Commons CC-BY.
// OPENSCAD SVG EXTRUDER - Ver. 0.1
// This script extrude an SVG of your choiche at a desired height, optionally applying slope and twist to the extrudel model
// Instructions: put an SVG files named "draw.svg" into the same folder that contain this script. Remember to set the desired base width (mm) of the output model. Decrease the "layer height" value to increase mesh resolution.
// Coded by Marco Papi - www.marcopapi.it
// License: CC-BY - https://creativecommons.org/licenses/by/4.0/
// VARIABLES
base_width=100;
extrusion_height=50;
twist=-20;
slope=20;
layer_height=1;
// COMPUTE VARIABLES
layers=(extrusion_height/layer_height);
a_angle=(90-slope);
b_angle=(180-90-a_angle);
expansion=extrusion_height*(tan(b_angle));
scale_factor=((expansion*2) + base_width)/base_width;
// COMPUTE THE EXTRUSION
linear_extrude(height = extrusion_height, center = false, scale=scale_factor, twist = twist, slices = layers) {
resize (newsize=[base_width,0,0], auto=[true,true,false]) {
import("draw.svg", center = true);
}
}
A supporto il codice SVG del disegno alla base del modello 3D ritratto nell’immagine di apertura:
<?xml version="1.0" encoding="utf-8"?>
<!-- Created by Marco Papi, www.marcopapi.it -->
<svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 283.5 257.6" style="enable-background:new 0 0 283.5 257.6;" xml:space="preserve">
<path id="XMLID_6_" d="M190,0H93.4c-16.1,0-31,8.6-39.1,22.6L6,106.2c-8.1,14-8.1,31.2,0,45.1L54.4,235c8.1,14,23,22.6,39.1,22.6
H190c16.1,0,31-8.6,39.1-22.6l48.3-83.7c8.1-14,8.1-31.2,0-45.1l-48.3-83.7C221.1,8.6,206.2,0,190,0z M141.7,209.4
c-44.5,0-80.6-36.1-80.6-80.6s36.1-80.6,80.6-80.6s80.6,36.1,80.6,80.6S186.3,209.4,141.7,209.4z"/>
</svg>