├── 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 | --------------------------------------------------------------------------------