Opis Biblioteki OCCT
Total Page:16
File Type:pdf, Size:1020Kb
Opis biblioteki OCCT Open CASCADE Technology jest obiektową biblioteką klas napisaną w języku C++ stworzoną do szybkiego tworzenia specjalizowanych aplikacji wykorzystywanych do projektowania graficznego. Typowe aplikacje tworzone z wykorzystaniem OCCT umożliwiają dwu- lub trzy-wymiarowe (2D lub 3D) modelowanie geometryczne w ogólnych lub specjalizowanych systemach wspomagania projektowania CAD (Computer Aided Design), wytwarzania lub aplikacjach do analizy, symulacji lub wizualizacji. Obiektowa biblioteka OCCT pozwala na znaczne przyspieszenie projektowania tego typu aplikacji. Biblioteka OCCT posiada następujące funkcjonalności: • modelowanie geometryczne 2D i 3D, pozwalajace na tworzenie obiektów w różny sposób: • z wykorzystaniem podstawowych obiektów typu: prism, cylinder, cone i torus, • wykorzystując operacje logiczne Boolean operations (addition, subtraction and intersection) • modyfikując obiekty za pomocą operacji fillets, chamfers i drafts, • modyfikując obiekty z wykorzystaniem funkcji offsets, shelling, hollowing i sweeps, • obliczać własności takich jak surface, volume, center of gravity, curvature, • obliczać geometrię wykorzystując projection, interpolation, approximation. • Funkcje do wizualizacji umożliwiająca zarządzanie wyświetlanymi obiektami i manipulowanie widokami, np.: • rotacja 3D, • powiększanie, • cieniowanie. • Szkielety aplikacji (application framework) pozwalające na: • powiązanie pomiedzy nie-geometrycznymi danymi aplikacji i geometrią, • parametryzację modeli, • Java Application Desktop (JAD), szkielet (framework) do tworzenia graficznego interfejsu użytkownika (GUI) • wymianę danych umożliwiającą import i export za pomocą funkcji OCCT wykorzystujących standardowe formaty takie jak IGES i STEP. Biblioteka OCCT jest tworzona przez firmę OPEN CASCADE, która zapewnia także komercyjne wsparcie dla użytkowników. Biblioteka jest tworzona w sposób modułowy i łatwy do rozszerzania. Przykładowo udostępnia oddzielne klasy C++ : • definiujące struktury danych (geometric modeling, display and graphic selection), • implementujące złożone algorytmy, • zapewniające interfejsy do programowania aplikacji - Application Programming Interfaces (APIs). Powiązane klasy są pogrupowane w pakiety w celu zapobieżenia konfliktom, nazwy klas poprzedzone są nazwą pakietu. Przykładowo wszystkie klasy definujące obiekty geometryczne 3D należą do pakietu Geompackage. W pakiecie Geom klasa implementująca powierzchnię Beziera jest nazwana BezierSurface, a jej pełna nazwa jest Geom_BezierSurface. Pakiety są połączone w biblioteki, które są linkowane z aplikacją. Wszystkie biblioteki są pogrupowane w sześć modułów (najmniejszy, Foundation Classes, zawiera dwie biblioteki, a największy , Modeling Algorithms, zawiera osiem). Foundation Classes - Kernel Classes, Math Utilities Modeling Data - 2D Geometry, 3D Geometry, Geometry Utilities, Topology Modeling Algorithms - Construction of Primitives, Boolean Operations, Fillets and Chamfers, Offsets, Drafts Sewing and Sweeps, Features, Hidden Line Removal, Geometric Tools, Topological Tools Visualization - Services Common to 2D and 3D, 2D Visualization, 3D Visualization Data Exchange – IGES, STEP AP203 AP214, Extended data exchange (XDE) Application Framework - Data Framework, Data Storage, Application Desktop Dodatkiem do biblioteki jest aplikacja Draw Test Harness (Draw) oferująca narzedzie do testowania dla modułów Visualization, Modeling Algorithms, Application Framework i Data Exchange. Zawiera ona dużą liczbę interpretowanych komend które pozwalaja na interaktywne eksperymentowania z OCCT. Oprócz języka C++ do testowania funkcji biblioteki i tworzenia aplikacji mozna wykorzystać język Python. Pozwala na to biblioteka pythonocc implementujaca w jezyku Python większość funkcji OCCT. Testowania funkcjonalności biblioteki OCCT z poziomu języka Python możliwe jest także poprzez wykorzystanie okna komend aplikacji FreeCAD. Przykładowe aplikacje wykorzystujące OCCT Foundation Classes Foundation Classes provide a variety of general-purpose services such as: • Primitive types, strings and various types of quantities • Automated management of heap memory • Exception handling • Classes for manipulating data collections • Math tools such as vectors, matrices and primitive geometric types • Basic services for saving data in ASCII files These services are organized into the following libraries: • Kernel Classes • Math Utilities • Basic Persistence Kernel Classes Root Classes Root Classes, primarily implemented in the Standard package, are the classes on which all other Open CASCADE Technology classes are built. They provide: • Primitive types such as Boolean, Character, Integer or Real • A memory manager based on reference counting for optimizing the allocation and deallocation of large numbers of small C++ objects • A base class, Standard_Transient, automating memory management through smart pointers - the OCCT Handle; most of OCCT classes inherit from this base class. Quantities Quantity classes provide the following services: • Definition of primitive types representing most of mathematical and physical quantities • Unit conversion tools • Resources to manage time information such as dates and time periods • Resources to manage color definition Exceptions Exception classes list all the exceptions, which can be raised by any OCCT function. Syntaxes compatible with the ANSI C++ standard allow you to handle abnormal conditions. Each exception inherits from Standard_Failure either directly or by inheriting from another exception. Strings String classes provide the following services to manipulate character strings: • Editing operations on string objects, using a built-in string manager • Handling of dynamically-sized sequences of characters OCCT supports both ASCII character types (8-bit) and Unicode character types UTF-8 (8-bit) and utf-16 - UCS-2 (16-bit). Memory management makes string objects easier to use than ordinary character arrays. Strings may also be manipulated by handles and therefore, can be shared. These classes are implemented in TCollection and NCollection packages. Collections Apart from strings, the TCollection package contains classes of dynamically sized aggregates of data. They include a wide range of collections such as: • Arrays (unidimensional and bidimensional) generally used for quick access to an item. Note that an array is a fixed-sized aggregate • Sequences and lists which are ordered collections of non-unique objects • Maps, which provide rapid access time for member items • Queues and stacks, which are minor structures similar to sequences but with different algorithms to explore them The TCollection package also offers specific iterators for sequences, maps, and stacks. It also includes Collection classes. Collection classes are generic (C++ template-like), that is, they can contain a variety of objects which do not necessarily inherit from a unique root class. When you need to use a collection of a given object type, you must instantiate the collection for this specific type. Once the code for this declaration is compiled, all functions available on the generic collection are available on your instantiated class. If you are not using CDL in your project (CDL compilation under WOK is necessary to instantiate any generic Collection from package TCollection), then you should use the Collections defined in NCollection package. It contains definitions of the same generic collection classes described above, but in a form of C++ templates. Therefore, to instantiate any collection type no additional support is required beyond the ANSI C++ compiler. Most collections follow value semantics, meaning that an instantiation of a collection is the actual collection, not a handle to it. Collections of Standard Objects Tcollection The collections of standard object classes provide frequently used instantiation of generic classes from the TCollection package with objects from the Standard package, strings from the TCollection package and geometric primitives. There exists a limitation: OCCT generic classes require compilation of definitions in the CDL language and therefore can only be instantiated in WOK. Ncollection The NCollection unit meets the requirements of OCCT community and all end users who do not use WOK development environment in their projects. The NCollection provides a full replacement of all TCollection generic classes so that any OCCT collection could be instantiated via C++ template definitions. It is used in WOK environment (as nocdlpack development unit) or in any other configuration, since it only uses the standard capabilities of C++ language. Earlier releases of OCCT offered NCollection classes in the form of macro definitions. Now it is strongly recommended to use C++ template classes instead, as they are more flexible and reliable. The old definitions based on C macros (in the header files NCollection_Define*.hxx) are kept for backward compatibility and no longer supported. Math Utilities Vectors and Matrices The Vector and Matrix classes provide commonly used mathematical algorithms which include: • Basic calculations involving vectors and matrices • Computation of eigenvalues and eigenvectors of a square matrix • Solvers for a set of linear algebraic equations • Algorithms to find the roots of a set of nonlinear equations • Algorithms to find the minimum function of one or more independent variables These classes also provide a data structure in order to represent any expression, relation, or function used in mathematics, including the assignment