Vari script, trucchetti e promemoria

Questa pagina contiene script e suggerimenti accessori che metto in rete più che altro per uso personale, ma che potrebbero interessare anche qualcun altro, o magari fornire lo spunto per nuove idee.

Generatore di poligoni per calculix (formato fbd)

Disegna poligoni ad n vertici divisi in triangoli, completi delle superfici, sul piano x-y. In pratica ogni vertice ha per coordinate
x(n)= rx * cos(2 pigreco/n)
y(n)= ry * sen(2 pigreco/n)
Usando rx ed ry diversi fra loro i vertici si dispongono lungo un'ellisse anzichè lungo una circonferenza. Tutte le entità (punti, linee, superfici) vengono incluse nel set "s1": in questo modo, in seguito, da cgx, con il comando
swep s1 s2 tra 0. 0. "delta z"
si ottengono solidi pronti da meshare.
E' scritto in python e si lancia da riga di comando nel solito modo, dopo aver scelto i parametri desiderati e averli impostati all'interno dello script, nella sezione apposita.

Esportare stl da Blender

È vero, Blender contiene già un filtro di esportazione per l'stl; però ne esce un "binary stl" che poi non riesco ad adoperare con gli altri programmi di disegno e modellazione 3d. Con questo scriptino, che legge le facce della mesh di Blender e le converte in uno o due triangoli ciascuna, ho risolto il problema.
È necessario scrivere a mano il nome della mesh che si intende esportare. Ovviamente il nome si trova (o si imposta) nel pannello "Link and materials" alla voce "Editing" di Blender, e va trascritto nell'apposito spazio all'inizio dello script.
Lo script preleva il vettore normale alla faccia per trascriverlo nell'stl: questo per consentire all'utente di stabilire se le normali del suo stl sono uscenti o entranti dalla superficie, mentre se si fosse dovuto desumere i vettori normali dalla posizione dei vertici delle facce sarebbe stato necessario tener conto del verso di percorrenza dei vertici stessi. Quindi così si è semplificato l'algoritmo; purtroppo Blender scrive le normali non nel riferimento assoluto, bensì in quello relativo alla mesh (cioè rispetto agli assi che compaiono selezionando la mesh stessa e premendo il pulsante Object -> Draw -> Axis). Se i due sistemi non coincidono occorrerebbe leggere il valore della rotazione e tenerne conto premoltiplicando i vettori per l'idonea matrice.
Lo script non esegue quest'ultimo passaggio perché ho sempre trovato più comodo allineare la mesh con gli assi fissi!

Far funzionare i moduli di python in Blender:

Non so se nelle versioni più recenti della mia il problema ci sia ancora, ma io ho penato un po' prima di ottenere una soluzione. Magari farà sorridere perché un è po' macchinosa, ma funziona, quindi la riporto qui.
Apro un shell, lancio python. Do i seguenti comandi:
import sys
from sys import path
print path
Ottengo una sequenza interminabile che trascrivo nel seguente banalissimo scriptino:
import sys
from sys import *
sys.path= "qui va la sequenza, completa di parentesi quadre"
Lo scriptino va dato in pasto a blender, che da quel momento è in grado di far funzionare qualunque script con qualunque modulo presente sul sistema.

Scriptino che traccia profili NACA a 4 cifre in formato fbd

NACA4.1.py

Anche questo è più che altro una bozza; il naso del profilo non riesce granché bene, ammettiamolo pure! Però, se occorre tracciare uno straccio di profilo alare, funziona. Questo vale tanto più per il calcolo strutturale, dove qualche approssimazione sulla forma non risulta grave come in quello fluidodinamico.
Funziona in python (e che altro?).
profilo 2409 estruso