@brunopostle said: @topologic I haven't checked to see how different topologicpy is, I thought the underlying Topologic library was the same? The topologicpy repository has lots of binary files, and no setup.py or CMakeList.txt, so I'm not entirely sure how to use it.
topologicpy can be thought of as a pure python library. No need to compile anything and it works out of the box on Windows and Linux. It does NOT need topologic (core) to be installed. You simply import it and start calling it. To install, you can use pip install topologicpy
@brunopostle yes underneath it is the same, but topologicpy has vastly improved some functionality and added new methods not available in topologic. It also fixed a lot of bugs. It is robust and well-documented. The API is now more sustainable and consistent.
@topologic said: @brunopostle yes underneath it is the same, but topologicpy has vastly improved some functionality and added new methods not available in topologic. It also fixed a lot of bugs. It is robust and well-documented. The API is now more sustainable and consistent.
topologicpy can be thought of as a pure python library. No need to compile anything and it works out of the box on Windows and Linux. It does NOT need topologic (core) to be installed. You simply import it and start calling it. To install, you can use pip install topologicpy
There are DLLs in the git repository, I'm going to be recompiling these anyway because that is a thing that I do.
As far as I can tell, topologicpy is a collection of subclassed wrappers of the topologic pybind11 bindings for the Topologic c++ library, but with a cleaner API. Couldn't these be in the main Topologic repository?
topologicpy can be thought of as a pure python library. No need to compile anything and it works out of the box on Windows and Linux. It does NOT need topologic (core) to be installed. You simply import it and start calling it. To install, you can use pip install topologicpy
There are DLLs in the git repository, I'm going to be recompiling these anyway because that is a thing that I do.
As far as I can tell, topologicpy is a collection of subclassed wrappers of the topologic pybind11 bindings for the Topologic c++ library, but with a cleaner API. Couldn't these be in the main Topologic repository?
I don’t know why you would want to recompile the dlls but you know your software environment better.
Changing the topologic pybind layer would change the API. With topologicpy you can still call topologic as usual so allows for an easier transition. Topologicpy is not just a wrapper. In places it completely replaces the default functionality.
But having said all that, please don’t feel pressured to change over. Homemaker can continue to use topologic. It is not going away!
@topologic said:
I don’t know why you would want to recompile the dlls but you know your software environment better.
Binary files are fragile, as a software developer you should be concerned with code. Distributing compiled code is a separate step that you should be offloading to other people if you can.
@topologic said:
I don’t know why you would want to recompile the dlls but you know your software environment better.
Binary files are fragile, as a software developer you should be concerned with code. Distributing compiled code is a separate step that you should be offloading to other people if you can.
My concern is to make it easy for people to use the software. If I ask people to download this and that and follow long steps to compile software they won’t use it. Blender contains compiled software so does FreeCAD..
@topologic said: @brunopostle yes underneath it is the same, but topologicpy has vastly improved some functionality and added new methods not available in topologic. It also fixed a lot of bugs. It is robust and well-documented. The API is now more sustainable and consistent.
@topologic said:
My concern is to make it easy for people to use the software. If I ask people to download this and that and follow long steps to compile software they won’t use it. Blender contains compiled software so does FreeCAD..
It is an aesthetic thing, would you keep your recipe books in the freezer with your food? The blender git repository doesn't contain any compiled binary files, these are stored/created separately from the source code and assembled into an installer/package.
@topologic said:
My concern is to make it easy for people to use the software. If I ask people to download this and that and follow long steps to compile software they won’t use it. Blender contains compiled software so does FreeCAD..
It is an aesthetic thing, would you keep your recipe books in the freezer with your food? The blender git repository doesn't contain any compiled binary files, these are stored/created separately from the source code and assembled into an installer/package.
Ok but I don’t ask people to install from the GitHub! They install from pypi. I will add the binary folders to gitignore
I previously found Brunopostle's rpm and after installation it just works in FreeCAD (without myself knowing the technicality) - I use AppImage on Fedora 36. Can't figure how to use in FreeCAD console... any more instruction ?
paullee@fedora ~]$ pip install topologicpy
Defaulting to user installation because normal site-packages is not writeable
Collecting topologicpy
Downloading topologicpy-0.0.22-py3-none-any.whl (31.5 MB)
|████████████████████████████████| 31.5 MB 498 kB/s
Collecting plotly
Downloading plotly-5.11.0-py2.py3-none-any.whl (15.3 MB)
|████████████████████████████████| 15.3 MB 41.8 MB/s
Requirement already satisfied: scipy in /usr/lib64/python3.10/site-packages (from topologicpy) (1.8.1)
Requirement already satisfied: numpy in /usr/lib64/python3.10/site-packages (from topologicpy) (1.22.0)
Collecting tenacity>=6.2.0
Downloading tenacity-8.1.0-py3-none-any.whl (23 kB)
Installing collected packages: tenacity, plotly, topologicpy
Successfully installed plotly-5.11.0 tenacity-8.1.0 topologicpy-0.0.22
In FreeCAD (AppImage) Python Console -
import topologic
Traceback (most recent call last):
File "", line 1, in
File "/home/paullee/Downloads/FreeCAD_weekly-builds-31391-2022-12-22-conda-Linux-x86_64-py310/squashfs-root/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
return original_import(name, *args, **kwargs)
ModuleNotFoundError: No module named 'topologic'
import topologicpy
Traceback (most recent call last):
File "", line 1, in
File "/home/paullee/Downloads/FreeCAD_weekly-builds-31391-2022-12-22-conda-Linux-x86_64-py310/squashfs-root/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
return original_import(name, *args, **kwargs)
File "/home/paullee/.local/lib/python3.10/site-packages/topologicpy/__init__.py", line 16, in
@paullee Can we move this to the Topologic thread and put a link here so anyone following this can reach it? Thanks. This thread is about Homemaker, but it ran away from us (My apologies for that to @brunopostle)
This is a packaged Homemaker add-on with dependencies for Linux, Windows and Mac.
This release fixes issues revealed by the Blenderbim 230107 release. If you have upgraded to the latest Blenderbim, older versions of the Homemaker-addon will no longer work, you will need to upgrade to this release of the Homemaker add-on.
There are also some new features:
Grillages are faces from the CellComplex that are filled with parallel linear elements (such as rafters). The system for defining these linear elements is now unified, just reference further Extrusion or Repeat definitions and these will be used to fill each path. Further, the sliced area between these linear elements can now be filled with further Shell or Grillage definitions. Put together these allow complex recursive construction systems to be defined, and applied by just setting the material name of a face in your blender mesh.
Partial work on roundtripping models is also included. The Homemaker function takes a blender mesh, finds a Topologic CellComplex from closed volumes in the geometry, and builds an IFC building model from this CellComplex. This CellComplex is stashed in the IFC data as SKETCH_VIEW surfaces. With this release, this CellComplex can now be retrieved for creation of further buildings by selecting any part of an IFC building previously created by Homemaker, and using the Topologise function.
Bugs were attended, code refactored and typos fixed.
Bumping this to nudge @brunopostle to please add this to a 'how things work' / 'getting started' page both on the documentation and on the repo's readme (it can be edited incrementally as things change). Ditto links to your YouTube channel to help with easier on-boarding of people previously unfamiliar with your work.
@brunopostle I wonder if you faced any issues with grillages that are not equally spaced because the orientation of the faces in a CellComplex are not guaranteed (not inside out normal, but the u,v vectors along the face). With the new Face.Harmonize method in topologic py, the u=0, v=0 is always placed in the "upper left" corner (so to speak). Perhaps it is not an issue in your implementation, but I know it can crop up in other use case scenarios.
@topologic I map every face to horizontal before decorating it with extrusions etc.. then I map it all back. I normalise each face so non-vertical faces always point up, and grids start at the bottom left - this code is not very pretty.
Hi @brunopostle I seem to have got myself into a mess when upgrading to the latest Homemaker Addon. I get the following...
Traceback (most recent call last):
File "D:\Program Files\Blender Foundation\3.4\scripts\modules\addon_utils.py", line 333, in enable
mod = import(module_name)
File "C:\Users\nigel\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\homemaker-addon-main__init__.py", line 10, in
from molior import Molior
File "C:\Users\nigel\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\homemaker-addon-main\molior__init__.py", line 30, in
from molior.style import Style
File "C:\Users\nigel\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\homemaker-addon-main\molior\style__init__.py", line 20, in
import os, yaml, copy, json
ModuleNotFoundError: No module named 'yaml'
@Nigel it looks like you downloaded a ZIP archive of the git repository (which would work if you have all the dependencies installed, but you don't). The releases include dependencies, you can download them here: https://github.com/brunopostle/homemaker-addon/releases
You need blender-homemaker-2023-01-14-win.zip (or you can use blender-homemaker-2023-01-14-noarch.zip if you already have a working Topologic sverchok).
You need blender-homemaker-2023-01-14-win.zip (or you can use blender-homemaker-2023-01-14-noarch.zip if you already have a working Topologic sverchok).
Thank you, I was pretty sure I got it wrong :)
Can't wait for the Blender Extensions Platform to manage (especially updates) my Addons as I find it a bit confusing
Some new features will be in the next Homemaker add-on release:
The Homemaker function turns any blender mesh into an IFC building model - using faces as walls and ceilings, and the closed cells/spaces in the mesh as rooms. This process can now be easily reversed, even from a saved model, by selecting any part of the building and running Topologise - then just edit the mesh and re-run Homemaker to recreate the IFC building based on the new geometry. Similarly, selecting any part of an IFC model and re-running Homemaker regenerates the IFC building completely, allowing you to change style definitions and see how this changes the building.
Homemaker creates entire building models in one click, but this isn't always how you want to work. The Homemaker function can now generate fragments of buildings from open meshes and loose faces - allowing you to create buildings bit-by-bit, making some parts in Blenderbim and other parts in Homemaker:
Hi @brunopostle the proposal for next versions features sounds great. Currently I'm trying to localise the style to Aotearoa (NZ) typical housing, getting a bit lost. Could you help with a bullet point work flow to get me started please. I may be over thinking the process:)
@brunopostle said:
Some new features will be in the next Homemaker add-on release:
The Homemaker function turns any blender mesh into an IFC building model - using faces as walls and ceilings, and the closed cells/spaces in the mesh as rooms. This process can now be easily reversed, even from a saved model, by selecting any part of the building and running Topologise - then just edit the mesh and re-run Homemaker to recreate the IFC building based on the new geometry. Similarly, selecting any part of an IFC model and re-running Homemaker regenerates the IFC building completely, allowing you to change style definitions and see how this changes the building.
Homemaker creates entire building models in one click, but this isn't always how you want to work. The Homemaker function can now generate fragments of buildings from open meshes and loose faces - allowing you to create buildings bit-by-bit, making some parts in Blenderbim and other parts in Homemaker:
Nice, so it is possible with the home-maker add-on to create only that beam grid system from that image?
Nice, so it is possible with the home-maker add-on to create only that beam grid system from that image?
Yes, you create a blender object with a single face (or multiple faces, but not manifold), give it the material name 'framing' (which is a test style that ships with the add-on), run Homemaker, it imports the relevant Type definitions and uses them to replace the face with these elements, use them how you like, trim and mitre them with Blenderbim etc...
The three sections are defined as Beam and Member Types in the share/framing/library.ifc file (which you can also open as a Blenderbim library). There is some configuration in share/framing/*.yml files that specifies angles, spacing, X and Y offsets for each extrusion. This YAML configuration lets you do all sorts of other stuff that is more-or-less undocumented at the moment.
Homemaker is starting to become brilliant. I love the mixed approach possibility to use plain and parametric models.
What would happen if Homemaker would generate a window on a wall and then a user would manually reposition it? Would it be possible that this repositioning would, somehow, be remembered when redoing a section or building?
@JQL said:
What would happen if Homemaker would generate a window on a wall and then a user would manually reposition it? Would it be possible that this repositioning would, somehow, be remembered when redoing a section or building?
At the moment if you regenerate a building with Homemaker, any changes you made in blenderbim are lost, this is a hard problem to solve - at the moment it would require Homemaker to generate consistent GUIDs and STEP IDs for rooted elements. GUIDs are possible (it is on the tracker), but I don't know how to do STEP IDs :(
Some kind of future GUID-aware IFC graph merge tool may be able to do this kind of merging without STEP IDs someday.
What if the input geometry had some guides to where to place elements and, if those elements were moved/stretched in the output geometry, those guides would also move in the input geometry? Of course, one would have to model those guides in the input geometry for them to be editable.
Comments
topologicpy can be thought of as a pure python library. No need to compile anything and it works out of the box on Windows and Linux. It does NOT need topologic (core) to be installed. You simply import it and start calling it. To install, you can use pip install topologicpy
@brunopostle yes underneath it is the same, but topologicpy has vastly improved some functionality and added new methods not available in topologic. It also fixed a lot of bugs. It is robust and well-documented. The API is now more sustainable and consistent.
Any documentation? Thanks.
There are DLLs in the git repository, I'm going to be recompiling these anyway because that is a thing that I do.
As far as I can tell, topologicpy is a collection of subclassed wrappers of the topologic pybind11 bindings for the Topologic c++ library, but with a cleaner API. Couldn't these be in the main Topologic repository?
I don’t know why you would want to recompile the dlls but you know your software environment better.
Changing the topologic pybind layer would change the API. With topologicpy you can still call topologic as usual so allows for an easier transition. Topologicpy is not just a wrapper. In places it completely replaces the default functionality.
But having said all that, please don’t feel pressured to change over. Homemaker can continue to use topologic. It is not going away!
Binary files are fragile, as a software developer you should be concerned with code. Distributing compiled code is a separate step that you should be offloading to other people if you can.
My concern is to make it easy for people to use the software. If I ask people to download this and that and follow long steps to compile software they won’t use it. Blender contains compiled software so does FreeCAD..
Hi @paullee Yes! Clean and now complete documentation with view full source code option is available at https://topologic.app/topologicpy_doc/topologic_pdoc/
It is an aesthetic thing, would you keep your recipe books in the freezer with your food? The blender git repository doesn't contain any compiled binary files, these are stored/created separately from the source code and assembled into an installer/package.
Ok but I don’t ask people to install from the GitHub! They install from pypi. I will add the binary folders to gitignore
@brunopostle Github all cleaned up now! https://github.com/wassimj/topologicpy
I previously found Brunopostle's rpm and after installation it just works in FreeCAD (without myself knowing the technicality) - I use AppImage on Fedora 36. Can't figure how to use in FreeCAD console... any more instruction ?
In FreeCAD (AppImage) Python Console -
@paullee Can we move this to the Topologic thread and put a link here so anyone following this can reach it? Thanks. This thread is about Homemaker, but it ran away from us (My apologies for that to @brunopostle)
Yes , thanks, https://community.osarch.org/discussion/131/topologic-redefining-bim-through-spatial-topology-information-and-grammars/p25
New blender-homemaker-2023-01-14 release
This is a packaged Homemaker add-on with dependencies for Linux, Windows and Mac.
This release fixes issues revealed by the Blenderbim 230107 release. If you have upgraded to the latest Blenderbim, older versions of the Homemaker-addon will no longer work, you will need to upgrade to this release of the Homemaker add-on.
There are also some new features:
Grillages are faces from the CellComplex that are filled with parallel linear elements (such as rafters). The system for defining these linear elements is now unified, just reference further Extrusion or Repeat definitions and these will be used to fill each path. Further, the sliced area between these linear elements can now be filled with further Shell or Grillage definitions. Put together these allow complex recursive construction systems to be defined, and applied by just setting the material name of a face in your blender mesh.
Partial work on roundtripping models is also included. The Homemaker function takes a blender mesh, finds a Topologic CellComplex from closed volumes in the geometry, and builds an IFC building model from this CellComplex. This CellComplex is stashed in the IFC data as SKETCH_VIEW surfaces. With this release, this CellComplex can now be retrieved for creation of further buildings by selecting any part of an IFC building previously created by Homemaker, and using the Topologise function.
Bugs were attended, code refactored and typos fixed.
Thanks for the reminder, I added some (still incomplete) Homemaker add-on usage documentation.
@brunopostle I wonder if you faced any issues with grillages that are not equally spaced because the orientation of the faces in a CellComplex are not guaranteed (not inside out normal, but the u,v vectors along the face). With the new Face.Harmonize method in topologic py, the u=0, v=0 is always placed in the "upper left" corner (so to speak). Perhaps it is not an issue in your implementation, but I know it can crop up in other use case scenarios.
@topologic I map every face to horizontal before decorating it with extrusions etc.. then I map it all back. I normalise each face so non-vertical faces always point up, and grids start at the bottom left - this code is not very pretty.
but it's lived-in code--that has its own beauty.
Hi @brunopostle I seem to have got myself into a mess when upgrading to the latest Homemaker Addon. I get the following...
Traceback (most recent call last):
File "D:\Program Files\Blender Foundation\3.4\scripts\modules\addon_utils.py", line 333, in enable
mod = import(module_name)
File "C:\Users\nigel\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\homemaker-addon-main__init__.py", line 10, in
from molior import Molior
File "C:\Users\nigel\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\homemaker-addon-main\molior__init__.py", line 30, in
from molior.style import Style
File "C:\Users\nigel\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\homemaker-addon-main\molior\style__init__.py", line 20, in
import os, yaml, copy, json
ModuleNotFoundError: No module named 'yaml'
Your help will be much appreciated
cheers Nigel
@Nigel it looks like you downloaded a ZIP archive of the git repository (which would work if you have all the dependencies installed, but you don't). The releases include dependencies, you can download them here: https://github.com/brunopostle/homemaker-addon/releases
You need
blender-homemaker-2023-01-14-win.zip
(or you can useblender-homemaker-2023-01-14-noarch.zip
if you already have a working Topologic sverchok).Thank you, I was pretty sure I got it wrong :)
Can't wait for the Blender Extensions Platform to manage (especially updates) my Addons as I find it a bit confusing
cheers Nigel
Some new features will be in the next Homemaker add-on release:
Hi @brunopostle the proposal for next versions features sounds great. Currently I'm trying to localise the style to Aotearoa (NZ) typical housing, getting a bit lost. Could you help with a bullet point work flow to get me started please. I may be over thinking the process:)
Nice, so it is possible with the home-maker add-on to create only that beam grid system from that image?
Yes, you create a blender object with a single face (or multiple faces, but not manifold), give it the material name 'framing' (which is a test style that ships with the add-on), run Homemaker, it imports the relevant Type definitions and uses them to replace the face with these elements, use them how you like, trim and mitre them with Blenderbim etc...
The three sections are defined as Beam and Member Types in the
share/framing/library.ifc
file (which you can also open as a Blenderbim library). There is some configuration inshare/framing/*.yml
files that specifies angles, spacing, X and Y offsets for each extrusion. This YAML configuration lets you do all sorts of other stuff that is more-or-less undocumented at the moment.Homemaker is starting to become brilliant. I love the mixed approach possibility to use plain and parametric models.
What would happen if Homemaker would generate a window on a wall and then a user would manually reposition it? Would it be possible that this repositioning would, somehow, be remembered when redoing a section or building?
At the moment if you regenerate a building with Homemaker, any changes you made in blenderbim are lost, this is a hard problem to solve - at the moment it would require Homemaker to generate consistent GUIDs and STEP IDs for rooted elements. GUIDs are possible (it is on the tracker), but I don't know how to do STEP IDs :(
Some kind of future GUID-aware IFC graph merge tool may be able to do this kind of merging without STEP IDs someday.
What if the input geometry had some guides to where to place elements and, if those elements were moved/stretched in the output geometry, those guides would also move in the input geometry? Of course, one would have to model those guides in the input geometry for them to be editable.
@JQL it is basically the same problem that freecad developers call 'the topological naming problem'.