If you're reading this, we've just migrated servers! If anything looks broken please email dion@thinkmoult.com :)

[Topologic] Redefining BIM through Spatial Topology, Information, and Grammars

12021222426

Comments

  • @paullee said:

    @topologic said:
    Topologic can potentially do all that (in snaptrude).

    Is Homemaker though not based on a Sketch doing something similar ? It also remind me of TED.

    Homemaker does the same thing, but in 3d, and you are not restricted to 90° angles, you can have different layouts on each floor, double height spaces, attic rooms, all that architecture stuff.

    topologicpaullee
  • edited April 2022

    @paullee said:

    Not sure I understand - I previously installed Brunopostel's Topologic and Topologic-python packages for Fedora, but find no topoligic.pyd, e.g.

    I actually think then you don't need to do anything more. Just delete topologic.cp38-win_amd64.pyd and TopologicCore.dll and try to load the workbench. If FreeCAD can find "import topologic" it should all work.

    paullee
  • @topologic said:

    @paullee said:

    Not sure I understand - I previously installed Brunopostel's Topologic and Topologic-python packages for Fedora, but find no topoligic.pyd, e.g.

    I actually think then you don't need to do anything more. Just delete topologic.cp38-win_amd64.pyd and TopologicCore.dll and try to load the workbench. If FreeCAD can find "import topologic" it should all work.

    The .pyd file is for Windows, the equivalent python binding on Linux is called topologic.cpython-310-x86_64-linux-gnu.so or similar.

    paullee
  • Ok, add below to the init.py and somehow it works :D

    sys.path.append("/home/paullee/Downloads/Topologic/brunopostle_f34/usr/lib64/python3.9/site-packages")



  • ok great. To make it more portable, rather than do a sys.path.append, copy the contents of the site-packages folder to the Mod/Topologic folder.

    paullee
  • Yes, these are contained in a rpm in Brunopostle's repo on Fedora34

    rpm2cpio Topologic-python3-0.0-0.20220131git.fc34.x86_64.rpm | cpio -idmv

    but I think it also needs other files in Brunopostle's repo on Fedora 34

    rpm -ivh Topologic-0.0-0.20220131git.fc34.x86_64.rpm

    And it might be different for other Linux distribution :D

    topologic
  • Today's Progress: Added CellComplexDecompose command. You can take a non-manifold FC shape and it will return external/internal/top/bottom horizontal and vertical faces as separate objects.
    Watch video at this tweet:

    paullee
  • edited April 2022

    Excited to learn the development is so fast :D

    Had been studying for a while :)

    Noted the similarity in CellComplexDecompose with :

    Wondering -
    1. if item.ExternalBoundary() would be faster in processing ?
    2. EDIT - topologic.Cluster is Part.Compound in FreeCAD Part ?

    Thanks :D

  • That’s the beauty of it. All the code in TopologicSverchok can potentially be ported almost as is to FreeCAD.
    As to processing speed, I have not done any comparisons. If you do tests and timings, please share. Thanks.

    paullee
  • Further test with Boolean Fragment, generating 'internal faces' :D




    topologic
  • @paullee said:
    Further test with Boolean Fragment, generating 'internal faces' :D

    Just the tip of the iceberg. I can add all the sverchok code, but two things are standing in my way that perhaps someone here can help with:
    1. I don’t know how to get and display alphanumeric values from and to dialog boxes etc in FreeCAD.
    2. I don’t know how to pass output (including topologies) from one button push to the other. Does everything in FreeCAD pass through the viewer or can we stash objects in other data structures?
    Thanks for any help you can offer.

  • edited April 2022

    @topologic said:
    Just the tip of the iceberg. I can add all the sverchok code, but two things are standing in my way that perhaps someone here can help with:
    1. I don’t know how to get and display alphanumeric values from and to dialog boxes etc in FreeCAD.
    2. I don’t know how to pass output (including topologies) from one button push to the other. Does everything in FreeCAD pass through the viewer or can we stash objects in other data structures?

    Hope FreeCAD expert comes in (maybe posting in FreeCAD forum?), I have not much idea about GUI things in FreeCAD.

    For item 2, my 2 cents (as Python and FreeCAD coding beginner :) ), maybe :

    • instead of "f = doc.addObject("Part::Feature", sel.Name+"_"+names[i]) " for every 'outputs'
    • create a Part:Feature with App::PropertyLink to 'Source Object' to make thing parametric

      " fp.addProperty("App::PropertyLink","Source Object","xxx","yyy")

    • then create a few Part::PropertyPartShape to contain the Shape of the 'outputs'

      if not hasattr(fp,"output1"):
      fp.addProperty('Part::PropertyPartShape', 'output1', 'vert_faces', "xxx"),8)
      if not hasattr(fp,"output2"):
      fp.addProperty('Part::PropertyPartShape', 'output2', 'hor_faces', "xxx"),8)

    • then, contain the output in this 'properties'

      fp.output1 = output1
      fp.output2 = output2

    Now, other object can refer to these as

    • TopologicDecomposeObject.output1
    • TopologicDecomposeObject.output2
    • ...
    topologic
  • p.s.
    Questions related to python in FreeCAD can goes here :D

    https://forum.freecadweb.org/viewforum.php?f=22

  • See wiki on Scripted Objects for details and available properties :D

    (and the thread on Differences between Part::Feature, Part::FeaturePython and App::FeaturePython objects )

    I just use Part::FeaturePython

  • edited April 2022

    Some codes not tested for reference, rename the attached *.txt to *.py :)

    class TpFcObject():

    ''' Description '''

    def init(self, obj):

      ''' call self.setProperties '''                     
      self.setProperties(obj)                         
      obj.ViewObject.Proxy=0                          
      return None                             
          
    

    def setProperties(self, fp):

      ''' Add self.properties '''                     
      fp.Proxy = self                             
      if not hasattr(fp,"SourceObject"):                                                                                      
          fp.addProperty("App::PropertyLink","SourceObject","xxx","yyy")
    
      if not hasattr(fp,"output1"):
          fp.addProperty('Part::PropertyPartShape', 'output1', 'vert_faces', "xxx"),8)
      if not hasattr(fp,"output2"):
          fp.addProperty('Part::PropertyPartShape', 'output2', 'hor_faces', "xxx"),8)
    

    def execute(self, fp):

    ''' Features to Run (extract codes from your exsiting library)'''

      # algorithm to find the external vertical faces ...etc.
      inputShape = fp.SourceObject.Shape
      ...
      fp.output1 = output1
      fp.output2 = output2
      ...
      fp.Shape = (can chose to 'display' which output, e.g. depends on a switch)
     
    

    ''' make a FreeCAD 'document object' '''
    tpObj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython","TpObj")

    ''' 'apply' the class / create an TpFcObject 'instance' passing the 'document object' to it '''
    tpObjInstance = TpFcObject(tpObj)

    ''' pass the selected obj to the Topologic Object for execution '''
    tpObj.SourceObject = Gui.Selection.getSelection()[0]

  • edited August 2022

    Hi OSARCH, sorry for being quiet here. Just wanted to let you know that a new version of Topologic has been released. With it comes the addition of node classification for graph machine learning. Imagine you have a graph of your building where a node represents either a space/room or a building component (wall, window etc). Imagine then that some nodes are fully known as what they are, but others are not yet fully specified (what kind of window or door? What room function?). Topologic can now fill in the blanks which means, theoretically, you can pull in the full BIM details of the missing component and auto-complete your project.
    None of this has been tested yet. I would love to collaborate if you are interested and have a dataset that can be encoded as a graph. We need at least 500 graphs to get going (or one graph with 500 nodes)

    paulleeGorgious
  • @brunopostle said:
    Basically, it is a 'package repository' in addition to the default fedora repositories, so it isn't intended for direct download, enable it like this:

    dnf copr enable bpostle/IfcOpenShell 
    

    >

    Hi, thanks for your Copr works and I have been using it on Fedora.

    I have upgraded to Fedora 36 for a few weeks and would like to install the Topologic support. Is there any plan to include in the Copr the support for Fedora 36 ? Thanks :D

  • @paullee oops I forgot, fixed

    paullee
  • edited August 2022

    @brunopostle said:
    @paullee oops I forgot, fixed

    Found and try using, just to report below :D

    • FreeCAD latest release 0.20 is still using Python 3.9

    • FC36 : Topologic-python3-0.0-0.20220131git.fc36.x86_64.rpm provides support to Python 3.10

    • FreeCAD does not find the Python 3.10 site package upon importing topologic

    • Now I use FC34 : Topologic-python3-0.0-0.20220131git.fc34.x86_64.rpm, which provide support to Python 3.9
    • And it works :D
    • Can support to Python 3.9 be also added ?
      Thanks
  • @paullee I'm packaging these as if they were normal fedora packages, so I'm linking to system libraries wherever possible, so on fedora 35 & 36 it is linked with python 3.10.

    So you can either force install the old rpm for 3.9 support, or use the portable version in the Homemaker add-on zip which has Topologic compiled for 3.7, 3.8, 3.9 and 3.10, or you can install a freecad snapshot built for fedora 36 and python 3.10 from this freecad fedora copr repository.

    paullee
  • Today's progress. Topologic is interactive on the web! Try it for yourself at: https://wassimj-topologicst-plotly-test01-yul95o.streamlitapp.com/

    paulleeAcedimitarpeperibera
  • edited October 2022

    @topologic does it make sense to keep this or have you considered just redirecting to this osarch forum?
    https://topologic.app/community/
    I just had a colleague posting internally wondering where the community was and where they could read about what people are using it for. This forum seems like the place for that.

  • @duncan said:
    @topologic does it make sense to keep this or have you considered just redirecting to this osarch forum?
    https://topologic.app/community/
    I just had a colleague posting internally wondering where the community was and where they could read about what people are using it for. This forum seems like the place for that.

    I agree. The community page on http://topologic.app never took off. These pages is where the discussion about Topologic is. When I have a few minutes, I will edit that web page to include a link to these pages. Thank you for the suggestion.

  • @topologic said:
    I agree. The community page on http://topologic.app never took off. These pages is where the discussion about Topologic is. When I have a few minutes, I will edit that web page to include a link to these pages. Thank you for the suggestion.

    Please feel free (encouraged) to use OSArch branding/logo and say something more general about what this OSArch project is about :-)

  • By-the-way ... I really think it's time to stop keeping the whole discussion of topologic in one thread. It's almost useless to anyone searching for a specific answer.

    theoryshaw
  • @duncan said:

    @topologic said:
    I agree. The community page on http://topologic.app never took off. These pages is where the discussion about Topologic is. When I have a few minutes, I will edit that web page to include a link to these pages. Thank you for the suggestion.

    Please feel free (encouraged) to use OSArch branding/logo and say something more general about what this OSArch project is about :-)

    This is done! Please check and let me know if you are happy with how it looks and what it says: https://topologic.app/community/

    peperiberapaullee
  • For those of you who have not yet heard :)
    pip install topologicpy

    SinastaduncanJesusbill
  • https://github.com/nortikin/sverchok/blob/master/index.yaml
    there is change in menu approach.
    Please, grub your menu to that to make it work.

Sign In or Register to comment.