SpecklePy - Receiving commit_data from ETABS

Hey Specklers,

quick question regarding using SpecklePy and receiving commit_data that was pushed from ETABS.

For receiving commit_data the following code lines are used:

commit = branch_obj.client.commit.get(branch_obj.stream.id, branch_obj.commits.items[0].id)

transport = ServerTransport(branch_obj.stream.id, branch_obj.client)
commit_data = operations.receive(commit.referencedObject, transport)

For a commit pushed from Revit the result is readable. Printing the output we get:

Base(id: 15c6f5b25011410e78ed30af3f2c4e29, speckle_type: Speckle.Core.Models.Collection:Objects.Organization.Model, totalChildrenCount: 109)

However, when I do the exact same thing, but for information pushed from ETABS, I get the following error message:

    commit_data = operations.receive(commit.referencedObject, transport)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\api\operations.py", line 61, in receive
    return _untracked_receive(obj_id, remote_transport, local_transport)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\api\operations.py", line 88, in _untracked_receive
    return serializer.read_json(obj_string=obj_string)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\serialization\base_object_serializer.py", line 313, in read_json
    return self.recompose_base(obj=obj)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\serialization\base_object_serializer.py", line 367, in recompose_base
    base.__setattr__(prop, self.recompose_base(obj=ref_obj))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\serialization\base_object_serializer.py", line 378, in recompose_base
    base.__setattr__(prop, self.handle_value(value))
                           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\serialization\base_object_serializer.py", line 403, in handle_value
    obj_list = [self.handle_value(o) for o in obj]
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\serialization\base_object_serializer.py", line 403, in <listcomp>
    obj_list = [self.handle_value(o) for o in obj]
                ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\serialization\base_object_serializer.py", line 417, in handle_value
    return self.recompose_base(obj=obj)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\serialization\base_object_serializer.py", line 378, in recompose_base
    base.__setattr__(prop, self.handle_value(value))
                           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\serialization\base_object_serializer.py", line 403, in handle_value
    obj_list = [self.handle_value(o) for o in obj]
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\serialization\base_object_serializer.py", line 403, in <listcomp>
    obj_list = [self.handle_value(o) for o in obj]
                ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\serialization\base_object_serializer.py", line 417, in handle_value
    return self.recompose_base(obj=obj)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\serialization\base_object_serializer.py", line 367, in recompose_base
    base.__setattr__(prop, self.recompose_base(obj=ref_obj))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\serialization\base_object_serializer.py", line 358, in recompose_base
    base.__setattr__(prop, value)
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\objects\base.py", line 381, in __setattr__
    value = self._type_check(name, value)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\bsteinhagen\AppData\Roaming\Python\Python311\site-packages\specklepy\objects\base.py", line 438, in _type_check
    raise SpeckleException(
specklepy.logging.exceptions.SpeckleException: SpeckleException: Cannot set 'SectionProfile.shapeType':it expects type 'typing.Optional[specklepy.objects.structural.properties.ShapeType]',but received type 'int'

Any help on why this may be? Is there something in ETABS which is throwing a SectionProfile.shapetype exception?

Thanks in advance.

Cheers,
Björn

1 Like

As an addendum:
@bjoern wanted to take a look, if he could catch those element results from Etabs on Speckle to calculate some core walls with Python … so basically a test balloon.

@connor, @gjedlicska:
Might be something to take a look at on the structural connectors and SpecklePY. Like always with us … it is not super important. In case you need access to the stream either we invite you to our Speckle deployment or we try to upload it on your speckle.xyz. Please let us know, what you need as input. Thanks guys :slight_smile:

1 Like

I’m gonna ping @connor and look into it 2gether

2 Likes

Hey @bjoern @AlexHofbeck, we’ve given it a brief look, and found some discrepancies between our C# object models and specklepy. I’ve just pushed a new 2.14.1 release of specklepy (should land in 5 minutes).

Could you check with the new version?

4 Likes

Hey @gjedlicska just checked it out. Solved with the new version, awesome! Thanks

2 Likes

Hey @gjedlicska,

sorry to bother you again on this topic, but using the new ETABS Connector (2.14.1), there seems to be issues with wall objects Beams, columns etc. get pushed, however, the wall entities seem to throw an error and are not included in the commit:

Sending from ETABS

Received in Speckle server: walls excluded and “Failed” when looking at the log

Thanks in advance!

Regards,
Björn

1 Like

Hey Björn, thanks for reporting this and sorry about the bugs. This is more on @connor 's table to know what is going on, he is our resident ETABS guy :slight_smile:

2 Likes

thanks @gjedlicska! Resident ETABS guy - cool title to have :sunglasses: :sweat_smile: No worries, I’ll wait for his response when he gets time :slight_smile:

1 Like

Hi @bjoern,

Thanks for reaching out about this issue! I’ve tried for a bit and I cannot reproduce this on my end. Could you give me a bit more information?

  • Which version of ETABS are you using?
  • Do you have any other ETABS plugins installed?
  • Could you translate that error message to english for me :sweat_smile:
2 Likes

Hi @connor,

kindly see responses to your questions below:

  • ETABS Version 20.3.0
  • No other plugins installed
  • Sure: “The file “PolygonMesher, Version=2.14.1.10688, Culture=neutral, PublicKeyToken=null” or a dependency on it was not found. The system cannot find the specified file.”

The Connector was from the release last week.

Thanks in advance.

Regards,
Björn

Hello @bjoern

Thanks for the additional info. I was able to find what I believe was the issue and we released a new version, 2.14.3, that should fix this. Please download the new version and let me know if it fixes this issue!

2 Likes

Hi @connor,

thanks for having a look! I have updated to 2.14.3 and re-tried. The floors and walls still fail, however, the error message has changed:

“The data or assembly “MathNet.Spatial, Version=0.6.0.0. Culture=neutral, PublicKeyToken=null” or a Dependancy thereof couldn’t be found. The system can’t find the given file”

Regards,
Björn

1 Like

@bjoern

Ah dang. Okay I see that I didn’t completely fix the issue. Stay tuned, I’ll have an actual fix soon.

Thank you again for reporting this issue

1 Like