CAD Blocks for Blender?

This should be the simplest of things, but it's a bit of a pain when not in place.
If this does not exist in some form elsewhere already, is there any way to work with CAD blocks (2d furniture templates, 2d cars, entourage, that kind of stuff) in Blender? Hopefully with a library manager that connects to a public repository where people can contribute content. I've been using Archipack in Blender for early stage design layouts (and will create construction drawings in Blender as I grow more confident). I usually need to quickly layout furniture arrangements for discussion purposes, for which I don't need the added file size and complexity of 3d objects or 3d renders. I typically bring in cad blocks previously downloaded and converted to DXF and then imported to Blender from free (but not open source) sites but I've found this process inconvenient and needing a lot of time. BlenderKit is a good example of a fairly well integrated asset library for Blender (albeit for 3d content) and might therefore be a good template to follow, however, it might be useful to think beyond just Blender, same way that sites that provide CAD blocks don't cater to just Autocad.

Given we're looking at interoperability, perhaps it would make sense to build a library for the OSArch ecosystem so Archipack, BlenderBim, Freecad, etc don't have to reinvent the wheel every time and maintain separate libraries. Ditto other aspects of annotation in construction documentation that will benefit from a smart integration of an ecosystem of shared resources.

Comments

  • 100% agree. Someone needs to sit down and do a review of all the existing Blender content asset managers out there, and see which fits the bill to have a content library that you can drag and drop from, and search with preview images. If we can then modify it to use IFC, then we can benefit from many assets already out there, as well as share assets between FreeCAD and BlenderBIM Add-on.

    You will notice that this is a known issue, in the roadmap: https://wiki.osarch.org/index.php?title=BlenderBIM_Add-on_Roadmap

    Would you perhaps have the time to evaluate the existing offerings and propose how to proceed?

  • I would be happy to look into this hopefully with more people to shore up any knowledge gaps I may have.

    1) Perhaps the place to start would be a short list of asset managers to review.

    2) The other thing would be to figure out the back end for the repository. I found this on github: https://github.com/GSStnb/dxfBlocks, it could do with more content, but the CCBY license is cumbersome to adhere to within this context. I believe a CC0 license would be more appropriate. A good template for this backend in my opinion is that used by the Marslow CNC Community Garden where open source designs are shared for the DIY CNC community built around the Marslow kit: http://maslowcommunitygarden.org/ . It's built on top of GitHub and seems to work quite well.

    3) Lastly, we need to spec out formats and standards in which the CAD blocks will be built so contributors know how, and what to contribute to the database. This will also guide add-on / plugin integration for the different applications that would connect to the database.

  • 100% in favor of this too. An open library of models (blocks), symbols (2d blocks, like profiles) and materials, all usable in all our apps. We have one in FreeCAD already, but it's not very bim-oriented. This community would be a perfect place to start this!

  • edited June 16

    @DADA_universe I searched around for some asset managers, some of the wishlist:

    1. it has to be able to provide non-Blend files. Many Blender users can treat Blend files as an asset library itself, but I believe this hinders our ability to work together with FreeCAD. I want it to be able to support IFC (if it can't, but we can add some code to do it, then that works too)
    2. Has to provide screenshots, tags, and some form of search. If some of these features are missing, we can add them.
    3. The "source" of the assets ideally should come from a simple filebased system. I want to minimize connecting to arbitrary cloud APIs. This allows people to really own their data as it is nothing but pure files. The files can be managed separately such as using Git.

    Here are some I found, haven't tested any, hoping you have the time @DADA_universe :

    Could be more, but those were the first I found...

    I totally agree with CC0. One notion I am toying with, is to allow authors to do CC-BY (we can have explain how to have a schedule of CC assets in the construction documentation ... that would be funny), but have it "time-out". E.g. it is CC-BY for the first 3 years, after which it becomes CC0.

    Ping @stephen_l - are you aware of any nice asset import add-in things for Blender? I kinda know Archipack has one built in, but not sure if we can use that code...

  • Hi, 100% agree that an asset library is needed.
    Archipack use a preset system, as objects are parametric we only need to load / save small footprint files - so nothing like this so far.
    We all are waiting for blender's native asset manager, hope it will land in master somewhere in the 2.9

    The point with such assets is quality, quantity. In order to get some traction we need a huge content library from start.
    There are some website offering huge free content library and i think building our own without any other contribution than community simply is not realistic - would require huge resources to maintain at usable state over time.
    Would rather offer some kind of easy to use importer a bit like "lily surface scrapper" and rely on existing content.

  • There are already lots of BIM content libraries out there, but I would be in huge favour of auditing them, cleaning them up (especially for IFC), and making sure licensing is explicit (I have seen a lot of illegally used content, which I'd rather avoid). One of the considerations of BIM content is the metadata, not the geometry - we may need to liaise with manufacturers. Whoever wants to start this can start a Git repo, and later on we can build a web interface for it, as well as integrate them into Blender and FreeCAD in the form of a plugin. Perfect is the enemy of the good, so something dirty that we can refine would be much appreciated :)

  • edited June 18
    • Blender Asset Library - at a glance, looks Blender only, but we can have a build server that imports IFC to Blender, so it isn't the end of the world

    Wow, this looks like the best asset engine implementation I've seen thus far Blender.
    There is also BlenderKit online asset library - as another implementation. And at some point in the relatively near future, Blender should have a native asset manager.

    Moult
  • @Moult said:
    @DADA_universe I searched around for some asset managers, some of the wishlist:
    ...........

    Thanks for the list and pointers. Will be looking into these within the next couple of weeks.
    There's a middle ground between what you've said about auditing the database we plug into and what Stephen has said about quantity vs quality, which is to have a content library agnostic add-on that can plug into different libraries, but still build a community OSArch repo of content that meets requirements such as you have described. Will investigate this some more.

  • Looking at the IFC documentation, there seems to be an idea of external product/part libraries in IFCLIBRARYINFORMATION. Does anyone use this? In general you wouldn't want to be pulling-in bits of a building model from a remote repository, but with a git implementation that has version information in the url it would be safe enough.

  • edited June 23

    @brunopostle you can create an IfcProjectLibrary in the BlenderBIM Add-on. However, I'm not aware of another program which can actually read the output. Perhaps GeometryGym can, as well as some of the better proprietary ones like SimpleBIM.

    It also supports library information:

    Keep in mind all it does is store the metadata - it doesn't yet do anything clever with it. BuildingSMART has the not-so-smart idea to again reinvent the wheel on version control (which I think they may give up on in IFC5), and they've also specified their own really rudimentary suggestions at how a library API might function in the documentation - but apart from the guys behind BIMServer, I'm not sure if anybody is actually implementing it.

    I'd say let's build it assuming that IFCs are stored in a VCS, say Git for now, and later allow for other sources, just like how most package manager systems tend to work.

    brunopostleDADA_universe
  • Could this be used to define for example a DB of materials, profiles and anything else needed to reference in the Ifc file?

  • In any case it would be super valid to start our own repo and collecting or federating good quality assets (with an open license). Then the form it can integrate elsewhere is less important..

    DADA_universebitacovir
  • @yorik just a thought, before we move into individual objects (beams, standard structural members, common entourage like bed / table, etc) what about @theoryshaw 's opening detail library? If we can take one of those IFC files, and see if we can all import it into our respective programs and retain all the information we need, that would be a good learning experience on what we need for a content library.

  • @Moult said:
    @DADA_universe I searched around for some asset managers, some of the wishlist:

    1. it has to be able to provide non-Blend files. Many Blender users can treat Blend files as an asset library itself, but I believe this hinders our ability to work together with FreeCAD. I want it to be able to support IFC (if it can't, but we can add some code to do it, then that works too)
    2. Has to provide screenshots, tags, and some form of search. If some of these features are missing, we can add them.
    3. The "source" of the assets ideally should come from a simple filebased system. I want to minimize connecting to arbitrary cloud APIs. This allows people to really own their data as it is nothing but pure files. The files can be managed separately such as using Git.

    Here are some I found, haven't tested any, hoping you have the time @DADA_universe :

    Could be more, but those were the first I found...

    I totally agree with CC0. One notion I am toying with, is to allow authors to do CC-BY (we can have explain how to have a schedule of CC assets in the construction documentation ... that would be funny), but have it "time-out". E.g. it is CC-BY for the first 3 years, after which it becomes CC0.

    Ping @stephen_l - are you aware of any nice asset import add-in things for Blender? I kinda know Archipack has one built in, but not sure if we can use that code...

    I've taken some time to look through stuff on the list and some others I encountered and in summary, here are my thoughts:

    Simple Asset Manager: I've used it before and even hacked the code a little. It's simple and handy enough, but other offerings here have more bells and whistles.

    Blender Asset Tracer: Focused on listing assets and dependencies, couldn't find much to go by.

    Assimp: The impressive list of import / export formats is a plus. Might be tricky to integrate.

    **Blender Asset Library: ** Has evoled into Pyclone, so more about that below.

    Chocofur: Similar to BenderKit

    Asset Flinger: Also fairly basic, not actively being developed, the repo has been dormant for 3 years.

    Pyclone:
    Pyclone is really interesting and is probably better experienced than read about:
    It's an asset management system that runs on two add-on and a custom blender distribution (necessary because Blender does not currently support drag and drop, or so I read) with hopes of becoming part of the main Blender distribution, or at the very least, influencing how asset management is eventually implemented in Blender. Andrew Peel the developer has quite some experience with Asset Management systems and is pretty active on the subject at the moment. He is also interested in Archiviz with Blender and referenced Archipack a couple of times in the videos I watched, which is cool. I've tried Pyclone and I think it's got good legs. It's currently got 5 libraries built in, for architectural elements / components, objects, materials, collections and HDRIs, with more under development, and has a decent workflow and features. Not being currently available for the main blender distribution is a minus, but the potential of being eventually integrated with Blender, maybe with the release of Blender 2.9, is a strong plus. This does not fix the issue of roundtripping assets between OSArch tools because this only gives a decent solution in Blender, but Andrew Peel also worked on the Blender integration for Connecter, which seems to succeed quite well at this (also mentioned below) so it might be useful to invite him to this community and broach this topic with him.

    BlenderKit:
    I use BlenderKit and it is quite convenient, with a growing asset database. There's a free tier which gives access to a limited number of assets, and a subscription plan that provides full access. Also nice that anybody can contribute assets as a creator with creators keeping 70% of proceeds, 15% going to BlenderKit and 15% to Blender Foundation. One possibility is for OSArch to partner with BlendeKit by curating and uploading the sort of assets we are interested in under the free tier. Benefit to them being that we'll pull a user base of people using Blender for AEC in their direction. Benefit to us: we get to focus on the content and not on the backend. Maybe same approach can be had with Chocofur etc. This does not however satisfy the need for round tripping and supporting multiple software, FreeCAD won't benefit from this, for example.

    Asset Ninja:
    Asset Ninja has a smart approach. It connects with multiple content databases, is focused on CC0 assets and also supports multiple 3d tools, thus overcoming one of the challenges with BlenderKit as described above. This is cool because we can support Blender (already supported), FreeCAD (integration needs to be done), etc on the asset management side of things, while decoupling the database side of things, so we can create our own site for storing and sharing cad blocks, but the tool will still be useful for getting textures from Texture Haven, etc as well. That flexibility would be a great plus. The developer talked about code contributions from the community but I couldn't see a lot of that, and Asset Ninja does not seem to be open source despite clearly favouring CC0 assets, not sure how open to collaboration / sharing their code base they will be on account of this.

    Cyrilbasweinhtlcnn
  • Connecter :
    Connecterelegantly achieves what Pyclone is trying to achieve and more. It's like Pyclone meeting Asset Ninja and more. There's a server based subscription plan for teams, Blender and 3d Max integration, etc, etc. It's free (not the team / server version though), but does not seem to be FOSS, so might only serve as a case study for our needs.

    Speckle:
    From Speckle's website description here, it should make sense to build the back end on a platform like that so the interoperability and ifc first paradigm will be central to everything. There's is now a company behind Speckle development and it remains open source, so that suggests some stability, They are currently working on Speckle 2.0 which will feature considerable rewrite of what they had before, they are also inviting people to sign up in advance for the alpha and to contribute to the development, which might be a good opportunity to integrate things nicely from the get go.

    In summary:
    I think we should look at a Pyclone / Connecter / Asset Ninja kind of asset management system that can connect to multiple apps and process multiple formats. Like Pyclone, we should have different types of asset libraries with cartegories, tags and thumbnails. The back end can run on Speckle (which has support for plugins). We probably should talk to Andrew Peel and the guys at Speckle and maybe Asset Ninja. There probably should be two or more teams building out the server' side and the client side and then the 3d tool specific interfaces can be built to plug into all that. The devil as always is in the detail.

    CyrilbasweinMoult
  • Speckle:
    From Speckle's website description here, it should make sense to build the back end on a platform like that so the interoperability and ifc first paradigm will be central to everything. There's is now a company behind Speckle development and it remains open source, so that suggests some stability, They are currently working on Speckle 2.0 which will feature considerable rewrite of what they had before, they are also inviting people to sign up in advance for the alpha and to contribute to the development, which might be a good opportunity to integrate things nicely from the get go.

    Edit: that line should read BIM paradigm and not IFC first paradigm. Speckle certainly does not favour an IFC first worldview.
    Edit 2: Speckle being in transition means the old code won't see a lot of maintainance and probably no new features in the immediate term. It also means Speckle 2.0 won't be available to experiment with for a while. Though they do have an insider programme for developers to sign up for early access: https://speckle.systems/blog/insider-speckle2/
    They do say in their FAQ though that even though there would be breaking changes, stuff developed on Speckle 1 would be easy to migrate to Speckle 2.0. Wondering if forging ahead with a proof of concept on Speckle 1 would be the way to go? Also hoping for informed opinion on how well Speckle fits the use case in question in every sense.

    Cyril
  • Maybe I have a different idea: Do some consider developing a family library with strong versatility?
    We can achieve flexible interoperability through the mutual call of the family library

  • @shanmama said:
    Maybe I have a different idea: Do some consider developing a family library with strong versatility?
    We can achieve flexible interoperability through the mutual call of the family library

    I assume Revit Families work kind of like Sketchup Components. I think we are looking at a system of storing and using ''family libraries'' across different OSArch tools. Like Dion referenced, Opening Detail is already experimenting with sharing a library of details via GitHub. It makes sense to feed the repo with files in multiple formats like they've done, in further aid of interoperability.

Sign In or Register to comment.