dlubal-software / RFEM_Python_Client

Python client (or high-level functions) for RFEM 6 using Web Services, SOAP and WSDL
https://dlubal-software.github.io/.github/
MIT License
71 stars 28 forks source link

BUG: Exported Thickness with Layers from scriptgenerator has wrong thickness_type #280

Closed MaximilianFranz closed 10 months ago

MaximilianFranz commented 1 year ago

Describe the bug Exporting an RFEM model of a CLT Thickness with 3 layers using the script generator yields an object like:

"thickness_layers_reference_table": [
                        {
                            "no": 1,
                            "row": {
                                "layer_no": 1,
                                "layer_type": "E_LAYER_TYPE_LAYER",
                                "thickness_type": 0,
                                "material": 1,
                                "thickness": 0.04,
                                "angle": 0.0,
                                "integration_points": 9,
                                "connection_with_other_topological_elements": False,
                                "specific_weight": 4200.0,
                                "weight": 168.0,
                            },
                        },
                        ...

where thickness_type is 0. Trying to run that back against the server yields an errors with "Ungültiger Objekttyp" for the thickness_type field. Changing it to "thickness_type": "1" solved the problem. I.e. using 1 indexing and string instead of number (may not need the string, but the 0 didn't work.

Not sure what the thickness_type references and if it is something I have misconfigured when trying to run the script against the server. I cannot find anything in the exporter script that would define a thickness_type to be referenced so maybe this should be exported as "1" in the first place?

Expected behavior Roundtrip should be possible

Will add the RFEM model soon

dogukankaratas commented 1 year ago

Hi @MaximilianFranz,

Thanks for reaching us out. After my investigation, you're right. thickness_type should be returned as 1 in the script generator. We started to working on it, I'll let you know asap when it's fixed 🚀

MaximilianFranz commented 1 year ago

In RFEM in the model it says under "Dicke" for the layer "Direkt" - so I am confused as to what is expected under thickness_type? Can you explain that?

We went back and used 0 now again and it worked to yield the "Direkt" but then we get a

Server raised fault: 'Objekt: Dicke Nr. 1\nAttribut: Dickentyp\nFehler: Ung\xc3\xbcltiger Objekttyp.'

error.

for this object:

 Thickness(
            no=1,
            params={
                "type": "TYPE_LAYERS",
                "name": "Test-CLT-Thickness",
                'layers_total_thickness': 0.1,
                'layers_total_weight': 420.0,
                "layers_reference_table": {
                    "thickness_layers_reference_table": [
                        {
                            "no": 1,
                            "row": {
                                "layer_no": 1,
                                "layer_type": "E_LAYER_TYPE_LAYER",
                                "thickness_type": 0,
                                "material": 1,
                                "thickness": 0.04,
                                "angle": 0.0,
                                "integration_points": 9,
                                "connection_with_other_topological_elements": False,
                                "specific_weight": 4200.0,
                                "weight": 168.0,
                            },
                        },
                        {
                            "no": 2,
                            "row": {
                                "layer_no": 2,
                                "layer_type": "E_LAYER_TYPE_LAYER",
                                "thickness_type": 0,
                                "material": 1,
                                "thickness": 0.02,
                                "angle": 1.5707963267948966,
                                "integration_points": 9,
                                "connection_with_other_topological_elements": False,
                                "specific_weight": 4200.0,
                                "weight": 84.0,
                            },
                        },
                        {
                            "no": 3,
                            "row": {
                                "layer_no": 3,
                                "layer_type": "E_LAYER_TYPE_LAYER",
                                "thickness_type": 0,
                                "material": 1,
                                "thickness": 0.04,
                                "angle": 0.0,
                                "integration_points": 9,
                                "connection_with_other_topological_elements": False,
                                "specific_weight": 4200.0,
                                "weight": 168.0,
                            },
                        },
                    ]
                },
                "D11": 922286.7639684491,
                "D12": 20009.006511038864,
                "D13": 0.0,
                "D16": -2.3283064365386963e-10,
                "D17": -8.36735125631094e-11,
                "D18": 0.0,
                "D22": 38449.739538780086,
                "D23": 0.0,
                "D27": -1.0186340659856796e-10,
                "D28": 0.0,
                "D33": 57499.99999999996,
                "D38": -2.3283064365386963e-10,
                "D44": 10458816.501368133,
                "D45": 0.0,
                "D55": 8731292.26656216,
                "D66": 899796911.0420213,
                "D67": 24010807.813246638,
                "D68": 0.0,
                "D77": 253086893.16665372,
                "D78": 0.0,
                "D88": 68999999.99999997,
                "is_generated": False,
            },
        )
dogukankaratas commented 1 year ago

The thickness_type attribute have type OBJECT_INDEX and usually in Webservices operations it is converted to user_id. This user_id always starts from 1, so you cannot set it 0. It's a bug that it returns a value 0. We started to work on it to fix this issue already.