0033661: Data Exchange, Step Import - Tessellated GDTs are not imported
[occt.git] / samples / CSharp / ReadMe.md
1 .NET: Import/Export (C#|C++/CLI|WinForms|WPF) {#samples_csharp_occt}
2 ================== 
3         
4 This sample demonstrates how to use OCCT libraries in <b>.Net</b> application
5 written using **CSharp** and **Windows Forms** or **Windows Presentation Foundation** (WPF).
6 The sample could be found within OCCT repository in folder `/samples/CSharp/`.
7
8 The connection between .Net and OCCT (C++) level is provided by proxy library
9 **OCCProxy**, written in C++/CLI. The proxy library contains a single *ref* class
10 encapsulating OCCT viewer and providing the functionality to manipulate this viewer
11 and to import / export OCCT shapes from / to several supported CAD file formats (IGES, STEP, BREP). 
12
13 The sample implements two approaches to the development of a user interface with C#.
14 Both applications provide the same functionality as the standard OCCT Import/Export sample.
15 The first project is called *IE_WinForms* and uses Windows Forms for GUI.
16 The second application is called *IE_WPF_WinForms* and uses Windows Presentation Foundation.
17
18 @figure{samples_c__ie.png}
19
20 Note a few important details:
21
22 - OCCT template class *NCollection_Haft* is used to encapsulate C++ class into a field of *ref* class; 
23   
24 - It is necessary to explicitly set the target platform for  C# assemblies to *x86*
25   in project **Properties - Build** to work consistently on 64-bit systems with OCCT libraries built in 32-bit mode;
26   
27 - this sample demonstrates indirect method of wrapping C++ to C# using a manually
28   created proxy library. There is an alternative method of wrapping individual
29   OCCT classes to C# equivalents to make their full API available to a C# user
30   and to let the code be programmed on C# level similarly to C++ one. See the description
31   of **OCCT C# Wrapper** in **Advanced Samples and Tools** at 
32   http://www.opencascade.org/support/products/advsamples
33
34 - in WPF sample, **WinForms** control is used to encapsulate OCC viewer since WPF 
35   does not provide the necessary interface to embed OpenGl view. Other possible
36   solution could be to render OpenGl scene in an off-screen buffer and to map it
37   to WPF control as an image. That approach would allow using all WPF features to
38   control the OCCT viewer.
39
40 Run *msvc.bat* to start MS Visual Studio for building the sample.
41 Note that project files are provided only for VS 2010, you can open them in
42 newer versions of Visual Studio the using automatic converter.
43
44 After conversion check option **Target framework** in the properties of C# projects 
45 (tab **Application**) to make sure that it corresponds to the version set in
46 the properties of C++ projects (e.g. <b>.Net Framework 4.0</b> for VS 2010).
47
48 Run *run_winforms.bat* or *run_wpf.bat* to launch the corresponding sample.
49
50 Note that all batch scripts use the configuration defined in OCCT *custom.bat* file
51 as default; you can provide arguments specifying VS version, bitness, and mode
52 to override these settings, e.g.:
53
54         > msvc.bat vc10 win64 Debug