Difference between revisions of "Arch OBJ/en"

From FreeCAD Documentation
Jump to navigation Jump to search
(Updating to match new version of source page)
(Updating to match new version of source page)
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
<languages/>
 
<languages/>
{{docnav|[[Arch DAE|DAE]]|[[Arch JSON|JSON]]|[[Arch_Module|Arch Module]]}}
 
  
Additionally to the standard FreeCAD [http://en.wikipedia.org/wiki/Wavefront_.obj_file OBJ] exporter, the [[Arch Module]] features an alternative exporter that exports coplanar faces as whole OBJ faces, instead of triangulating [[Part Module|Shape]]-based objects, like the standard exporter does.
+
{{Docnav
 +
|[[Arch_DAE|DAE]]
 +
|[[Arch_JSON|JSON]]
 +
|[[Arch_Workbench|Arch]]
 +
|IconL=
 +
|IconR=
 +
|IconC=Workbench_Arch.svg
 +
}}
 +
 
 +
== Description ==
 +
 
 +
Additionally to the standard FreeCAD [http://en.wikipedia.org/wiki/Wavefront_.obj_file OBJ] exporter, the [[Arch_Workbench|Arch Workbench]] features an alternative exporter that exports coplanar faces as whole OBJ faces, instead of triangulating [[Shape|Shape]]-based objects, like the standard exporter does.
 +
 
 +
== Exporting without GUI ==
 +
 
 +
Exporting without the graphical interface is possible from the command line, using the [[Mesh_Workbench|Mesh Workbench]] exporter only.
 +
 
 +
In this example, a STEP file is imported, the colors of the [[Shape|Shape]] are saved, then a mesh is created from it, the colors of the original object are re-applied to the faces of the new mesh, which is then exported to OBJ format. Since this is done with the Mesh Workbench, the result is a triangulated mesh.
 +
 
 +
{{Code|code=
 +
import Mesh
 +
import MeshPart
 +
import Import
 +
 
 +
data = Import.open("example.stp")
 +
shape = data[0][0].Shape
 +
shape_colors = data[0][1]
 +
 
 +
mesh = MeshPart.meshFromShape(Shape=shape, LinearDeflection=0.1, Segments=True)
 +
 
 +
face_colors = [(0, 0, 0)] * mesh.CountFacets
 +
 
 +
for i in range(mesh.countSegments()):
 +
    color = shape_colors[i]
 +
    segm = mesh.getSegment(i)
 +
    for j in segm:
 +
        face_colors[j] = color
 +
 
 +
mesh.write(Filename="new_example.obj", Material=face_colors, Format="obj")
 +
}}
 +
 
 +
== More information ==
 +
 
 +
* [https://forum.freecadweb.org/viewtopic.php?f=8&t=37452 Convert STEP to Wavefront OBJ with colors of faces]
  
 
==Tutorials==
 
==Tutorials==
 +
 
* [[Import_from_STL_or_OBJ|Import from STL or OBJ]]
 
* [[Import_from_STL_or_OBJ|Import from STL or OBJ]]
 
* [[Export_to_STL_or_OBJ|Export to STL or OBJ]]
 
* [[Export_to_STL_or_OBJ|Export to STL or OBJ]]
  
{{docnav|[[Arch DAE|DAE]]|[[Arch JSON|JSON]]|[[Arch_Module|Arch Module]]}}
 
  
 +
{{Docnav
 +
|[[Arch_DAE|DAE]]
 +
|[[Arch_JSON|JSON]]
 +
|[[Arch_Workbench|Arch]]
 +
|IconL=
 +
|IconR=
 +
|IconC=Workbench_Arch.svg
 +
}}
  
 
{{Arch Tools navi{{#translation:}}}}
 
{{Arch Tools navi{{#translation:}}}}
 
 
{{Userdocnavi{{#translation:}}}}
 
{{Userdocnavi{{#translation:}}}}
 +
[[Category:File Formats{{#translation:}}]]

Latest revision as of 16:02, 9 March 2022

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎polski • ‎português do Brasil • ‎čeština • ‎русский
Arrow-left.svg Previous: DAE
Next: JSON Arrow-right.svg

Description

Additionally to the standard FreeCAD OBJ exporter, the Arch Workbench features an alternative exporter that exports coplanar faces as whole OBJ faces, instead of triangulating Shape-based objects, like the standard exporter does.

Exporting without GUI

Exporting without the graphical interface is possible from the command line, using the Mesh Workbench exporter only.

In this example, a STEP file is imported, the colors of the Shape are saved, then a mesh is created from it, the colors of the original object are re-applied to the faces of the new mesh, which is then exported to OBJ format. Since this is done with the Mesh Workbench, the result is a triangulated mesh.

import Mesh
import MeshPart
import Import

data = Import.open("example.stp")
shape = data[0][0].Shape
shape_colors = data[0][1]

mesh = MeshPart.meshFromShape(Shape=shape, LinearDeflection=0.1, Segments=True)

face_colors = [(0, 0, 0)] * mesh.CountFacets

for i in range(mesh.countSegments()):
    color = shape_colors[i]
    segm = mesh.getSegment(i)
    for j in segm:
        face_colors[j] = color

mesh.write(Filename="new_example.obj", Material=face_colors, Format="obj")

More information

Tutorials


Arrow-left.svg Previous: DAE
Next: JSON Arrow-right.svg