BlenderBIM Experimental IFC Git add-on

124»

Comments

  • I presented ifcgit yesterday at work as part of a 'show your hobby project' to about ~40 people mainly software developers. To people who don't know what IFC is. The presentation was recorded and I showed feature branching and ifc git merging. I just looked back at the recorded presentation and I think I definitely need to work on my presentation skills ?. I forgot to mention a lot of details,talked too fast and got a lot of confused looks. The only question I got was how to 3D visualize a merge conflict. However I was quite relieved the ifc merge worked in the live demo.

    NigelbrunopostleOle_Marius_SvendsenAceDarth_Blenderbaswein
  • @Coen Well done!

    Coen
  • I enjoyed the meeting yesterday, for people who are interested, the git history of what we did yesterday.

    https://github.com/C-Claus/ifc-demo/compare/master...brunopostle:ifc-demo:master

    Massimobrunopostle
  • edited June 2023

    I'll upload the screencast soon, here is the fork/branch/merge history (note four authors):

    *   commit dec9243d8894a8523e568fe5a2397af59969031b
    |\  Merge: 1404abd 2700060
    | | Author: Bruno Postle
    | | Date:   Tue Jun 27 17:05:40 2023 +0100
    | | 
    | |     Merge remote-tracking branch 'yass/master'
    | |     
    | |     # Conflicts:
    | |     #       model.ifc
    | | 
    | * commit 2700060d60c220a67657d85da1a8c5e91411981d
    | | Author: Sigma Dimensions
    | | Date:   Tue Jun 27 16:57:43 2023 +0100
    | | 
    | |     Unpriced Bill Of Quantities
    | |   
    * |   commit 1404abd3737bd2041bcc08a3af76bfd80280a339
    |\ \  Merge: f8c304e 1ffb65b
    | |/  Author: Bruno Postle
    |/|   Date:   Tue Jun 27 16:52:46 2023 +0100
    | |   
    | |       Merge branch 'branch3'
    | |       
    | |       # Conflicts:
    | |       #       model.ifc
    | | 
    | * commit 1ffb65b0e37606734581a7051638bffa17609f65
    | | Author: Bruno Postle
    | | Date:   Tue Jun 27 16:52:15 2023 +0100
    | | 
    | |     delete windows too
    | |   
    * |   commit f8c304e7be3cea35b9dd525afa2e695960890f91
    |\ \  Merge: 9862048 d27b346
    | | | Author: Bruno Postle
    | | | Date:   Tue Jun 27 16:35:24 2023 +0100
    | | | 
    | | |     Merge pull request #1 from C-Claus/master
    | | |     
    | | |     this is a change
    | | | 
    | * | commit d27b346e56bea3fe3c88469592ec7df5538242a0
    |/ /  Author: Coen Claus
    | |   Date:   Tue Jun 27 17:32:03 2023 +0200
    | |   
    | |       this is change
    | |   
    | | * commit 44740e662dc521036a8f2c7947e4112019ef4fb3
    | |/  Author: Bruno Postle
    | |   Date:   Tue Jun 27 16:54:50 2023 +0100
    | |   
    | |       adopting ryans fork
    | | 
    | * commit cd40bdef9a46fb7821292524f66d857610fd87cb
    |/  Author: Ryan Schultz
    |   Date:   Tue Jun 27 10:35:53 2023 -0500
    |   
    |       moved windows
    |   
    *   commit 98620481a6f8f479120c955e32cb2bfad2692d5e
    |\  Merge: f771e10 df022b7
    | | Author: Bruno Postle
    | | Date:   Tue Jun 27 16:20:11 2023 +0100
    | | 
    | |     Merge branch 'branch2'
    | |     
    | |     # Conflicts:
    | |     #       model.ifc
    | | 
    | * commit df022b7ae733610b3092def1998f855dd2bd6bec
    | | Author: Bruno Postle
    | | Date:   Tue Jun 27 16:19:28 2023 +0100
    | | 
    | |     thrird window added
    | |   
    * |   commit f771e101e69cf73a1fe963906e0cba5f6adefbcf
    |\ \  Merge: 9b7084f 4c38ccb
    | | | Author: Bruno Postle
    | | | Date:   Tue Jun 27 16:14:36 2023 +0100
    | | | 
    | | |     Merge branch 'mybranch'
    | | |     
    | | |     # Conflicts:
    | | |     #       model.ifc
    | | | 
    | * | commit 4c38ccb5ac2a073f4b902f8248a4606374b42f60
    | |/  Author: Bruno Postle
    | |   Date:   Tue Jun 27 16:13:27 2023 +0100
    | |   
    | |       another window added
    | | 
    * | commit 9b7084f98c049cae0aa2a1f5fc38b328ee318f7c
    |/  Author: Bruno Postle
    |   Date:   Tue Jun 27 16:12:12 2023 +0100
    |   
    |       Window added
    | 
    * commit 53774fc5e7d89b5460bcf3ea6531d45c061dae74
      Author: Bruno Postle
      Date:   Tue Jun 27 16:08:59 2023 +0100
    
          Added model.ifc
    
    tlangCoencarlopavMassimoGorgiousbruno_perdigao
  • Ah damn I missed it, great job!

  • edited June 2023

    The screencast is 75 minutes long, if we had more time it could have been shorter. Thanks to everyone who joined-in, IFC Git is a collaboration tool above all:

    https://youtube.com/live/cJZhSCSSWdA

    theoryshawVDobranovAceMoultCoenMassimo
  • AceAce
    edited June 2023

    @brunopostle said:
    Yes, thanks to help from @bruno_perdigao add-on has been moved into BlenderBIM, so if you have the old add-on installed you should uninstall it.

    However we still have no way of shipping the git executable with BlenderBIM, so you do need to install this separately. On a Linux system you probably don't have to do anything, but on Windows you need to download git ( @Ace you don't need to do anything, you already have it). Similarly, if you want to use the experimental merge functionality, you need ifcmerge in your PATH, windows executable downloadable from here: https://github.com/brunopostle/ifcmerge/releases/tag/2022-06-20

    @brunopostle Bruno for Windows downloading Git is still a requirement right?

  • @Ace said:
    @brunopostle Bruno for Windows downloading Git is still a requirement right?

    Yes, I originally thought we might be able to do it all with the python git implementation, but we need the full git tool. I need to do some Windows instructions, including ssh keys for GitHub etc..

    Ace
  • [Updated] setting up Git collaboration in BlenderBIM

    Git support is built-into BlenderBIM, but some extra tools are needed to use it.

    Install Git

    On Linux you probably already have Git installed through your package manager. On Windows, download and install from the Git website; or install it using winget, using the cmd.exe command-line (hit the Windows key and type cmd):

    winget install --id Git.Git -e --source winget
    

    You may have to logout and log-in again

    Install ifcmerge

    On Linux, just download the ifcmerge script, put it in your PATH, ie. in ~/.local/bin and make it executable:

    chmod +x ~/.local/bin/ifcmerge
    

    Windows users, download and unzip the ifcmerge.exe file, and put it somewhere in your %PATH%. A good place to put it is in the same folder as git.exe, find out where this is using this command-line:

    where git
    

    Github

    Git-forges can use all sorts of access methods, but Github requires you to use ssh encryption and authentication, you will need to generate an ssh-key (with no password) and upload it to your Github account, you will also need to add the Github key to your known_hosts file.

    On Windows the Git tool installed earlier has everything you need, launch the Git Gui tool, select Help > Show SSH Key, then Generate Key (if you don't already have one) and paste this text into your Github account preferences. To add Github to your known_hosts file, launch the Git Bash tool (which is a command-line like cmd.exe), and briefly connect to the Github servers:

    ssh github.com
    

    This will ask you if you want to add their key (fingerprint SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM) to your known_hosts, type yes and exit since you don't have permission to do anything else.

    Coenbruno_perdigaoAceatomkarinca
  • It can't find the git tool. Once Git has been installed, you will need to restart Blender and maybe even log out of Windows and log in again.

  • Can you check if Blender can find Git? in the blender Python Console type these commands:

    import shutil
    shutil.which("git")
    shutil.which("git.exe")
    
  • This is really great guys!
    However I am running into the following error when trying to do an initial Git commit on Windows 10 (Blender v4.3.2 Bonsai v0.8.0).

    When I try to add an existing IFC project file to the BlenderBIM/Bonsai initiated Git repo I get this:
    ValueError: Absolute path 'C:/Users/Marius/OneDrive/_Renovation/IFCs/Kantershof_386_FIXED_Copy.ifc' is not in git repository at 'C:\\Users\\Marius\\OneDrive\\_Renovation\\IFCs'

    I can Git add the IFC project file, and make the initial Git commit from the Command Prompt without any issues.

    The Command Prompt Git commit does show up in BlenderBIM/Bonsai after the "Refresh revision list" button is clicked.

    Does anyone have any pointers how to fix this Git add Absolute path issue, as of course it would be lot handier to have this all in Blender UI instead of having to move to Command Prompt back and forward. Thanks!

  • @Armatura can you commit changes to this file once it has been added to the repository?

  • ..also there have been a couple of changes to the git functionality in the latest snapshots:

    • ifcmerge now ships with Bonsai, so you shouldn't have to install it separately to be able to merge branches.
    • On windows there is a button where you can try to install Git using winget and the Microsoft Store (the button only appears when you don't have Git). It would be nice to have reports of success or failure. It should be removed if it causes too much trouble.
    JanFOwura_qu
  • @brunopostle said:
    @Armatura can you commit changes to this file once it has been added to the repository?

    I get the same errors as with the Innitial CommitValueError: Absolute path 'C:/Users/Marius/OneDrive/_Renovation/IFCs/Kantershof_386_FIXED_Copy.ifc' is not in git repository at 'C:\\Users\\Marius\\OneDrive\\_Renovation\\IFCs'

    Mind you, if I load a new IFC Project from a Demo template, the Bonsai Git UI works fine.

  • @brunopostle said:
    ..also there have been a couple of changes to the git functionality in the latest snapshots:

    • ifcmerge now ships with Bonsai, so you shouldn't have to install it separately to be able to merge branches.
    • On windows there is a button where you can try to install Git using winget and the Microsoft Store (the button only appears when you don't have Git). It would be nice to have reports of success or failure. It should be removed if it causes too much trouble.

    So theifcmerge.exe should removed from .\Git\cmd directory?

  • @Armatura I don't know what the problem is, it shouldn't be an issue with OneDrive, but it is worth checking to see if it works outside of a OneDrive folder. I'll have a look in the code and see if these paths are normalised before being passed to git.

    Yes you can remove the ifcmerge.exe from the git installation folder, the version in Bonsai is more up to date with some minor fixes.

  • @brunopostle said:
    @Armatura I don't know what the problem is, it shouldn't be an issue with OneDrive, but it is worth checking to see if it works outside of a OneDrive folder. I'll have a look in the code and see if these paths are normalised before being passed to git.

    Yes you can remove the ifcmerge.exe from the git installation folder, the version in Bonsai is more up to date with some minor fixes.

    I think trying another folder in C:\Users\....\Documents\ via the Bonsai UI initial commit was one of the first things I tried while troubleshooting, and it throws the same error.

    The fact that it works fine with a fresh IFC project made from the "IFC4 Demo Template" points towards my IFC file having issues, but how can it then affect the Absolute/Relative path interpretation of Bonsai UI Git is beyond me.

  • And just like that, after purging the unused types & profiles, as well as moving all the objects to correct collections (Some objects were assigned to some random collection) in the Outliner, the Git started to work. I was able to Create the Repo, add the IFC file to it and commit it without any errors.

  • edited January 23
    ValueError: Absolute path 'C:/Users/Marius/OneDrive/_Renovation/IFCs/Kantershof_386_FIXED_Copy.ifc' is not in git repository at 'C:\\Users\\Marius\\OneDrive\\_Renovation\\IFCs'
    

    Somehow, and I don't know how, this means that blender has supplied the file path with / folder separators when it should everywhere be \\ on Windows. Can you remember how you got the IFC file in Bonsai? was it double-clicking on an IFC file? the File > Open menu? or creating a new file and saving it?

  • @brunopostle said:
    ValueError: Absolute path 'C:/Users/Marius/OneDrive/_Renovation/IFCs/Kantershof_386_FIXED_Copy.ifc' is not in git repository at 'C:\Users\Marius\OneDrive\_Renovation\IFCs'

    Somehow, and I don't know how, this means that blender has supplied the file path with / folder separators when it should everywhere be \\ on Windows. Can you remember how you got the IFC file in Bonsai? was it double-clicking on an IFC file? the File > Open menu? or creating a new file and saving it?

    I always get confused with these directory/path slash/backslash conventions for different OSs. But you are right, the path should be with "\" instead of "/" in Project Info IFC file path field, and then Bonsai Git UI works without a glitch. Still seems like some bug that Blender initially loads the IFC file path with "\".

  • Thanks, so if you open from the Recent Files list, the path is stored with / separators (which is wrong on Windows), but if you use File Open then it uses \\ (which is correct on Windows).

    Owura_qu
  • @brunopostle said:
    Thanks, so if you open from the Recent Files list, the path is stored with / separators (which is wrong on Windows), but if you use File Open then it uses \\ (which is correct on Windows).

    Not really.
    Opening the IFC file via File -> Open IFC Project or File -> Open Recent IFC Project results in / separators.
    Only when one loads the IFC file via the Bonsai UI Project Info directory field, does the separators switch to \ and allow Bonsai Git UI to add the IFC project file into to the Repo. You can see this moment, when the in the / switches to \ in GIF screen recording above.

Sign In or Register to comment.