Intoduction
Class diagram represent API architecture, objects (classes) structure, services (methods) and their relations.
...
Anchor |
---|
| object_definition |
---|
| object_definition |
---|
|
Objects, elements, node and topology definition
Topology tree consist of objects which can have or have no graphical representation:
...
Anchor |
---|
| geometry_formats |
---|
| geometry_formats |
---|
|
Geometry types
Note |
---|
Note: Objects with geometry types "mesh" or "meshblob" can be written into BIM+ database. Geometry type "threejs" optimized for viewing on mobile devices or in browser and can not be written to the database directly. |
Mesh type
Code Block |
---|
mesh: {
colors: 4291993670,
vertices: [ 96.149, 179.546, ... ],
faces: [ 4,0,1,2,3, 3,4,5,6, ... ]
}
where:
color: array of decimal RGBA values;
vertices: plain array of 3D vertices coordinates like [x0, y0, z0, x1, y1, z1, ...]
faces: plain array of faces definitions like first number is quantity of vertices, than vertex indices list, see example.
|
Mesh BLOB type
This type generally compressed mesh format intended to be used in the desktop CAD applications. Internal CAD format of the geometry with help of client side C# DLL will be converted into BIM+ mesh format (described above) and compressed (z.b. with ZIP) in order to get smaller JSON size. In this case JSON objects looks like:
Code Block |
---|
meshblob: "d273f7a6a7d8f8725484fe6282..."
|
TreeJS type
as mentioned above this format is optimized for viewing on mobile devices or in browser. Native model will be filtered and tessellated in order to deliver minimal JSON size and maximal navigation speed (FPS). This model has ThreeJS JSON v 3.1 format and can be directly parsed by the client. JSON object in this case looks like:
Code Block |
---|
threejs: {
<ThreeJS_JSON_format>
}
|
Object services and resulting object collections structures.
As described above different types of JSON object collections can be obtained, depending on which object service will be used. It doesn't alter single object structure, but resulting object collections can have slightly different structure. Since we're working with object collections, we can have a set of objects which contain topology tree without geometry, or object collections with geometry. In the case we've requested a collection of objects with geometry, we need some additional information f.e. like view box size (3D model dimensions which should be rendered). So these properties will be added to the set of objects. Thus generally we can consider objects collection like a set of objects with additional properties. Object collection type defined by additional element in the resource path.
Services getTopology() and getProjectTree()
HTTP request: (see BIM+ Services):
...
For the project topology the depth of the tree will be filtered till the node type "subproject".
Alternative Geometry Services getMesh(), getThreejs()
HTTP request: (see BIM+ Services):
...
Code Block |
---|
{
elementcount: 14312,
viewbox: {
x: 827364,
y: 23765,
z: 2974652,
with: 827346,
height: 2873456,
depth: 1726354
},
colors: [123414, 9817413, ....],
objects: [
{
id: "54dd1d25-4c58-4af2-96a1-1d26fa440177",
type: "<LOCALIZATION_STRING_ID>",
divisionId: "10074EEF-9418-4D64-9C6D-23932835A7F1",
disciplineId: "6a6e4d09-3550-4483-8134-98ac1e6c1afb",
parent: null,
attributes: {
general: {
name: "<PP>Wall layer",
valid: true
},
quantity: {
length: 8523.27,
width: 300,
height: 2500,
volume: 6392448992.508584,
area: 21308163.308361948
},
<...>,
geometry: {
threejs: {<threejs_type_geometry>}
}
},
children: <child_objects>
},
{...},
...
],
}
|
Project properties JSON structure
Since project properties will be generated internally on the fly upon request, some of them (like divisions list) will be sent in the project attributes. Here is an example of the project JSON structure:
...
Anchor |
---|
| classDiagramFull |
---|
| classDiagramFull |
---|
|
Class diagrams (v2, draft)
Anchor |
---|
| class_diagram_full |
---|
| class_diagram_full |
---|
|
General
Gliffy Diagram |
---|
name | object_model |
---|
version | 26 |
---|
|
Anchor |
---|
| class_diagram_objects |
---|
| class_diagram_objects |
---|
|
Objects and its Attributes (v2, draft)
Gliffy Diagram |
---|
size | L |
---|
name | Objects and its Attributes |
---|
align | left |
---|
version | 4 |
---|
|