Das Wissen aller Anwender nutzen

Im Allplan Connect Forum tauschen sich Anwender aus, geben wertvolle Tipps oder beraten sich bei ganz konkreten Aufgabenstellungen − auch international.
Und damit wirklich keine Frage unbeantwortet bleibt, unterstützen die Mitarbeiter des Technischen Supports ebenfalls aktiv das Forum.

Es erwarten Sie:

  • Foren-Vielfalt aus CAD Architektur, CAD Ingenieurbau uvm.
  • Tipps von User für User
  • international: Deutsch, Englisch, Italienisch, Französisch und Tschechisch

Melden Sie sich jetzt an und diskutieren Sie mit!

Zur Registrierung

[Frage] Get Diameter List


Hello,

is it possible to write a formula to find the reinforcement diameters in open drawing files with Python?

Hatem OZDEMIR
Architect | Allplan Trainer | BIM Manager
Website: http://www.mimcad.com
Website: http://www.bimakademi.com
e-mail: hatemozdemir[at]gmail.com
Ankara / Turkiye
LinkedIn-Profil
YouTube

Hilfreichste Antwort anzeigen Hilfreichste Antwort verbergen

Hi Hatem,

You would like to just go through all the reinforcement in open drawing files and check, what rebar diameters are used? Then this piece of code would do the job:

def get_all_diameters(doc: AllplanElementAdapter.DocumentAdapter) -> set[float]:
    all_elements = AllplanBaseElements.ElementsSelectService.SelectAllElements(doc)
    bar_definitions = filter(lambda adapter: adapter.GetElementAdapterType().GetGuid() == AllplanElementAdapter.BarsDefinition_TypeUUID, all_elements)
    all_diameters = set()

    for bar_definition in bar_definitions:
        bar_position_data = AllplanReinf.BarPositionData(bar_definition)
        all_diameters.add(bar_position_data.GetDiameter())

    return all_diameters

At the end you get a set of diameters. As you can see, you need the DocumentAdapter (object representing currently opened drawing files) as input.

When you use this function in a PythonPart, you have access to this object. If you want to use this function in a formula in a legend or report, that won't work, as you can't get the DocumentAdapter there.

Best,
Bart

11 - 11 (11)

Zitiert von: TheSocialPotwal
Please provide the whole .py and .pyp file. Save the .py file as .txt and zip it with the .pyp file.

I think what Hatem is trying to achieve here is processing the list of diameters placed in he drawing file with a python formula used in ALLPLAN formula interpreter (like you have in a legend field or label) and not in a PythonPart.
And the key difference between those two is that you have completely two different inputs. In a Pythonpart, before the script execution ALLPLAN prepares the DocumentAdapter - an object through which you can access all resources in the currently opened drawing files.
This is not the case for the python functions used in a legend/label/report. Here, what you can use as input for your function is only an attribute value. So it can be a string, integer, double, but not the whole document. The therefore, my function won't work in this context.

Best,
Bart

11 - 11 (11)