├── LICENSE.md
├── Plugin_Features.md
└── README.md
/LICENSE.md:
--------------------------------------------------------------------------------
1 | The software is licensed under MIT license
2 |
3 | Copyright 2023, Copyright Owner: Karlsruhe Institute of Technology (KIT)
4 | Author: Andreas Geiger, Steffen Hempel
5 | Contact: andreas.geiger@kit.edu, Institute for Automation and Applied Informatics
6 |
7 | ---
8 |
9 | MIT License
10 |
11 | Copyright (c) 2023 Institute for Automation and Applied Informatics
12 |
13 | Permission is hereby granted, free of charge, to any person obtaining a copy
14 | of this software and associated documentation files (the "Software"), to deal
15 | in the Software without restriction, including without limitation the rights
16 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17 | copies of the Software, and to permit persons to whom the Software is
18 | furnished to do so, subject to the following conditions:
19 |
20 | The above copyright notice and this permission notice shall be included in all
21 | copies or substantial portions of the Software.
22 |
23 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29 | SOFTWARE.
30 |
--------------------------------------------------------------------------------
/Plugin_Features.md:
--------------------------------------------------------------------------------
1 | ## Plugin Features
2 |
3 | A plugin has multiple features that are used to communicate with the host application.
4 |
5 | ### DocumentFeature
6 |
7 | The ``DocumentFeature`` provides full access to the internal IfcDB population of the active document and a mechanism to notify the host application when changes occur.
8 |
9 | Example:
10 |
11 | ```c++
12 | class PluginWithDocumentObserver : public Plugin
13 | {
14 | public:
15 | PluginWithDocumentObserver()
16 | {
17 | // when the document (IfcDB) changes, the lambda is called
18 | m_documentObServer.attach([&](IfcDB::Populationi* db)
19 | {
20 | // the db is forwarded to another feature in the same plugin
21 | m_anotherFeature.setDb(db);
22 | });
23 | }
24 |
25 | private:
26 | DocumentObserverImpl m_documentObserver;
27 | AnotherFeature m_anotherFeature;
28 | };
29 | ```
30 |
31 | ### LiveLogFeature
32 |
33 | The ``LiveLogFeature`` enables the output of messages in the LiveLog Toolbar of the application.
34 |
35 | ### MessageDialogFeature
36 |
37 | The ``MessageDialogFeature`` shows a message dialog in the host application.
38 |
39 | ### ProgressBarFeature
40 |
41 | The ``ProgressBarFeature`` shows a progress bar in the applications status bar.
42 |
43 | ### RendererFeature
44 |
45 | The ``RendererFeature`` allows to create screenshots of the scene from a plugin.
46 |
47 | ### IdleFeature
48 |
49 | The ``IdleFeature`` provides a callback to the plugin from the host application's message loop. This callback may e.g. be used to feed the message loop of a UI library.
50 |
51 | ### FileSaveFeature
52 |
53 | The ``FileSaveFeature`` triggers the host application so save objects in different graphic formats (e.g. OBJ, 3DS or STL).
54 |
55 | ### ColorCodingFeature
56 |
57 | The ``ColorCodingFeature`` can be used to control the coloring of objects in the scene.
58 |
59 | ### SettingsFeature
60 |
61 | The ``SettingsFeature`` can be used to get general settings from the host application.
62 |
63 | ### AppFeature
64 |
65 | The ``AppFeature`` offers various features of the host application such as loading files, web requests, etc. in a plugin.
66 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Plugin Repository for KITModelViewer
2 | [KITModelViewer](https://github.com/KIT-IAI/SDM_KITModelViewer) has a plugin mechanism that allows the development of own extensions.
3 | Some plugins are already included in the download archive of the KITModelViewer. One is the very simple [Hello World](https://github.com/KIT-IAI/SDM_Plugin_HelloWorld) example that shows the basic functionality of the plugin API and how to use it to access the internal database. Another one ist the [Python API Plugin](https://github.com/KIT-IAI/SDM_Plugin_Python) that provides a simple Python API and allows to create own Python scripts that will be executed directly within the KITModelViewer.
4 |
5 | Here you will find the [Plugin Feature Doucumentation](Plugin_Features.md)
6 |
7 | ## Overview of Plugins developed at IAI-SDM
8 |
9 | | Plugin Name | Description |
10 | | :--- | :--- |
11 | | [Hello World](https://github.com/KIT-IAI/SDM_Plugin_HelloWorld) | Simple "Hello World" example for getting started with KITModelViewer plugin development |
12 | | [Python API Plugin](https://github.com/KIT-IAI/SDM_Plugin_Python) | Plugin that provides a python API for the KITModelViewer |
13 | | [Papermodel Generator](https://github.com/KIT-IAI/SDM_Plugin_Papermodel) | Generation of paper models for individual CityGML buildings |
14 | | [Glaser Calc](https://github.com/KIT-IAI/SDM_Plugin_GlaserCalc) | Calculation of the Glaser diagram for individual IFC building elements |
15 | | [Print 3D Model](https://github.com/KIT-IAI/SDM_Plugin_Print3DModel) | Preparation and checking of IFC models for 3D printing |
16 | | [EnergyADE Enrichment](https://github.com/KIT-IAI/SDM_Plugin_EnergyADE_Enrichment)
(coming soon)| Enrichment of CityGML building models for thermal simulation through the use of EnergyADE |
17 | | [IfcTruss](https://github.com/KIT-IAI/SDM_Plugin_IfcTruss) | Python plugin for the calculation of trusses based on IFC structural analysis elements |
18 | | [OSM BuildingCreator LoD1](https://github.com/KIT-IAI/SDM_Plugin_OSM_BuildingCreator_LoD1) | Creating 3D CityGML buildings based on OpenStreetMap (OSM) |
19 | | [OSM BuildingCreator LoD2](https://github.com/KIT-IAI/SDM_Plugin_OSM_BuildingCreator_LoD2)
(coming soon)| Creating 3D CityGML buildings based on OpenStreetMap (OSM) |
20 | | [ETHOS.BUILDA BuildingCreator](https://github.com/KIT-IAI/SDM_Plugin_ETHOS-BUILDA-BuildingCreator) | Creating 3D CityGML buildings based on [ETHOS.BUILDA](https://ethos-builda.fz-juelich.de/api/v8_20240916/swagger/) |
21 | | [GlobalBuildingAtlas BuildingCreator](https://github.com/KIT-IAI/SDM_Plugin_GlobalBuildingAtlas-BuildingCreator) | Creating 3D CityGML buildings based on [GlobalBuildingAtlas](https://github.com/zhu-xlab/GlobalBuildingAtlas) |
22 | | [Google 3D Tiles](https://github.com/KIT-IAI/SDM_Plugin_3DTiles) | Plugin for integrating Google Maps 3D Tiles |
23 | | [PolyVR](https://github.com/KIT-IAI/SDM_Plugin_polyvr_client)
(coming soon) | Plugin for connecting to the scene authoring system [PolyVR](https://github.com/Victor-Haefner/polyvr) |
24 |
25 | ## Plugin installation
26 |
27 | KITModelViewer plugins available on GitHub can be downloaded as a zip archive in the corresponding GitHub project.
28 | In the main menu, under Plugin, there is a menu item Installing Plugin. For manual installation, copy the complete folder within the plugin archive into the “plugins” folder of the KITModelViewer directory.
29 |
30 | ## Plugin developement
31 | Two APIs are available for the KITModelViewer. One is a [Python API](https://github.com/KIT-IAI/SDM_Plugin_Python) for the rapid development of compact scripts to evaluate the imported data or for the development of more complex Python plugins with integration of external modules. The Python Plugin is available as open source and is realized as a plugin based on the C++ plugin SDK.
32 | For more experienced developers with C++ knowledge, a [plugin SDK](https://github.com/KIT-IAI/SDM_Plugin_SDK) is available that provides full access to the internal data structures and functionalities.
33 |
--------------------------------------------------------------------------------