FreeCAD .FCStd importer for Blender 2.80
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Be nice to others! Respect the FreeCAD code of conduct!
FreeCAD .FCStd importer for Blender 2.80
Hello all
today i allowed me to 'fork' yorikvanhavre great io_import_fcstd blender addon.
i have created a github repository so its easier to manage additions from different people:
https://github.com/s-light/io_import_fcstd
@yorik i hope it is ok for you how i have done this...
(if you like, iam happy to add you as Collaborator)
pleas let me know what you think of it!
This topic should be a 'go to' resource that is also linked from the repository readme..
my first goal is to add some PartDesign support in there in the next days...
sunny greetings
stefan
today i allowed me to 'fork' yorikvanhavre great io_import_fcstd blender addon.
i have created a github repository so its easier to manage additions from different people:
https://github.com/s-light/io_import_fcstd
@yorik i hope it is ok for you how i have done this...
(if you like, iam happy to add you as Collaborator)
pleas let me know what you think of it!
This topic should be a 'go to' resource that is also linked from the repository readme..
my first goal is to add some PartDesign support in there in the next days...
sunny greetings
stefan
Re: FreeCAD .FCStd importer for Blender 2.80
Very cool. Yea, I wondered why yorik put that in a gist and not in a repo.
BTW, Our forum software is lame when it comes to @mentions. You need to do this thing to get @yorik's attention (which BTW, will only be when he gets back from vacation).
BTW, Our forum software is lame when it comes to @mentions. You need to do this thing to get @yorik's attention (which BTW, will only be when he gets back from vacation).
Actually, I'm slightly joking, the most important part is the user_idyorik_the_wise wrote:
Alone you go faster. Together we go farther
Please mark thread [Solved]
Want to contribute back to FC? Checkout:
'good first issues' | Open TODOs and FIXMEs | How to Help FreeCAD | How to report Bugs
Please mark thread [Solved]
Want to contribute back to FC? Checkout:
'good first issues' | Open TODOs and FIXMEs | How to Help FreeCAD | How to report Bugs
Re: FreeCAD .FCStd importer for Blender 2.80
thanks Kunda1.
slowly i make progress
currently split up the 'mega long all in one' function into 'meaningfull' sub-functions..
as i use the 0.19 daily builds i also created some test FreeCAD files with linked together things..
hopefully i am able to get this working
sunny greetings
slowly i make progress
currently split up the 'mega long all in one' function into 'meaningfull' sub-functions..
as i use the 0.19 daily builds i also created some test FreeCAD files with linked together things..
hopefully i am able to get this working
sunny greetings
Re: FreeCAD .FCStd importer for Blender 2.80
Great news!
Test files are very much appreciated as well.
Thanks for your work so far.
Cheers!
Alone you go faster. Together we go farther
Please mark thread [Solved]
Want to contribute back to FC? Checkout:
'good first issues' | Open TODOs and FIXMEs | How to Help FreeCAD | How to report Bugs
Please mark thread [Solved]
Want to contribute back to FC? Checkout:
'good first issues' | Open TODOs and FIXMEs | How to Help FreeCAD | How to report Bugs
Re: FreeCAD .FCStd importer for Blender 2.80
i started to experiment with the 'Part' group things...
but found a major problem:
from the script i can not find the 'body' objects.
more details in
https://forum.freecadweb.org/viewtopic.php?f=22&t=39779
if anybody has a idea why this is the case please let me know...
for the 'body' (aka PartDesign) objects my idea was to let the script just create a 'simple copy' of this and add it then with the existing part-to-mesh function.
for the 'Part' (aka Groups) my idea was to just traverse the group objects recusive - and in this way just import all the objects..
sunny greetings
stefan
but found a major problem:
from the script i can not find the 'body' objects.
more details in
https://forum.freecadweb.org/viewtopic.php?f=22&t=39779
if anybody has a idea why this is the case please let me know...
for the 'body' (aka PartDesign) objects my idea was to let the script just create a 'simple copy' of this and add it then with the existing part-to-mesh function.
for the 'Part' (aka Groups) my idea was to just traverse the group objects recusive - and in this way just import all the objects..
sunny greetings
stefan
Re: FreeCAD .FCStd importer for Blender 2.80
I didn't check with detail your tests, but I think you can test for obj.TypeId == "PartDesign::Body".
Each PartDesign Body has a Tip which indicates the last feature that it contains, and therefore the solid object that you want to export. That is, you don't want every intermediate operation in the Body, only its Tip.
Code: Select all
shapes = []
doc = App.ActiveDocument
for obj in doc.Objects:
if obj.TypeId == "PartDesign::Body":
print(obj.Label)
shapes.append(obj.Tip.Shape)
Always add the important information to your posts if you need help. Also see Tutorials and Video tutorials.
To support the documentation effort, and code development, your donation is appreciated: liberapay.com/FreeCAD.
To support the documentation effort, and code development, your donation is appreciated: liberapay.com/FreeCAD.
Re: FreeCAD .FCStd importer for Blender 2.80
hi vocx,
thanks for your reply!
the hint with the tip is very good
currently iam not getting any "PartDesign::Body" objects if i read the document from a python script outside FreeCAD.
that is my main problem..
i stripped down the test script to a 'basic stand alone script':
https://github.com/s-light/io_import_fc ... _simple.py
(you have just to change the path to FreeCAD.so and to your .FCStd file)
if i copy and past it into the FreeCAD python console i get this output:
if i run it from commandline:
intern it lists 85 objects.
from extern only 72.
and i also tried with 'doc.getObjectsByLabel'
and the 'octagon_body' is not found if called from extern.
and yes - the hole blender FreeCAD import is finally running from inside blender.
and i would like to not have a second 'exporter' in FreeCAD...
(this would make 'update handling' more difficullt i think..)
iam happy to try anithing to get to the root cause for this
sunny greetigns
stefan
thanks for your reply!
the hint with the tip is very good
currently iam not getting any "PartDesign::Body" objects if i read the document from a python script outside FreeCAD.
that is my main problem..
i stripped down the test script to a 'basic stand alone script':
https://github.com/s-light/io_import_fc ... _simple.py
(you have just to change the path to FreeCAD.so and to your .FCStd file)
if i copy and past it into the FreeCAD python console i get this output:
Code: Select all
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> objects = doc.Objects
>>> print("doc.Objects", len(objects))
doc.Objects 85
>>> print_objects(objects)
Name Label TypeId p [Parents] i [InList] o [OutList] g [Group]
obj: Part my_final_assembly App::Part p:0 i:0 o:7 g:6
obj: Origin Origin App::Origin p:1 i:1 o:6
obj: X_Axis X_Axis App::Line p:0 i:1 o:0
obj: Y_Axis Y_Axis App::Line p:0 i:1 o:0
obj: Z_Axis Z_Axis App::Line p:0 i:1 o:0
obj: XY_Plane XY_Plane App::Plane p:0 i:1 o:0
obj: XZ_Plane XZ_Plane App::Plane p:0 i:1 o:0
obj: YZ_Plane YZ_Plane App::Plane p:0 i:1 o:0
obj: Link box_panel_part App::Link p:1 i:1 o:3 g:1
obj: Link001 front_panel_part App::Link p:1 i:1 o:1 g:1
obj: Link_i0 Link_i0 App::LinkElement p:2 i:2 o:3 g:1
obj: Link_i1 Link_i1 App::LinkElement p:2 i:2 o:3 g:1
obj: Link002 lamp_part App::Link p:2 i:2 o:1 g:2
obj: Array lamp_Array Part::FeaturePython p:1 i:1 o:3
obj: Body floor_body PartDesign::Body p:1 i:3 o:5 g:3
obj: Origin001 Origin001 App::Origin p:1 i:1 o:6
obj: X_Axis001 X_Axis001 App::Line p:0 i:1 o:0
obj: Y_Axis001 Y_Axis001 App::Line p:0 i:1 o:0
obj: Z_Axis001 Z_Axis001 App::Line p:0 i:1 o:0
obj: XY_Plane001 XY_Plane001 App::Plane p:0 i:2 o:0
obj: XZ_Plane001 XZ_Plane001 App::Plane p:0 i:1 o:0
obj: YZ_Plane001 YZ_Plane001 App::Plane p:0 i:1 o:0
obj: Sketch floor_Sketch Sketcher::SketchObject p:1 i:2 o:1
obj: Pad floor_Pad PartDesign::Pad p:1 i:3 o:1
obj: Box Cube_Hidden Part::Box p:0 i:0 o:0
obj: Sphere world_sphere Part::Sphere p:0 i:0 o:0
obj: Part001 octagon_part App::Part p:0 i:0 o:2 g:1
obj: Origin002 octagon_Origin App::Origin p:1 i:1 o:6
obj: X_Axis002 X_Axis002 App::Line p:0 i:1 o:0
obj: Y_Axis002 Y_Axis002 App::Line p:0 i:1 o:0
obj: Z_Axis002 Z_Axis002 App::Line p:0 i:1 o:0
obj: XY_Plane002 XY_Plane002 App::Plane p:0 i:1 o:0
obj: XZ_Plane002 XZ_Plane002 App::Plane p:0 i:1 o:0
obj: YZ_Plane002 YZ_Plane002 App::Plane p:0 i:1 o:0
obj: Body001 octagon_body PartDesign::Body p:1 i:1 o:5 g:3
obj: Origin003 Origin003 App::Origin p:1 i:1 o:6
obj: X_Axis003 X_Axis003 App::Line p:0 i:1 o:0
obj: Y_Axis003 Y_Axis003 App::Line p:0 i:1 o:0
obj: Z_Axis003 Z_Axis003 App::Line p:0 i:1 o:0
obj: XY_Plane003 XY_Plane003 App::Plane p:0 i:2 o:0
obj: XZ_Plane003 XZ_Plane003 App::Plane p:0 i:1 o:0
obj: YZ_Plane003 YZ_Plane003 App::Plane p:0 i:1 o:0
obj: Sketch001 octagon_sketch Sketcher::SketchObject p:1 i:2 o:1
obj: Pad001 octagon_Pad PartDesign::Pad p:1 i:3 o:1
obj: Fillet octagon_Fillet PartDesign::Fillet p:2 i:2 o:2
obj: Fillet001 Fillet001 PartDesign::Fillet p:2 i:2 o:2
obj: Cone blue_cone Part::Cone p:0 i:0 o:0
obj: Box001 cube_colorfull Part::Box p:0 i:2 o:0
obj: Part002 floor_part App::Part p:0 i:0 o:2 g:1
obj: Origin004 Origin004 App::Origin p:1 i:1 o:6
obj: X_Axis004 X_Axis004 App::Line p:0 i:1 o:0
obj: Y_Axis004 Y_Axis004 App::Line p:0 i:1 o:0
obj: Z_Axis004 Z_Axis004 App::Line p:0 i:1 o:0
obj: XY_Plane004 XY_Plane004 App::Plane p:0 i:1 o:0
obj: XZ_Plane004 XZ_Plane004 App::Plane p:0 i:1 o:0
obj: YZ_Plane004 YZ_Plane004 App::Plane p:0 i:1 o:0
obj: Body002 root_body PartDesign::Body p:0 i:0 o:5 g:3
obj: Origin005 Origin005 App::Origin p:1 i:1 o:6
obj: X_Axis005 X_Axis005 App::Line p:0 i:1 o:0
obj: Y_Axis005 Y_Axis005 App::Line p:0 i:1 o:0
obj: Z_Axis005 Z_Axis005 App::Line p:0 i:1 o:0
obj: XY_Plane005 XY_Plane005 App::Plane p:0 i:2 o:0
obj: XZ_Plane005 XZ_Plane005 App::Plane p:0 i:1 o:0
obj: YZ_Plane005 YZ_Plane005 App::Plane p:0 i:1 o:0
obj: Sketch002 Sketch002 Sketcher::SketchObject p:1 i:2 o:1
obj: Pad002 Pad002 PartDesign::Pad p:1 i:3 o:1
obj: Fillet002 Fillet002 PartDesign::Fillet p:2 i:2 o:2
obj: Body003 cube_part_clone_Body PartDesign::Body p:0 i:0 o:4 g:1
obj: Origin006 Origin006 App::Origin p:1 i:1 o:6
obj: X_Axis006 X_Axis006 App::Line p:0 i:1 o:0
obj: Y_Axis006 Y_Axis006 App::Line p:0 i:1 o:0
obj: Z_Axis006 Z_Axis006 App::Line p:0 i:1 o:0
obj: XY_Plane006 XY_Plane006 App::Plane p:0 i:1 o:0
obj: XZ_Plane006 XZ_Plane006 App::Plane p:0 i:1 o:0
obj: YZ_Plane006 YZ_Plane006 App::Plane p:0 i:1 o:0
obj: Clone cube_part_clone PartDesign::FeatureBase p:2 i:2 o:1
obj: Body004 floor_body_clone_Body PartDesign::Body p:0 i:0 o:4 g:1
obj: Origin007 Origin007 App::Origin p:1 i:1 o:6
obj: X_Axis007 X_Axis007 App::Line p:0 i:1 o:0
obj: Y_Axis007 Y_Axis007 App::Line p:0 i:1 o:0
obj: Z_Axis007 Z_Axis007 App::Line p:0 i:1 o:0
obj: XY_Plane007 XY_Plane007 App::Plane p:0 i:1 o:0
obj: XZ_Plane007 XZ_Plane007 App::Plane p:0 i:1 o:0
obj: YZ_Plane007 YZ_Plane007 App::Plane p:0 i:1 o:0
obj: Clone001 floor_body_clone PartDesign::FeatureBase p:2 i:2 o:1
>>> print("~"*42)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>
>>> print_obj_with_label(doc, "my_final_assembly")
obj: Part my_final_assembly App::Part p:0 i:0 o:7 g:6
>>> print_obj_with_label(doc, "octagon_part")
obj: Part001 octagon_part App::Part p:0 i:0 o:2 g:1
>>> print_obj_with_label(doc, "octagon_body")
obj: Body001 octagon_body PartDesign::Body p:1 i:1 o:5 g:3
>>>
Code: Select all
stefan@stefan-Latitude-E6510:~/mydata/github/blender/io_import_fcstd/dev (master)$ ./list_objects_simple.py
Configured FreeCAD path: /usr/lib/freecad-daily-python3/lib
Sheet Metal workbench loaded
FreeCAD version: ['0', '19', '', 'https://code.launchpad.net/~vcs-imports/freecad/trunk', '2019/10/04 07:36:31']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
doc.Objects 72
Name Label TypeId p [Parents] i [InList] o [OutList] g [Group]
obj: Part my_final_assembly App::Part p:0 i:0 o:7 g:6
obj: Origin Origin App::Origin p:1 i:1 o:6
obj: X_Axis X_Axis App::Line p:0 i:1 o:0
obj: Y_Axis Y_Axis App::Line p:0 i:1 o:0
obj: Z_Axis Z_Axis App::Line p:0 i:1 o:0
obj: XY_Plane XY_Plane App::Plane p:0 i:1 o:0
obj: XZ_Plane XZ_Plane App::Plane p:0 i:1 o:0
obj: YZ_Plane YZ_Plane App::Plane p:0 i:1 o:0
obj: Link box_panel_part App::Link p:1 i:1 o:3 g:0
obj: Link001 front_panel_part App::Link p:1 i:1 o:1 g:0
obj: Link_i0 Link_i0 App::LinkElement p:2 i:2 o:3 g:0
obj: Link_i1 Link_i1 App::LinkElement p:2 i:2 o:3 g:0
obj: Link002 lamp_part App::Link p:1 i:2 o:1 g:0
obj: Array lamp_Array Part::FeaturePython p:1 i:1 o:3
obj: Origin001 Origin001 App::Origin p:0 i:0 o:6
obj: X_Axis001 X_Axis001 App::Line p:0 i:1 o:0
obj: Y_Axis001 Y_Axis001 App::Line p:0 i:1 o:0
obj: Z_Axis001 Z_Axis001 App::Line p:0 i:1 o:0
obj: XY_Plane001 XY_Plane001 App::Plane p:0 i:2 o:0
obj: XZ_Plane001 XZ_Plane001 App::Plane p:0 i:1 o:0
obj: YZ_Plane001 YZ_Plane001 App::Plane p:0 i:1 o:0
obj: Sketch floor_Sketch Sketcher::SketchObject p:0 i:0 o:1
obj: Box Cube_Hidden Part::Box p:0 i:0 o:0
obj: Sphere world_sphere Part::Sphere p:0 i:0 o:0
obj: Part001 octagon_part App::Part p:0 i:0 o:1 g:0
obj: Origin002 octagon_Origin App::Origin p:1 i:1 o:6
obj: X_Axis002 X_Axis002 App::Line p:0 i:1 o:0
obj: Y_Axis002 Y_Axis002 App::Line p:0 i:1 o:0
obj: Z_Axis002 Z_Axis002 App::Line p:0 i:1 o:0
obj: XY_Plane002 XY_Plane002 App::Plane p:0 i:1 o:0
obj: XZ_Plane002 XZ_Plane002 App::Plane p:0 i:1 o:0
obj: YZ_Plane002 YZ_Plane002 App::Plane p:0 i:1 o:0
obj: Origin003 Origin003 App::Origin p:0 i:0 o:6
obj: X_Axis003 X_Axis003 App::Line p:0 i:1 o:0
obj: Y_Axis003 Y_Axis003 App::Line p:0 i:1 o:0
obj: Z_Axis003 Z_Axis003 App::Line p:0 i:1 o:0
obj: XY_Plane003 XY_Plane003 App::Plane p:0 i:2 o:0
obj: XZ_Plane003 XZ_Plane003 App::Plane p:0 i:1 o:0
obj: YZ_Plane003 YZ_Plane003 App::Plane p:0 i:1 o:0
obj: Sketch001 octagon_sketch Sketcher::SketchObject p:0 i:0 o:1
obj: Cone blue_cone Part::Cone p:0 i:0 o:0
obj: Box001 cube_colorfull Part::Box p:0 i:0 o:0
obj: Part002 floor_part App::Part p:0 i:0 o:1 g:0
obj: Origin004 Origin004 App::Origin p:1 i:1 o:6
obj: X_Axis004 X_Axis004 App::Line p:0 i:1 o:0
obj: Y_Axis004 Y_Axis004 App::Line p:0 i:1 o:0
obj: Z_Axis004 Z_Axis004 App::Line p:0 i:1 o:0
obj: XY_Plane004 XY_Plane004 App::Plane p:0 i:1 o:0
obj: XZ_Plane004 XZ_Plane004 App::Plane p:0 i:1 o:0
obj: YZ_Plane004 YZ_Plane004 App::Plane p:0 i:1 o:0
obj: Origin005 Origin005 App::Origin p:0 i:0 o:6
obj: X_Axis005 X_Axis005 App::Line p:0 i:1 o:0
obj: Y_Axis005 Y_Axis005 App::Line p:0 i:1 o:0
obj: Z_Axis005 Z_Axis005 App::Line p:0 i:1 o:0
obj: XY_Plane005 XY_Plane005 App::Plane p:0 i:2 o:0
obj: XZ_Plane005 XZ_Plane005 App::Plane p:0 i:1 o:0
obj: YZ_Plane005 YZ_Plane005 App::Plane p:0 i:1 o:0
obj: Sketch002 Sketch002 Sketcher::SketchObject p:0 i:0 o:1
obj: Origin006 Origin006 App::Origin p:0 i:0 o:6
obj: X_Axis006 X_Axis006 App::Line p:0 i:1 o:0
obj: Y_Axis006 Y_Axis006 App::Line p:0 i:1 o:0
obj: Z_Axis006 Z_Axis006 App::Line p:0 i:1 o:0
obj: XY_Plane006 XY_Plane006 App::Plane p:0 i:1 o:0
obj: XZ_Plane006 XZ_Plane006 App::Plane p:0 i:1 o:0
obj: YZ_Plane006 YZ_Plane006 App::Plane p:0 i:1 o:0
obj: Origin007 Origin007 App::Origin p:0 i:0 o:6
obj: X_Axis007 X_Axis007 App::Line p:0 i:1 o:0
obj: Y_Axis007 Y_Axis007 App::Line p:0 i:1 o:0
obj: Z_Axis007 Z_Axis007 App::Line p:0 i:1 o:0
obj: XY_Plane007 XY_Plane007 App::Plane p:0 i:1 o:0
obj: XZ_Plane007 XZ_Plane007 App::Plane p:0 i:1 o:0
obj: YZ_Plane007 YZ_Plane007 App::Plane p:0 i:1 o:0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
obj: Part my_final_assembly App::Part p:0 i:0 o:7 g:6
obj: Part001 octagon_part App::Part p:0 i:0 o:1 g:0
object with label 'octagon_body' not found.
tests done :-)
from extern only 72.
and i also tried with 'doc.getObjectsByLabel'
and the 'octagon_body' is not found if called from extern.
and yes - the hole blender FreeCAD import is finally running from inside blender.
and i would like to not have a second 'exporter' in FreeCAD...
(this would make 'update handling' more difficullt i think..)
iam happy to try anithing to get to the root cause for this
sunny greetigns
stefan
- pl7i92LCNC
- Posts: 208
- Joined: Tue Mar 12, 2019 3:03 pm
- Location: RLP DE
Re: FreeCAD .FCStd importer for Blender 2.80
this will import the whole house projekt
Re: FreeCAD .FCStd importer for Blender 2.80
Hm, if anyone is interested, I think that importing FCStd from Blender is not the optimal approach. I think it would be better to export Objects or scenes to something that Blender can handle. Optionally from a FreeCAD instance to a Blender instance through a REST API or some other RPC protocol in Blender, though I have yet to figure out how to put asyncio into FreeCAD. Threaded requests may also work, though.
The reason is that there are so many different usecases for combining Blender and FC:
- Design individual parts in FreeCAD documents, assemble them in Blender, add materials constraints or animations manually: Here I would recommend a macro that exports the objects to STL (or similar), then import them in Blender. Optionally a script inside Blender can refresh the meshes without screwing up anything else.
- Use one of the Assembly Workbenches to assemble the parts, maybe even define their motion and constraints, then create a scene inside Blender to match those. Maybe have a "material" property to assign materials from the Blend File to the objects automatically.
- Similar things apply to the Architecture Workbench.
Key point is that, most of the time, the data from FreeCAD is only a small part of what the Blend File will be. Especially if you want to iterate both in FreeCAD and Blender, you will need some way to reload the FreeCAD data. And the transformation of FreeCAD Data to Blender Data would depend on the usecase. Meshes are most obvious/constant, but colors, transforms, special things like lights and so on are more complicated.
The reason is that there are so many different usecases for combining Blender and FC:
- Design individual parts in FreeCAD documents, assemble them in Blender, add materials constraints or animations manually: Here I would recommend a macro that exports the objects to STL (or similar), then import them in Blender. Optionally a script inside Blender can refresh the meshes without screwing up anything else.
- Use one of the Assembly Workbenches to assemble the parts, maybe even define their motion and constraints, then create a scene inside Blender to match those. Maybe have a "material" property to assign materials from the Blend File to the objects automatically.
- Similar things apply to the Architecture Workbench.
Key point is that, most of the time, the data from FreeCAD is only a small part of what the Blend File will be. Especially if you want to iterate both in FreeCAD and Blender, you will need some way to reload the FreeCAD data. And the transformation of FreeCAD Data to Blender Data would depend on the usecase. Meshes are most obvious/constant, but colors, transforms, special things like lights and so on are more complicated.
Re: FreeCAD .FCStd importer for Blender 2.80
Hello all ,
Hello Bayesian,
thanks for your input and your thoughts!!
i personally will focus on this importer for now - i am already on good way
and its working for me right now
Thanks to yorik for the hard work of reactivating and porting it to 2.80!
i have added:
- 'App::Parts' (the yellow Part 'group' thing) - they are currently imported as blender 'collection'
- 'App::Link' (the new Link button) (similar as Parts → the get collections and an 'collection instance' is created)
- 'Part::FeaturePhyton' Arrays (the Linked Array Button from the Draft WB) similar to Link: instances are created
TODOs left:
- import 'updated' mesh for the above..
- add automatically parenting (for this we will need Blender Empties for the group objects like Parts/Links/..)
both of the points i am working on
additionally the only thing missing is the import of 'PartDesign::Body' objects -
and here is just the problem as described earlier - currently i can not access them from the script..
(or at least currently i don't know how )
(and yorik prepared this really well!!)
you can import multiple FreeCAD documents right now -
every import gets its own blender collection - named after the imported file.
the only limitation is: every object needs a unique name.
in blender all objects are at the root level of the document - and are only 'linked' to one ore multiple scenes -
the collections are only a visual helper...
so if one file contains a object with the same name as an earlier file the later will overwrite the earlier one..
it would be easy to add an 'unique name' option. for example just add the document name in front of the object name. (i have already an internal option for a pre string in front of the object names )
other option would be to import every FreeCAD file as one Blender File and then use Blenders 'inter file linking' to create a combined file...
this way it would be possible to recreate the full FreeCAD linked document tree as Blender Files..
i posted this as an idea issues
i love if you find a way to get things like this running smoother / more user friendly!
so pleas keep your ideas flowing
or/and just create a pull request
sunny greetings
stefan
Hello Bayesian,
thanks for your input and your thoughts!!
i personally will focus on this importer for now - i am already on good way
and its working for me right now
Thanks to yorik for the hard work of reactivating and porting it to 2.80!
i have added:
- 'App::Parts' (the yellow Part 'group' thing) - they are currently imported as blender 'collection'
- 'App::Link' (the new Link button) (similar as Parts → the get collections and an 'collection instance' is created)
- 'Part::FeaturePhyton' Arrays (the Linked Array Button from the Draft WB) similar to Link: instances are created
TODOs left:
- import 'updated' mesh for the above..
- add automatically parenting (for this we will need Blender Empties for the group objects like Parts/Links/..)
both of the points i am working on
additionally the only thing missing is the import of 'PartDesign::Body' objects -
and here is just the problem as described earlier - currently i can not access them from the script..
(or at least currently i don't know how )
that is my goal for this importer if the 'update' option is set
(and yorik prepared this really well!!)
you can import multiple FreeCAD documents right now -
every import gets its own blender collection - named after the imported file.
the only limitation is: every object needs a unique name.
in blender all objects are at the root level of the document - and are only 'linked' to one ore multiple scenes -
the collections are only a visual helper...
so if one file contains a object with the same name as an earlier file the later will overwrite the earlier one..
it would be easy to add an 'unique name' option. for example just add the document name in front of the object name. (i have already an internal option for a pre string in front of the object names )
other option would be to import every FreeCAD file as one Blender File and then use Blenders 'inter file linking' to create a combined file...
this way it would be possible to recreate the full FreeCAD linked document tree as Blender Files..
i posted this as an idea issues
i love if you find a way to get things like this running smoother / more user friendly!
so pleas keep your ideas flowing
or/and just create a pull request
sunny greetings
stefan