FreeCad & Blender: Ultimaattinen Cad-to-poly-workflow
FreeCadissä:
- Avaa CAD-malli.
- Exporttaa siitä korkeatahkoinen versio.
- Valitse sen Body.
- Suorita seuraava macro:
# FreeCAD: Split shape into separate face meshes# Aseta tässä objektin nimi tai käytä valintaa
import FreeCAD, FreeCADGui, Mesh, MeshPart, Part
from math import radians
doc = FreeCAD.ActiveDocument
if not doc:
raise Exception("Avaa ensin dokumentti ja valitse objekti.")
# Jos haluat käyttää valittua objektia:
sel = FreeCADGui.Selection.getSelection()
if not sel:
raise Exception("Valitse objekti ennen makron ajoa (esim. Body tai Part).")
obj = sel[0]
shape = obj.Shape
# Aseta haluamasi mesh-parametrit:
# LinearDeflection = surface deviation (sama yksikkö kuin mallisi, esim. mm)
# AngularDeflection = kulmapoikkeama radiaaneina
LinearDeflection = 45 # esim. 0.1 mm — säädä mallisi kokoon sopivaksi
AngularDeflection = radians(22.5) # 22.5° -> 0.3927 rad
created = []
for i, face in enumerate(shape.Faces):
# meshFromShape palauttaa Mesh.Mesh-olion
m = MeshPart.meshFromShape(Shape=face, LinearDeflection=LinearDeflection, AngularDeflection=AngularDeflection, Relative=False)
name = f"{obj.Name}_face_{i+1}"
mesh_obj = doc.addObject("Mesh::Feature", name)
mesh_obj.Mesh = m
created.append(mesh_obj)
doc.recompute()
FreeCADGui.Selection.clearSelection()
for o in created:
FreeCADGui.Selection.addSelection(o)
print(f"Luotu {len(created)} mesh-objektia. Ne on valittu.")
- Laita LinearDeflection-arvoksi sellainen, joka tuottaa sopivan vähän mesh-tahkoja kaareviin pintoihin; esim. suorakulmaisissa pyöristyksissä 2 tai 4 on sopiva määrä.
- Suoritettuasi makron piilota Body ja tarkastele mesh-konvertoinnin lopputulosta; jos se ei ole hyvä:
- poista luodut Body_face-objektit
- valitse alkup. Body
- säädä makron LinearDeflection- ja/tai AngularDeflection-arvoja
- suorita makro uudestaan.
- Kun mesh-konvertoinnin lopputulos on tarpeeksi hyvä:
- valitse kaikki makron luomat Body_face-objektit
- valitse File → Export...
- exporttaa malli tyyppinään Wavefront OBJ - Arch module (*.obj).
Blenderissä:
- Tuo exportoitu malli valitsemalla File → Import → Wavefront (.obj);
- valitse Up Axis -arvoksi Z.
- Valitse Viewport Shading -valikosta Wireframe Coloriksi ja Object Coloriksi Random, jotta eri objektit erottuvat selvemmin toisitaan.
- Valitse kaikki mallit ja:
- siirry Edit Modeen Select Modella Edge
- valitse kaikki edget ja Edge → Clear Sharp from Vertices.
- Valitse kaikki objektit ja toteuta Bisect & Mirror;
- ole tarkkana, että leikkauslinjojen keskellä olevat lieriöobjekteja ei leikata niiden tahkojen läpi vaan ainoastaan särmiä pitkin.
- Valitse kaikki objektit Select Boxilla; ei Ctrl + A:lla;
- koska Bisect poistaa osasta objekteista kaiken datan, Select Box valitsee vain kaikki ne, joissa dataa on.
- Tee käänteinen valinta (Ctrl + I) ja paina Delete; näin kaikki "tyhjät" objektit poistetaan.
- Valitse kaikki särmät ja valitse Edge → Clear Sharp.
- Valitse kaikki tahkot ja valitse Face → Triangles to Quads.
- Tuo skeneen myös CAD-mallin korkeatahkoinen versio.
- Tee kaikki tarvittavat toimenpiteet topologian korjaamiseksi niin, että se toimii Subdivision surface -muokkainten kanssa;
- laita käsiteltyihin objekteihin Shrinkwrap-muokkain ja laita sen Target-objektiksi CAD-mallin korkeatahkoinen versio
- tee tarvittaessa tasaisiin kolmioista koostuviin pintoihin Inset, jonka jälkeen 90 asteen kulmien kärkipisteille käytä Tool → SharpCorner Toolia
- merkitse Insetin ja SharpCorner Toolin luomat särmät Sharpiksi
- kokeile (Insetin jälkeen) tasaisiin kolmioista koostuviin pintoihin QRemeshifyä
- korjaa pyöristetyt kulmat niin, että niiden tahkojen määrä on joko 2 tai 4.