Profile Section Libraries for Structural Engineering and beyond!

124

Comments

  • This thread has been very active, unfortunately I can't really contribute here since I'm working on my blender and python skills, but I wanted to leave this idea here for you guys to consider.

    When you are talking about the weight of steel sections there is a difference in between the theoretical weight and the commercial weight because of the tolerances in the hot rolling process.
    You might want to include that commercial weight as well in the data of the property set.

    (This difference has been a source of discussion in some of the projects I have seen over the past years.)

    jchkochArnoldEstruturas
  • depends. Where are you based? If the sections you use from your country are not included xou could provide the data in a structured data format. This is easy and a value contribution allredy.

  • I'm based in Belgium.
    I have a file somewhere with both weights in it for the steel sections that are commonly used here. (HEA, HEB, HEM, IPE, IPN, UPE , UPN)

    For the square (SHS), rectangular (RHS) & circular (CHS) sections, cold-formed (CF) or hot-formed (HF), I have some data but it's incomplete since the lists of available sections differs from supplier to supplier.

    I will post what I have in a couple of days, I'm a bit of grid right now.

    Jesusbillbernd
  • edited September 5

    splitted and normalized data file. As an example I did it for L-profiles, Z-profiles an I-profiles.

    see data directory https://github.com/boltsparts/BOLTS/tree/master/data

    Massimo
  • finished section profile normalization. I will leave waschers and hex etc. ATM.
    Who ever on this world has profile section data which is not in BOLTS help to improve it to be the most complete profile library

  • edited September 6

    interesting read in the regard of BOLTS interna. ... https://www.bolts-library.org/en/docs/0.3/specification.html

  • @bernd trying to read the new blt files I get the following message
    yaml.constructor.ConstructorError: could not determine a constructor for the tag '!include'
    Do you use any special library to link the yaml file?
    Also, I see that the "IPN" file is not formatted as the other files, it has quotes for the keys, and the columns are not aligned. How did you do this alignment?

  • @bernd let's say that I manage to enrich the table data in the yaml file, when I attempt to write it back I always get sth that looks much worse from what you have there. How can I write back the enriched dictionary in the yaml file in the format you did?
    I use this command

    with open("path_to_ibeam_hea.yaml", "w") as f:
        yaml.dump(profile_data, f, default_flow_style=False)
    

    Both False or True for default_flow_style produce different results from what you have
    Honestly, I see quite a bit of friction for anyone that wants to contribute

  • edited September 6

    @Jesusbill said:
    @bernd trying to read the new blt files I get the following message
    yaml.constructor.ConstructorError: could not determine a constructor for the tag '!include'
    Do you use any special library to link the yaml file?

    You try to read the blt files with yaml an not with BOLTS API ;-)

    Yes I hat to tweak YAML. YAML out of the box does not support YAML in YAML. See commit https://github.com/boltsparts/BOLTS/commit/d3aa3706fd235c942a144be1867ac594a0926be9 See this link https://github.com/boltsparts/BOLTS/commit/d3aa3706fd235c942a144be1867ac594a0926be9#diff-9bbdb1d7d220fdea66d052c915f916bf6aa3bf24fc0c2889e11496dc9b8e15bdR30

  • edited September 6

    @Jesusbill said:
    @bernd ... Also, I see that the "IPN" file is not formatted as the other files, it has quotes for the keys, and the columns are not aligned. How did you do this alignment?

    This was done by Johannes in 2014. I just copied his code in a separate file. See https://github.com/boltsparts/BOLTS/commit/8af8b9524ef4cc18c9a1f31293f2c1bc02f78aa9#diff-09db76d5a6e5977f808ce9caac40527cba3cdf461aafa1af9a439477ac822477R543-R565

    I did not do reformat the geometric properties files. I did reformat just the blt files.

  • This was done by Johannes in 2014. I just copied his code in a separate file.
    I did not do reformat the geometric properties files. I did reformat just the blt files.

    Ok sounds good

  • @bernd

    You try to read the blt files with yaml an not with BOLTS API ;-)

    So should I use the code that you wrote here?
    Cause I am getting an error when running the python bolts.py export pythonpackage command

    Traceback (most recent call last):
      File "bolts.py", line 362, in <module>
        args.func(args)
      File "bolts.py", line 44, in export
        dbs["pythonpackage"] = PythonPackageData(repo)
      File "/home/jesusbill/Dev-Projects/github.com/Jesusbill/BOLTS/bolttools/pythonpackage.py", line 33, in __init__
        self, repo, "pythonpackage"
      File "/home/jesusbill/Dev-Projects/github.com/Jesusbill/BOLTS/bolttools/freecad.py", line 78, in __init__
        raise e
    bolttools.errors.MalformedRepositoryError: pythonpackage repo directory does not exist.  Repository path: /home/jesusbill/Dev-Projects/github.com/Jesusbill/BOLTS
    

    Sorry if I am overwhelming you with questions but I try to keep my enthusiasm high for this project

  • edited September 6

    @Jesusbill said:

    You try to read the blt files with yaml an not with BOLTS API ;-)

    So should I use the code that you wrote here?

    No. Best resource ATM are these lines of code: https://github.com/boltsparts/BOLTS/blob/5320b7185a6bb18ada17a13657ff8075594afe97/backends/common/repo_tools.py#L139-L255

  • edited September 6

    @Jesusbill said:
    Cause I am getting an error when running the python bolts.py export pythonpackage command

    Traceback (most recent call last):
      File "bolts.py", line 362, in <module>
        args.func(args)
      File "bolts.py", line 44, in export
        dbs["pythonpackage"] = PythonPackageData(repo)
      File "/home/jesusbill/Dev-Projects/github.com/Jesusbill/BOLTS/bolttools/pythonpackage.py", line 33, in __init__
        self, repo, "pythonpackage"
      File "/home/jesusbill/Dev-Projects/github.com/Jesusbill/BOLTS/bolttools/freecad.py", line 78, in __init__
        raise e
    bolttools.errors.MalformedRepositoryError: pythonpackage repo directory does not exist.  Repository path: /home/jesusbill/Dev-Projects/github.com/Jesusbill/BOLTS
    
    • seams you are on Linux
      some suggestions ...

    • I assume python starts a Python3 shell for you! For me it is still python3.

    • I assume the directory "/home/jesusbill/Dev-Projects/github.com/Jesusbill/BOLTS" even if BOLTS says it does not. Would you double check?
  • @Jesusbill said:
    Sorry if I am overwhelming you with questions but I try to keep my enthusiasm high for this project

    great, thus ask as much questions as you have :-)

    Jesusbill
  • @bernd said:
    splitted and normalized data file. As an example I did it for L-profiles, Z-profiles an I-profiles.

    see data directory https://github.com/boltsparts/BOLTS/tree/master/data

    I had a go at the YAML file for IPN section data...
    This is what you are looking for?
    https://drive.google.com/file/d/1Wha8OFYaPUlUp93tCn8CKjT_eAUwOOGc/view?usp=sharing

    I also had a quick look at the INP data here: https://github.com/boltsparts/BOLTS/blob/master/data/profile_i/ibeam_inp.yaml

    Jesusbill
  • regenerated the website and added a blog post ... https://boltsparts.github.io/en/blog/index.html

  • @bernd

    I assume python starts a Python3 shell for you! For me it is still python3.

    I use conda environments so yes python point to python3 in this case

    I assume the directory "/home/jesusbill/Dev-Projects/github.com/Jesusbill/BOLTS" even if BOLTS says it does not. Would you double check?

    Yes this is the directory of bolts
    One part of this command is working as it does check the validity of the data; I changed for example manually the yaml file for HEA and I was getting an error for missing columns.
    Tracing back the error, it is raised here. The problem is that self.backend_root which points to a "pythonpackage" directory in the main folder does not exist.
    I went on creating this folder and the command is now run but nothing is written in there, instead a new folder output/pythonpackage/boltspy is created which seems to contain a copy of all data and of of the folder bolttools but then again running the rest of the code you suggest does not allow me to: import boltspy as bolts

    (ifc) jesusbill@pop-os:~/Dev-Projects/github.com/Jesusbill/BOLTS$ python
    Python 3.7.10 (default, Feb 26 2021, 18:47:35) 
    [GCC 7.3.0] :: Anaconda, Inc. on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> bolts_code_path = "/home/jesusbill/Dev-Projects/github.com/Jesusbill/BOLTS/"
    >>> import sys
    >>> from os.path import join
    >>> sys.path.append(join(bolts_code_path, "BOLTS", "output", "pythonpackage"))
    >>> import boltspy as bolts
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ModuleNotFoundError: No module named 'boltspy'
    

    I will try to look into it later today, I guess should be a trivial issue. But what is the pythonpackage folder needed for in the main folder, I guess this is not really needed. I see that it also looks for the freecad folder as well. Hmm, a bit mysterious how things are done

  • edited September 7

    if I delete the empty directory pythonpackage in the main source directory of BOLTS I can reproduce your problem. The pythonpackage is based on freecad backend. In the freecad directory are the modules to create geometry in FreeCAD. Since we do not create geometry with the pythonpackage this directory is empty. Since I had a errormessage on creation of distribution pythonpacke I just created a empty directory pythonpackage and commited this one. but somehow this is not on github ... https://github.com/boltsparts/BOLTS/tree/5eaf1b38b00403d380b6388969ef95f7aa4643b0

    If you create this empty directory pythonpackage it should work. At least it does for me. I will have a look for a better solution soon.

  • edited September 7

    Ok so I should have defined the bolts_code_path one level less, now I can import boltspy as bolts but I still get the same error I got initially

    Traceback (most recent call last):
      File "test.py", line 5, in <module>
        import boltspy as bolts
      File "/home/jesusbill/Dev-Projects/github.com/Jesusbill/BOLTS/output/pythonpackage/boltspy/__init__.py", line 28, in <module>
        pythonpackage_db = PythonPackageData(repo)
      File "/home/jesusbill/Dev-Projects/github.com/Jesusbill/BOLTS/output/pythonpackage/boltspy/bolttools/pythonpackage.py", line 33, in __init__
        self, repo, "pythonpackage"
      File "/home/jesusbill/Dev-Projects/github.com/Jesusbill/BOLTS/output/pythonpackage/boltspy/bolttools/freecad.py", line 78, in __init__
        raise e
    boltspy.bolttools.errors.MalformedRepositoryError: pythonpackage repo directory does not exist.  Repository path: /home/jesusbill/Dev-Projects/github.com/Jesusbill/BOLTS/output/pythonpackage/boltspy
    

    I am gonna leave it for now but I think we have to define a simple way of accessing and writing the data

  • edited September 7

    added the empty directory to BOLTS github and placed some file inside to be sure it will be there. It is not a fast one to get rid of the empty directory ...

  • @jchkoch @bernd I am attaching an enriched yaml file for HEA based on the data I had. I have also attached a metadata.txt that shows units and a related name for each of the column added. These related names are mostly taken from the Ifc Profile Mechanical Property Set shown at the end of the page. I say almost because there is not a one-to-one association, IFC pset has Maximum and Minimum section modulus (do we really need that?) and a PlasticShapeFactor instead of plastic section modulus.

    From the list I have I would also add the centre of gravity in two directions and possibly the mass per length.
    And I am not sure about the inclusion of the shear areas, Avy, Avz. I think they are good to have but maybe they are not given for all types of profiles or they depend also on formulae that are code-dependent.
    What do you think on these thoughts?

    @jchkoch I checked also with the table you calculated for HEA, there are some small differences in the final numbers, which is expected I guess, and I guess I would prefer we take these values from existing tables and use it in cases we do not have data, or eventually as a tool for on-the-fly calculations of user-defined profiles. One question, are these properties you provide all that is given by section properties tool? Or there are other properties you did not include? Plastic section moduli are missing and torsional constant, for example

  • would you report if that fixed it for you if you clone the latest repo?

  • since you included Wpl and Wel you implicit added materials to BOLTS, yeah we did it ;-)
    We need at least to make some notes which tensile yield strenght was used to calculate the plastic numbers. Later we even could make them material dependent. In European countries normaly values are given for S235 and S355. Furthermore if we have two or even three (how many we should have) materials to have the plastic numbers for, how do we make this in the table?

    Or should we start small and only add the non material dependend numbers ATM ?

    jchkoch
  • @bernd said:
    would you report if that fixed it for you if you clone the latest repo?

    no @bernd it does not solve the problem. I had already created the empty folder as I wrote in that comment which allows to get through the "export" command. But then when running the rest of the code as I write in this comment I still get the same error when trying to import boltspy as bolt

    EDIT: I see now the solution is to create another "pythonpackage" folder in the output/pythonpackage/boltspy folder.

  • @bernd

    since you included Wpl and Wel you implicit added materials to BOLTS, yeah we did it ;-)

    In my book Wpl and Wel are material independent properties, no?? You need to multiply by the yield stress Fy to obtain My ad Mpl.

  • @Jesusbill said:
    @bernd

    since you included Wpl and Wel you implicit added materials to BOLTS, yeah we did it ;-)

    In my book Wpl and Wel are material independent properties, no?? You need to multiply by the yield stress Fy to obtain My ad Mpl.

    Damn your are right ... To much BIM, I should not disregard the structural analysises in favour of BIM ...

    Jesusbilljchkoch
  • @Jesusbill said:

    @bernd said:
    would you report if that fixed it for you if you clone the latest repo?

    no @bernd it does not solve the problem. I had already created the empty folder as I wrote in that comment which allows to get through the "export" command. But then when running the rest of the code as I write in this comment I still get the same error when trying to import boltspy as bolt

    EDIT: I see now the solution is to create another "pythonpackage" folder in the output/pythonpackage/boltspy folder.

    damn to much changes at once last days ... you are right here too. I added a regression here https://github.com/boltsparts/BOLTS/commit/3475b1d5db2590 which I just fixed here https://github.com/boltsparts/BOLTS/commit/c87dcc04efc193

    would you give it a try once again ...

  • @bernd

    would you give it a try once again ...

    yes now it works

  • sorry I have been gone for a bit... the weather was too nice on the weekend and work has been busy......

    @jchkoch @bernd I am attaching an enriched yaml file for HEA based on the data I had. I have also attached a metadata.txt that shows units and a related name for each of the column added. These related names are mostly taken from the Ifc Profile Mechanical Property Set shown at the end of the page. I say almost because there is not a one-to-one association, IFC pset has Maximum and Minimum section modulus (do we really need that?) and a PlasticShapeFactor instead of plastic section modulus.

    @Jesusbill I think the max. and min. section modulus could be useful as generally depending on the orientation of the member which the profile helps describe the "max" or "min" section modulus is needed for various structural calculations.

    From the list I have I would also add the centre of gravity in two directions and possibly the mass per length.

    here I would say the centre of gravity is useful but a mass per length could be left to other "addons" within the IFC ecosystem (i.e. LCA) where us structural guys when needed could use those other tools.

    And I am not sure about the inclusion of the shear areas, Avy, Avz. I think they are good to have but maybe they are not given for all types of profiles or they depend also on formulae that are code-dependent.
    What do you think on these thoughts?

    shear areas I agree!

    @jchkoch I checked also with the table you calculated for HEA, there are some small differences in the final numbers, which is expected I guess, and I guess I would prefer we take these values from existing tables and use it in cases we do not have data, or eventually as a tool for on-the-fly calculations of user-defined profiles. One question, are these properties you provide all that is given by section properties tool? Or there are other properties you did not include? Plastic section moduli are missing and torsional constant, for example

    yes, in the data I calculated I only computed the elastic "geometric-only" properties and not any plastic section moduli as I did not want to get into specifying materials yet...

    Jesusbillbernd
Sign In or Register to comment.