BIM Attribute mit hilfe von Datenbak erstellen und verwalten


Hallo zusammen,

da in der Infrastrukturplanung derzeit noch keine BIM-Standards (P-Sets, Attribute,...) vorhanden sind, erarbeitet unser Büro derzeit einen umfangreichen Attributkatalog für verschiedene Pilotprojekte. Damit die Daten immer aktuell sind udn auch von verschiedenen Benutzern abgerufen werden können haben wir uns dafür entschieden, eine Datenbank (Access) anzulegen in der alle Attribute verwaltetet werden.

In Allplan ist es bekanntermaßen möglich Attribute innerhalb des Programms selbst zu erstellen. Da dies bei einer großen Anzahl Attribute aber sehr mühselig und fehleranfällig bei Änderungen ist, ist mir der Gedanke gekommen die Attribute durch ein Skript erstellen zu lassen.

Soweit mir bekannt enthält die Datei AttributeDefinitionCollectionLocal_de.xml die Attributdefinitionen. Die Idee ist jetzt diese Datei durch das Skript zu beschreiben und so automatisch die Attribute zu erstellen. Hat jemand bereits Erfahrung mit einem solchen Vorgehen gemacht?

In der Datei wird jedem Attribut beim Erstellen eine Uid zugewiesen. Wie wird diese generiert bzw. was sind zulässige Werte die hier eingetragen werden können?

Gruß
Jan

Adjuntos (1)

img
UiD.jpg
Type: image/jpeg
Descargado 27 veces
Size: 9,42 KiB

Show most helpful answer Hide most helpful answer

Der Eingabetyp "Listbox ohne Eingabe" erzeugt den Attributtyp "Enum-Attribut".

Für alle nicht Programmierer: Eine Enumeration ist ein Aufzählunstyp.
Eingeführt wurden diese Enum-Attribute eigentlich, damit man die Werte in der Definitions-XML bereits lokalisieren kann, wenn es Strings sind. z.B. beim den Attributen Gewerk , Umbaukategorie, Türanschlag oder Ansichtsart.
Eine Enumeration ist eine Liste von festgelegten Werten. Der Sinn dabei ist: Man speichert nicht den Wert im Attribut, sondern nur die Position des Wertes innerhalb der Liste. Der "entsprechende Wert" kommt aus der Definition des Attributes.

Bei der Speicherung in der AttributeDefinitionCollection.xml wird daraus jedoch ein Key-Value-Pair:

<AttributeDefinition>
...
<Enumeration>
      <Item>
        <Key>0</Key>
        <Value />
      </Item>
      <Item>
        <Key>1</Key>
        <Value>F30</Value>
      </Item>
      <Item>
        <Key>2</Key>
        <Value>F90</Value>
      </Item>
...
</Enumeration>
...
</AttributeDefinition>

Dabei wird nur der Key im Attribut gespeichert.

Nun würde man erwarten, dass, wenn man den Wert Key 1 = "F30" löscht, der Key der darauffolgenden
Werte (Key 2="F90", Key 3="BW" usw.) gleich bleibt. Das ist scheinbar nicht der Fall.

Es ist sehr gefährlich bzw. unmöglich, Werte aus der Liste zu löschen!
Durch die Änderung der Keys ändern sich projektweit die angezeigten Werte in den Attributen der Elemente! Meist unbemerkt und unbeabsichtigt!

Der Eingabetyp "ComboBox" verfährt anders. Er enthält nur eine Liste von "Vorschlagswerten" für den Attribut-Wert. Der Wert wird vollständig im Attribut gespeichert. Dadurch kann man die Auswahlliste beliebig erweitern, ohne dass die Attribut-Werte verfälscht werden.

Durch das oben genannte Verhalten verwenden wir keine Enum-Attribute mehr.
Wir verwenden ausschliesslich Attribute mit Eingabemethode "Combobox", auch wenn dadurch die Einheitlichkeit der Werte nicht gewahrt werden kann! Auch sind bei uns grundsätzlich Änderungen an den Attributen verboten!
Diese darf nur der Admin anlegen und ändern.

11 - 20 (26)

Cita de: Nemo
Das Ganze ist nicht ganz durchschaubar geschweige denn dokumentiert, deshalb würde ich von "Listbox ohne Eingabe"-Attributen als Ganz- oder Fließkomma-Zahl abraten!

Zu dem Schluss bin ich auch gekommen, da ich mich mit XML kenne noch nicht so gut auskenne. Ist das in XML so üblich auf diese Weise Listen zu deklarieren? In den mir bekannten Programmiersprachen hat eine Liste (bzw. Array) immer auch einen (richtigen) Datentyp.

Hello,

In XML, the programmer can do what he wants, it is rather a "storage" language. Everything is stored as "String". It is the processing of the value by the program which will restore its type.
_______________

In XML kann der Programmierer tun, was er will, es ist eher eine "Speicher" -Sprache. Alles wird als "String" gespeichert. Es ist die Verarbeitung des Wertes durch das Programm, die seinen Typ wiederherstellt.


Hallo zusammen,

In Bezug auf das "Listbox ohne Eingabe" Attribut möchte ich Folgendes hinzufügen.

Wenn man die Liste der Werte ändert (verkürzt oder verlängert), springen (besteigen) die Werte in allen Bauteilen des Modells, denen das Attribut zugewiesen wurde, an ihren Platz. Dies macht die Verwendung des Attributs sehr gefährlich. Vielleicht passiert es auch mit der ComboBOX-Liste, aber ich habe keine Tests durchgeführt. im Beispiel unten (Bild): Wenn man C eliminiert, erhalten alle Bauteile, die den Wert E hatten, den Wert F.

LG

Adjuntos (1)

img
Bild.jpg
Type: image/jpeg
Descargado 18 veces
Size: 30,48 KiB

Der Eingabetyp "Listbox ohne Eingabe" erzeugt den Attributtyp "Enum-Attribut".

Für alle nicht Programmierer: Eine Enumeration ist ein Aufzählunstyp.
Eingeführt wurden diese Enum-Attribute eigentlich, damit man die Werte in der Definitions-XML bereits lokalisieren kann, wenn es Strings sind. z.B. beim den Attributen Gewerk , Umbaukategorie, Türanschlag oder Ansichtsart.
Eine Enumeration ist eine Liste von festgelegten Werten. Der Sinn dabei ist: Man speichert nicht den Wert im Attribut, sondern nur die Position des Wertes innerhalb der Liste. Der "entsprechende Wert" kommt aus der Definition des Attributes.

Bei der Speicherung in der AttributeDefinitionCollection.xml wird daraus jedoch ein Key-Value-Pair:

<AttributeDefinition>
...
<Enumeration>
      <Item>
        <Key>0</Key>
        <Value />
      </Item>
      <Item>
        <Key>1</Key>
        <Value>F30</Value>
      </Item>
      <Item>
        <Key>2</Key>
        <Value>F90</Value>
      </Item>
...
</Enumeration>
...
</AttributeDefinition>

Dabei wird nur der Key im Attribut gespeichert.

Nun würde man erwarten, dass, wenn man den Wert Key 1 = "F30" löscht, der Key der darauffolgenden
Werte (Key 2="F90", Key 3="BW" usw.) gleich bleibt. Das ist scheinbar nicht der Fall.

Es ist sehr gefährlich bzw. unmöglich, Werte aus der Liste zu löschen!
Durch die Änderung der Keys ändern sich projektweit die angezeigten Werte in den Attributen der Elemente! Meist unbemerkt und unbeabsichtigt!

Der Eingabetyp "ComboBox" verfährt anders. Er enthält nur eine Liste von "Vorschlagswerten" für den Attribut-Wert. Der Wert wird vollständig im Attribut gespeichert. Dadurch kann man die Auswahlliste beliebig erweitern, ohne dass die Attribut-Werte verfälscht werden.

Durch das oben genannte Verhalten verwenden wir keine Enum-Attribute mehr.
Wir verwenden ausschliesslich Attribute mit Eingabemethode "Combobox", auch wenn dadurch die Einheitlichkeit der Werte nicht gewahrt werden kann! Auch sind bei uns grundsätzlich Änderungen an den Attributen verboten!
Diese darf nur der Admin anlegen und ändern.

jetzt weiss ich auch warum bei uns einige Attribute in vorhanden Projekten falsch sind. Eben "durchgerutscht".
Ich werde die Eingabeart ändern..

Gruß Jürgen

jetzt weiss ich auch warum bei uns einige Attribute in vorhanden Projekten falsch sind. Eben "durchgerutscht".
Ich werde die Eingabeart ändern..

Gruß Jürgen

Nein, bloss nicht die Eingabeart ändern! Damit ändert man den Attribut-Typ, und verliert alle Werte!
Danach werden dann nur noch die Key-Nummer angezeigt! Das hatten wir hier im Büro schon sehr oft!
Danach habe ich die Definitionsdatei in den betroffenen Projekten gegen Änderungen gesperrt. (mit Schreibschutz versehen)

Man kann leider an dieser verfahrenen Situation im Nachhinein nichts mehr ändern!
Wenn der Eingabetyp "Listbox ohne Eingabe" bei der Definition angegeben wurde, und dann bereits Elemente mit diesem Attribut erzegt wurden, kann man nichts mehr ändern, ohne Verlust von Attribut-Werten!

Man kann lediglich noch Werte am Ende der List anfügen! Mehr nicht!

zu spät!!! wääääh, heul, wat issen das fürn shit....
Kann ich das rückgängig machen?

Gruß Jürgen

... beide Fragen würde ich mit Nachdruck an Allplan richten!

Die Datenintegrität muss bei Änderungen am Eingabetyp sowie an den Vorschlagswerten sichergestellt sein!
Ich würde sogar soweit gehen, auch bei Änderungen des Attribut-Typs eine eine automatische Konvertierung der Werte exitierenden Attribut-Werte zu erwarten. In Excel ist das schon immer möglich! (s. Datentyp Variant).

[OT]Konesquenz der "Forderung", dass bei einer Typänderung eines Attributs alles umgewandelt werden muss:

Automatisch müssen alle Teilbilder aller in der Netzinstallation vorhanden Projekte (Bürobezogene Attribute) der Reihe nach geöffnet, alle Objekte geprüft werden, ob das fragliche Attribut enthalten ist, die Daten gewandelt gespeichert werden.
Zudem noch die frage, wie bei der verwendung der attribute in Beschriftungsbilder (FOrmeln, direkt UND VBS) umgegangen werden sollte....
-> Konsequenz: viele Stunden gesperrte Projekt ....
Lösung: sperren der Änderungsmöglichkeiten von angelegten Attributen im Typ. Einmal ein Text, immer ein Text, einmal Listbox, immer Listbox.

11 - 20 (26)

https://campus.allplan.com/ utiliza cookies  -  Aqui

Acéptalo