0032340: OCCT Documentation - highlight C++ code snippets
[occt.git] / dox / user_guides / inspector / inspector.md
CommitLineData
d2c90917 1Inspector {#occt_user_guides__inspector}
2===============================
3
4@tableofcontents
5
6@section occt_inspector_1 Introduction
7
ab5b3c22 8This manual explains how to use the Inspector.
d2c90917 9
10@subsection occt_inspector_1_1 Overview
ab5b3c22 11Inspector is a Qt-based library that provides functionality to interactively inspect low-level content of the OCAF data model, OCCT viewer and Modeling Data.
d2c90917 12This component is aimed to assist the developers of OCCT-based applications to debug the problematic situations that occur in their applications.
13
14Inspector has a plugin-oriented architecture. The current release contains the following plugins:
15
16| Plugin | OCCT component | Root class of OCCT investigated component |
17| :----- | :----- | :----- |
ab5b3c22 18| @ref occt_inspector_2_2 "DFBrowser"| OCAF | *TDocStd_Application* |
19| @ref occt_inspector_2_3 "VInspector"| Visualization | *AIS_InteractiveContext* |
20| @ref occt_inspector_2_4 "ShapeView"| Modeling Data | *TopoDS_Shape* |
d2c90917 21
22
23Each plugin implements logic of a corresponding OCCT component.
24
ab5b3c22 25Each of the listed plugins is embedded in the common framework, thus it is possible to manage, which plugins should be loaded by the Inspector, and to extend their number by implementing a new plugin.
d2c90917 26
27
28@subsection occt_inspector_1_3 Getting started
29
30There are two launch modes:
ab5b3c22 311. Launch **TInspectorEXE** executable sample. For more details see @ref occt_inspector_4_1 "TInspectorEXE" section;
322. Launch DRAW, load plugin INSPECTOR, and use *tinspector* command.
07f2b741 33 For more details, see @ref occt_inspector_4_2 "Launch in DRAW Test Harness" section.
d2c90917 34
35
07f2b741 36**Note**. If you have no Inspector library in your build directory, make sure that OCCT is compiled with *BUILD_Inspector*
ab5b3c22 37option ON. For more details see @ref occt_inspector_5 "Build procedure".
d2c90917 38
39
ab5b3c22 40@section occt_inspector_2 Inspector Plugins
d2c90917 41
42@subsection occt_inspector_2_1 Overview
43
44Inspector consists of the following components:
45 * <b>buttons</b> to activate the corresponding plugin;
46 * <b>view area</b> to visualize the plugin content.
47
48@figure{tinspector_elements.svg,"Plugins placement in Inspector",360}
49
50@subsection occt_inspector_2_2 DFBrowser Plugin
51
52@subsubsection occt_inspector_2_2_1 Overview
53
54@figure{dfbrowser.png, "DFBrowser"}
55
ab5b3c22 56This plugin visualizes the content of *TDocStd_Application* in a tree view. It shows application documents,
57the hierarchy of *TDF_Labels*, the content of *TDF_Attributes* and interconnection between attributes (e.g. references).
58Additionally there is a 3D view to visualize *TopoDS_Shape* elements stored in the document.
d2c90917 59
60@subsubsection occt_inspector_2_2_2 Elements
61
62@figure{dfbrowser_elements.svg, "DFBrowser Elements",360}
63
64<b>OCAF tree view</b>
65
66Each OCAF element has own tree view item:
67
68| Type | Tree item | Text | Description |
69| :----- | :----- | :----- | :----- |
ab5b3c22 70| *TDocStd_Application* | Application | *TDocStd_Application* | The root of tree view. Its children are documents.|
71| *TDocStd_Document* | Document | entry : name | A child of *Application* item. Its children are *Label* and *Attribute* items.<br> Text view is an entry of the root label and the value of *TDataStd_Name* attribute for the label if it exists. |
72| *TDF_Label* | Label | entry : name | A child of a *Document* or another *Label* item. Its children and text view are the same as for Document item. |
73| *TDF_Attribute* | Attribute | attribute type [additional information] | A child of a *Label*. It has no children. <br> Text view is the attribute type *(DynamicType()->Name()* of *TDF_Attribute*) and additional information (a combination of attribute values). |
d2c90917 74
75
ab5b3c22 76Additional information about TDF_Attributes:
d2c90917 77
78| Type | Text |
79| :----- | :----- |
ab5b3c22 80| *TDocStd_Owner* | [storage format] |
81| *TDataStd_AsciiString*,<br> *TDataStd_Name*,<br> *TDataStd_Real*,<br> other *Simple* type attributes | [value] |
82| *TDataStd_BooleanList*,<br> *TDataStd_ExtStringList*,<br> other *List* attributes | [value_1 ... value_n] |
83| *TDataStd_BooleanArray*,<br> *TDataStd_ByteArray*,<br> other *Array* type attributes | [value_1 ... value_n] |
84| *TDataStd_TreeNode* | [tree node ID ==> Father()->Label()] (if it has a father) or <br> [tree node ID <== First()->Label()] (if it has NO father)|
85| *TDataStd_TreeNode(XDE)* | [XDE tree node ID ==> Father()->Label()] (if it has a father), <br> [XDE tree Node ID <== label_1, ..., label_n] (if it has NO father)|
86| *TNaming_NamedShape* | [shape type : evolution] |
87| *TNaming_UsedShapes* | [map extent] |
d2c90917 88
89
90Custom color of items:
91
92| OCAF element Type | Color |
93| :----- | :----- |
ab5b3c22 94| *TDF_Label* | <b>dark green</b>, if the label has *TDataStd_Name* attribute, <br><b>light grey</b> if the label is empty (has no attributes on all levels of hierarchy),<br> <b>black</b> otherwise. |
95| *TNaming_NamedShape* | <b>dark gray</b> for *TopAbs_FORWARD* orientation of *TopoDS_Shape*, <br> <b>gray</b> for *TopAbs_REVERSED* orientation of *TopoDS_Shape*, <br> <b>black</b> for other orientation. |
d2c90917 96
97
ab5b3c22 98Context pop-up menu:
d2c90917 99| Action | Functionality |
100| :----- | :----- |
ab5b3c22 101| Expand | Expands the next two levels under the selected item. |
102| Expand All | Expands the whole tree of the selected item. |
103| Collapse All | Collapses the whole tree of the selected item. |
d2c90917 104
105
106<b>Property Panel</b>
107
ab5b3c22 108Property panel is used to display the content of *Label* or *Attribute* tree view items or Search result view.
109The information is usually shown in one or several tables.
d2c90917 110
ab5b3c22 111*TDF_Attribute* has the following content in the Property Panel:
d2c90917 112
113<table>
114<tr><th>Type</th><th>Description</th><th>Content</th></tr>
ab5b3c22 115<tr><td><i>TDF_Label</i></td>
d2c90917 116 <td> a table of [entry or attribute name, value]</td>
117 <td>@figure{property_panel_label.png, "",140}</td></tr>
ab5b3c22 118<tr><td><i>TDocStd_Owner</i>,<br> Simple type attributes, <br> List type attributes</td>
d2c90917 119 <td>a table of [method name, value]</td>
120 <td>@figure{property_panel_simple_type.png, "",140}</td></tr>
ab5b3c22 121<tr><td><i>TDataStd_BooleanArray</i>,<br> <i>TDataStd_ByteArray</i>,<br> other Array type attributes</td>
122 <td>2 controls: <br> - a table of [array bound, value], <br> - a table of [method name, value] </td>
d2c90917 123 <td>@figure{property_panel_array.png, "",140}</td></tr>
ab5b3c22 124<tr><td><i>TDataStd_TreeNode</i></td>
125 <td>2 controls: <br> - a table of [Tree ID, value] (visible only if Tree ID() != ID() ), <br> - a tree view of tree nodes starting from *Root()* of the tree node. The current tree node has <b>dark blue</b> text.</td>
d2c90917 126 <td>@figure{property_panel_tree_node.png, "",140} </td></tr>
ab5b3c22 127<tr><td><i>TDataStd_NamedData</i></td>
d2c90917 128 <td>tab bar of attribute elements, each tab has a table of [name, value]</td>
129 <td>@figure{property_panel_named_data.png, "",140}</td></tr>
ab5b3c22 130<tr><td><i>TNaming_UsedShapes</i></td>
131 <td>a table of all shapes handled by the framework</td>
d2c90917 132 <td>@figure{property_panel_tnaming_used_shapes.png, "",140}</td></tr>
ab5b3c22 133<tr><td><i>TNaming_NamedShape</i></td>
134 <td>2 controls: <br> - a table of [method name, value] including CurrentShape/OriginalShape methods result of <i>TNaming_Tools</i>, <br> - an evolution table. <br> Tables contain buttons for @ref occt_shape_export "TopoDS_Shape export".</td>
d2c90917 135 <td>@figure{property_panel_tnaming_named_shape.png, "",140}</td></tr>
ab5b3c22 136<tr><td><i>TNaming_Naming</i></td>
137 <td>2 controls: <br> - a table of <i>TNaming_Name</i> values,<br> - a table of [method name, value]</td>
d2c90917 138 <td>@figure{property_panel_tnaming_naming.png, "",140}</td></tr>
139</table>
140
141
142<b>Dump view</b>
143
ab5b3c22 144@figure{dump_attribute.png, "Dump of TDF_Attribute",200}
d2c90917 145
ab5b3c22 146Dump view shows the result of <b>TDF_Attribute::Dump()</b> or <b>TDF_Label::Dump()</b> of the selected tree view item.
d2c90917 147
148<b>3D view</b>
149
ab5b3c22 1503D View visualizes *TopoDS_Shape* elements of OCAF attribute via AIS facilities.
d2c90917 151
ab5b3c22 152DFBrowser creates two kinds of presentations depending on the selection place:
d2c90917 153
154<table>
ab5b3c22 155<tr><th>Kind</th><th>Source object</th><th>Visualization properties</th><th>View</th></tr>
d2c90917 156<tr><td>Main presentation</td>
ab5b3c22 157 <td>Tree view item:<br> *TPrsStd_AISPresentation*,<br> *TNaming_NamedShape*,<br> *TNaming_Naming*</td>
158 <td>Color: a default color for shape type of the current *TopoDS_Shape*.</td>
d2c90917 159 <td>@figure{display_main_presentation.png, "",100}</td></tr>
160<tr><td>Additional presentation</td>
161 <td>References in Property panel</td>
162 <td>Color: white</td>
163 <td>@figure{display_additional_presentation.png, "",100}</td></tr>
164</table>
165
166
167
168<b>Tree Navigation</b>
169
170Tree Navigation shows a path to the item selected in the tree view.
ab5b3c22 171The path is a sequence of label entries and attribute type names.
172Each element in the path is selectable - simply click on it to select the corresponding tree view item.
d2c90917 173
174Navigation control has buttons to go to the previous and the next selected tree view items.
175
176
177<b>Update Button</b>
178
179Update button synchronizes content of tree view to the current content of OCAF document that could be modified outside.
180
181<b>Search</b>
182
183The user can search OCAF element by typing:
ab5b3c22 184 * *TDF_Label* entry,
185 * *TDF_Attribute* name,
186 * *TDataStd_Name* and *TDataStd_Comment* attributes value.
d2c90917 187
ab5b3c22 188@figure{search.png,"Search",360}
d2c90917 189
190As soon as the user confirms the typed criteria, the Property panel is filled by all satisfied values.
ab5b3c22 191The user can click a value to highlight the corresponding tree view item. By double click the item will be selected.
d2c90917 192
193
194@subsubsection occt_inspector_2_2_3 Elements cooperation
195
196<b>Tree item selection</b>
197
198Selection of tree view item updates content of the following controls:
ab5b3c22 199 * Navigation line;
200 * Property Panel;
201 * 3D View (if it is possible to create an interactive presentation);
202 * Dump View.
d2c90917 203
204@figure{dfbrowser_selection_in_tree_view.svg,"",360}
205
206<b>Property Panel item selection </b>
207
ab5b3c22 208If the property panel shows content of *TDF_Label*:
209 * selection of the table row highlights the corresponding item in the tree view,
210 * double click on the table row selects this item in the tree view.
d2c90917 211
ab5b3c22 212If the property panel shows content of *TDF_Attribute* that has reference to another attribute, selection of this reference:
213 * highlights the referenced item in the tree view,
214 * displays additional presentation in the 3D view if it can be created.
d2c90917 215
216@figure{property_panel_item_selection.svg,"",360}
217
218Attributes having references:
219
220| Type | Reference | Additional presentation
221| :----- | :----- | :----- |
ab5b3c22 222| *TDF_Reference* | *TDF_Label* | |
223| *TDataStd_ReferenceArray*, <br> *TDataStd_ReferenceList*, <br> *TNaming_Naming* | One or several *TDF_Label* in a container. | |
224| *TDataStd_TreeNode* | *TDF_Label* | |
225| *TNaming_NamedShape* | *TDF_Label* in Evolution table | *TopoDS_Shapes* selected in the property panel tables. |
226| *TNaming_UsedShapes* | one or several *TNaming_NamedShape* | *TopoDS_Shapes* of the selected *TNaming_NamedShape*. |
d2c90917 227
228
229@subsubsection occt_shape_export TopoDS_Shape export
230
ab5b3c22 231Property panel of *TNaming_NamedShape* attribute has controls to export *TopoDS_Shape* to:
232 * BREP. **Save file** dialog is open to enter the result file name,
233 * @ref occt_inspector_2_4 "ShapeView" plugin. The dialog for exporting element to ShapeView allows activating this plugin immediately.
d2c90917 234
235
236@subsection occt_inspector_2_3 VInspector Plugin
237
238@subsubsection occt_inspector_2_3_1 Overview
239
ab5b3c22 240@figure{vinspector.png, "VInspector",360}
d2c90917 241
ab5b3c22 242This plugin visualizes interactive objects displayed in *AIS_InteractiveContext* in a tree view with computed selection
243components for each presentation. It shows the selected elements in the context and allows selecting these elements.
d2c90917 244
245@subsubsection occt_inspector_2_3_2 Elements
246
247@figure{vinspector_elements.svg,"VInspector Elements",360}
248
249<b>Presentations tree view</b>
250
ab5b3c22 251This view shows presentations and selection computed on them. Also, the view has columns with information about the state of visualization elements.
d2c90917 252
253VInspector tree items.
254
255| Type | Description |
256| :----- | :----- |
ab5b3c22 257| *AIS_InteractiveContext* | The root of tree view. Its children are interactive objects obtained by *DisplayedObjects* and *ErasedObjects* methods.|
258| *AIS_InteractiveObject* | A child of *AIS_InteractiveContext* item. Its children are *SelectMgr_Selection* obtained by iteration on *CurrentSelection*. |
259| *SelectMgr_Selection* | A child of *AIS_InteractiveObject*. Its children are *SelectMgr_SensitiveEntity* obtaining by iteration on *Sensitive*. |
260| *SelectMgr_SensitiveEntity* | A child of *SelectMgr_Selection*. Its children are *SelectMgr_SensitiveEntity* obtaining by iteration on *OwnerId*. |
261| *SelectBasics_EntityOwner* | A child of *SelectMgr_SensitiveEntity*. It has no children. |
d2c90917 262
263
264Custom color of tree view items:
265
266| OCAF element Type | Column | What | Color |
267| :----- | :----- | :----- | :----- |
ab5b3c22 268| *AIS_InteractiveObject* | 0 | Text | <b>dark gray</b> in *ErasedObjects* list of *AIS_InteractiveContext*,<br> <b>black</b> otherwise |
269| *AIS_InteractiveObject*, <br> *SelectMgr_SensitiveEntity*, <br> *SelectBasics_EntityOwner*| 1 | Background | <b>dark blue</b>, if there is a selected owner under the item, <br> <b>black</b> otherwise |
270| *SelectMgr_Selection*,<br> *SelectMgr_SensitiveEntity*,<br> *electBasics_EntityOwner* | all | Text | <b>dark gray</b>, if *SelectionState* of *SelectMgr_Selection* is not *SelectMgr_SOS_Activated*,<br> <b>black</b> otherwise |
d2c90917 271
272
273Context popup menu in tree view:
274| Action | Item | Functionality |
275| :----- | :----- | :----- |
ab5b3c22 276| Export to ShapeView | *AIS_InteractiveObject* | Exports *TopoDS_Shape* of the *AIS_Interactive* presentation to ShapeView plugin. <br> It should be *AIS_Shape* presentation and ShapeView plugin should be registered in Inspector<br> Dialog about exporting element to ShapeView is shown with a possibility to activate this plugin immediately. |
277| Show | *AIS_InteractiveObject* | Displays presentation in *AIS_InteractiveContext*. |
278| Hide | *AIS_InteractiveObject* | Erases presentation from *AIS_InteractiveContext*. |
d2c90917 279
280<b>Update</b>
281
ab5b3c22 282This button synchronizes the plugin content with the current state of *AIS_InteractiveContext* and updates the presence of items and their current selection.
d2c90917 283
284<b>Selection controls</b>
285
ab5b3c22 286Selection controls switch on/off the possibility to set selection in the context from VInspector plugin.
d2c90917 287
288| Action | Tree view item | Functionality |
289| :----- | :----- | :----- |
ab5b3c22 290| Select Presentations | *AIS_InteractiveObject* | Calls *AddOrRemoveSelected* of interactive object for the selected item. |
291| Select Owners | *SelectMgr_EntityOwner* or <br> *SelectMgr_SensitiveEntity* | Calls *AddOrRemoveSelected* of *SelectMgr_EntityOwner* for the selected item. |
d2c90917 292
07f2b741 293Note that the initial selection in the context will be cleared.
d2c90917 294If the button is toggled, the button selection is active. Only one button may be toggled at the moment.
295
296
297<b>History view</b>
298
ab5b3c22 299At present, the History view is under implementation and may be used only in a custom application where Inspector is loaded.
d2c90917 300
ab5b3c22 301To fill this view, *VInspectorAPI_CallBack* should be redefined in the application and send signals about some actions applied to the context.
302After that, the call back should be given as a parameter in the plugin.
d2c90917 303If done, new items will be created in the history view for each action.
304
305@subsubsection occt_inspector_2_3_3 Elements cooperation
306
ab5b3c22 307*VInspector* marks the presentations currently selected in *AIS_InteractiveContext* with a blue background in tree items. Use **Update** button to synchronize VInspector selected items state to the context.
d2c90917 308
ab5b3c22 309It is also possible to perform selection in the context using "Selection controls" VInspector feature. However, this operation should be performed carefully as
310it clears the current selection in *AIS_InteractiveContext*.
d2c90917 311
312Selection change:
313| From | To | Action | Result |
314| :----- | :----- | :----- | :----- |
ab5b3c22 315| *AIS_InteractiveContext* | VInspector | Performs selection in *AIS_InteractiveContext*. | Click **Update** button in VInspector and check **Selection** column: <br> *AIS_InteractiveContext* item contains some selected objects, <br> the value of some *AIS_InteractiveObject* is filled if they are selected for this presentation or its entity owner. |
316| VInspector | *AIS_InteractiveContext* | Activates one of Selection controls and selects one or several elements in the tree view. | The objects become selected in *AIS_InteractiveContext*. |
317
318@subsubsection occt_inspector_2_3_4 VInspector tree view columns
319
320Use context pop-up menu on the tree view header to select, which columns should be displayed.
321@figure{vinspector_tree_columns.png, "Vinspector tree header context menu",360}
d2c90917 322
323@subsection occt_inspector_2_4 ShapeView Plugin
324
325@subsubsection occt_inspector_2_4_1 Overview
326
ab5b3c22 327@figure{shapeview.png, "ShapeView",360}
d2c90917 328
ab5b3c22 329This plugin visualizes content of *TopoDS_Shape* in a tree view.
d2c90917 330
331@subsubsection occt_inspector_2_4_2 Elements
332
333@figure{shapeview_elements.svg,"ShapeView Elements",360}
334
335<b>TopoDS_Shape View</b>
336
ab5b3c22 337The view elements are *TopoDS_Shape* objects.
338The shape is exploded into sub-shapes using *TopoDS_Iterator* of the *TopoDS_Shape*.
339Children sub-shapes are presented in the view as children of the initial shape.
340By iterating recursively through all shapes we obtain a tree view of items shown in the ShapeView.
d2c90917 341
ab5b3c22 342The columns of the View show some information about *TopoDS_Shape* of the item.
343The first column allows changing the visibility of the item shape in the 3D view.
d2c90917 344
ab5b3c22 345Context pop-up menu in tree view:
d2c90917 346| Action | Functionality |
347| :----- | :----- |
ab5b3c22 348| Load BREP file | Opens the selected file and appends the resulting *TopoDS_Shape* into the tree view. |
349| Remove all shape items | Clears tree view. |
350| BREP view | Shows the text view with BREP content of the selected item. Creates the BREP file in a temporary directory of the plugin. |
351| Close All BREP views | Closes all opened text views. |
352| BREP directory | Displays the folder, where temporary BREP files have been stored. |
d2c90917 353
354@subsubsection occt_inspector_2_4_3 Elements cooperation
355
ab5b3c22 356Selection of one or several items in *TopoDS_Shape* View creates its *AIS_Shape* presentation and displays it in the 3D View.
357
358@subsubsection occt_inspector_2_4_4 ShapeView tree view columns
d2c90917 359
ab5b3c22 360Use context pop-up menu on the tree view header to select, which columns should be displayed.
361@figure{shapeview_tree_columns.png, "ShapeView tree header context menu",360}
d2c90917 362
363
364@section occt_inspector_3 Common controls
d2c90917 365
ab5b3c22 366@subsection occt_inspector_3_1 Tree View
367
368This control shows presentation hierarchy of the investigated OCCT element, e.g. *TDocStd_Application* for DFBrowser, see @ref occt_inspector_1_1 "Overview".
369The first column contains the name, other columns are informative.
370
371The tree view has a context menu with plugin-specific actions.
372
373@subsubsection occt_inspector_3_1_1 Tree View preferences
374
375It is possible to define visibility and width of columns.
376This option is available in a view that contains more than one column,
377 e.g. @ref occt_inspector_2_3_4 "VInspector tree view columns"
378 and @ref occt_inspector_2_4_4 "ShapeView tree view columns".
379
380@figure{treeview_preferences.svg, "Preferences schema",360}
381
382
383@subsection occt_inspector_3_2 3D View
384
385@subsubsection occt_inspector_3_2_1 Overview
386
387@figure{3DView.png, "3D View",360}
388
389This control for OCCT 3D viewer creates visualization view components and allows performing some user actions in the view.
390
391
392@subsubsection occt_inspector_3_2_2 Elements
393
394@figure{3DView_elements.svg,"3DView Elements",360}
395
3963D View contains the following elements:
397| Element | Functionality |
398| :----- | :----- |
399| 3D view | V3d viewer with mouse events processing. |
400| Context | Allows choosing another context that should be used in the plugin. The following contexts are available:<br> **Own** - the context of this view, <br> **External** - the context of the @ref occt_inspector_4_3 "external application", which initializes the plugin, <br> **None** - the visualization is not performed at all (useful if the presentation is too complex). |
401| Multi/Single | The buttons define what to do with the previously displayed objects: <br> **Multi** displays new presentations together with already displayed ones, <br> **Single** removes all previously displayed presentations. |
402| Clean | Removes all displayed presentations. |
403| Fit All,<br> Fit Area,<br> Zoom,<br> Pan,<br> Rotation | Scene manipulation actions<br> (Fit All is checkable. If checked(by double click), display/hide of new objects will perform **Fit All** of the scene.) |
404| Display Mode | Sets *AIS_Shading* or *AIS_WireFrame* display mode for all presentations. |
d2c90917 405
ab5b3c22 406Context popup menu:
407| Action | Functionality |
408| :----- | :----- |
409| Set View Orientation | Shows the list of available *V3d_View* projections. Selection of an item with change the view. |
d2c90917 410
ab5b3c22 411@figure{3DView_set_orientation.png,"Set view orientation",360}
d2c90917 412
ab5b3c22 413@subsubsection occt_inspector_3_2_3 3D View preferences.
414View preferences store the current view orientation.
d2c90917 415
ab5b3c22 416@subsection occt_inspector_3_3 Preferences context menu
d2c90917 417
ab5b3c22 418@figure{preferences.png,"Plugin preferences",360}
d2c90917 419
ab5b3c22 420Context menu contains:
d2c90917 421| Element | Functionality |
422| :----- | :----- |
ab5b3c22 423| Tree Level Line,<br> PropertyPanel,<br> Dump, <br> View| Names of dock widgets in the active plugin. If the button is checked, dock widget is visible. |
424| Store Preferences | Creates ".tinspector.xml" preferences file with the current settings for each plugin.<br> This file is created in TEMP/TMP directory (by default) or in a user-defined directory. |
425| Remove Preferences | Removes preferences file. After the Inspector is restarted, default values will be applied. |
426
d2c90917 427
ab5b3c22 428The following controls have store/restore preferences:
429| Element | Preferences |
430| :----- | :----- |
431| Geometry| Inspector window size and position. <br>State of dockable widgets : visibility, position, size.|
432| @ref occt_inspector_3_1_1 "Tree View preferences"| Columns visible in the tree view and their width. |
433| @ref occt_inspector_3_2_3 "3D View preferences"| 3D view camera direction. |
d2c90917 434
ab5b3c22 435@section occt_inspector_4 Getting Started
d2c90917 436
ab5b3c22 437@subsection occt_inspector_4_1 TInspectorEXE sample
d2c90917 438
ab5b3c22 439This sample allows trying Inspector functionality.
d2c90917 440
ab5b3c22 441Use *inspector.bat* script file placed in a binary directory of OCCT to launch it.
d2c90917 442
ab5b3c22 443This script accepts the names of plugin's DLL that should be loaded. By default it loads all plugins described above.
d2c90917 444
d2c90917 445
ab5b3c22 446@figure{TStandaloneEXE.png, "TStandaloneEXE",360}
d2c90917 447
ab5b3c22 448Click on the Open button shows the dialog to select a file.
449@figure{TStandaloneEXE_open.png, "",360}
d2c90917 450
ab5b3c22 451Depending on the active plugin, it is possible to select the following files in the dialog:<br>
452- DFBRowser: OCAF document or STEP files;
453- VInspector: BREP files;
454- ShapeView: BREP files.
d2c90917 455
ab5b3c22 456Click the file name in the proposed directory and enter it manually or using **Browse** button.
d2c90917 457
ab5b3c22 458By default, TInspectorEXE opens the following files for plugins:
d2c90917 459| Plugin DLL library name | Files |
460| :----- | :----- |
461| TKDFBrowser | step/screw.step |
462| TKVInspector | occ/hammer.brep |
463| TKShapeView | occ/face1.brep, <br> occ/face2.brep |
464
ab5b3c22 465These files are found relatively to *CSF_OCCTDataPath*.
d2c90917 466
ab5b3c22 467@subsubsection occt_inspector_4_1_1 TInspectorEXE preferences
468The application stores recently loaded files. On the application start, the last file is activated.
469**Open file** dialog contains recently loaded files.
470Selection of a new file updates the container of recently loaded files and rewrites preferences.
d2c90917 471
ab5b3c22 472Source code of *TIspectorEXE* is a good sample for @ref occt_inspector_4_3 "using the Inspector in a custom application".
d2c90917 473
ab5b3c22 474@subsection occt_inspector_4_2 How to launch the Inspector in DRAW Test Harness
d2c90917 475
ab5b3c22 476*TKToolsDraw* plugin provides DRAW commands for Qt tools. Use *INSPECTOR* parameter of @ref occt_draw_1_3_3 "pload"
477command to download the commands of this library. It contains *tinspector* command to start Inspector under DRAW.
d2c90917 478See more detailed description of the @ref occt_draw_13_1 "tinspector" command.
479
480The simple code to start Inspector with all plugins loaded:
481
77d94fd1 482~~~~
d2c90917 483pload INSPECTOR
484tinspector
77d94fd1 485~~~~
d2c90917 486
ab5b3c22 487@figure{drawexe_tinspector.png,"tinspector",360}
488
489This command does the following:
490- all available Plugins are presented in the Inspector. These are @ref occt_inspector_2_2 "DFBrowser", @ref occt_inspector_2_3 "VInspector" and @ref occt_inspector_2_4 "ShapeView";
491- DFBrowser is the active plugin;
492- OCAF tree is empty.
493
494After this, we should create objects in DRAW and update *tinspector*.
495The examples of using Inspector in DRAW can be found in OCCT source directory /tests/tools.
d2c90917 496
ab5b3c22 497@subsection occt_inspector_4_3 How to use the Inspector in a custom application
d2c90917 498
ab5b3c22 499The example of using the Inspector in a custom application is presented in OCCT qt sample - <b>FuncDemo</b>.
500For building qt samples, switch on *BUILD_SAMPLES_QT* variable in @ref build_cmake_conf "Configuration process".
d2c90917 501
ab5b3c22 502In general, the following steps should be taken:
503* Set dependencies to OCCT and Qt in the application (Header and Link);
504* Create an instance of *TInspector_Communicator*;
505* Register the plugins of interest in the communicator by DLL library name;
506* Initialize the communicator with objects that will be investigated;
507* Set visible true for the communicator.
d2c90917 508
d2c90917 509
510
ab5b3c22 511Here is an example of C++ implementation:
77d94fd1 512~~~~{.cpp}
d2c90917 513
514#include <inspector/TInspector_Communicator.hxx>
515
516static TInspector_Communicator* MyTCommunicator;
517
518void CreateInspector()
519{
520 NCollection_List<Handle(Standard_Transient)> aParameters;
521 //... append parameters in the list
522
523 if (!MyTCommunicator)
524 {
525 MyTCommunicator = new TInspector_Communicator();
526
527 MyTCommunicator->RegisterPlugin ("TKDFBrowser");
528 MyTCommunicator->RegisterPlugin ("TKVInspector");
529 MyTCommunicator->RegisterPlugin ("TKShapeView");
530
531 MyTCommunicator->Init (aParameters);
532 MyTCommunicator->Activate ("TKDFBrowser");
533 }
534 MyTCommunicator->SetVisible (true);
535}
77d94fd1 536~~~~
d2c90917 537
ab5b3c22 538Give one the following objects for a plugin using a container of parameters:
539
d2c90917 540| Plugin | to be initialized by |
541| :----- | :----- |
ab5b3c22 542| *TKDFBrowser* | *TDocStd_Application* |
543| *TKVInspector* | *AIS_InteractiveContext* |
544| *TKShapeView* | *TopoDS_TShape* |
545
d2c90917 546
ab5b3c22 547@section occt_inspector_5 Build procedure
d2c90917 548
549
ab5b3c22 550@subsection occt_inspector_5_1 Building with CMake within OCCT
d2c90917 551
552By default the Inspector compilation is off.
ab5b3c22 553To compile it, set the *BUILD_Inspector* flag to "ON". See @ref build_cmake_conf "Configuration process".
d2c90917 554
ab5b3c22 555When this option is switched ON, MS Visual Studio project has an additional tree of folders:
d2c90917 556
ab5b3c22 557@figure{VStudio_projects.png,"Inspector packages in MS Visual Studio",160}
d2c90917 558
559
ab5b3c22 560@section occt_inspector_6 Sources and packaging
d2c90917 561
562OCCT sources are extended by the /tools directory.
563
ab5b3c22 564Distribution of plugin packages :
565| Source packages | Plugin |
d2c90917 566| :----- | :----- |
ab5b3c22 567| *DFBrowser*, <br> *DFBrowserPane*, <br> *DFBrowserPaneXDE*, <br> *TKDFBrowser* | DFBrowser |
568| *VInspector*, <br> *TKVInspector* | VInspector |
569| *ShapeView*, <br> *TKShapeView* | ShapeView |
d2c90917 570
571Other packages:
ab5b3c22 572| Source packages| Used in |
d2c90917 573| :----- | :----- |
ab5b3c22 574| *TInspectorAPI*, <br> *TKInspectorAPI* | Interface for connection to plugin. |
575| *TreeModel*, <br> *TKTreeView* | Items-oriented model to simplify work with GUI tree control. |
576| *View*, <br> *TKView* | 3D View component. |
577| *TInspector*, <br> *TKTInspector* | Inspector window, where plugins are placed. |
578| *ToolsDraw*, <br> *TKToolsDraw* | Plugin for DRAW to start Inspector. |
d2c90917 579
580
ab5b3c22 581In MSVC studio, a separate folder contains Inspector projects.
d2c90917 582
ab5b3c22 583@section occt_inspector_7 Glossary
584* **Component** -- a part of OCCT , e.g. OCAF, VISUALIZATION, MODELING and others.
585* **Plugin** -- a library that is loaded in some executable/library. Here, the plugins are:
d2c90917 586 * DFBrowser,
587 * ShapeView,
588 * VInspector.