Skip to main content

Python binding for the 3Dconnexion's Navigation Library.

Project description

PyNavlib

PyNavlib is a Python extension module that binds original C++ accessors of the 3Dconnexion Navigation Library into a Python code. The binding covers most of the C/C++ API defined within 3Dconnexion’s SDK header <SpaceMouse/CNavigation3D.hpp> and a minimal subset of propietary data types. It was created using pybind11 library.

About 3Dconnexion Navigation Library

The Navigation Library is a part of 3Dconnexion software. It is responsible for handling data exchange between the driver and a client application. The 3Dconnexion SDK provides C/C++ API to interact with the NavLib from within client application's code or plugin. From now on, with PyNavlib binding, it is also possible for the NavLib to be used by Python applications.

Installation

The package was released on PyPI and can be installed using pip.

pip install pynavlib

General usage

The package contains pre-built extension module responsible for binding C++ NavLib accessors to Python. The extension attempts to dynamically load the Navigation Library which is being installed on the system along with 3DxWare. The binding is accessible via interface module called pynavlib_interface.

from pynavlib import pynavlib_interface as pynav

PyNavlib's main class is called NavlibNavigationModel. It is a base class which provides an interface that has to be implemented by derived NavLib client class. The interface consists of setter and getter methods (no underscore preffixed), which are responsible for sending and receiving relevant 3D view data.


class NavlibClient(pynav.NavlibNavigationModel):

    def get_camera_matrix(self) -> pynav.NavlibMatrix:
        return pynav.NavlibMatrix()
    
    def get_model_extents(self) -> pynav.NavlibBox:
        return pynav.NavlibBox(pynav.NavlibVector(-10., -10., -10.), pynav.NavlibVector(10., 10., 10.))

    def get_is_view_perspective(self) -> bool:
        return False

    ...

    def set_camera_matrix(self, matrix) :
        matrix_as_list = matrix._matrix
        print(f'set_camera_matrix:\n{matrix_as_list[0]}\n{matrix_as_list[1]}\n{matrix_as_list[2]}\n{matrix_as_list[3]}\n')
    
    def set_view_extents(self, extents) :
        _min = extents._min
        _max = extents._max
        print(f'set_view_extents: {[_min._x, _min._y, _min._z]}, {[_max._x, _max._y, _max._z]}')
    
    def set_view_fov(self, fov) :
        pass

    ...

To see the full set of overridable setter and getter methods refer to the pynavlib_interface.py source.

Examples

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pynavlib-0.9.0-cp313-cp313-macosx_12_0_universal2.whl (849.4 kB view details)

Uploaded CPython 3.13macOS 12.0+ universal2 (ARM64, x86-64)

pynavlib-0.9.0-cp312-cp312-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.12Windows x86-64

File details

Details for the file pynavlib-0.9.0-cp313-cp313-macosx_12_0_universal2.whl.

File metadata

File hashes

Hashes for pynavlib-0.9.0-cp313-cp313-macosx_12_0_universal2.whl
Algorithm Hash digest
SHA256 5985b01a82ba8a5e3827021c79e730370b04daaaad7f9bc97f470c923d1e58c0
MD5 6b3270fe30a5497098dcf929ec11bac9
BLAKE2b-256 206acb9818a419998965404d25f007e492b281dab083f909e696c7f8e4cc2c92

See more details on using hashes here.

File details

Details for the file pynavlib-0.9.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pynavlib-0.9.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pynavlib-0.9.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 37b71d3832f6664420d086d1fba28cfc5e3bd74862b274050118997d69d965e0
MD5 14d31345971e7f9b9f3529d57209983e
BLAKE2b-256 570d26d4667feb92ef8a251a3c5f545ee1e7254b1debeb674770ddd0b9ac7d1a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page