FreeCad & Blender: Ultimaattinen Cad-to-poly-workflow

 

FreeCadissä:

  1. Avaa CAD-malli.
  2. Exporttaa siitä korkeatahkoinen versio. 
  3. Valitse sen Body.
  4. 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.")

    1. 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ä.
    2. Suoritettuasi makron piilota Body ja tarkastele mesh-konvertoinnin lopputulosta; jos se ei ole hyvä:
      1. poista luodut Body_face-objektit
      2. valitse alkup. Body
      3. säädä makron LinearDeflection- ja/tai AngularDeflection-arvoja
      4. suorita makro uudestaan. 
  5. Kun mesh-konvertoinnin lopputulos on tarpeeksi hyvä:
    1. valitse kaikki makron luomat Body_face-objektit 
    2. valitse File → Export...
    3. exporttaa malli tyyppinään Wavefront OBJ - Arch module (*.obj).

 Blenderissä:

  1. Tuo exportoitu malli valitsemalla File → Import → Wavefront (.obj);
    1. valitse Up Axis -arvoksi Z.
  2. Valitse Viewport Shading -valikosta Wireframe Coloriksi ja Object Coloriksi Random, jotta eri objektit erottuvat selvemmin toisitaan.
  3. Valitse kaikki mallit ja:
    1. siirry Edit Modeen Select Modella Edge
    2. valitse kaikki edget ja Edge → Clear Sharp from Vertices.
  4. Valitse kaikki objektit ja toteuta Bisect & Mirror;
    1. ole tarkkana, että leikkauslinjojen keskellä olevat lieriöobjekteja ei leikata niiden tahkojen läpi vaan ainoastaan särmiä pitkin. 
  5. Valitse kaikki objektit Select Boxilla; ei Ctrl + A:lla;
    1. koska Bisect poistaa osasta objekteista kaiken datan, Select Box valitsee vain kaikki ne, joissa dataa on.
  6. Tee käänteinen valinta (Ctrl + I) ja paina Delete; näin kaikki "tyhjät" objektit poistetaan.
  7. Valitse kaikki särmät ja valitse Edge → Clear Sharp.
  8. Valitse kaikki tahkot ja valitse Face → Triangles to Quads.
  9. Tuo skeneen myös CAD-mallin korkeatahkoinen versio.
  10. 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.