Topologic | software | Data Visualization library

 by   wassimj C++ Version: v0.6.0 License: AGPL-3.0

kandi X-RAY | Topologic Summary

kandi X-RAY | Topologic Summary

Topologic is a C++ library typically used in Analytics, Data Visualization applications. Topologic has no bugs, it has no vulnerabilities, it has a Strong Copyleft License and it has low support. You can download it from GitHub.

Topologic is a software modelling library enabling hierarchical and topological representations of architectural spaces, buildings and artefacts through non-manifold topology (NMT). Topologic is designed as a core library and additional plugins to visual data flow programming (VDFP) applications and parametric modelling platforms commonly used in architectural design practice. These applications provide workspaces with visual programming nodes and connections for architects to interact with Topologic and perform architectural design and analysis tasks. Topologic is well-suited to create a lightweight representation of a building as an external envelope and the subdivision of the enclosed space into separate spaces and zones using zero-thickness internal surfaces. Because Topologic maintains topological consistency, a user can query these cellular spaces and surfaces regarding their topological data and thus conduct various analyses. For example, this lightweight and consistent representation was found to be well-matched with the input data requirements for energy analysis simulation software. Because Topologic allows entities with mixed dimensionalities and those that are optionally independent (e.g. a line, a surface, a volume) to co-exist, structural models can be represented in a coherent manner where lines can represent columns and beams, surfaces can represent walls and slabs, and volumes can represent solids. In addition, non-building entities, such as structural loads can be efficiently attached to the structure. This creates a lightweight model that is well-matched with the input data requirements for structural analysis simulation software.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              Topologic has a low active ecosystem.
              It has 34 star(s) with 18 fork(s). There are 5 watchers for this library.
              OutlinedDot
              It had no major release in the last 12 months.
              There are 0 open issues and 4 have been closed. On average issues are closed in 140 days. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of Topologic is v0.6.0

            kandi-Quality Quality

              Topologic has no bugs reported.

            kandi-Security Security

              Topologic has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              Topologic is licensed under the AGPL-3.0 License. This license is Strong Copyleft.
              Strong Copyleft licenses enforce sharing, and you can use them when creating open source projects.

            kandi-Reuse Reuse

              Topologic releases are available to install and integrate.
              Installation instructions, examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of Topologic
            Get all kandi verified functions for this library.

            Topologic Key Features

            No Key Features are available at this moment for Topologic.

            Topologic Examples and Code Snippets

            Installation Instructions for Linux
            C++dot img1Lines of Code : 35dot img1License : Strong Copyleft (AGPL-3.0)
            copy iconCopy
            sudo apt-get install bzip2 unzip cmake make g++ git libgl-dev libglu-dev libpng-dev libxmu-dev libxi-dev libtbb-dev tcl-dev tk-dev zlib1g-dev libharfbuzz-dev libfreetype-dev libfreeimage-dev libocct-*-dev
            
            sudo dnf install cmake gcc-c++ opencascade-d  
            Installation Instructions for Windows 10
            C++dot img2Lines of Code : 14dot img2License : Strong Copyleft (AGPL-3.0)
            copy iconCopy
            C:\OpenCASCADE-7.4.0-vc14-64
            
            cd C:\Users\*homefolder*\topologicbim
            git clone https://github.com/wassimj/Topologic.git
            cd Topologic
            WindowsBuild.bat
            
            conda create --name Blender392 python=3.9.1
            conda activate Blender392
            
            conda install pybind11 -c con  
            Sort function defs .
            pythondot img3Lines of Code : 30dot img3License : Non-SPDX (Apache License 2.0)
            copy iconCopy
            def _sort_function_defs(library, function_deps):
              """Return a topologic sort of FunctionDefs in a library."""
              edges = collections.defaultdict(list)
              in_count = collections.defaultdict(lambda: 0)
            
              for fname, deps in function_deps.items():
                fo  

            Community Discussions

            QUESTION

            Connecting All Nodes Together on a Graph
            Asked 2022-Mar-30 at 20:34

            I have the following network graph:

            ...

            ANSWER

            Answered 2022-Mar-30 at 04:35

            You could just update relations using complete, and than filter out the rows where from is equal to to, which gives arrows from a node to itself.

            Source https://stackoverflow.com/questions/71671488

            QUESTION

            R: Connecting Points in Arbitrary Order
            Asked 2022-Mar-15 at 18:09

            I am working with the R programming language.

            I generated the following random data set in R and made a plot of these points:

            ...

            ANSWER

            Answered 2022-Mar-15 at 17:00

            You can order your data like so:

            Source https://stackoverflow.com/questions/71485862

            QUESTION

            Fixing Cluttered Titles on Graphs
            Asked 2022-Mar-07 at 19:08

            I made the following 25 network graphs (all of these graphs are copies for simplicity - in reality, they will all be different):

            ...

            ANSWER

            Answered 2022-Mar-03 at 21:12

            While my solution isn't exactly what you describe under Option 2, it is close. We use combineWidgets() to create a grid with a single column and a row height where one graph covers most of the screen height. We squeeze in a link between each widget instance that scrolls the browser window down to show the following graph when clicked.

            Let me know if this is working for you. It should be possible to automatically adjust the row size according to the browser window size. Currently, this depends on the browser window height being around 1000px.

            I modified your code for the graph creation slightly and wrapped it in a function. This allows us to create 25 different-looking graphs easily. This way testing the resulting HTML file is more fun! What follows the function definition is the code to create a list of HTML objects that we then feed into combineWidgets().

            Source https://stackoverflow.com/questions/71244872

            QUESTION

            Adding Contour Lines to 3D Plots
            Asked 2022-Mar-04 at 20:53

            I am working with the R programming language. I made the following 3 Dimensional Plot using the "plotly" library:

            ...

            ANSWER

            Answered 2022-Mar-04 at 17:52

            You were almost there.
            The contours on z should be defined according to min-max values of z:

            Source https://stackoverflow.com/questions/71313167

            QUESTION

            How can I create a doughnut chart with rounded edges only on one end of each segment?
            Asked 2022-Feb-28 at 08:52

            I'm trying to build a doughnut chart with rounded edges only on one side. My problem is that I have both sided rounded and not just on the one side. Also can't figure out how to do more foreground arcs not just one.

            ...

            ANSWER

            Answered 2022-Feb-28 at 08:52

            The documentation states, that the corner radius is applied to both ends of the arc. Additionally, you want the arcs to overlap, which is also not the case.

            You can add the one-sided rounded corners the following way:

            1. Use arcs arc with no corner radius for the data.
            2. Add additional path objects corner just for the rounded corner. These need to be shifted to the end of each arc.
            3. Since corner has rounded corners on both sides, add a clipPath that clips half of this arc. The clipPath contains a path for every corner. This is essential for arcs smaller than two times the length of the rounded corners.
            4. raise all elements of corner to the front and then sort them descending by index, so that they overlap the right way.

            Source https://stackoverflow.com/questions/71258718

            QUESTION

            Understanding "list" and "do.call" commands
            Asked 2022-Feb-25 at 10:55

            Over here (Directly Adding Titles and Labels to Visnetwork), I learned how to directly add titles to graphs made using the "visIgraph()" function:

            ...

            ANSWER

            Answered 2022-Feb-25 at 10:55

            Please find below one possible solution.

            Reprex

            • Your data

            Source https://stackoverflow.com/questions/71262761

            QUESTION

            Is it possible to not reorder elements when using d3.join?
            Asked 2022-Feb-18 at 23:13

            In d3, we may change the order of elements in a selection, for example by using raise.

            Yet, when we rebind the data and use join, this order is discarded.

            This does not happen when we use "the old way" of binding data, using enter and merge.

            See following fiddle where you can click a circle (for example the blue one) to bring it to front. When you click "redraw", the circles go back to their original z-ordering when using join, but not when using enter and merge.

            Can I achive that the circles keep their z-ordering and still use join?

            ...

            ANSWER

            Answered 2022-Feb-18 at 23:13

            join does an implicit order after merging the enter- and update-selection, see https://github.com/d3/d3-selection/blob/91245ee124ec4dd491e498ecbdc9679d75332b49/src/selection/join.js#L14.

            The selection order after the data binding in your example is still red, blue, green even if the document order is changed. So the circles are reordered to the original order using join.

            You can get around that by changing the data binding reflecting the change in the document order. I did that here, by moving the datum of the clicked circle to the end of the data array.

            Source https://stackoverflow.com/questions/71179024

            QUESTION

            Is there way in ggplot2 to place text on a curved path?
            Asked 2022-Feb-02 at 10:17

            Is there a way to put text along a density line, or for that matter, any path, in ggplot2? By that, I mean either once as a label, in this style of xkcd: 1835, 1950 (middle panel), 1392, or 2234 (middle panel). Alternatively, is there a way to have the line be repeating text, such as this xkcd #930 ? My apologies for all the xkcd, I'm not sure what these styles are called, and it's the only place I can think of that I've seen this before to differentiate areas in this way.

            Note: I'm not talking about the hand-drawn xkcd style, nor putting flat labels at the top

            I know I can place a straight/flat piece of text, such as via annotate or geom_text, but I'm curious about bending such text so it appears to be along the curve of the data.

            I'm also curious if there is a name for this style of text-along-line?

            Example ggplot2 graph using annotate(...):

            Above example graph modified with curved text in Inkscape:

            Edit: Here's the data for the first two trial runs in March and April, as requested:

            ...

            ANSWER

            Answered 2021-Nov-08 at 11:31

            Great question. I have often thought about this. I don't know of any packages that allow it natively, but it's not terribly difficult to do it yourself, since geom_text accepts angle as an aesthetic mapping.

            Say we have the following plot:

            Source https://stackoverflow.com/questions/69867669

            QUESTION

            How to add/append customized plot in for loop to Single subplot in Python using Matplotlib?
            Asked 2022-Jan-04 at 09:09

            I do realize this has already been addressed here (e.g., matplotlib loop make subplot for each category, Add a subplot within a figure using a for loop and python/matplotlib). Nevertheless, I hope this question was different.

            I have customized plot function pretty-print-confusion-matrix stackoverflow & github. Which generates below plot

            I want to add the above-customized plot in for loop to one single plot as subplots.

            ...

            ANSWER

            Answered 2022-Jan-04 at 09:09

            Okay so I went through the library's github repository and the issue is that the figure and axes objects are created internally which means that you can't create multiple plots on the same figure. I created a somewhat hacky solution by forking the library. This is the forked library I created to do what you want. And here is a an example piece of code:

            Source https://stackoverflow.com/questions/70574478

            QUESTION

            Constructing a hexagonal heat-map with custom colors in each cell
            Asked 2021-Dec-29 at 16:28

            I would like to generate a hexagonal lattice heat-map in which each cell represents a group. Likewise, each cell would be a hexagon with a unique color (fill, set by a column color in the data-frame) value, and a saturation (alpha) value corresponding to continuous decimal values from a chemical concentration dateset.

            I would like to use a standardized data format which would allow me to quickly construct figures based on standardized datasets containing 25 groups.

            For example, a datasheet would look like this:

            ...

            ANSWER

            Answered 2021-Dec-22 at 01:52

            If you're open to creating the plot in Python, the following approach would work:

            Source https://stackoverflow.com/questions/70439033

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install Topologic

            This projects builds TopologicCore from the C++ sources (available at https://github.com/wassimj/Topologic.git). If you just want to use Topologic (e.g. with Blender), you do not need to follow these instructions. Instead, just download the ZIP binaries from https://github.com/wassimj/TopologicSverchok/Releases. The instructions below are for Microsoft Windows 10. In these instructions we assume Visual Studio Community 2019 opencascade 7.4.0. We also assume that your account has Adminstrator priviliges. Choose Windows installer VC++ 2017 64 bit: opencascade-7.4.0-vc14-64.exe (258 336 552 bytes).
            Install Opencascade 7.4.0
            Create a topologicbim working folder: We will assume that your home folder is called homefolder and you will install everything in homefolder/topologicbim
            Install Visual Studio Community 2019 with python 3.9 and git
            Install Topologic
            Go to the Windows Start Menu in the lower left corner
            Search for the Visual Studio 2019 Folder and expand it
            Choose x64 Native Tools Command Prompt
            In the window that appears type:
            Set the Environment Variable
            In Search, search for and then select: System (Control Panel)
            Click the Advanced system settings link.
            Click Environment Variables. ...
            In the Edit System Variable (or New System Variable) window, add the folder to the PATH environment variable.
            Install Python bindings for Topolgic (Optional)
            Prerequisite: WindowsBuild.bat have to be run without any errors
            Install Anaconda3 personal edition from https://www.anaconda.com/products/individual
            Launch Anaconda Navigator and click on the CMD.exe prompt.
            Within the window that appears Create a python 3.9 virtual environment. We will call it Blender392 because you can use that with Blender later. The name can be anything you want. Just always remember what you named your environment.
            Install pybind11 within conda
            Install cmake
            Switch to Python-Bindings folder and create a build folder inside
            Issue the normal CMake build command from the build folder
            To make a distributable library:
            TKBO
            TKBool
            TKBRep
            TKCAF
            TKCDF
            TKernel
            TKFillet
            TKG2d
            TKG3d
            TKGeomAlgo
            TKGeomBase
            TKIGES
            TKLCAF
            TKMath
            TKMesh
            TKOffset
            TKPrim
            TKShHealing
            TKTopAlgo
            TKXSBase
            This projects builds TopologicCore from the C++ sources (available at https://github.com/wassimj/Topologic.git). The instructions below are for Ubuntu (Tested) and Fedors (Untested) Linux. We assume that your account has Adminstrator priviliges. if libocct-*-dev cannot be found while installing the dependencies, replace it with libocct-foundation-dev libocct-data-exchange-dev. At the end of this process, libTopologicCore.so should exist in /usr/local/lib.
            Install Opencascade 7.4.0 and dependencies
            Create a topologicbim working folder: We will assume that you will install everything in ~/topologicbim
            Install Topologic
            Install Python bindings for Topolgic (Optional)
            Note: If you are planning to use Topologic with Blender and your system's python is different than the one Blender uses, then create a compatible python virtual environment. We will assume that Blender is using python 3.9.7 so the instructions below as you to create a conda virtual environment with python 3.9.7. We will call it py397. The name can be anything you want. Just always remember what you named your environment and match the python version to Blender's.
            Switch to Python-Bindings folder and create a build folder inside
            Issue the normal CMake build command from the build folder
            Install pybind11 within conda
            To make a distributable library that can be installed in different locations on a variety of Linux systems:
            TKBO
            TKBool
            TKBRep
            TKCAF
            TKCDF
            TKernel
            TKFillet
            TKG2d
            TKG3d
            TKGeomAlgo
            TKGeomBase
            TKIGES
            TKLCAF
            TKMath
            TKMesh
            TKOffset
            TKPrim
            TKShHealing
            TKTopAlgo
            TKXSBase
            This projects builds TopologicCore from the C++ sources (available at https://github.com/wassimj/Topologic.git) These untested instructions are from Filipe Brandão Filipe_Jorge_Brandao@iscte-iul.pt.
            Build OpenCascade from binaries Download Open CASCADE Technology source package, tgz archive (opencascade-7.4.0.tgz) from: https://old.opencascade.com/content/previous-releases Get the needed third party libraries (the minimum requirements are Tcl8.5, Tk8.5 and FreeType2.4.10) You can get a precompiled version of all of them. ActiveTCL 8.5 includes both Tcl and Tk (https://www.activestate.com/products/tcl/) FreeType: https://dev.opencascade.org/resources/download/3rd-party-components Build: I used Cmake to generate the make files you can find detailed instructions here Create a folder for OCCT_Source Create a folder for the build process Optionally create a destination folder Open CMake UI or Ccmake and configure the locations of the source and build directories, and third party binaries (Freetype, TCL and TK) Set the generator to UNIX Makefiles Change CMAKE_OSX_DEPLOYMENT_TARGET to the desired version of macOS (I missed this) (optional) Change the install directories under INSTALL_DIR Configure Generate In the terminal cd into the build directory make sudo make install
            Build TopologicCore from binaries create a folder for TopologicBim source files open a terminal and cd into it git clone https://github.com/wassimj/Topologic mkdir BUILD cd BUILD Open Make UI or ccmake from the terminal Provide the locations of the source and build folder (remember to use UNIX Makefiles generator) Configure Set the location of OpenCascade binaries OCC_INCLUDE_DIR and gp_Pnt_hxx Set the CMAKE_OSX_DEPLOYMENT_TARGET to the desired version of macOS (I missed this) Optionally set the install folder of Topologic CMAKE_INSTALL_PREFIX Configure Generate make sudo make install
            Build Python bindings Create an environment with Anaconda, set python to the desired version and open a terminal conda activate NAME_OF_ENV cd into Python-Bindings folder mkdir build cd build ccmake configure as previously use t-key to open the advance mode and change CMAKE_CXX_FLAGS to the directory of the opencascade binaries(suppose it is /usr/local/lib) -L/usr/local/lib generate make
            Make the files redistributable: In this last step you need to ensure that your executable topologic.cpython-39-darwin.so and all the other libraries are correctly configured
            go to the final install dir of topologic where all the OpenCascade and Topologic dylib files and topologic.cpython-39-darwin.so are
            install_name_tool -add_rpath @loader_path topologic.cpython-39-darwin.so (we set the LC_RPATH of the executable)
            check the which libraries are loaded by topologic.cpython-39-darwin.so using: otool -L topologic.cpython-39-darwin.so
            install_name_tool -id @rpath topologic.cpython-39-darwin.so (change the id of the executable)
            change all of the libraries OpenCascade and Topologic dylib paths to start with @rpath/... using: install_name_tool -change [old name] [new name] topologic.cpython-39-darwin.so
            run renameLib.sh to change all the other libraries ids and paths

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/wassimj/Topologic.git

          • CLI

            gh repo clone wassimj/Topologic

          • sshUrl

            git@github.com:wassimj/Topologic.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link