C/C++ Binding Generation for 3D Model Translation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods fail to effectively link C/C++ libraries with high-level interpreted languages, leading to performance gaps in human-machine interface development, particularly in translating 3D CAD models for industrial applications, and existing tools like SWIG suffer from technical debt, unequal language support, and lack of documentation, hindering multidisciplinary collaboration and efficient integration of 3D models in mobile equipment.

Innovation Solution

A method for generating bindings between C/C++ libraries and high-level interpreted languages, allowing C/C++ libraries to call functions written in high-level languages, with a step-by-step process involving definition processing, compilation, and linking, while supporting modern C++ features and providing clear documentation, enabling the exposure of C/C++ functionalities to high-level languages like Python and Lua, and facilitating the transformation of 3D models for embedded systems.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If C/C++ library is bound to high-level interpreted language, then accessibility and ease of operation are improved, but performance and execution speed deteriorate

Engineering Contradiction:
ImproveaccessibilityVSAvoidperformance
Core Design Contradiction:
Ease of operationVSSpeed

Solution Approach 1:

The patent introduces a binding generation tool as an intermediary that automatically creates interface layers between C/C++ libraries and high-level interpreted languages. This mediator handles the complexity of language interoperability, allowing high-level languages to access C/C++ functionality without manual integration work, thus maintaining accessibility while preserving performance through efficient native code execution.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The binding generation tool enables self-service by automatically generating the necessary binding code and configuration files. Developers can independently integrate C/C++ libraries with high-level languages without requiring deep knowledge of memory management or platform-specific APIs, thus improving accessibility while maintaining the performance characteristics of the native library.

Inventive Principle:
Principle #25Self-service

2Productivity

If automatic binding generation is implemented, then productivity and ease of manufacture are improved, but code quality and reliability worsen due to generated non-functional code

Engineering Contradiction:
Improveautomation efficiencyVSAvoidcode quality
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The binding generation tool incorporates feedback mechanisms that analyze the C/C++ library interface and automatically generate appropriate binding code with proper error handling, memory management, and type conversions. This feedback-driven approach ensures that the generated code maintains high quality and reliability while still benefiting from automation, eliminating the need for extensive manual corrections.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The tool performs preliminary actions by pre-defining templates and patterns for common binding scenarios. These pre-configured templates ensure that the generated code follows best practices and maintains high quality from the start, reducing the need for post-generation corrections while preserving automation benefits.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If binding tool supports multiple target languages, then adaptability and versatility are improved, but device complexity and difficulty of detecting and measuring increase

Engineering Contradiction:
Improvelanguage supportVSAvoidtool complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The binding generation tool achieves universality by implementing a language-agnostic core that can generate bindings for multiple high-level interpreted languages through a unified configuration system. This multi-functional design allows the same tool to support Python, Ruby, Perl, and other languages without requiring separate tools for each language, thus improving versatility while managing complexity through a single unified interface.

Inventive Principle:
Principle #6Universality (Multi-functionality)

4Loss of time

If binding generation is automated, then loss of time and productivity are improved, but loss of information increases due to information loss during 3D model translation

Engineering Contradiction:
Improveintegration timeVSAvoidmodel fidelity
Core Design Contradiction:
Loss of timeVSLoss of information

Solution Approach 1:

The tool performs preliminary actions by pre-configuring binding templates that preserve data types, function signatures, and parameter semantics during the translation process. This preliminary setup ensures that critical information is maintained throughout the automated binding generation, reducing information loss while still achieving fast integration times through automation.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The binding generation process creates accurate copies of the C/C++ library interface in the target high-level language, preserving all functional and semantic information. This copying mechanism ensures that the generated bindings faithfully represent the original library functionality, minimizing information loss during the translation from native to interpreted language interfaces.

Inventive Principle:
Principle #26Copying

Data Source

PatentEP3861432B1Method for generating a binding between a c/c++ library and an interpreted language, and carrying out said method to transform a three-dimensional (3D) model
Publication Date: 2024.12.11 MOVIDA PRODN
  • EP3861432B1 patent drawingFigure 1
  • EP3861432B1 patent drawingFigure 2
  • EP3861432B1 patent drawingFigure 3

AI summary

The invention relates to a method for generating a binding between a C/C++ library (A) and one or more interpreted high-level languages, in order to expose the functionalities of said C/C++ library to this or these high-level languages, involving the following steps: a step of writing a definition of the binding (C) in the form of a high-level language, a step of processing this definition in order to produce binding elements, a step of grouping the binding elements around each of the high-level language(s), so as to produce a C++ binding code (D), and a step of compiling said C++ code (D) and linking this to the C/C++ library (A). This can be used in particular to implement human-machine interfaces for terrestrial, aerial or maritime mobile equipment.