mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-09-08 14:17:06 +03:00
0026272: Visualization - provide a possibility to activate selection modes without opening local context
- picked or selected objects are now highlighted via owners instead of interactive objects; - support methods for owners were added to AIS_InteractiveContext; - selected owners are highlighted in immediate mode in AIS_InteractiveContext; - selection without opening of local context is enabled by default; - added "-local" key to vselmode command to enable selection in local context; - selection filters are now completely supported in AIS_InteractiveContext; - the idea of differencing of selected items onto current (in interactive context) and selected (local selection) was eliminated; - all calls to "current" were replaced by calls to "selected" in terms of future local context removal; - AIS_InteractiveObject::mySelectionMode was removed; - now each selectable object can define own selection mode for "global" selection of the whole object; - whole object selection mode is 0 by default for all standard interactive objects. - added support of drawing immediate structures in different layers; - unused code for immediate mode was removed; - vfeedback and vexport commands now produce correct output for raytrace mode; - do not add TKD3DHost to projects list due to usage of c++11-specific structures that are not supported in vc11.
This commit is contained in:
@@ -293,7 +293,7 @@ void CViewer2dDoc::OnBUTTONTestRect()
|
|||||||
Handle_AIS_Shape aRect2 = new AIS_Shape(W2);
|
Handle_AIS_Shape aRect2 = new AIS_Shape(W2);
|
||||||
myAISContext->Display(aRect2);
|
myAISContext->Display(aRect2);
|
||||||
myAISContext->SetColor(aRect2,Quantity_NOC_YELLOW);
|
myAISContext->SetColor(aRect2,Quantity_NOC_YELLOW);
|
||||||
myAISContext->SetSelectionMode(aRect2,2);
|
myAISContext->Activate(aRect2,2);
|
||||||
|
|
||||||
FitAll2DViews(Standard_True); // Update Viewer
|
FitAll2DViews(Standard_True); // Update Viewer
|
||||||
}
|
}
|
||||||
|
@@ -34,7 +34,6 @@ AIS_InteractiveObject(PrsMgr_TOP_ProjectorDependant)
|
|||||||
BRepPrimAPI_MakeCylinder S(R,H);
|
BRepPrimAPI_MakeCylinder S(R,H);
|
||||||
myShape = S.Shape();
|
myShape = S.Shape();
|
||||||
SetHilightMode(0);
|
SetHilightMode(0);
|
||||||
SetSelectionMode(0);
|
|
||||||
myDrawer->SetShadingAspect(new Prs3d_ShadingAspect());
|
myDrawer->SetShadingAspect(new Prs3d_ShadingAspect());
|
||||||
myPlanarFaceColor = Quantity_NOC_FIREBRICK3;
|
myPlanarFaceColor = Quantity_NOC_FIREBRICK3;
|
||||||
myCylindricalFaceColor = Quantity_NOC_GRAY;
|
myCylindricalFaceColor = Quantity_NOC_GRAY;
|
||||||
@@ -48,7 +47,6 @@ AIS_InteractiveObject(PrsMgr_TOP_ProjectorDependant)
|
|||||||
BRepBuilderAPI_NurbsConvert aNurbsConvert(S.Shape());
|
BRepBuilderAPI_NurbsConvert aNurbsConvert(S.Shape());
|
||||||
myShape = aNurbsConvert.Shape();
|
myShape = aNurbsConvert.Shape();
|
||||||
SetHilightMode(0);
|
SetHilightMode(0);
|
||||||
SetSelectionMode(0);
|
|
||||||
myDrawer->SetShadingAspect(new Prs3d_ShadingAspect());
|
myDrawer->SetShadingAspect(new Prs3d_ShadingAspect());
|
||||||
myPlanarFaceColor = Quantity_NOC_FIREBRICK3;
|
myPlanarFaceColor = Quantity_NOC_FIREBRICK3;
|
||||||
myCylindricalFaceColor = Quantity_NOC_KHAKI4;
|
myCylindricalFaceColor = Quantity_NOC_KHAKI4;
|
||||||
|
@@ -50,7 +50,7 @@ class InteractiveContext from AIS inherits TShared from MMgt
|
|||||||
-- - working on only a few objects,
|
-- - working on only a few objects,
|
||||||
-- - working on a single object.
|
-- - working on a single object.
|
||||||
-- 1. When you want ot work on one type of entity, you
|
-- 1. When you want ot work on one type of entity, you
|
||||||
-- should open a local context with the option
|
-- may open a local context with the option
|
||||||
-- UseDisplayedObjects set to false. DisplayedObjects
|
-- UseDisplayedObjects set to false. DisplayedObjects
|
||||||
-- allows you to recover the visualized Interactive
|
-- allows you to recover the visualized Interactive
|
||||||
-- Objects which have a given Type and
|
-- Objects which have a given Type and
|
||||||
@@ -80,6 +80,14 @@ class InteractiveContext from AIS inherits TShared from MMgt
|
|||||||
-- of setting up the different contexts of
|
-- of setting up the different contexts of
|
||||||
-- selection/presentation according to the operation
|
-- selection/presentation according to the operation
|
||||||
-- which you want to perform.
|
-- which you want to perform.
|
||||||
|
--
|
||||||
|
-- Selection of parts of the objects can also be done without opening a local context.
|
||||||
|
-- Interactive context itself supports decomposed object selection with selection filters
|
||||||
|
-- support. Note that each selectable object must specify the selection mode that is
|
||||||
|
-- responsible for selection of object as a whole (global selection mode). By default, global
|
||||||
|
-- selection mode is equal to 0, but it might be redefined if needed. Sub-part selection
|
||||||
|
-- of the objects without using local context provides a possibility to activate part
|
||||||
|
-- selection modes along with global selection mode.
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Address from Standard,
|
Address from Standard,
|
||||||
@@ -416,17 +424,6 @@ is
|
|||||||
-- Standard_False, the presentation of the Interactive
|
-- Standard_False, the presentation of the Interactive
|
||||||
-- Object returns to the default selection mode; the
|
-- Object returns to the default selection mode; the
|
||||||
-- object is displayed but no viewer will be updated.
|
-- object is displayed but no viewer will be updated.
|
||||||
SetSelectionMode(me:mutable;
|
|
||||||
aniobj:InteractiveObject from AIS;
|
|
||||||
aMode :Integer from Standard);
|
|
||||||
---Purpose:
|
|
||||||
-- Sets the selection mode of Interactive Objects.
|
|
||||||
-- aMode provides the selection mode index of the entity aniobj.
|
|
||||||
UnsetSelectionMode(me : mutable;
|
|
||||||
aniobj : InteractiveObject from AIS);
|
|
||||||
---Purpose:
|
|
||||||
-- Removes selection mode from Interactive Objects.
|
|
||||||
-- aMode provides the selection mode index of the entity aniobj.
|
|
||||||
|
|
||||||
SetPixelTolerance(me:mutable;
|
SetPixelTolerance(me:mutable;
|
||||||
aPrecision: Real from Standard = 2.0);
|
aPrecision: Real from Standard = 2.0);
|
||||||
@@ -700,14 +697,22 @@ is
|
|||||||
returns Boolean from Standard;
|
returns Boolean from Standard;
|
||||||
|
|
||||||
IsHilighted(me;
|
IsHilighted(me;
|
||||||
anIobj : InteractiveObject from AIS;
|
anIobj : InteractiveObject from AIS;
|
||||||
WithColor: out Boolean from Standard;
|
WithColor: out Boolean from Standard;
|
||||||
theHiCol : out NameOfColor from Quantity)
|
theHiCol : out NameOfColor from Quantity)
|
||||||
returns Boolean from Standard;
|
returns Boolean from Standard;
|
||||||
---Purpose: if <anIObj> is hilighted with a specific color
|
---Purpose: if <anIObj> is hilighted with a specific color
|
||||||
-- <WithColor> will be returned TRUE
|
-- <WithColor> will be returned TRUE
|
||||||
-- <theHiCol> gives the name of the hilightcolor
|
-- <theHiCol> gives the name of the hilightcolor
|
||||||
|
|
||||||
|
IsHilighted (me;
|
||||||
|
theOwner : EntityOwner from SelectMgr;
|
||||||
|
theIsCustomColor : out Boolean from Standard;
|
||||||
|
theCustomColorName : out NameOfColor from Quantity)
|
||||||
|
returns Boolean from Standard;
|
||||||
|
---Purpose: if <theOwner> is hilighted with a specific color, than <theIsCustomColor> will be set
|
||||||
|
-- to true and <theCustomColorName> will have the name of the color stored
|
||||||
|
|
||||||
DisplayPriority(me;anIobj: InteractiveObject from AIS)
|
DisplayPriority(me;anIobj: InteractiveObject from AIS)
|
||||||
returns Integer from Standard;
|
returns Integer from Standard;
|
||||||
---Purpose:
|
---Purpose:
|
||||||
@@ -1130,136 +1135,159 @@ is
|
|||||||
-- The Selected objects are objects picked
|
-- The Selected objects are objects picked
|
||||||
-- when a local context is opened
|
-- when a local context is opened
|
||||||
|
|
||||||
|
---Category: Obsolete methods that are valid for local context only
|
||||||
|
|
||||||
SetCurrentObject(me:mutable;
|
SetCurrentObject(me:mutable;
|
||||||
aniobj: InteractiveObject from AIS;
|
aniobj: InteractiveObject from AIS;
|
||||||
updateviewer : Boolean from Standard = Standard_True);
|
updateviewer : Boolean from Standard = Standard_True);
|
||||||
--- Purpose:
|
--- Purpose:
|
||||||
-- Updates the view of the current object in open context.
|
-- Updates the view of the current object in open context.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
-- If a local context is open and if updateviewer equals
|
-- If a local context is open and if updateviewer equals
|
||||||
-- Standard_False, the presentation of the Interactive
|
-- Standard_False, the presentation of the Interactive
|
||||||
-- Object activates the selection mode; the object is
|
-- Object activates the selection mode; the object is
|
||||||
-- displayed but no viewer will be updated.
|
-- displayed but no viewer will be updated.
|
||||||
|
|
||||||
|
AddOrRemoveCurrentObject (me : mutable;
|
||||||
|
theObj : InteractiveObject from AIS;
|
||||||
|
theIsToUpdateViewer : Boolean from Standard = Standard_True);
|
||||||
|
---Purpose:
|
||||||
|
-- Allows to add or remove the object given to the list of current and highlight/unhighlight it
|
||||||
|
-- correspondingly. Is valid for global context only; for local context use method AddOrRemoveSelected.
|
||||||
|
-- Since this method makes sence only for neutral point selection of a whole object, if 0 selection
|
||||||
|
-- of the object is empty this method simply does nothing.
|
||||||
|
|
||||||
AddOrRemoveCurrentObject(me:mutable;
|
|
||||||
aniobj : InteractiveObject from AIS;
|
|
||||||
updateviewer : Boolean from Standard = Standard_True);
|
|
||||||
---Purpose:
|
|
||||||
-- Allows you to add a current object to the list of current
|
|
||||||
-- objects or remove it from that list.
|
|
||||||
-- Objects selected when there is no open local context
|
|
||||||
-- are called current objects; those selected in open
|
|
||||||
-- local context, selected objects.
|
|
||||||
-- If a local context is open and if updateviewer equals
|
|
||||||
-- Standard_False, the presentation of the Interactive
|
|
||||||
-- Object activates the selection mode; the object is
|
|
||||||
-- displayed but no viewer will be updated.
|
|
||||||
UpdateCurrent (me:mutable);
|
UpdateCurrent (me:mutable);
|
||||||
---Purpose: Updates the list of current objects, i.e. hilights new
|
---Purpose: Updates the list of current objects, i.e. hilights new
|
||||||
-- current objects, removes hilighting from former current objects.
|
-- current objects, removes hilighting from former current objects.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
--
|
|
||||||
|
|
||||||
WasCurrentTouched(me) returns Boolean from Standard;
|
WasCurrentTouched(me) returns Boolean from Standard;
|
||||||
---Purpose:
|
---Purpose:
|
||||||
-- Returns the current selection touched by the cursor.
|
-- Returns the current selection touched by the cursor.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
---C++: inline
|
---C++: inline
|
||||||
|
|
||||||
SetOkCurrent(me:mutable);
|
SetOkCurrent(me:mutable);
|
||||||
---C++: inline
|
---C++: inline
|
||||||
|
|
||||||
IsCurrent(me;aniobj: InteractiveObject from AIS) returns Boolean from Standard;
|
IsCurrent (me;
|
||||||
--- Purpose:
|
theObject : InteractiveObject from AIS)
|
||||||
-- Returns true if there is a non-null interactive object in Neutral Point.
|
returns Boolean from Standard;
|
||||||
-- Objects selected when there is no open local context
|
--- Purpose: Returns true if there is a non-null interactive object in Neutral Point.
|
||||||
-- are called current objects; those selected in open
|
-- Objects selected when there is no open local context are called current objects;
|
||||||
-- local context, selected objects.
|
-- those selected in open local context, selected objects.
|
||||||
|
|
||||||
InitCurrent(me:mutable);
|
InitCurrent(me:mutable);
|
||||||
--- Purpose:
|
--- Purpose:
|
||||||
-- Initializes a scan of the current selected objects in
|
-- Initializes a scan of the current selected objects in
|
||||||
-- Neutral Point.
|
-- Neutral Point.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
|
|
||||||
MoreCurrent(me) returns Boolean from Standard;
|
MoreCurrent(me) returns Boolean from Standard;
|
||||||
--- Purpose:
|
--- Purpose:
|
||||||
-- Returns true if there is another object found by the
|
-- Returns true if there is another object found by the
|
||||||
-- scan of the list of current objects.
|
-- scan of the list of current objects.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
|
|
||||||
NextCurrent(me:mutable);
|
NextCurrent(me:mutable);
|
||||||
---Purpose:
|
---Purpose:
|
||||||
-- Continues the scan to the next object in the list of
|
-- Continues the scan to the next object in the list of
|
||||||
-- current objects.
|
-- current objects.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
|
|
||||||
Current(me) returns InteractiveObject from AIS;
|
Current(me) returns InteractiveObject from AIS;
|
||||||
---Purpose:
|
---Purpose:
|
||||||
-- Returns the current interactive object.
|
-- Returns the current interactive object.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
|
|
||||||
NbCurrents(me:mutable) returns Integer from Standard;
|
NbCurrents(me:mutable) returns Integer from Standard;
|
||||||
|
|
||||||
FirstCurrentObject(me:mutable) returns InteractiveObject from AIS;
|
HilightCurrents (me : mutable;
|
||||||
---Purpose:
|
theToUpdateViewer : Boolean from Standard = Standard_True);
|
||||||
-- Returns the first current object in the list of current objects.
|
---Purpose:
|
||||||
-- Objects selected when there is no open local context
|
--- Highlights current objects.
|
||||||
-- are called current objects; those selected in open
|
-- Objects selected when there is no open local context
|
||||||
-- local context, selected objects.
|
-- are called current objects; those selected in open
|
||||||
|
-- local context, selected objects.
|
||||||
HilightCurrents(me : mutable;
|
-- If a local context is open and if updateviewer equals
|
||||||
updateviewer : Boolean from Standard=Standard_True);
|
-- Standard_False, the presentation of the Interactive
|
||||||
---Purpose:
|
-- Object activates the selection mode; the object is
|
||||||
--- Highlights current objects.
|
-- displayed but no viewer will be updated.
|
||||||
-- Objects selected when there is no open local context
|
|
||||||
-- are called current objects; those selected in open
|
|
||||||
-- local context, selected objects.
|
|
||||||
-- If a local context is open and if updateviewer equals
|
|
||||||
-- Standard_False, the presentation of the Interactive
|
|
||||||
-- Object activates the selection mode; the object is
|
|
||||||
-- displayed but no viewer will be updated.
|
|
||||||
|
|
||||||
UnhilightCurrents(me : mutable;
|
UnhilightCurrents(me : mutable;
|
||||||
updateviewer : Boolean from Standard=Standard_True);
|
updateviewer : Boolean from Standard=Standard_True);
|
||||||
---Purpose:
|
---Purpose:
|
||||||
-- Removes highlighting from current objects.
|
-- Removes highlighting from current objects.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
-- If a local context is open and if updateviewer equals
|
-- If a local context is open and if updateviewer equals
|
||||||
-- Standard_False, the presentation of the Interactive
|
-- Standard_False, the presentation of the Interactive
|
||||||
-- Object activates the selection mode; the object is
|
-- Object activates the selection mode; the object is
|
||||||
-- displayed but no viewer will be updated.
|
-- displayed but no viewer will be updated.
|
||||||
|
|
||||||
ClearCurrents(me:mutable;
|
ClearCurrents (me : mutable;
|
||||||
updateviewer : Boolean from Standard=Standard_True);
|
theToUpdateViewer : Boolean from Standard = Standard_True);
|
||||||
---Purpose:
|
---Purpose:
|
||||||
-- Empties previous current objects in order to get the
|
-- Empties previous current objects in order to get the
|
||||||
-- current objects detected by the selector using
|
-- current objects detected by the selector using
|
||||||
-- UpdateCurrent.
|
-- UpdateCurrent.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
-- If a local context is open and if updateviewer equals
|
-- If a local context is open and if updateviewer equals
|
||||||
-- Standard_False, the presentation of the Interactive
|
-- Standard_False, the presentation of the Interactive
|
||||||
-- Object activates the selection mode; the object is
|
-- Object activates the selection mode; the object is
|
||||||
-- displayed but no viewer will be updated.
|
-- displayed but no viewer will be updated.
|
||||||
|
|
||||||
|
DetectedCurrentShape(me) returns Shape from TopoDS;
|
||||||
|
---C++: return const &
|
||||||
|
---Purpose:
|
||||||
|
-- @return current mouse-detected shape or empty (null) shape, if current interactive object
|
||||||
|
-- is not a shape (AIS_Shape) or there is no current mouse-detected interactive object at all.
|
||||||
|
DetectedCurrentObject(me) returns InteractiveObject from AIS;
|
||||||
|
--Purpose:
|
||||||
|
-- @return current mouse-detected interactive object or null object if there is no current detected.
|
||||||
|
|
||||||
|
---Category: Selection mehods valid for both local and interactive context
|
||||||
|
|
||||||
|
SetSelected (me : mutable;
|
||||||
|
theOwners : EntityOwner from SelectMgr;
|
||||||
|
theToUpdateViewer : Boolean from Standard = Standard_True);
|
||||||
|
---Purpose: Unhighlights previously selected owners and marks them as not selected.
|
||||||
|
-- Marks owner given as selected and highlights it.
|
||||||
|
|
||||||
|
AddOrRemoveSelected (me : mutable;
|
||||||
|
theOwner : EntityOwner from SelectMgr;
|
||||||
|
theToUpdateViewer : Boolean from Standard = Standard_True);
|
||||||
|
---Purpose: Allows to highlight or unhighlight the owner given depending on its selection status
|
||||||
|
|
||||||
|
IsSelected (me;
|
||||||
|
theOwner : EntityOwner from SelectMgr)
|
||||||
|
returns Boolean from Standard;
|
||||||
|
---Purpose: Returns true is the owner given is selected
|
||||||
|
|
||||||
|
FirstSelectedObject(me:mutable) returns InteractiveObject from AIS;
|
||||||
|
---Purpose:
|
||||||
|
-- Returns the first current object in the list of current objects.
|
||||||
|
-- Objects selected when there is no open local context
|
||||||
|
-- are called current objects; those selected in open
|
||||||
|
-- local context, selected objects.
|
||||||
|
|
||||||
SetSelected(me:mutable;aniObj: InteractiveObject from AIS;
|
SetSelected(me:mutable;aniObj: InteractiveObject from AIS;
|
||||||
updateviewer : Boolean from Standard=Standard_True);
|
updateviewer : Boolean from Standard=Standard_True);
|
||||||
@@ -1270,8 +1298,6 @@ is
|
|||||||
-- Object activates the selection mode; the object is
|
-- Object activates the selection mode; the object is
|
||||||
-- displayed but no viewer will be updated.
|
-- displayed but no viewer will be updated.
|
||||||
|
|
||||||
SetSelectedCurrent(me:mutable);
|
|
||||||
---Purpose: puts the selected list in the current objects List.
|
|
||||||
UpdateSelected(me:mutable;
|
UpdateSelected(me:mutable;
|
||||||
updateviewer : Boolean from Standard=Standard_True);
|
updateviewer : Boolean from Standard=Standard_True);
|
||||||
---Purpose: updates the list of selected objects
|
---Purpose: updates the list of selected objects
|
||||||
@@ -1281,126 +1307,120 @@ is
|
|||||||
aniobj : InteractiveObject from AIS;
|
aniobj : InteractiveObject from AIS;
|
||||||
updateviewer : Boolean from Standard=Standard_True);
|
updateviewer : Boolean from Standard=Standard_True);
|
||||||
---Purpose:Allows you to add a selected object to the list of
|
---Purpose:Allows you to add a selected object to the list of
|
||||||
-- selected objects or remove it from that list. This entity
|
-- selected objects or remove it from that list. This entity
|
||||||
-- can be an Interactive Object aniobj or its owner
|
-- can be an Interactive Object aniobj or its owner
|
||||||
-- aShape as can be seen in the two syntaxes above.
|
-- aShape as can be seen in the two syntaxes above.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
-- If a local context is open and if updateviewer equals
|
-- If a local context is open and if updateviewer equals
|
||||||
-- Standard_False, the presentation of the Interactive
|
-- Standard_False, the presentation of the Interactive
|
||||||
-- Object activates the selection mode; the object is
|
-- Object activates the selection mode; the object is
|
||||||
-- displayed but no viewer will be updated.
|
-- displayed but no viewer will be updated.
|
||||||
|
|
||||||
HilightSelected(me : mutable;
|
HilightSelected(me : mutable;
|
||||||
updateviewer : Boolean from Standard=Standard_True);
|
updateviewer : Boolean from Standard=Standard_True);
|
||||||
---Purpose:
|
---Purpose:
|
||||||
-- Highlights selected objects.
|
-- Highlights selected objects.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
-- If a local context is open and if updateviewer equals
|
-- If a local context is open and if updateviewer equals
|
||||||
-- Standard_False, the presentation of the Interactive
|
-- Standard_False, the presentation of the Interactive
|
||||||
-- Object activates the selection mode; the object is
|
-- Object activates the selection mode; the object is
|
||||||
-- displayed but no viewer will be updated.
|
-- displayed but no viewer will be updated.
|
||||||
|
|
||||||
UnhilightSelected(me : mutable;
|
UnhilightSelected(me : mutable;
|
||||||
updateviewer : Boolean from Standard=Standard_True);
|
updateviewer : Boolean from Standard=Standard_True);
|
||||||
---Purpose:
|
---Purpose:
|
||||||
-- Removes highlighting from selected objects.
|
-- Removes highlighting from selected objects.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
-- If a local context is open and if updateviewer equals
|
-- If a local context is open and if updateviewer equals
|
||||||
-- Standard_False, the presentation of the Interactive
|
-- Standard_False, the presentation of the Interactive
|
||||||
-- Object activates the selection mode; the object is
|
-- Object activates the selection mode; the object is
|
||||||
-- displayed but no viewer will be updated.
|
-- displayed but no viewer will be updated.
|
||||||
|
|
||||||
ClearSelected(me:mutable;
|
ClearSelected(me:mutable;
|
||||||
updateviewer : Boolean from Standard=Standard_True);
|
updateviewer : Boolean from Standard=Standard_True);
|
||||||
---Purpose:
|
---Purpose:
|
||||||
-- Empties previous selected objects in order to get the
|
-- Empties previous selected objects in order to get the
|
||||||
-- selected objects detected by the selector using
|
-- selected objects detected by the selector using
|
||||||
-- UpdateSelected.
|
-- UpdateSelected.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
-- If a local context is open and if updateviewer equals
|
-- If a local context is open and if updateviewer equals
|
||||||
-- Standard_False, the presentation of the Interactive
|
-- Standard_False, the presentation of the Interactive
|
||||||
-- Object activates the selection mode; the object is
|
-- Object activates the selection mode; the object is
|
||||||
-- displayed but no viewer will be updated.
|
-- displayed but no viewer will be updated.
|
||||||
|
|
||||||
AddOrRemoveSelected(me:mutable;aShape:Shape from TopoDS;
|
AddOrRemoveSelected(me:mutable;aShape:Shape from TopoDS;
|
||||||
updateviewer : Boolean from Standard=Standard_True);
|
updateviewer : Boolean from Standard=Standard_True);
|
||||||
---Purpose: No right to Add a selected Shape (Internal Management
|
---Purpose: No right to Add a selected Shape (Internal Management
|
||||||
-- of shape Selection).
|
-- of shape Selection).
|
||||||
-- A Previous selected shape may only be removed.
|
-- A Previous selected shape may only be removed.
|
||||||
|
|
||||||
|
|
||||||
AddOrRemoveSelected(me:mutable;anOwner : EntityOwner from SelectMgr;
|
|
||||||
updateviewer: Boolean from Standard=Standard_True);
|
|
||||||
---Purpose: allows to add/remove in the selected list the entities
|
|
||||||
-- represented by <anOwner> in the selection process.
|
|
||||||
|
|
||||||
---Category: Selection Process
|
---Category: Selection Process
|
||||||
|
|
||||||
IsSelected(me;aniobj: InteractiveObject from AIS) returns Boolean from Standard;
|
IsSelected(me;aniobj: InteractiveObject from AIS) returns Boolean from Standard;
|
||||||
--- Purpose:
|
--- Purpose:
|
||||||
-- Finds the selected object aniobj in local context and
|
-- Finds the selected object aniobj in local context and
|
||||||
-- returns its name.
|
-- returns its name.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
|
|
||||||
InitSelected(me:mutable);
|
InitSelected(me:mutable);
|
||||||
---Purpose:
|
---Purpose:
|
||||||
-- Initializes a scan of the selected objects in local context.
|
-- Initializes a scan of the selected objects in local context.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
|
|
||||||
MoreSelected(me) returns Boolean from Standard;
|
MoreSelected(me) returns Boolean from Standard;
|
||||||
---Purpose:
|
---Purpose:
|
||||||
-- Returns true if there is another object found by the
|
-- Returns true if there is another object found by the
|
||||||
-- scan of the list of selected objects.
|
-- scan of the list of selected objects.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
|
|
||||||
|
|
||||||
NextSelected(me:mutable);
|
NextSelected(me:mutable);
|
||||||
---Purpose:
|
---Purpose:
|
||||||
-- Continues the scan to the next object in the list of
|
-- Continues the scan to the next object in the list of
|
||||||
-- selected objects.
|
-- selected objects.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
|
|
||||||
NbSelected(me:mutable) returns Integer from Standard;
|
NbSelected(me:mutable) returns Integer from Standard;
|
||||||
|
|
||||||
HasSelectedShape(me) returns Boolean from Standard;
|
HasSelectedShape(me) returns Boolean from Standard;
|
||||||
--- Purpose:
|
--- Purpose:
|
||||||
-- Returns true if the interactive context has a shape
|
-- Returns true if the interactive context has a shape
|
||||||
-- selected in it which results from the decomposition of
|
-- selected in it which results from the decomposition of
|
||||||
-- another entity in local context.
|
-- another entity in local context.
|
||||||
-- If HasSelectedShape returns true, SelectedShape
|
-- If HasSelectedShape returns true, SelectedShape
|
||||||
-- returns the shape which has been shown to be
|
-- returns the shape which has been shown to be
|
||||||
-- selected. Interactive returns the Interactive Object
|
-- selected. Interactive returns the Interactive Object
|
||||||
-- from which the shape has been selected.
|
-- from which the shape has been selected.
|
||||||
-- If HasSelectedShape returns false, Interactive
|
-- If HasSelectedShape returns false, Interactive
|
||||||
-- returns the interactive entity selected by the click of the mouse.
|
-- returns the interactive entity selected by the click of the mouse.
|
||||||
|
|
||||||
SelectedShape(me) returns Shape from TopoDS;
|
SelectedShape(me) returns Shape from TopoDS;
|
||||||
---Purpose:
|
---Purpose:
|
||||||
-- Returns the selected shape in the open local context.
|
-- Returns the selected shape in the open local context.
|
||||||
-- Objects selected when there is no open local context
|
-- Objects selected when there is no open local context
|
||||||
-- are called current objects; those selected in open
|
-- are called current objects; those selected in open
|
||||||
-- local context, selected objects.
|
-- local context, selected objects.
|
||||||
|
|
||||||
SelectedOwner(me) returns EntityOwner from SelectMgr;
|
SelectedOwner(me) returns EntityOwner from SelectMgr;
|
||||||
---Purpose:
|
---Purpose:
|
||||||
-- Returns the owner of the selected entity resulting
|
-- Returns the owner of the selected entity resulting
|
||||||
-- from the decomposition of another entity in local context.
|
-- from the decomposition of another entity in local context.
|
||||||
|
|
||||||
EntityOwners(me; theOwners : out IndexedMapOfOwner from SelectMgr;
|
EntityOwners(me; theOwners : out IndexedMapOfOwner from SelectMgr;
|
||||||
theIObj : InteractiveObject from AIS;
|
theIObj : InteractiveObject from AIS;
|
||||||
@@ -1410,8 +1430,6 @@ is
|
|||||||
--- the selection mode theMode (in all active modes
|
--- the selection mode theMode (in all active modes
|
||||||
--- if the Mode == -1)
|
--- if the Mode == -1)
|
||||||
|
|
||||||
Interactive(me) returns InteractiveObject from AIS;
|
|
||||||
---Purpose: Returns the location of the selected Interactive Object.
|
|
||||||
SelectedInteractive(me) returns InteractiveObject from AIS;
|
SelectedInteractive(me) returns InteractiveObject from AIS;
|
||||||
|
|
||||||
HasApplicative(me) returns Boolean from Standard;
|
HasApplicative(me) returns Boolean from Standard;
|
||||||
@@ -1480,14 +1498,6 @@ is
|
|||||||
---Purpose:
|
---Purpose:
|
||||||
-- Gets next current object during iteration through mouse-detected
|
-- Gets next current object during iteration through mouse-detected
|
||||||
-- interactive objects.
|
-- interactive objects.
|
||||||
DetectedCurrentShape(me) returns Shape from TopoDS;
|
|
||||||
---C++: return const &
|
|
||||||
---Purpose:
|
|
||||||
-- @return current mouse-detected shape or empty (null) shape, if current interactive object
|
|
||||||
-- is not a shape (AIS_Shape) or there is no current mouse-detected interactive object at all.
|
|
||||||
DetectedCurrentObject(me) returns InteractiveObject from AIS;
|
|
||||||
--Purpose:
|
|
||||||
-- @return current mouse-detected interactive object or null object if there is no current detected.
|
|
||||||
|
|
||||||
|
|
||||||
---Category: SPECIFIC LOCAL CONTEXT ACTIONS.
|
---Category: SPECIFIC LOCAL CONTEXT ACTIONS.
|
||||||
@@ -1998,6 +2008,12 @@ is
|
|||||||
theStatus : DisplayStatus from AIS = AIS_DS_None) is static;
|
theStatus : DisplayStatus from AIS = AIS_DS_None) is static;
|
||||||
---Purpose: Query objects visible or hidden in specified view due to affinity mask.
|
---Purpose: Query objects visible or hidden in specified view due to affinity mask.
|
||||||
|
|
||||||
|
RedrawImmediate (me : mutable;
|
||||||
|
theViewer : Viewer from V3d)
|
||||||
|
is static;
|
||||||
|
---Purpose: Redraws immediate structures in all views of the viewer given taking into
|
||||||
|
-- account their visibility.
|
||||||
|
|
||||||
InitAttributes(me:mutable) is static private;
|
InitAttributes(me:mutable) is static private;
|
||||||
|
|
||||||
|
|
||||||
@@ -2014,6 +2030,30 @@ is
|
|||||||
theToUpdateViewer : Boolean from Standard = Standard_True) is static private;
|
theToUpdateViewer : Boolean from Standard = Standard_True) is static private;
|
||||||
---Purpose: UNKNOWN
|
---Purpose: UNKNOWN
|
||||||
|
|
||||||
|
unhighlightOwners (me : mutable;
|
||||||
|
theObject : InteractiveObject from AIS)
|
||||||
|
is static private;
|
||||||
|
---Purpose: Helper function to unhighlight all entity owners currently highlighted with seleciton color.
|
||||||
|
|
||||||
|
highlightWithColor (me : mutable;
|
||||||
|
theOwner : EntityOwner from SelectMgr;
|
||||||
|
theColor : NameOfColor from Quantity;
|
||||||
|
theViewer : Viewer from V3d = NULL)
|
||||||
|
is static private;
|
||||||
|
---Purpose: Helper function that highlights the owner given with <theColor> without
|
||||||
|
-- performing AutoHighlight checks, e.g. is used for dynamic highlight.
|
||||||
|
-- If the parameter <theViewer> is set and <theIsImmediate> is true, highlight will be synchronized
|
||||||
|
-- automatically in all views of the viewer.
|
||||||
|
|
||||||
|
highlightSelected (me : mutable;
|
||||||
|
theOwner : EntityOwner from SelectMgr;
|
||||||
|
theSelColor : NameOfColor from Quantity)
|
||||||
|
is static private;
|
||||||
|
---Purpose: Helper function that highlights the owner given with <theColor> with check
|
||||||
|
-- for AutoHighlight, e.g. is used for selection.
|
||||||
|
-- If the parameter <theViewer> is set and <theIsImmediate> is true, selection color will be synchronized
|
||||||
|
-- automatically in all views of the viewer.
|
||||||
|
|
||||||
fields
|
fields
|
||||||
|
|
||||||
myObjects : DataMapOfIOStatus from AIS;
|
myObjects : DataMapOfIOStatus from AIS;
|
||||||
@@ -2030,8 +2070,8 @@ fields
|
|||||||
mySelectionName : AsciiString from TCollection;
|
mySelectionName : AsciiString from TCollection;
|
||||||
myCurrentName : AsciiString from TCollection;
|
myCurrentName : AsciiString from TCollection;
|
||||||
|
|
||||||
myLastPicked : InteractiveObject from AIS;
|
myLastPicked : EntityOwner from SelectMgr;
|
||||||
myLastinMain : InteractiveObject from AIS;
|
myLastinMain : EntityOwner from SelectMgr;
|
||||||
|
|
||||||
|
|
||||||
myWasLastMain : Boolean from Standard;
|
myWasLastMain : Boolean from Standard;
|
||||||
|
@@ -126,6 +126,10 @@ void AIS_InteractiveContext::Delete() const
|
|||||||
{
|
{
|
||||||
Handle(AIS_InteractiveObject) anObj = anObjIter.Key();
|
Handle(AIS_InteractiveObject) anObj = anObjIter.Key();
|
||||||
anObj->SetContext (aNullContext);
|
anObj->SetContext (aNullContext);
|
||||||
|
for (anObj->Init(); anObj->More(); anObj->Next())
|
||||||
|
{
|
||||||
|
anObj->CurrentSelection()->UpdateBVHStatus (SelectMgr_TBU_Renew);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
MMgt_TShared::Delete();
|
MMgt_TShared::Delete();
|
||||||
}
|
}
|
||||||
@@ -1049,7 +1053,44 @@ Standard_Boolean AIS_InteractiveContext::IsHilighted(const Handle(AIS_Interactiv
|
|||||||
return Standard_False;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : IsHilighted
|
||||||
|
//purpose : Returns true if the objects global status is set to highlighted.
|
||||||
|
// theIsCustomColor flag defines if highlight color is not equal to OCCT's
|
||||||
|
// default Quantity_NOC_WHITE color. If theIsCustomColor is true,
|
||||||
|
// custom highlight color name will be stored to theCustomColorName
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean AIS_InteractiveContext::IsHilighted (const Handle(SelectMgr_EntityOwner)& theOwner,
|
||||||
|
Standard_Boolean& theIsCustomColor,
|
||||||
|
Quantity_NameOfColor& theCustomColorName) const
|
||||||
|
{
|
||||||
|
if (theOwner.IsNull() || !theOwner->HasSelectable())
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
const Handle(AIS_InteractiveObject) anObj =
|
||||||
|
Handle(AIS_InteractiveObject)::DownCast (theOwner->Selectable());
|
||||||
|
|
||||||
|
if (!myObjects.IsBound (anObj))
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
const Handle(AIS_GlobalStatus)& anObjStatus = myObjects (anObj);
|
||||||
|
if (anObjStatus->IsHilighted())
|
||||||
|
{
|
||||||
|
if (anObjStatus->HilightColor() != Quantity_NOC_WHITE)
|
||||||
|
{
|
||||||
|
theIsCustomColor = Standard_True;
|
||||||
|
theCustomColorName = anObjStatus->HilightColor();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
theIsCustomColor = Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : IsDisplayed
|
//function : IsDisplayed
|
||||||
@@ -1521,6 +1562,12 @@ void AIS_InteractiveContext::SetDisplayMode (const AIS_DisplayMode theMode,
|
|||||||
if (aStatus->GraphicStatus() == AIS_DS_Displayed)
|
if (aStatus->GraphicStatus() == AIS_DS_Displayed)
|
||||||
{
|
{
|
||||||
myMainPM->Display (anObj, theMode);
|
myMainPM->Display (anObj, theMode);
|
||||||
|
if (!myLastPicked.IsNull() && myLastPicked->Selectable() == anObj)
|
||||||
|
{
|
||||||
|
myMainPM->BeginImmediateDraw();
|
||||||
|
myMainPM->Unhighlight (anObj, myDisplayMode);
|
||||||
|
myMainPM->EndImmediateDraw (myMainVwr);
|
||||||
|
}
|
||||||
if (aStatus->IsSubIntensityOn())
|
if (aStatus->IsSubIntensityOn())
|
||||||
{
|
{
|
||||||
myMainPM->Color (anObj, mySubIntensity, theMode);
|
myMainPM->Color (anObj, mySubIntensity, theMode);
|
||||||
@@ -2054,6 +2101,19 @@ void AIS_InteractiveContext::SetWidth (const Handle(AIS_InteractiveObject)& theI
|
|||||||
|
|
||||||
theIObj->SetWidth (theWidth);
|
theIObj->SetWidth (theWidth);
|
||||||
redisplayPrsRecModes (theIObj, theToUpdateViewer);
|
redisplayPrsRecModes (theIObj, theToUpdateViewer);
|
||||||
|
if (!myLastinMain.IsNull() && myLastinMain->Selectable() == theIObj)
|
||||||
|
{
|
||||||
|
if (myLastinMain->IsAutoHilight())
|
||||||
|
{
|
||||||
|
const Standard_Integer aHiMode =
|
||||||
|
theIObj->HasHilightMode() ? theIObj->HilightMode() : 0;
|
||||||
|
myLastinMain->HilightWithColor (myMainPM, myLastinMain->IsSelected() ? mySelectionColor : myHilightColor, aHiMode);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
theIObj->HilightOwnerWithColor (myMainPM, myLastinMain->IsSelected() ? mySelectionColor : myHilightColor, myLastinMain);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -2270,7 +2330,6 @@ void AIS_InteractiveContext::Status (const Handle(AIS_InteractiveObject)& theIOb
|
|||||||
theStatus += TCollection_AsciiString (aDispModeIter.Value());
|
theStatus += TCollection_AsciiString (aDispModeIter.Value());
|
||||||
theStatus += "\n";
|
theStatus += "\n";
|
||||||
}
|
}
|
||||||
if (IsCurrent (theIObj)) theStatus +="\t| Current\n";
|
|
||||||
if (IsSelected(theIObj)) theStatus +="\t| Selected\n";
|
if (IsSelected(theIObj)) theStatus +="\t| Selected\n";
|
||||||
|
|
||||||
theStatus += "\t| Active Selection Modes in the MainViewer :\n";
|
theStatus += "\t| Active Selection Modes in the MainViewer :\n";
|
||||||
@@ -2303,7 +2362,7 @@ void AIS_InteractiveContext::GetDefModes (const Handle(AIS_InteractiveObject)& t
|
|||||||
? myDisplayMode
|
? myDisplayMode
|
||||||
: 0);
|
: 0);
|
||||||
theHiMode = theIObj->HasHilightMode() ? theIObj->HilightMode() : theDispMode;
|
theHiMode = theIObj->HasHilightMode() ? theIObj->HilightMode() : theDispMode;
|
||||||
theSelMode = theIObj->HasSelectionMode() ? theIObj->SelectionMode() : -1;
|
theSelMode = theIObj->GlobalSelectionMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -2338,7 +2397,7 @@ void AIS_InteractiveContext::EraseGlobal (const Handle(AIS_InteractiveObject)& t
|
|||||||
myMainPM->SetVisibility (theIObj, aDispModeIter.Value(), Standard_False);
|
myMainPM->SetVisibility (theIObj, aDispModeIter.Value(), Standard_False);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsCurrent (theIObj)
|
if (IsSelected (theIObj)
|
||||||
&& !aStatus->IsDModeIn (aDispMode))
|
&& !aStatus->IsDModeIn (aDispMode))
|
||||||
{
|
{
|
||||||
myMainPM->SetVisibility (theIObj, aDispMode, Standard_False);
|
myMainPM->SetVisibility (theIObj, aDispMode, Standard_False);
|
||||||
@@ -2348,6 +2407,7 @@ void AIS_InteractiveContext::EraseGlobal (const Handle(AIS_InteractiveObject)& t
|
|||||||
{
|
{
|
||||||
mgrSelector->Deactivate (theIObj, aSelModeIter.Value(), myMainSel);
|
mgrSelector->Deactivate (theIObj, aSelModeIter.Value(), myMainSel);
|
||||||
}
|
}
|
||||||
|
aStatus->ClearSelectionModes();
|
||||||
aStatus->SetGraphicStatus (AIS_DS_Erased);
|
aStatus->SetGraphicStatus (AIS_DS_Erased);
|
||||||
|
|
||||||
if (theToUpdateviewer)
|
if (theToUpdateviewer)
|
||||||
@@ -2356,6 +2416,31 @@ void AIS_InteractiveContext::EraseGlobal (const Handle(AIS_InteractiveObject)& t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : unhighlightOwners
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void AIS_InteractiveContext::unhighlightOwners (const Handle(AIS_InteractiveObject)& theObject)
|
||||||
|
{
|
||||||
|
Handle(AIS_Selection) aSel = AIS_Selection::Selection (myCurrentName.ToCString());
|
||||||
|
aSel->Init();
|
||||||
|
while (aSel->More())
|
||||||
|
{
|
||||||
|
const Handle(SelectMgr_EntityOwner) anOwner =
|
||||||
|
Handle(SelectMgr_EntityOwner)::DownCast (aSel->Value());
|
||||||
|
if (anOwner->Selectable() == theObject)
|
||||||
|
{
|
||||||
|
if (anOwner->IsSelected())
|
||||||
|
{
|
||||||
|
AddOrRemoveSelected (anOwner, Standard_False);
|
||||||
|
aSel->Init();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
aSel->Next();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : ClearGlobal
|
//function : ClearGlobal
|
||||||
//purpose :
|
//purpose :
|
||||||
@@ -2373,27 +2458,11 @@ void AIS_InteractiveContext::ClearGlobal (const Handle(AIS_InteractiveObject)& t
|
|||||||
}
|
}
|
||||||
|
|
||||||
Handle(AIS_GlobalStatus) aStatus = myObjects (theIObj);
|
Handle(AIS_GlobalStatus) aStatus = myObjects (theIObj);
|
||||||
|
unhighlightOwners (theIObj);
|
||||||
for (TColStd_ListIteratorOfListOfInteger aDispModeIter (aStatus->DisplayedModes()); aDispModeIter.More(); aDispModeIter.Next())
|
for (TColStd_ListIteratorOfListOfInteger aDispModeIter (aStatus->DisplayedModes()); aDispModeIter.More(); aDispModeIter.Next())
|
||||||
{
|
{
|
||||||
if (aStatus->IsHilighted())
|
|
||||||
{
|
|
||||||
if (IsCurrent (theIObj))
|
|
||||||
{
|
|
||||||
AddOrRemoveCurrentObject (theIObj, theToUpdateviewer);
|
|
||||||
}
|
|
||||||
else if (myMainPM->IsHighlighted (theIObj, aDispModeIter.Value()))
|
|
||||||
{
|
|
||||||
myMainPM->Unhighlight (theIObj, aDispModeIter.Value());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
myMainPM->Erase (theIObj, aDispModeIter.Value());
|
myMainPM->Erase (theIObj, aDispModeIter.Value());
|
||||||
myMainPM->Clear (theIObj, aDispModeIter.Value());
|
myMainPM->Clear (theIObj, aDispModeIter.Value());
|
||||||
if (theIObj->HasHilightMode())
|
|
||||||
{
|
|
||||||
Standard_Integer im = theIObj->HilightMode();
|
|
||||||
myMainPM->Unhighlight (theIObj, im);
|
|
||||||
myMainPM->Erase (theIObj, im);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Object removes from Detected sequence
|
// Object removes from Detected sequence
|
||||||
@@ -2407,15 +2476,6 @@ void AIS_InteractiveContext::ClearGlobal (const Handle(AIS_InteractiveObject)& t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (myLastinMain == theIObj)
|
|
||||||
{
|
|
||||||
myLastinMain.Nullify();
|
|
||||||
}
|
|
||||||
if (myLastPicked == theIObj)
|
|
||||||
{
|
|
||||||
myLastPicked.Nullify();
|
|
||||||
}
|
|
||||||
|
|
||||||
// remove IO from the selection manager to avoid memory leaks
|
// remove IO from the selection manager to avoid memory leaks
|
||||||
mgrSelector->Remove (theIObj);
|
mgrSelector->Remove (theIObj);
|
||||||
|
|
||||||
@@ -2426,8 +2486,13 @@ void AIS_InteractiveContext::ClearGlobal (const Handle(AIS_InteractiveObject)& t
|
|||||||
myMainVwr->DefinedView()->View()->ChangeHiddenObjects()->Remove (theIObj);
|
myMainVwr->DefinedView()->View()->ChangeHiddenObjects()->Remove (theIObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (theToUpdateviewer
|
if (!myLastinMain.IsNull() && myLastinMain->Selectable() == theIObj)
|
||||||
&& aStatus->GraphicStatus() == AIS_DS_Displayed)
|
myLastinMain.Nullify();
|
||||||
|
if (!myLastPicked.IsNull() && myLastPicked->Selectable() == theIObj)
|
||||||
|
myLastPicked.Nullify();
|
||||||
|
myMainPM->ClearImmediateDraw();
|
||||||
|
|
||||||
|
if (theToUpdateviewer && aStatus->GraphicStatus() == AIS_DS_Displayed)
|
||||||
{
|
{
|
||||||
myMainVwr->Update();
|
myMainVwr->Update();
|
||||||
}
|
}
|
||||||
@@ -2570,25 +2635,6 @@ Standard_Boolean AIS_InteractiveContext::IsoOnPlane() const
|
|||||||
return myDefaultDrawer->IsoOnPlane();
|
return myDefaultDrawer->IsoOnPlane();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : SetSelectionMode
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void AIS_InteractiveContext::SetSelectionMode (const Handle(AIS_InteractiveObject)& ,
|
|
||||||
const Standard_Integer )
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : UnsetSelectionMode
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void AIS_InteractiveContext::UnsetSelectionMode (const Handle(AIS_InteractiveObject)& )
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : SetPixelTolerance
|
//function : SetPixelTolerance
|
||||||
//purpose : Disables the mechanism of adaptive tolerance calculation in
|
//purpose : Disables the mechanism of adaptive tolerance calculation in
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -44,10 +44,12 @@ OpenLocalContext(const Standard_Boolean UseDisplayedObjects,
|
|||||||
{
|
{
|
||||||
|
|
||||||
// the entities eventually detected just before the context was opened are unhighlighted...
|
// the entities eventually detected just before the context was opened are unhighlighted...
|
||||||
if(!IsCurrent(myLastPicked)){
|
if(!IsSelected(myLastPicked)){
|
||||||
if(!myLastPicked.IsNull()){
|
if(!myLastPicked.IsNull()){
|
||||||
Standard_Integer HiMod = myLastPicked->HasHilightMode()?myLastPicked->HilightMode():0;
|
const Handle(AIS_InteractiveObject) aLastPickedAIS =
|
||||||
myMainPM->Unhighlight(myLastPicked,HiMod);
|
Handle(AIS_InteractiveObject)::DownCast (myLastPicked->Selectable());
|
||||||
|
Standard_Integer HiMod = aLastPickedAIS->HasHilightMode()?aLastPickedAIS->HilightMode():0;
|
||||||
|
myMainPM->Unhighlight (aLastPickedAIS, HiMod);
|
||||||
}}
|
}}
|
||||||
|
|
||||||
if(!mylastmoveview.IsNull()){
|
if(!mylastmoveview.IsNull()){
|
||||||
@@ -739,7 +741,7 @@ Standard_Boolean AIS_InteractiveContext::ImmediateAdd (const Handle(AIS_Interact
|
|||||||
Standard_Boolean AIS_InteractiveContext::EndImmediateDraw (const Handle(V3d_View)& theView)
|
Standard_Boolean AIS_InteractiveContext::EndImmediateDraw (const Handle(V3d_View)& theView)
|
||||||
{
|
{
|
||||||
return HasOpenedContext()
|
return HasOpenedContext()
|
||||||
&& myLocalContexts (myCurLocalIndex)->EndImmediateDraw (theView);
|
&& myLocalContexts (myCurLocalIndex)->EndImmediateDraw (theView->Viewer());
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -761,7 +763,7 @@ Standard_Boolean AIS_InteractiveContext::EndImmediateDraw()
|
|||||||
}
|
}
|
||||||
|
|
||||||
Handle(V3d_View) aView = myMainVwr->ActiveView();
|
Handle(V3d_View) aView = myMainVwr->ActiveView();
|
||||||
return myLocalContexts (myCurLocalIndex)->EndImmediateDraw (aView);
|
return myLocalContexts (myCurLocalIndex)->EndImmediateDraw (aView->Viewer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -307,43 +307,6 @@ is
|
|||||||
-- This range can, however, be extended through the
|
-- This range can, however, be extended through the
|
||||||
-- creation of new display modes.
|
-- creation of new display modes.
|
||||||
|
|
||||||
|
|
||||||
HasSelectionMode(me) returns Boolean from Standard;
|
|
||||||
---Purpose: Allows you to change the selection mode of an
|
|
||||||
-- Interactive Object.
|
|
||||||
-- The default selection mode setting is 0.
|
|
||||||
-- For shapes, for example, the selection modes are as follows:
|
|
||||||
-- - mode 0 - selection of the shape itself
|
|
||||||
-- - mode 1 - selection of vertices
|
|
||||||
-- - mode 2 - selection of edges
|
|
||||||
-- - mode 3 - selection of wires
|
|
||||||
-- - mode 4 - selection of faces
|
|
||||||
-- - mode 5 - selection of shells
|
|
||||||
-- - mode 6 - selection of solids
|
|
||||||
-- - mode 7 - selection of compounds
|
|
||||||
-- For trihedra, on the other hand, the selection modes are the following four:
|
|
||||||
-- - mode 0 - selection of a trihedron
|
|
||||||
-- - mode 1 - selection of its origin
|
|
||||||
-- - mode 2 - selection of its axes
|
|
||||||
-- - mode 3 - selection of its planes
|
|
||||||
|
|
||||||
SelectionMode(me) returns Integer from Standard;
|
|
||||||
---Purpose: Returns the selection mode of the interactive object.
|
|
||||||
|
|
||||||
SetSelectionMode(me:mutable; aMode: Integer from Standard);
|
|
||||||
---Purpose: You can change the default selection mode index
|
|
||||||
-- aMode of an Interactive Object.
|
|
||||||
-- This is only of interest if you decide that mode 0
|
|
||||||
-- adopted by convention will not do.
|
|
||||||
|
|
||||||
UnsetSelectionMode(me:mutable);
|
|
||||||
---Purpose: You can change the default selection mode index of
|
|
||||||
-- an Interactive Object.
|
|
||||||
-- This is only of interest if you decide that the 0 mode
|
|
||||||
-- adopted by convention will not do.
|
|
||||||
---C++: inline
|
|
||||||
|
|
||||||
|
|
||||||
SelectionPriority(me) returns Integer from Standard;
|
SelectionPriority(me) returns Integer from Standard;
|
||||||
---C++: inline
|
---C++: inline
|
||||||
---Purpose: Returns the selection priority setting. -1 indicates that there is none.
|
---Purpose: Returns the selection priority setting. -1 indicates that there is none.
|
||||||
@@ -604,7 +567,6 @@ fields
|
|||||||
---myOwnMaterial : NameOfPhysicalMaterial from Graphic3d is protected;
|
---myOwnMaterial : NameOfPhysicalMaterial from Graphic3d is protected;
|
||||||
mySelPriority : Integer from Standard;
|
mySelPriority : Integer from Standard;
|
||||||
myDisplayMode : Integer from Standard ;
|
myDisplayMode : Integer from Standard ;
|
||||||
mySelectionMode : Integer from Standard;
|
|
||||||
myHilightMode : Integer from Standard is protected;
|
myHilightMode : Integer from Standard is protected;
|
||||||
myOwnWidth : Real from Standard is protected;
|
myOwnWidth : Real from Standard is protected;
|
||||||
myInfiniteState : Boolean from Standard is protected;
|
myInfiniteState : Boolean from Standard is protected;
|
||||||
|
@@ -60,7 +60,6 @@ myRecomputeEveryPrs(Standard_True),
|
|||||||
myCTXPtr(NULL),
|
myCTXPtr(NULL),
|
||||||
mySelPriority(-1),
|
mySelPriority(-1),
|
||||||
myDisplayMode (-1),
|
myDisplayMode (-1),
|
||||||
mySelectionMode(0),
|
|
||||||
mystate(0)
|
mystate(0)
|
||||||
{
|
{
|
||||||
Handle (AIS_InteractiveContext) Bid;
|
Handle (AIS_InteractiveContext) Bid;
|
||||||
@@ -194,18 +193,6 @@ void AIS_InteractiveObject::SetDisplayMode(const Standard_Integer aMode)
|
|||||||
myDisplayMode = aMode;
|
myDisplayMode = aMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function :
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void AIS_InteractiveObject::SetSelectionMode(const Standard_Integer aMode)
|
|
||||||
{
|
|
||||||
mySelectionMode = aMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function :
|
//function :
|
||||||
//purpose :
|
//purpose :
|
||||||
|
@@ -44,17 +44,6 @@ inline void AIS_InteractiveObject::UnsetDisplayMode()
|
|||||||
inline Standard_Integer AIS_InteractiveObject::DisplayMode() const
|
inline Standard_Integer AIS_InteractiveObject::DisplayMode() const
|
||||||
{return myDisplayMode;}
|
{return myDisplayMode;}
|
||||||
|
|
||||||
inline Standard_Boolean AIS_InteractiveObject::HasSelectionMode() const
|
|
||||||
{return mySelectionMode!=-1;}
|
|
||||||
|
|
||||||
inline void AIS_InteractiveObject::UnsetSelectionMode()
|
|
||||||
{mySelectionMode =-1;}
|
|
||||||
|
|
||||||
inline Standard_Integer AIS_InteractiveObject::SelectionMode() const
|
|
||||||
{return mySelectionMode;}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
inline Quantity_NameOfColor AIS_InteractiveObject::Color() const
|
inline Quantity_NameOfColor AIS_InteractiveObject::Color() const
|
||||||
{
|
{
|
||||||
return myOwnColor.Name();
|
return myOwnColor.Name();
|
||||||
|
@@ -50,6 +50,7 @@ uses
|
|||||||
ShapeEnum from TopAbs,
|
ShapeEnum from TopAbs,
|
||||||
Shape from TopoDS,
|
Shape from TopoDS,
|
||||||
View from V3d,
|
View from V3d,
|
||||||
|
Viewer from V3d,
|
||||||
PresentationManager3d from PrsMgr,
|
PresentationManager3d from PrsMgr,
|
||||||
IndexedMapOfOwner from SelectMgr,
|
IndexedMapOfOwner from SelectMgr,
|
||||||
EntityOwner from SelectMgr,
|
EntityOwner from SelectMgr,
|
||||||
@@ -465,10 +466,10 @@ is
|
|||||||
---Purpose: Stores presentation theMode of object theObj in the transient list of presentations to be displayed in immediate mode.
|
---Purpose: Stores presentation theMode of object theObj in the transient list of presentations to be displayed in immediate mode.
|
||||||
-- Will be taken in account in EndImmediateDraw method.
|
-- Will be taken in account in EndImmediateDraw method.
|
||||||
|
|
||||||
EndImmediateDraw (me : mutable;
|
EndImmediateDraw (me : mutable;
|
||||||
theView : View from V3d)
|
theViewer : Viewer from V3d)
|
||||||
returns Boolean from Standard;
|
returns Boolean from Standard;
|
||||||
---Purpose: Allows rapid drawing of the view theView by avoiding an update of the whole background.
|
---Purpose: Allows rapid drawing of the each view in theViewer by avoiding an update of the whole background.
|
||||||
|
|
||||||
IsImmediateModeOn (me) returns Boolean from Standard;
|
IsImmediateModeOn (me) returns Boolean from Standard;
|
||||||
---Purpose: Returns true if Presentation Manager is accumulating transient list of presentations to be displayed in immediate mode.
|
---Purpose: Returns true if Presentation Manager is accumulating transient list of presentations to be displayed in immediate mode.
|
||||||
|
@@ -308,10 +308,10 @@ Erase(const Handle(AIS_InteractiveObject)& anInteractive)
|
|||||||
// Deactivate selectable entities of interactive object
|
// Deactivate selectable entities of interactive object
|
||||||
if (mySM->Contains (anInteractive))
|
if (mySM->Contains (anInteractive))
|
||||||
{
|
{
|
||||||
TColStd_ListIteratorOfListOfInteger aModeIter (STAT->SelectionModes());
|
while (!STAT->SelectionModes().IsEmpty())
|
||||||
for (; aModeIter.More(); aModeIter.Next())
|
|
||||||
{
|
{
|
||||||
mySM->Deactivate (anInteractive, aModeIter.Value(), myMainVS);
|
mySM->Deactivate (anInteractive, STAT->SelectionModes().Last(), myMainVS);
|
||||||
|
STAT->RemoveSelectionMode (STAT->SelectionModes().Last());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -625,13 +625,6 @@ void AIS_LocalContext::Terminate (const Standard_Boolean theToUpdate)
|
|||||||
AIS_Selection::Select();
|
AIS_Selection::Select();
|
||||||
AIS_Selection::Remove(mySelName.ToCString());
|
AIS_Selection::Remove(mySelName.ToCString());
|
||||||
|
|
||||||
Handle(V3d_Viewer) aViewer = myCTX->CurrentViewer();
|
|
||||||
for (aViewer->InitActiveViews(); aViewer->MoreActiveViews(); aViewer->NextActiveViews())
|
|
||||||
{
|
|
||||||
Handle(V3d_View) aView = aViewer->ActiveView();
|
|
||||||
aView->View()->ClearImmediate();
|
|
||||||
}
|
|
||||||
|
|
||||||
Handle(V3d_View) aDummyView;
|
Handle(V3d_View) aDummyView;
|
||||||
myMainVS->ClearSensitive (aDummyView);
|
myMainVS->ClearSensitive (aDummyView);
|
||||||
|
|
||||||
@@ -1110,14 +1103,14 @@ Standard_Boolean AIS_LocalContext::ImmediateAdd (const Handle(AIS_InteractiveObj
|
|||||||
//function : EndImmediateDraw
|
//function : EndImmediateDraw
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
Standard_Boolean AIS_LocalContext::EndImmediateDraw (const Handle(V3d_View)& theView)
|
Standard_Boolean AIS_LocalContext::EndImmediateDraw (const Handle(V3d_Viewer)& theViewer)
|
||||||
{
|
{
|
||||||
if (!myMainPM->IsImmediateModeOn())
|
if (!myMainPM->IsImmediateModeOn())
|
||||||
{
|
{
|
||||||
return Standard_False;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
myMainPM->EndImmediateDraw (theView);
|
myMainPM->EndImmediateDraw (theViewer);
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -474,7 +474,7 @@ void AIS_LocalContext::Hilight (const Handle(SelectMgr_EntityOwner)& theOwner,
|
|||||||
const Standard_Integer aHilightMode = GetHiMod (Handle(AIS_InteractiveObject)::DownCast (theOwner->Selectable()));
|
const Standard_Integer aHilightMode = GetHiMod (Handle(AIS_InteractiveObject)::DownCast (theOwner->Selectable()));
|
||||||
myMainPM->BeginImmediateDraw();
|
myMainPM->BeginImmediateDraw();
|
||||||
theOwner->HilightWithColor (myMainPM, myCTX->HilightColor(), aHilightMode);
|
theOwner->HilightWithColor (myMainPM, myCTX->HilightColor(), aHilightMode);
|
||||||
myMainPM->EndImmediateDraw (theView);
|
myMainPM->EndImmediateDraw (theView->Viewer());
|
||||||
}
|
}
|
||||||
|
|
||||||
//==================================================
|
//==================================================
|
||||||
@@ -1389,7 +1389,7 @@ Standard_Boolean AIS_LocalContext::UnhilightLastDetected (const Handle(V3d_View)
|
|||||||
: 0;
|
: 0;
|
||||||
|
|
||||||
myMapOfOwner (mylastindex)->Unhilight (myMainPM, aHilightMode);
|
myMapOfOwner (mylastindex)->Unhilight (myMainPM, aHilightMode);
|
||||||
myMainPM->EndImmediateDraw (theView);
|
myMainPM->EndImmediateDraw (theView->Viewer());
|
||||||
mylastindex = 0;
|
mylastindex = 0;
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
|
@@ -37,6 +37,7 @@ uses
|
|||||||
Projector from Prs3d,
|
Projector from Prs3d,
|
||||||
Transformation from Geom,
|
Transformation from Geom,
|
||||||
Integer from Standard,
|
Integer from Standard,
|
||||||
|
EntityOwner from SelectMgr,
|
||||||
Selection from SelectMgr,
|
Selection from SelectMgr,
|
||||||
Trsf from gp,
|
Trsf from gp,
|
||||||
Pnt from gp,
|
Pnt from gp,
|
||||||
@@ -126,6 +127,10 @@ is
|
|||||||
---Purpose: Informs the graphic context that the interactive Object
|
---Purpose: Informs the graphic context that the interactive Object
|
||||||
-- may be decomposed into sub-shapes for dynamic selection.
|
-- may be decomposed into sub-shapes for dynamic selection.
|
||||||
|
|
||||||
|
GlobalSelOwner(me)
|
||||||
|
returns EntityOwner from SelectMgr
|
||||||
|
is redefined virtual;
|
||||||
|
---Purpose: Returns the owner of mode for selection of object as a whole.
|
||||||
|
|
||||||
ComputeSelection(me:mutable; aSelection : Selection from SelectMgr;
|
ComputeSelection(me:mutable; aSelection : Selection from SelectMgr;
|
||||||
aMode : Integer from Standard)
|
aMode : Integer from Standard)
|
||||||
|
@@ -385,3 +385,12 @@ void AIS_MultipleConnectedInteractive::ComputeSelection (const Handle(SelectMgr_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : GlobalSelOwner
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Handle(SelectMgr_EntityOwner) AIS_MultipleConnectedInteractive::GlobalSelOwner() const
|
||||||
|
{
|
||||||
|
return myAssemblyOwner;
|
||||||
|
}
|
||||||
|
@@ -378,16 +378,6 @@ is
|
|||||||
-- But it works in any case and is especially useful for view dump because the dump image is read from the back buffer.
|
-- But it works in any case and is especially useful for view dump because the dump image is read from the back buffer.
|
||||||
-- @return previous mode.
|
-- @return previous mode.
|
||||||
|
|
||||||
DisplayImmediateStructure ( me : mutable;
|
|
||||||
theCView : CView from Graphic3d;
|
|
||||||
theStructure : Structure from Graphic3d )
|
|
||||||
is deferred;
|
|
||||||
---Purpose: Display structure in immediate mode on top of general presentation
|
|
||||||
|
|
||||||
---C++: alias "
|
|
||||||
//! Erases immediate structure
|
|
||||||
Standard_EXPORT virtual void EraseImmediateStructure (const Graphic3d_CView& theCView, const Graphic3d_CStructure& theCStructure) = 0;"
|
|
||||||
|
|
||||||
-------------------------------
|
-------------------------------
|
||||||
-- Category: Layer mode methods
|
-- Category: Layer mode methods
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
@@ -28,7 +28,7 @@ public:
|
|||||||
//! Empty constructor.
|
//! Empty constructor.
|
||||||
Graphic3d_ViewAffinity()
|
Graphic3d_ViewAffinity()
|
||||||
{
|
{
|
||||||
::memset (&myMask, 0xFF, sizeof(myMask));
|
SetVisible (Standard_True);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Return visibility flag.
|
//! Return visibility flag.
|
||||||
@@ -38,6 +38,12 @@ public:
|
|||||||
return (myMask & aBit) != 0;
|
return (myMask & aBit) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Setup visibility flag for all views.
|
||||||
|
void SetVisible (const Standard_Boolean theIsVisible)
|
||||||
|
{
|
||||||
|
::memset (&myMask, theIsVisible ? 0xFF : 0x00, sizeof(myMask));
|
||||||
|
}
|
||||||
|
|
||||||
//! Setup visibility flag.
|
//! Setup visibility flag.
|
||||||
void SetVisible (const Standard_Integer theViewId,
|
void SetVisible (const Standard_Integer theViewId,
|
||||||
const bool theIsVisible)
|
const bool theIsVisible)
|
||||||
|
@@ -991,6 +991,8 @@ void MeshVS_Mesh::HilightSelected ( const Handle(PrsMgr_PresentationManager3d)&
|
|||||||
|
|
||||||
IsNeedToRedisplay = Standard_True;
|
IsNeedToRedisplay = Standard_True;
|
||||||
|
|
||||||
|
aSelectionPrs->SetZLayer (Graphic3d_ZLayerId_Top);
|
||||||
|
|
||||||
if ( IsNeedToRedisplay )
|
if ( IsNeedToRedisplay )
|
||||||
{
|
{
|
||||||
aSelectionPrs->SetDisplayPriority(9);
|
aSelectionPrs->SetDisplayPriority(9);
|
||||||
@@ -1105,6 +1107,8 @@ void MeshVS_Mesh::HilightOwnerWithColor ( const Handle(PrsMgr_PresentationManage
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
aHilightPrs->SetZLayer (Graphic3d_ZLayerId_Topmost);
|
||||||
|
|
||||||
if (PM->IsImmediateModeOn())
|
if (PM->IsImmediateModeOn())
|
||||||
{
|
{
|
||||||
PM->AddToImmediateList (aHilightPrs);
|
PM->AddToImmediateList (aHilightPrs);
|
||||||
|
@@ -29,7 +29,7 @@ proc Visualization:toolkits { } {
|
|||||||
if { "$::tcl_platform(platform)" == "windows" } {
|
if { "$::tcl_platform(platform)" == "windows" } {
|
||||||
if { [info exists ::env(HAVE_D3D)] && "$::env(HAVE_D3D)" == "true" } {
|
if { [info exists ::env(HAVE_D3D)] && "$::env(HAVE_D3D)" == "true" } {
|
||||||
lappend aResult "TKD3DHost"
|
lappend aResult "TKD3DHost"
|
||||||
} elseif { [info exists ::env(VCVER)] && "$::env(VCVER)" != "vc8" && "$::env(VCVER)" != "vc9" && "$::env(VCVER)" != "vc10" } {
|
} elseif { [info exists ::env(VCVER)] && "$::env(VCVER)" != "vc8" && "$::env(VCVER)" != "vc9" && "$::env(VCVER)" != "vc10" && "$::env(VCVER)" != "vc11" } {
|
||||||
lappend aResult "TKD3DHost"
|
lappend aResult "TKD3DHost"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -30,8 +30,10 @@ OpenGl_Caps::OpenGl_Caps()
|
|||||||
keepArrayData (Standard_False),
|
keepArrayData (Standard_False),
|
||||||
#if !defined(GL_ES_VERSION_2_0)
|
#if !defined(GL_ES_VERSION_2_0)
|
||||||
ffpEnable (Standard_True),
|
ffpEnable (Standard_True),
|
||||||
|
useSystemBuffer (Standard_False),
|
||||||
#else
|
#else
|
||||||
ffpEnable (Standard_False),
|
ffpEnable (Standard_False),
|
||||||
|
useSystemBuffer (Standard_True),
|
||||||
#endif
|
#endif
|
||||||
buffersNoSwap (Standard_False),
|
buffersNoSwap (Standard_False),
|
||||||
contextStereo (Standard_False),
|
contextStereo (Standard_False),
|
||||||
@@ -64,6 +66,7 @@ OpenGl_Caps& OpenGl_Caps::operator= (const OpenGl_Caps& theCopy)
|
|||||||
pntSpritesDisable = theCopy.pntSpritesDisable;
|
pntSpritesDisable = theCopy.pntSpritesDisable;
|
||||||
keepArrayData = theCopy.keepArrayData;
|
keepArrayData = theCopy.keepArrayData;
|
||||||
ffpEnable = theCopy.ffpEnable;
|
ffpEnable = theCopy.ffpEnable;
|
||||||
|
useSystemBuffer = theCopy.useSystemBuffer;
|
||||||
buffersNoSwap = theCopy.buffersNoSwap;
|
buffersNoSwap = theCopy.buffersNoSwap;
|
||||||
contextStereo = theCopy.contextStereo;
|
contextStereo = theCopy.contextStereo;
|
||||||
contextDebug = theCopy.contextDebug;
|
contextDebug = theCopy.contextDebug;
|
||||||
|
@@ -31,6 +31,7 @@ public: //! @name flags to disable particular functionality, should be used only
|
|||||||
Standard_Boolean pntSpritesDisable; //!< flag permits Point Sprites usage, will significantly affect performance (OFF by default)
|
Standard_Boolean pntSpritesDisable; //!< flag permits Point Sprites usage, will significantly affect performance (OFF by default)
|
||||||
Standard_Boolean keepArrayData; //!< Disables freeing CPU memory after building VBOs (OFF by default)
|
Standard_Boolean keepArrayData; //!< Disables freeing CPU memory after building VBOs (OFF by default)
|
||||||
Standard_Boolean ffpEnable; //!< Enables FFP (fixed-function pipeline), do not use built-in GLSL programs (ON by default on desktop OpenGL and OFF on OpenGL ES)
|
Standard_Boolean ffpEnable; //!< Enables FFP (fixed-function pipeline), do not use built-in GLSL programs (ON by default on desktop OpenGL and OFF on OpenGL ES)
|
||||||
|
Standard_Boolean useSystemBuffer; //!< Enables usage of system backbuffer for blitting (OFF by default on desktop OpenGL and ON on OpenGL ES for testing)
|
||||||
|
|
||||||
public: //! @name context creation parameters
|
public: //! @name context creation parameters
|
||||||
|
|
||||||
|
@@ -415,40 +415,6 @@ Standard_Boolean OpenGl_GraphicDriver::SetImmediateModeDrawToFront (const Graphi
|
|||||||
return Standard_False;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
|
||||||
// function : DisplayImmediateStructure
|
|
||||||
// purpose :
|
|
||||||
// =======================================================================
|
|
||||||
void OpenGl_GraphicDriver::DisplayImmediateStructure (const Graphic3d_CView& theCView,
|
|
||||||
const Handle(Graphic3d_Structure)& theStructure)
|
|
||||||
{
|
|
||||||
OpenGl_CView* aCView = (OpenGl_CView* )theCView.ptrView;
|
|
||||||
if (aCView == NULL)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
aCView->View->DisplayImmediateStructure (theStructure);
|
|
||||||
}
|
|
||||||
|
|
||||||
// =======================================================================
|
|
||||||
// function : EraseImmediateStructure
|
|
||||||
// purpose :
|
|
||||||
// =======================================================================
|
|
||||||
void OpenGl_GraphicDriver::EraseImmediateStructure (const Graphic3d_CView& theCView,
|
|
||||||
const Graphic3d_CStructure& theCStructure)
|
|
||||||
{
|
|
||||||
OpenGl_CView* aCView = (OpenGl_CView* )theCView.ptrView;
|
|
||||||
OpenGl_Structure* aStructure = (OpenGl_Structure* )&theCStructure;
|
|
||||||
if (aCView == NULL)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
aCView->View->EraseImmediateStructure (aStructure);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
// function : Print
|
// function : Print
|
||||||
// purpose :
|
// purpose :
|
||||||
|
@@ -131,10 +131,6 @@ public: // Methods for graphical structures
|
|||||||
|
|
||||||
Standard_EXPORT Standard_Boolean SetImmediateModeDrawToFront (const Graphic3d_CView& theCView,
|
Standard_EXPORT Standard_Boolean SetImmediateModeDrawToFront (const Graphic3d_CView& theCView,
|
||||||
const Standard_Boolean theDrawToFrontBuffer);
|
const Standard_Boolean theDrawToFrontBuffer);
|
||||||
Standard_EXPORT void DisplayImmediateStructure (const Graphic3d_CView& theCView,
|
|
||||||
const Handle(Graphic3d_Structure)& theStructure);
|
|
||||||
Standard_EXPORT void EraseImmediateStructure (const Graphic3d_CView& theCView,
|
|
||||||
const Graphic3d_CStructure& theCStructure);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@@ -42,6 +42,8 @@ OpenGl_StructureShadow::OpenGl_StructureShadow (const Handle(Graphic3d_Structure
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UpdateTransformation();
|
||||||
|
myInstancedStructure = const_cast<OpenGl_Structure*> (myParent->InstancedStructure());
|
||||||
TransformPersistence.IsSet = myParent->TransformPersistence.IsSet;
|
TransformPersistence.IsSet = myParent->TransformPersistence.IsSet;
|
||||||
TransformPersistence.Flag = myParent->TransformPersistence.Flag;
|
TransformPersistence.Flag = myParent->TransformPersistence.Flag;
|
||||||
TransformPersistence.Point = myParent->TransformPersistence.Point;
|
TransformPersistence.Point = myParent->TransformPersistence.Point;
|
||||||
|
@@ -135,12 +135,6 @@ class OpenGl_View : public MMgt_TShared
|
|||||||
//! Erase structure from display list.
|
//! Erase structure from display list.
|
||||||
void EraseStructure (const Handle(Graphic3d_Structure)& theStructure);
|
void EraseStructure (const Handle(Graphic3d_Structure)& theStructure);
|
||||||
|
|
||||||
//! Add structure to the list of immediate structures.
|
|
||||||
void DisplayImmediateStructure (const Handle(Graphic3d_Structure)& theStructure);
|
|
||||||
|
|
||||||
//! Erase structure from display list.
|
|
||||||
void EraseImmediateStructure (const OpenGl_Structure* theStructure);
|
|
||||||
|
|
||||||
//! Insert a new top-level z layer with ID <theLayerId>
|
//! Insert a new top-level z layer with ID <theLayerId>
|
||||||
void AddZLayer (const Graphic3d_ZLayerId theLayerId);
|
void AddZLayer (const Graphic3d_ZLayerId theLayerId);
|
||||||
|
|
||||||
@@ -200,17 +194,10 @@ class OpenGl_View : public MMgt_TShared
|
|||||||
//! marks primitive set for rebuild.
|
//! marks primitive set for rebuild.
|
||||||
void InvalidateBVHData (const Standard_Integer theLayerId);
|
void InvalidateBVHData (const Standard_Integer theLayerId);
|
||||||
|
|
||||||
//! Returns list of immediate structures rendered on top of main presentation
|
|
||||||
const OpenGl_SequenceOfStructure& ImmediateStructures() const
|
|
||||||
{
|
|
||||||
return myImmediateList;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Returns true if there are immediate structures to display
|
//! Returns true if there are immediate structures to display
|
||||||
bool HasImmediateStructures() const
|
bool HasImmediateStructures() const
|
||||||
{
|
{
|
||||||
return !myImmediateList.IsEmpty()
|
return myZLayers.NbImmediateStructures() != 0;
|
||||||
|| myZLayers.NbImmediateStructures() != 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -267,8 +254,7 @@ protected:
|
|||||||
|
|
||||||
//View_LABDepthCueing - fixed index used
|
//View_LABDepthCueing - fixed index used
|
||||||
|
|
||||||
OpenGl_LayerList myZLayers; //!< main list of displayed structure, sorted by layers
|
OpenGl_LayerList myZLayers; //!< main list of displayed structure, sorted by layers
|
||||||
OpenGl_SequenceOfStructure myImmediateList; //!< list of immediate structures rendered on top of main presentation
|
|
||||||
|
|
||||||
const TEL_TRANSFORM_PERSISTENCE *myTransPers;
|
const TEL_TRANSFORM_PERSISTENCE *myTransPers;
|
||||||
Standard_Boolean myIsTransPers;
|
Standard_Boolean myIsTransPers;
|
||||||
|
@@ -568,7 +568,9 @@ void OpenGl_View::RenderStructs (const Handle(OpenGl_Workspace)& theWorkspace,
|
|||||||
}
|
}
|
||||||
|
|
||||||
Standard_Boolean toRenderGL = theToDrawImmediate ||
|
Standard_Boolean toRenderGL = theToDrawImmediate ||
|
||||||
theCView.RenderParams.Method != Graphic3d_RM_RAYTRACING || myRaytraceInitStatus == OpenGl_RT_FAIL;
|
theCView.RenderParams.Method != Graphic3d_RM_RAYTRACING ||
|
||||||
|
myRaytraceInitStatus == OpenGl_RT_FAIL ||
|
||||||
|
aCtx->IsFeedback();
|
||||||
|
|
||||||
if (!toRenderGL)
|
if (!toRenderGL)
|
||||||
{
|
{
|
||||||
@@ -911,26 +913,6 @@ void OpenGl_View::DisplayStructure (const Handle(Graphic3d_Structure)& theStruct
|
|||||||
myZLayers.AddStructure (aStruct, aZLayer, thePriority);
|
myZLayers.AddStructure (aStruct, aZLayer, thePriority);
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : DisplayImmediateStructure
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
|
|
||||||
void OpenGl_View::DisplayImmediateStructure (const Handle(Graphic3d_Structure)& theStructure)
|
|
||||||
{
|
|
||||||
const OpenGl_Structure* aStruct = reinterpret_cast<const OpenGl_Structure*> (theStructure->CStructure().operator->());
|
|
||||||
for (OpenGl_SequenceOfStructure::Iterator anIter (myImmediateList);
|
|
||||||
anIter.More(); anIter.Next())
|
|
||||||
{
|
|
||||||
if (anIter.Value() == aStruct)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
myImmediateList.Append (aStruct);
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : EraseStructure
|
//function : EraseStructure
|
||||||
//purpose :
|
//purpose :
|
||||||
@@ -941,24 +923,6 @@ void OpenGl_View::EraseStructure (const Handle(Graphic3d_Structure)& theStructur
|
|||||||
myZLayers.RemoveStructure (theStructure);
|
myZLayers.RemoveStructure (theStructure);
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : EraseImmediateStructure
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
|
|
||||||
void OpenGl_View::EraseImmediateStructure (const OpenGl_Structure* theStructure)
|
|
||||||
{
|
|
||||||
for (OpenGl_SequenceOfStructure::Iterator anIter (myImmediateList);
|
|
||||||
anIter.More(); anIter.Next())
|
|
||||||
{
|
|
||||||
if (anIter.Value() == theStructure)
|
|
||||||
{
|
|
||||||
myImmediateList.Remove (anIter);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : ChangeZLayer
|
//function : ChangeZLayer
|
||||||
//purpose :
|
//purpose :
|
||||||
|
@@ -742,7 +742,7 @@ bool OpenGl_Workspace::blitBuffers (OpenGl_FrameBuffer* theReadFbo,
|
|||||||
OpenGl_FrameBuffer* theDrawFbo,
|
OpenGl_FrameBuffer* theDrawFbo,
|
||||||
const Standard_Boolean theToFlip)
|
const Standard_Boolean theToFlip)
|
||||||
{
|
{
|
||||||
if (theReadFbo == NULL)
|
if (theReadFbo == NULL || myGlContext->IsFeedback())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -939,8 +939,7 @@ void OpenGl_Workspace::Redraw (const Graphic3d_CView& theCView,
|
|||||||
{
|
{
|
||||||
myMainSceneFbos[0]->Init (myGlContext, aSizeX, aSizeY);
|
myMainSceneFbos[0]->Init (myGlContext, aSizeX, aSizeY);
|
||||||
}
|
}
|
||||||
if (myToFlipOutput
|
if (!myGlContext->caps->useSystemBuffer && myMainSceneFbos[0]->IsValid())
|
||||||
&& myMainSceneFbos[0]->IsValid())
|
|
||||||
{
|
{
|
||||||
myImmediateSceneFbos[0]->InitLazy (myGlContext, aSizeX, aSizeY);
|
myImmediateSceneFbos[0]->InitLazy (myGlContext, aSizeX, aSizeY);
|
||||||
}
|
}
|
||||||
@@ -1040,8 +1039,7 @@ void OpenGl_Workspace::Redraw (const Graphic3d_CView& theCView,
|
|||||||
{
|
{
|
||||||
OpenGl_FrameBuffer* aMainFbo = myMainSceneFbos[0]->IsValid() ? myMainSceneFbos[0].operator->() : NULL;
|
OpenGl_FrameBuffer* aMainFbo = myMainSceneFbos[0]->IsValid() ? myMainSceneFbos[0].operator->() : NULL;
|
||||||
OpenGl_FrameBuffer* anImmFbo = aFrameBuffer;
|
OpenGl_FrameBuffer* anImmFbo = aFrameBuffer;
|
||||||
if (myToFlipOutput
|
if (!myGlContext->caps->useSystemBuffer && myImmediateSceneFbos[0]->IsValid())
|
||||||
&& myImmediateSceneFbos[0]->IsValid())
|
|
||||||
{
|
{
|
||||||
anImmFbo = myImmediateSceneFbos[0].operator->();
|
anImmFbo = myImmediateSceneFbos[0].operator->();
|
||||||
}
|
}
|
||||||
@@ -1360,8 +1358,7 @@ void OpenGl_Workspace::RedrawImmediate (const Graphic3d_CView& theCView,
|
|||||||
{
|
{
|
||||||
OpenGl_FrameBuffer* aMainFbo = myMainSceneFbos[0]->IsValid() ? myMainSceneFbos[0].operator->() : NULL;
|
OpenGl_FrameBuffer* aMainFbo = myMainSceneFbos[0]->IsValid() ? myMainSceneFbos[0].operator->() : NULL;
|
||||||
OpenGl_FrameBuffer* anImmFbo = aFrameBuffer;
|
OpenGl_FrameBuffer* anImmFbo = aFrameBuffer;
|
||||||
if (myToFlipOutput
|
if (!myGlContext->caps->useSystemBuffer && myImmediateSceneFbos[0]->IsValid())
|
||||||
&& myImmediateSceneFbos[0]->IsValid())
|
|
||||||
{
|
{
|
||||||
anImmFbo = myImmediateSceneFbos[0].operator->();
|
anImmFbo = myImmediateSceneFbos[0].operator->();
|
||||||
}
|
}
|
||||||
@@ -1477,21 +1474,6 @@ bool OpenGl_Workspace::redrawImmediate (const Graphic3d_CView& theCView,
|
|||||||
|
|
||||||
myView->Render (myPrintContext, aWS, theDrawFbo, theProjection,
|
myView->Render (myPrintContext, aWS, theDrawFbo, theProjection,
|
||||||
theCView, theCUnderLayer, theCOverLayer, Standard_True);
|
theCView, theCUnderLayer, theCOverLayer, Standard_True);
|
||||||
if (!myView->ImmediateStructures().IsEmpty())
|
|
||||||
{
|
|
||||||
glDisable (GL_DEPTH_TEST);
|
|
||||||
}
|
|
||||||
for (OpenGl_SequenceOfStructure::Iterator anIter (myView->ImmediateStructures());
|
|
||||||
anIter.More(); anIter.Next())
|
|
||||||
{
|
|
||||||
const OpenGl_Structure* aStructure = anIter.Value();
|
|
||||||
if (!aStructure->IsVisible())
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
aStructure->Render (aWS);
|
|
||||||
}
|
|
||||||
|
|
||||||
return !toCopyBackToFront;
|
return !toCopyBackToFront;
|
||||||
}
|
}
|
||||||
|
@@ -24,7 +24,9 @@ IMPLEMENT_STANDARD_RTTIEXT(Prs3d_PresentationShadow, Prs3d_Presentation)
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
Prs3d_PresentationShadow::Prs3d_PresentationShadow (const Handle(Graphic3d_StructureManager)& theViewer,
|
Prs3d_PresentationShadow::Prs3d_PresentationShadow (const Handle(Graphic3d_StructureManager)& theViewer,
|
||||||
const Handle(Prs3d_Presentation)& thePrs)
|
const Handle(Prs3d_Presentation)& thePrs)
|
||||||
: Prs3d_Presentation (theViewer, thePrs)
|
: Prs3d_Presentation (theViewer, thePrs),
|
||||||
|
myParentStructId (thePrs->Identification()),
|
||||||
|
myParentAffinity (thePrs->CStructure()->ViewAffinity)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
@@ -28,10 +28,20 @@ public:
|
|||||||
Standard_EXPORT Prs3d_PresentationShadow (const Handle(Graphic3d_StructureManager)& theViewer,
|
Standard_EXPORT Prs3d_PresentationShadow (const Handle(Graphic3d_StructureManager)& theViewer,
|
||||||
const Handle(Prs3d_Presentation)& thePrs);
|
const Handle(Prs3d_Presentation)& thePrs);
|
||||||
|
|
||||||
|
//! Returns the id of the parent presentation
|
||||||
|
Standard_EXPORT inline Standard_Integer ParentId() const { return myParentStructId; }
|
||||||
|
|
||||||
|
//! Returns view affinity of the parent presentation
|
||||||
|
Standard_EXPORT inline const Handle(Graphic3d_ViewAffinity)& ParentAffinity() const { return myParentAffinity; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
DEFINE_STANDARD_RTTI(Prs3d_PresentationShadow)
|
DEFINE_STANDARD_RTTI(Prs3d_PresentationShadow)
|
||||||
|
|
||||||
|
private:
|
||||||
|
Standard_Integer myParentStructId;
|
||||||
|
Handle(Graphic3d_ViewAffinity) myParentAffinity;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_STANDARD_HANDLE(Prs3d_PresentationShadow, Prs3d_Presentation)
|
DEFINE_STANDARD_HANDLE(Prs3d_PresentationShadow, Prs3d_Presentation)
|
||||||
|
@@ -25,6 +25,7 @@ inherits TShared from MMgt
|
|||||||
uses
|
uses
|
||||||
|
|
||||||
StructureManager from Graphic3d,
|
StructureManager from Graphic3d,
|
||||||
|
ZLayerId from Graphic3d,
|
||||||
PresentableObject from PrsMgr,
|
PresentableObject from PrsMgr,
|
||||||
ListOfPresentations from PrsMgr,
|
ListOfPresentations from PrsMgr,
|
||||||
Length,NameOfColor from Quantity,
|
Length,NameOfColor from Quantity,
|
||||||
@@ -32,7 +33,7 @@ uses
|
|||||||
Transformation from Geom,
|
Transformation from Geom,
|
||||||
NameOfMaterial from Graphic3d,
|
NameOfMaterial from Graphic3d,
|
||||||
Presentation from PrsMgr,
|
Presentation from PrsMgr,
|
||||||
View from V3d,
|
Viewer from V3d,
|
||||||
ViewManager from Visual3d,
|
ViewManager from Visual3d,
|
||||||
ShadingAspect from Prs3d,
|
ShadingAspect from Prs3d,
|
||||||
Presentation from Prs3d
|
Presentation from Prs3d
|
||||||
@@ -148,29 +149,39 @@ is
|
|||||||
---Purpose: Resets the transient list of presentations previously displayed in immediate mode
|
---Purpose: Resets the transient list of presentations previously displayed in immediate mode
|
||||||
-- and begins accumulation of new list by following AddToImmediateList()/Color()/Highlight() calls.
|
-- and begins accumulation of new list by following AddToImmediateList()/Color()/Highlight() calls.
|
||||||
|
|
||||||
ClearImmediateDraw (me : mutable);
|
ClearImmediateDraw (me : mutable)
|
||||||
|
is static;
|
||||||
---Purpose: Resets the transient list of presentations previously displayed in immediate mode.
|
---Purpose: Resets the transient list of presentations previously displayed in immediate mode.
|
||||||
|
|
||||||
AddToImmediateList (me : mutable;
|
AddToImmediateList (me : mutable;
|
||||||
thePrs : Presentation from Prs3d);
|
thePrs : Presentation from Prs3d)
|
||||||
|
is static;
|
||||||
---Purpose: Stores thePrs in the transient list of presentations to be displayed in immediate mode.
|
---Purpose: Stores thePrs in the transient list of presentations to be displayed in immediate mode.
|
||||||
-- Will be taken in account in EndImmediateDraw method.
|
-- Will be taken in account in EndImmediateDraw method.
|
||||||
|
|
||||||
EndImmediateDraw (me : mutable;
|
EndImmediateDraw (me : mutable;
|
||||||
theView : View from V3d);
|
theViewer : Viewer from V3d)
|
||||||
---Purpose: Allows rapid drawing of the view theView by avoiding an update of the whole background.
|
is static;
|
||||||
|
---Purpose: Allows rapid drawing of the each view in theViewer by avoiding an update of the whole background.
|
||||||
|
|
||||||
IsImmediateModeOn (me) returns Boolean from Standard;
|
RedrawImmediate (me : mutable;
|
||||||
|
theViewer : Viewer from V3d)
|
||||||
|
is static;
|
||||||
|
---Purpose: Clears and redisplays immediate structures of the viewer taking into account its affinity
|
||||||
|
|
||||||
|
IsImmediateModeOn (me) returns Boolean from Standard
|
||||||
|
is static;
|
||||||
---C++: inline
|
---C++: inline
|
||||||
---Purpose: Returns true if Presentation Manager is accumulating transient list of presentations to be displayed in immediate mode.
|
---Purpose: Returns true if Presentation Manager is accumulating transient list of presentations to be displayed in immediate mode.
|
||||||
|
|
||||||
---Category: Hilighting methods.
|
---Category: Hilighting methods.
|
||||||
|
|
||||||
Color (me : mutable;
|
Color (me : mutable;
|
||||||
thePrsObject : PresentableObject from PrsMgr;
|
thePrsObject : PresentableObject from PrsMgr;
|
||||||
theColor : NameOfColor from Quantity = Quantity_NOC_YELLOW;
|
theColor : NameOfColor from Quantity = Quantity_NOC_YELLOW;
|
||||||
theMode : Integer from Standard = 0;
|
theMode : Integer from Standard = 0;
|
||||||
theSelObj : PresentableObject from PrsMgr = NULL)
|
theSelObj : PresentableObject from PrsMgr = NULL;
|
||||||
|
theImmediateStructLayerId : ZLayerId from Graphic3d = Graphic3d_ZLayerId_Topmost)
|
||||||
---Purpose: Highlights the graphic object thePrsObject in the color theColor.
|
---Purpose: Highlights the graphic object thePrsObject in the color theColor.
|
||||||
-- thePrsObject has the display mode theMode;
|
-- thePrsObject has the display mode theMode;
|
||||||
-- this has the default value of 0, that is, the wireframe display mode.
|
-- this has the default value of 0, that is, the wireframe display mode.
|
||||||
@@ -251,12 +262,17 @@ is
|
|||||||
---Purpose: Removes a presentation of the presentable object thePrsObject to this framework. thePrsObject has the display mode theMode.
|
---Purpose: Removes a presentation of the presentable object thePrsObject to this framework. thePrsObject has the display mode theMode.
|
||||||
is protected;
|
is protected;
|
||||||
|
|
||||||
|
displayImmediate (me : mutable;
|
||||||
|
theViewer : Viewer from V3d);
|
||||||
|
---Purpose: Handles the structures from <myImmediateList> and displays it separating view-dependent structures and taking into account
|
||||||
|
-- structure visibility by setting proper affinity.
|
||||||
|
|
||||||
fields
|
fields
|
||||||
|
|
||||||
myStructureManager : ViewManager from Visual3d is protected;
|
myStructureManager : ViewManager from Visual3d is protected;
|
||||||
myImmediateModeOn : Integer from Standard is protected;
|
myImmediateModeOn : Integer from Standard is protected;
|
||||||
myImmediateList : ListOfPresentations from PrsMgr is protected;
|
myImmediateList : ListOfPresentations from PrsMgr is protected;
|
||||||
myImmediateView : View from V3d is protected;
|
myViewDependentImmediateList : ListOfPresentations from PrsMgr is protected;
|
||||||
mySelectionColor : Color from Quantity is protected;
|
mySelectionColor : Color from Quantity is protected;
|
||||||
|
|
||||||
end PresentationManager from PrsMgr;
|
end PresentationManager from PrsMgr;
|
||||||
|
@@ -317,40 +317,108 @@ void PrsMgr_PresentationManager::BeginImmediateDraw()
|
|||||||
// =======================================================================
|
// =======================================================================
|
||||||
void PrsMgr_PresentationManager::ClearImmediateDraw()
|
void PrsMgr_PresentationManager::ClearImmediateDraw()
|
||||||
{
|
{
|
||||||
if (myImmediateView.IsNull())
|
|
||||||
{
|
|
||||||
myImmediateList.Clear();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (PrsMgr_ListOfPresentations::Iterator anIter (myImmediateList); anIter.More(); anIter.Next())
|
for (PrsMgr_ListOfPresentations::Iterator anIter (myImmediateList); anIter.More(); anIter.Next())
|
||||||
{
|
{
|
||||||
myImmediateView->View()->EraseImmediate (anIter.Value());
|
anIter.Value()->Erase();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (PrsMgr_ListOfPresentations::Iterator anIter (myViewDependentImmediateList); anIter.More(); anIter.Next())
|
||||||
|
{
|
||||||
|
anIter.Value()->Erase();
|
||||||
}
|
}
|
||||||
|
|
||||||
myImmediateList.Clear();
|
myImmediateList.Clear();
|
||||||
myImmediateView.Nullify();
|
myViewDependentImmediateList.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : displayImmediate
|
||||||
|
// purpose : Handles the structures from myImmediateList and its visibility
|
||||||
|
// in all views of the viewer given by setting proper affinity
|
||||||
|
// =======================================================================
|
||||||
|
void PrsMgr_PresentationManager::displayImmediate (const Handle(V3d_Viewer)& theViewer)
|
||||||
|
{
|
||||||
|
for (theViewer->InitActiveViews(); theViewer->MoreActiveViews(); theViewer->NextActiveViews())
|
||||||
|
{
|
||||||
|
const Handle(Visual3d_View)& aView = theViewer->ActiveView()->View();
|
||||||
|
for (PrsMgr_ListOfPresentations::Iterator anIter (myImmediateList); anIter.More(); anIter.Next())
|
||||||
|
{
|
||||||
|
const Handle(Prs3d_Presentation)& aPrs = anIter.Value();
|
||||||
|
if (aPrs.IsNull())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
Handle(Prs3d_Presentation) aViewDepPrs;
|
||||||
|
Handle(Prs3d_PresentationShadow) aShadowPrs = Handle(Prs3d_PresentationShadow)::DownCast (aPrs);
|
||||||
|
if (!aShadowPrs.IsNull() && aView->IsComputed (aShadowPrs->ParentId(), aViewDepPrs))
|
||||||
|
{
|
||||||
|
aShadowPrs.Nullify();
|
||||||
|
aShadowPrs = new Prs3d_PresentationShadow (myStructureManager, aViewDepPrs);
|
||||||
|
aShadowPrs->SetZLayer (aViewDepPrs->CStructure()->ZLayer());
|
||||||
|
aShadowPrs->SetClipPlanes (aViewDepPrs->GetClipPlanes());
|
||||||
|
aShadowPrs->CStructure()->IsForHighlight = 1;
|
||||||
|
aShadowPrs->Highlight (Aspect_TOHM_COLOR, aPrs->HighlightColor());
|
||||||
|
myViewDependentImmediateList.Append (aShadowPrs);
|
||||||
|
}
|
||||||
|
// handles custom highlight presentations which were defined in overriden
|
||||||
|
// HilightOwnerWithColor method of a custom AIS objects and maintain its
|
||||||
|
// visibility in different views on their own
|
||||||
|
else if (aShadowPrs.IsNull())
|
||||||
|
{
|
||||||
|
aPrs->Display();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!aShadowPrs->IsDisplayed())
|
||||||
|
{
|
||||||
|
aShadowPrs->CStructure()->ViewAffinity = new Graphic3d_ViewAffinity();
|
||||||
|
aShadowPrs->CStructure()->ViewAffinity->SetVisible (Standard_False);
|
||||||
|
aShadowPrs->Display();
|
||||||
|
}
|
||||||
|
|
||||||
|
Standard_Integer aViewId = aView->Identification();
|
||||||
|
bool isParentVisible = aShadowPrs->ParentAffinity().IsNull() ?
|
||||||
|
Standard_True : aShadowPrs->ParentAffinity()->IsVisible (aViewId);
|
||||||
|
aShadowPrs->CStructure()->ViewAffinity->SetVisible (aViewId, isParentVisible);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
// function : EndImmediateDraw
|
// function : EndImmediateDraw
|
||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
void PrsMgr_PresentationManager::EndImmediateDraw (const Handle(V3d_View)& theView)
|
void PrsMgr_PresentationManager::EndImmediateDraw (const Handle(V3d_Viewer)& theViewer)
|
||||||
{
|
{
|
||||||
if (--myImmediateModeOn > 0)
|
if (--myImmediateModeOn > 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
displayImmediate (theViewer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : RedrawImmediate
|
||||||
|
// purpose : Clears all immediate structures and redisplays with proper
|
||||||
|
// affinity
|
||||||
|
//=======================================================================
|
||||||
|
void PrsMgr_PresentationManager::RedrawImmediate (const Handle(V3d_Viewer)& theViewer)
|
||||||
|
{
|
||||||
|
if (myImmediateList.IsEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Clear previously displayed structures
|
||||||
for (PrsMgr_ListOfPresentations::Iterator anIter (myImmediateList); anIter.More(); anIter.Next())
|
for (PrsMgr_ListOfPresentations::Iterator anIter (myImmediateList); anIter.More(); anIter.Next())
|
||||||
{
|
{
|
||||||
theView->View()->DisplayImmediate (anIter.Value(), Standard_True);
|
anIter.Value()->Erase();
|
||||||
}
|
}
|
||||||
if (!myImmediateList.IsEmpty())
|
for (PrsMgr_ListOfPresentations::Iterator anIter (myViewDependentImmediateList); anIter.More(); anIter.Next())
|
||||||
{
|
{
|
||||||
myImmediateView = theView;
|
anIter.Value()->Erase();
|
||||||
}
|
}
|
||||||
|
myViewDependentImmediateList.Clear();
|
||||||
|
|
||||||
|
displayImmediate (theViewer);
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -519,11 +587,12 @@ void PrsMgr_PresentationManager::Transform (const Handle(PrsMgr_PresentableObjec
|
|||||||
void PrsMgr_PresentationManager::Color (const Handle(PrsMgr_PresentableObject)& thePrsObj,
|
void PrsMgr_PresentationManager::Color (const Handle(PrsMgr_PresentableObject)& thePrsObj,
|
||||||
const Quantity_NameOfColor theColor,
|
const Quantity_NameOfColor theColor,
|
||||||
const Standard_Integer theMode,
|
const Standard_Integer theMode,
|
||||||
const Handle(PrsMgr_PresentableObject)& theSelObj)
|
const Handle(PrsMgr_PresentableObject)& theSelObj,
|
||||||
|
const Standard_Integer theImmediateStructLayerId)
|
||||||
{
|
{
|
||||||
for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
|
for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
|
||||||
{
|
{
|
||||||
Color (anIter.Value(), theColor, theMode);
|
Color (anIter.Value(), theColor, theMode, NULL, theImmediateStructLayerId);
|
||||||
}
|
}
|
||||||
if (!thePrsObj->HasOwnPresentations())
|
if (!thePrsObj->HasOwnPresentations())
|
||||||
{
|
{
|
||||||
@@ -539,6 +608,9 @@ void PrsMgr_PresentationManager::Color (const Handle(PrsMgr_PresentableObject)&
|
|||||||
if (myImmediateModeOn > 0)
|
if (myImmediateModeOn > 0)
|
||||||
{
|
{
|
||||||
Handle(Prs3d_PresentationShadow) aShadow = new Prs3d_PresentationShadow (myStructureManager, aPrs->Presentation());
|
Handle(Prs3d_PresentationShadow) aShadow = new Prs3d_PresentationShadow (myStructureManager, aPrs->Presentation());
|
||||||
|
aShadow->SetZLayer (theImmediateStructLayerId);
|
||||||
|
aShadow->SetClipPlanes (aPrs->Presentation()->GetClipPlanes());
|
||||||
|
aShadow->CStructure()->IsForHighlight = 1;
|
||||||
aShadow->Highlight (Aspect_TOHM_COLOR, theColor);
|
aShadow->Highlight (Aspect_TOHM_COLOR, theColor);
|
||||||
AddToImmediateList (aShadow);
|
AddToImmediateList (aShadow);
|
||||||
}
|
}
|
||||||
|
@@ -417,13 +417,14 @@ static Standard_Integer OCC74bug_set (Draw_Interpretor& di, Standard_Integer arg
|
|||||||
di << argv[1] << " : No interactive object" << "\n";
|
di << argv[1] << " : No interactive object" << "\n";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
AISObj->SetSelectionMode(SelectMode);
|
|
||||||
if (!aContext->HasOpenedContext()) {
|
if (!aContext->HasOpenedContext()) {
|
||||||
aContext->OpenLocalContext();
|
aContext->OpenLocalContext();
|
||||||
}
|
}
|
||||||
aContext->Erase(AISObj, updateviewer);
|
aContext->Erase(AISObj, updateviewer);
|
||||||
aContext->UpdateCurrentViewer();
|
aContext->UpdateCurrentViewer();
|
||||||
|
aContext->SetAutoActivateSelection (Standard_False);
|
||||||
aContext->Display(AISObj, updateviewer);
|
aContext->Display(AISObj, updateviewer);
|
||||||
|
aContext->Activate (AISObj, SelectMode);
|
||||||
aContext->UpdateCurrentViewer();
|
aContext->UpdateCurrentViewer();
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@@ -456,8 +457,10 @@ static Standard_Integer OCC74bug_get (Draw_Interpretor& di, Standard_Integer arg
|
|||||||
di << argv[1] << " : No interactive object" << "\n";
|
di << argv[1] << " : No interactive object" << "\n";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
Standard_Integer SelectMode = AISObj->SelectionMode();
|
TColStd_ListOfInteger anActivatedModes;
|
||||||
di << SelectMode << "\n";
|
aContext->ActivatedModes (AISObj, anActivatedModes);
|
||||||
|
Standard_Integer aMode = anActivatedModes.IsEmpty() ? -1 : anActivatedModes.Last();
|
||||||
|
di << aMode << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@@ -229,11 +229,11 @@ static Standard_Integer OCC136 (Draw_Interpretor& di, Standard_Integer argc, con
|
|||||||
anAISCtx->Display(aSh4);
|
anAISCtx->Display(aSh4);
|
||||||
|
|
||||||
//set selected
|
//set selected
|
||||||
anAISCtx->InitCurrent();
|
anAISCtx->InitSelected();
|
||||||
anAISCtx->AddOrRemoveCurrentObject(aSh1);
|
anAISCtx->AddOrRemoveSelected(aSh1);
|
||||||
anAISCtx->AddOrRemoveCurrentObject(aSh2);
|
anAISCtx->AddOrRemoveSelected(aSh2);
|
||||||
anAISCtx->AddOrRemoveCurrentObject(aSh3);
|
anAISCtx->AddOrRemoveSelected(aSh3);
|
||||||
anAISCtx->AddOrRemoveCurrentObject(aSh4);
|
anAISCtx->AddOrRemoveSelected(aSh4);
|
||||||
|
|
||||||
//remove all this objects from context
|
//remove all this objects from context
|
||||||
anAISCtx->Remove (aSh1, Standard_False);
|
anAISCtx->Remove (aSh1, Standard_False);
|
||||||
@@ -738,12 +738,13 @@ static Standard_Integer OCC166 (Draw_Interpretor& di, Standard_Integer /*argc*/,
|
|||||||
|
|
||||||
BRepPrimAPI_MakeBox aBox(gp_Pnt(0, 0, 0), 100, 100, 100);
|
BRepPrimAPI_MakeBox aBox(gp_Pnt(0, 0, 0), 100, 100, 100);
|
||||||
Handle(AIS_Shape) anAISBox = new AIS_Shape(aBox.Shape());
|
Handle(AIS_Shape) anAISBox = new AIS_Shape(aBox.Shape());
|
||||||
|
myAISContext->SetAutoActivateSelection (Standard_False);
|
||||||
myAISContext->Display(anAISBox, 1);
|
myAISContext->Display(anAISBox, 1);
|
||||||
anAISBox->SetSelectionMode(-1);
|
|
||||||
Standard_Integer myLocContInd = myAISContext->OpenLocalContext();
|
Standard_Integer myLocContInd = myAISContext->OpenLocalContext();
|
||||||
myAISContext->CloseLocalContext(myLocContInd);
|
myAISContext->CloseLocalContext(myLocContInd);
|
||||||
Standard_Integer aSelMode = ((Handle(AIS_InteractiveObject)) anAISBox)->SelectionMode();
|
TColStd_ListOfInteger anActivatedModes;
|
||||||
if(aSelMode != -1)
|
myAISContext->ActivatedModes (anAISBox, anActivatedModes);
|
||||||
|
if(anActivatedModes.Extent() != 1 || anActivatedModes.First() != -1 )
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -5255,7 +5256,7 @@ Standard_Integer CR23234 (Draw_Interpretor& di, Standard_Integer argc, const cha
|
|||||||
Handle(Geom_Axis2Placement) trihedronAxis = new Geom_Axis2Placement(gp::XOY());
|
Handle(Geom_Axis2Placement) trihedronAxis = new Geom_Axis2Placement(gp::XOY());
|
||||||
Handle(AIS_Trihedron) trihedron = new AIS_Trihedron(trihedronAxis);
|
Handle(AIS_Trihedron) trihedron = new AIS_Trihedron(trihedronAxis);
|
||||||
if (aMode)
|
if (aMode)
|
||||||
trihedron->UnsetSelectionMode(); // this line causes an exception on OpenLocalContext
|
aisContext->SetAutoActivateSelection (Standard_False); // if selection must not be activated
|
||||||
trihedron->SetSize(20);
|
trihedron->SetSize(20);
|
||||||
trihedron->SetColor(Quantity_NOC_GRAY30);
|
trihedron->SetColor(Quantity_NOC_GRAY30);
|
||||||
trihedron->SetArrowColor(Quantity_NOC_GRAY30);
|
trihedron->SetArrowColor(Quantity_NOC_GRAY30);
|
||||||
|
@@ -398,21 +398,21 @@ static Standard_Integer OCC138 (Draw_Interpretor& di, Standard_Integer /*argc*/
|
|||||||
aContext->Display(ais2);
|
aContext->Display(ais2);
|
||||||
aContext->Display(ais3);
|
aContext->Display(ais3);
|
||||||
|
|
||||||
aContext->AddOrRemoveCurrentObject(ais1);
|
aContext->AddOrRemoveSelected(ais1);
|
||||||
aContext->AddOrRemoveCurrentObject(ais2);
|
aContext->AddOrRemoveSelected(ais2);
|
||||||
aContext->AddOrRemoveCurrentObject(ais3);
|
aContext->AddOrRemoveSelected(ais3);
|
||||||
|
|
||||||
di << "\n No of currents = " << aContext->NbCurrents();
|
di << "\n No of currents = " << aContext->NbSelected();
|
||||||
|
|
||||||
aContext->InitCurrent();
|
aContext->InitSelected();
|
||||||
|
|
||||||
int count = 1;
|
int count = 1;
|
||||||
while(aContext->MoreCurrent())
|
while(aContext->MoreSelected())
|
||||||
{
|
{
|
||||||
di << "\n count is = " << count++;
|
di << "\n count is = " << count++;
|
||||||
Handle(AIS_InteractiveObject) ais = aContext->Current();
|
Handle(AIS_InteractiveObject) ais = aContext->SelectedInteractive();
|
||||||
aContext->AddOrRemoveCurrentObject(ais);
|
aContext->AddOrRemoveSelected(ais);
|
||||||
aContext->InitCurrent();
|
aContext->InitSelected();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -694,51 +694,51 @@ static Standard_Integer OCC189 (Draw_Interpretor& di, Standard_Integer /*argc*/
|
|||||||
aContext2->Display(ais2);
|
aContext2->Display(ais2);
|
||||||
aContext2->Display(ais3);
|
aContext2->Display(ais3);
|
||||||
|
|
||||||
aContext1->AddOrRemoveCurrentObject(ais1);
|
aContext1->AddOrRemoveSelected(ais1);
|
||||||
aContext1->AddOrRemoveCurrentObject(ais2);
|
aContext1->AddOrRemoveSelected(ais2);
|
||||||
aContext1->AddOrRemoveCurrentObject(ais3);
|
aContext1->AddOrRemoveSelected(ais3);
|
||||||
|
|
||||||
di << "\n Stage : 1";
|
di << "\n Stage : 1";
|
||||||
di << "\n \t No of currents on aContext1 = " << aContext1->NbCurrents();
|
di << "\n \t No of currents on aContext1 = " << aContext1->NbSelected();
|
||||||
di << "\n \t No of currents on aContext2 = " << aContext2->NbCurrents() << "\n\n";
|
di << "\n \t No of currents on aContext2 = " << aContext2->NbSelected() << "\n\n";
|
||||||
|
|
||||||
di << "\n aContext1->IsCurrent = " << (Standard_Integer) aContext1->IsCurrent(ais1) << ", aContext2->IsCurrent = " << (Standard_Integer) aContext2->IsCurrent(ais1) << " ";
|
di << "\n aContext1->IsSelected = " << (Standard_Integer) aContext1->IsCurrent(ais1) << ", aContext2->IsCurrent = " << (Standard_Integer) aContext2->IsCurrent(ais1) << " ";
|
||||||
|
|
||||||
aContext2->AddOrRemoveCurrentObject(ais1);
|
aContext2->AddOrRemoveSelected(ais1);
|
||||||
aContext2->AddOrRemoveCurrentObject(ais2);
|
aContext2->AddOrRemoveSelected(ais2);
|
||||||
aContext2->AddOrRemoveCurrentObject(ais3);
|
aContext2->AddOrRemoveSelected(ais3);
|
||||||
|
|
||||||
di << "\n Stage : 2";
|
di << "\n Stage : 2";
|
||||||
di << "\n \t No of currents on aContext1 = " << aContext1->NbCurrents();
|
di << "\n \t No of currents on aContext1 = " << aContext1->NbSelected();
|
||||||
di << "\n \t No of currents on aContext2 = " << aContext2->NbCurrents() << "\n\n";
|
di << "\n \t No of currents on aContext2 = " << aContext2->NbSelected() << "\n\n";
|
||||||
|
|
||||||
aContext1->InitCurrent();
|
aContext1->InitSelected();
|
||||||
int count1 = 1;
|
int count1 = 1;
|
||||||
while(aContext1->MoreCurrent())
|
while(aContext1->MoreSelected())
|
||||||
{
|
{
|
||||||
di << "\n count1 is = " << count1++;
|
di << "\n count1 is = " << count1++;
|
||||||
Handle(AIS_InteractiveObject) ais = aContext1->Current();
|
Handle(AIS_InteractiveObject) ais = aContext1->SelectedInteractive();
|
||||||
aContext1->AddOrRemoveCurrentObject(ais);
|
aContext1->AddOrRemoveSelected(ais);
|
||||||
aContext1->InitCurrent();
|
aContext1->InitSelected();
|
||||||
}
|
}
|
||||||
|
|
||||||
di << "\n Stage : 3";
|
di << "\n Stage : 3";
|
||||||
di << "\n \t No of currents on aContext1 = " << aContext1->NbCurrents();
|
di << "\n \t No of currents on aContext1 = " << aContext1->NbSelected();
|
||||||
di << "\n \t No of currents on aContext2 = " << aContext2->NbCurrents() << "\n\n";
|
di << "\n \t No of currents on aContext2 = " << aContext2->NbSelected() << "\n\n";
|
||||||
|
|
||||||
aContext2->InitCurrent();
|
aContext2->InitSelected();
|
||||||
int count2 = 1;
|
int count2 = 1;
|
||||||
while(aContext2->MoreCurrent())
|
while(aContext2->MoreSelected())
|
||||||
{
|
{
|
||||||
di << "\n count2 is = " << count2++;
|
di << "\n count2 is = " << count2++;
|
||||||
Handle(AIS_InteractiveObject) ais = aContext2->Current();
|
Handle(AIS_InteractiveObject) ais = aContext2->SelectedInteractive();
|
||||||
aContext2->AddOrRemoveCurrentObject(ais);
|
aContext2->AddOrRemoveSelected(ais);
|
||||||
aContext2->InitCurrent();
|
aContext2->InitSelected();
|
||||||
}
|
}
|
||||||
|
|
||||||
di << "\n\n Stage : 4";
|
di << "\n\n Stage : 4";
|
||||||
di << "\n \t No of currents on aContext1 = " << aContext1->NbCurrents();
|
di << "\n \t No of currents on aContext1 = " << aContext1->NbSelected();
|
||||||
di << "\n \t No of currents on aContext2 = " << aContext2->NbCurrents();
|
di << "\n \t No of currents on aContext2 = " << aContext2->NbSelected();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -67,7 +67,7 @@ static Standard_Integer OCC172 (Draw_Interpretor& di, Standard_Integer /*argc*/
|
|||||||
AIS_ListIteratorOfListOfInteractive It;
|
AIS_ListIteratorOfListOfInteractive It;
|
||||||
for (It.Initialize(aListOfIO);It.More();It.Next())
|
for (It.Initialize(aListOfIO);It.More();It.Next())
|
||||||
{
|
{
|
||||||
aContext->AddOrRemoveCurrentObject(It.Value());
|
aContext->AddOrRemoveSelected(It.Value());
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -104,21 +104,21 @@ static Standard_Integer OCC204 (Draw_Interpretor& di, Standard_Integer argc, co
|
|||||||
aContext->Display(ais2);
|
aContext->Display(ais2);
|
||||||
aContext->Display(ais3);
|
aContext->Display(ais3);
|
||||||
|
|
||||||
aContext->AddOrRemoveCurrentObject(ais1);
|
aContext->AddOrRemoveSelected(ais1);
|
||||||
aContext->AddOrRemoveCurrentObject(ais2);
|
aContext->AddOrRemoveSelected(ais2);
|
||||||
aContext->AddOrRemoveCurrentObject(ais3);
|
aContext->AddOrRemoveSelected(ais3);
|
||||||
|
|
||||||
//printf("\n No of currents = %d", aContext->NbCurrents());
|
//printf("\n No of currents = %d", aContext->NbCurrents());
|
||||||
|
|
||||||
aContext->InitCurrent();
|
aContext->InitSelected();
|
||||||
|
|
||||||
//int count = 1;
|
//int count = 1;
|
||||||
while(aContext->MoreCurrent())
|
while(aContext->MoreSelected())
|
||||||
{
|
{
|
||||||
//printf("\n count is = %d", count++);
|
//printf("\n count is = %d", count++);
|
||||||
Handle(AIS_InteractiveObject) ais = aContext->Current();
|
Handle(AIS_InteractiveObject) ais = aContext->SelectedInteractive();
|
||||||
aContext->Remove(ais, UpdateViewer);
|
aContext->Remove(ais, UpdateViewer);
|
||||||
aContext->InitCurrent();
|
aContext->InitSelected();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@@ -86,7 +86,11 @@ void SelectMgr_EntityOwner::HilightWithColor(const Handle(PrsMgr_PresentationMan
|
|||||||
{
|
{
|
||||||
if( HasSelectable() ) {
|
if( HasSelectable() ) {
|
||||||
if( IsAutoHilight() )
|
if( IsAutoHilight() )
|
||||||
PM->Color(mySelectable,aColor,aMode);
|
{
|
||||||
|
const Graphic3d_ZLayerId aLayerId = mySelectable->GlobalSelOwner().Access() == this ?
|
||||||
|
Graphic3d_ZLayerId_Top : Graphic3d_ZLayerId_Topmost;
|
||||||
|
PM->Color(mySelectable,aColor,aMode, NULL, aLayerId);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
mySelectable->HilightOwnerWithColor( PM, aColor, this );
|
mySelectable->HilightOwnerWithColor( PM, aColor, this );
|
||||||
}
|
}
|
||||||
|
@@ -239,6 +239,22 @@ is
|
|||||||
---C++: return const&
|
---C++: return const&
|
||||||
---Purpose: Returns common entity owner if the object is an assembly
|
---Purpose: Returns common entity owner if the object is an assembly
|
||||||
|
|
||||||
|
GlobalSelectionMode (me)
|
||||||
|
returns Integer from Standard;
|
||||||
|
---C++: inline
|
||||||
|
---Purpose: Returns the mode for selection of object as a whole
|
||||||
|
|
||||||
|
GlobalSelOwner (me)
|
||||||
|
returns EntityOwner from SelectMgr
|
||||||
|
is virtual;
|
||||||
|
---Purpose: Returns the owner of mode for selection of object as a whole
|
||||||
|
|
||||||
|
setGlobalSelMode (me : mutable;
|
||||||
|
theMode : Integer from Standard)
|
||||||
|
is static protected;
|
||||||
|
---Purpose: Allows derived classes to redefine global selection mode.
|
||||||
|
---C++: inline
|
||||||
|
|
||||||
fields
|
fields
|
||||||
|
|
||||||
myselections : SequenceOfSelection is protected;
|
myselections : SequenceOfSelection is protected;
|
||||||
@@ -250,6 +266,7 @@ fields
|
|||||||
|
|
||||||
mySelectionPrs : Presentation from Prs3d;
|
mySelectionPrs : Presentation from Prs3d;
|
||||||
myHilightPrs : Presentation from Prs3d;
|
myHilightPrs : Presentation from Prs3d;
|
||||||
|
myGlobalSelMode : Integer from Standard;
|
||||||
|
|
||||||
friends
|
friends
|
||||||
class SelectionManager from SelectMgr
|
class SelectionManager from SelectMgr
|
||||||
|
@@ -50,12 +50,13 @@ static Standard_Integer Search (const SelectMgr_SequenceOfSelection& seq,
|
|||||||
// Purpose :
|
// Purpose :
|
||||||
//==================================================
|
//==================================================
|
||||||
|
|
||||||
SelectMgr_SelectableObject::SelectMgr_SelectableObject( const PrsMgr_TypeOfPresentation3d aTypeOfPresentation3d):
|
SelectMgr_SelectableObject::SelectMgr_SelectableObject (const PrsMgr_TypeOfPresentation3d aTypeOfPresentation3d)
|
||||||
PrsMgr_PresentableObject (aTypeOfPresentation3d),
|
: PrsMgr_PresentableObject (aTypeOfPresentation3d),
|
||||||
myDrawer (new Prs3d_Drawer()),
|
myDrawer (new Prs3d_Drawer()),
|
||||||
myHilightDrawer (new Prs3d_Drawer()),
|
myHilightDrawer (new Prs3d_Drawer()),
|
||||||
myAssemblyOwner (NULL),
|
myAssemblyOwner (NULL),
|
||||||
myAutoHilight (Standard_True)
|
myAutoHilight (Standard_True),
|
||||||
|
myGlobalSelMode (0)
|
||||||
{
|
{
|
||||||
InitDefaultHilightAttributes (myHilightDrawer);
|
InitDefaultHilightAttributes (myHilightDrawer);
|
||||||
myHilightDrawer->Link (myDrawer);
|
myHilightDrawer->Link (myDrawer);
|
||||||
@@ -580,3 +581,25 @@ const Handle(SelectMgr_EntityOwner)& SelectMgr_SelectableObject::GetAssemblyOwne
|
|||||||
{
|
{
|
||||||
return myAssemblyOwner;
|
return myAssemblyOwner;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : GlobalSelOwner
|
||||||
|
//purpose : Returns entity owner corresponding to selection of the object as a whole
|
||||||
|
//=======================================================================
|
||||||
|
Handle(SelectMgr_EntityOwner) SelectMgr_SelectableObject::GlobalSelOwner() const
|
||||||
|
{
|
||||||
|
Handle(SelectMgr_EntityOwner) anOwner;
|
||||||
|
|
||||||
|
if (!HasSelection (myGlobalSelMode))
|
||||||
|
return anOwner;
|
||||||
|
|
||||||
|
const Handle(SelectMgr_Selection)& aGlobalSel = Selection (myGlobalSelMode);
|
||||||
|
if (aGlobalSel->IsEmpty())
|
||||||
|
return anOwner;
|
||||||
|
|
||||||
|
aGlobalSel->Init();
|
||||||
|
anOwner =
|
||||||
|
Handle(SelectMgr_EntityOwner)::DownCast (aGlobalSel->Sensitive()->BaseSensitive()->OwnerId());
|
||||||
|
|
||||||
|
return anOwner;
|
||||||
|
}
|
||||||
|
@@ -32,3 +32,21 @@ Attributes() const
|
|||||||
inline const Handle(Prs3d_Drawer)& SelectMgr_SelectableObject::
|
inline const Handle(Prs3d_Drawer)& SelectMgr_SelectableObject::
|
||||||
HilightAttributes() const
|
HilightAttributes() const
|
||||||
{return myHilightDrawer;}
|
{return myHilightDrawer;}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : GlobalSelectionMode
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
inline Standard_Integer SelectMgr_SelectableObject::GlobalSelectionMode() const
|
||||||
|
{
|
||||||
|
return myGlobalSelMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : setGlobalSelMode
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
inline void SelectMgr_SelectableObject::setGlobalSelMode (const Standard_Integer theMode)
|
||||||
|
{
|
||||||
|
myGlobalSelMode = theMode > 0 ? theMode : 0;
|
||||||
|
}
|
||||||
|
@@ -128,6 +128,8 @@ void StdSelect_BRepOwner::HilightWithColor(const Handle(PrsMgr_PresentationManag
|
|||||||
const Standard_Integer aMode)
|
const Standard_Integer aMode)
|
||||||
{
|
{
|
||||||
Standard_Integer M = (aMode < 0) ? myCurMode : aMode;
|
Standard_Integer M = (aMode < 0) ? myCurMode : aMode;
|
||||||
|
Graphic3d_ZLayerId aHiLayer = this == Selectable()->GlobalSelOwner().Access() ?
|
||||||
|
Graphic3d_ZLayerId_Top : Graphic3d_ZLayerId_Topmost;
|
||||||
Handle(SelectMgr_SelectableObject) aSel = Selectable();
|
Handle(SelectMgr_SelectableObject) aSel = Selectable();
|
||||||
if (myFromDecomposition)
|
if (myFromDecomposition)
|
||||||
{
|
{
|
||||||
@@ -169,17 +171,17 @@ void StdSelect_BRepOwner::HilightWithColor(const Handle(PrsMgr_PresentationManag
|
|||||||
}
|
}
|
||||||
|
|
||||||
// highlight with color and set layer
|
// highlight with color and set layer
|
||||||
PM->Color (myPrsSh, aCol, M, aSel);
|
PM->Color (myPrsSh, aCol, M, aSel, aHiLayer);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!myPrsSh.IsNull())
|
if (!myPrsSh.IsNull())
|
||||||
{
|
{
|
||||||
PM->Color (myPrsSh, aCol, M, aSel);
|
PM->Color (myPrsSh, aCol, M, aSel, aHiLayer);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PM->Color (aSel, aCol, M);
|
PM->Color (aSel, aCol, M, NULL, aHiLayer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -25,6 +25,8 @@
|
|||||||
#include <TDF_DeltaOnAddition.hxx>
|
#include <TDF_DeltaOnAddition.hxx>
|
||||||
#include <TDF_Tool.hxx>
|
#include <TDF_Tool.hxx>
|
||||||
#include <TCollection_ExtendedString.hxx>
|
#include <TCollection_ExtendedString.hxx>
|
||||||
|
#include <TColStd_ListOfInteger.hxx>
|
||||||
|
#include <TColStd_ListIteratorOfListOfInteger.hxx>
|
||||||
#include <TPrsStd_AISViewer.hxx>
|
#include <TPrsStd_AISViewer.hxx>
|
||||||
#include <AIS_InteractiveContext.hxx>
|
#include <AIS_InteractiveContext.hxx>
|
||||||
#include <AIS_InteractiveObject.hxx>
|
#include <AIS_InteractiveObject.hxx>
|
||||||
@@ -570,17 +572,12 @@ void TPrsStd_AISPresentation::SetSelectionMode(const Standard_Integer theSelecti
|
|||||||
{
|
{
|
||||||
// OCC2932 correction
|
// OCC2932 correction
|
||||||
if(hasOwnSelectionMode && mySelectionMode == theSelectionMode && !myAIS.IsNull())
|
if(hasOwnSelectionMode && mySelectionMode == theSelectionMode && !myAIS.IsNull())
|
||||||
if(myAIS->SelectionMode() == theSelectionMode )
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Backup();
|
Backup();
|
||||||
mySelectionMode = theSelectionMode;
|
mySelectionMode = theSelectionMode;
|
||||||
hasOwnSelectionMode = Standard_True;
|
hasOwnSelectionMode = Standard_True;
|
||||||
if( myAIS.IsNull() ) AISUpdate();
|
if( myAIS.IsNull() ) AISUpdate();
|
||||||
if( !myAIS.IsNull() ) {
|
|
||||||
if( myAIS->SelectionMode() == theSelectionMode ) return;
|
|
||||||
myAIS->SetSelectionMode(theSelectionMode);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -590,15 +587,12 @@ void TPrsStd_AISPresentation::SetSelectionMode(const Standard_Integer theSelecti
|
|||||||
void TPrsStd_AISPresentation::UnsetSelectionMode()
|
void TPrsStd_AISPresentation::UnsetSelectionMode()
|
||||||
{
|
{
|
||||||
if(!hasOwnSelectionMode && !myAIS.IsNull())
|
if(!hasOwnSelectionMode && !myAIS.IsNull())
|
||||||
if(!myAIS->HasSelectionMode())
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Backup();
|
Backup();
|
||||||
hasOwnSelectionMode = Standard_False;
|
hasOwnSelectionMode = Standard_False;
|
||||||
if( myAIS.IsNull() ) AISUpdate();
|
if( myAIS.IsNull() ) AISUpdate();
|
||||||
if( !myAIS.IsNull() && myAIS->HasSelectionMode() ) {
|
mySelectionMode = myAIS->GlobalSelectionMode();
|
||||||
myAIS->UnsetSelectionMode();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -916,8 +910,24 @@ void TPrsStd_AISPresentation::AISUpdate ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (hasOwnSelectionMode) {
|
if (hasOwnSelectionMode) {
|
||||||
if (myAIS->SelectionMode() != mySelectionMode ) {
|
const Handle(AIS_InteractiveContext) aContext =
|
||||||
myAIS->SetSelectionMode(mySelectionMode);
|
ctx.IsNull() ? myAIS->GetContext() : ctx;
|
||||||
|
if (!aContext.IsNull())
|
||||||
|
{
|
||||||
|
TColStd_ListOfInteger anActivatedModes;
|
||||||
|
aContext->ActivatedModes (myAIS, anActivatedModes);
|
||||||
|
Standard_Boolean isActivated = Standard_False;
|
||||||
|
for (TColStd_ListIteratorOfListOfInteger aModeIter (anActivatedModes); aModeIter.More(); aModeIter.Next())
|
||||||
|
{
|
||||||
|
if (aModeIter.Value() == mySelectionMode)
|
||||||
|
{
|
||||||
|
isActivated = Standard_True;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isActivated)
|
||||||
|
aContext->Activate (myAIS, mySelectionMode, Standard_False);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -85,7 +85,7 @@ void V3d_Viewer::DeactivateGrid()
|
|||||||
if (myGridEcho
|
if (myGridEcho
|
||||||
&& !myGridEchoStructure.IsNull())
|
&& !myGridEchoStructure.IsNull())
|
||||||
{
|
{
|
||||||
ActiveView()->View()->EraseImmediate (myGridEchoStructure);
|
myGridEchoStructure->Erase();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Update();
|
Update();
|
||||||
@@ -241,10 +241,7 @@ void V3d_Viewer::SetGridEcho (const Standard_Boolean theToShowGrid)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (InitActiveViews(); MoreActiveViews(); NextActiveViews())
|
myGridEchoStructure->Erase();
|
||||||
{
|
|
||||||
ActiveView()->View()->EraseImmediate (myGridEchoStructure);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -308,7 +305,12 @@ void V3d_Viewer::ShowGridEcho (const Handle(V3d_View)& theView,
|
|||||||
anArrayOfPoints->AddVertex (theVertex.X(), theVertex.Y(), theVertex.Z());
|
anArrayOfPoints->AddVertex (theVertex.X(), theVertex.Y(), theVertex.Z());
|
||||||
myGridEchoGroup->AddPrimitiveArray (anArrayOfPoints);
|
myGridEchoGroup->AddPrimitiveArray (anArrayOfPoints);
|
||||||
|
|
||||||
theView->View()->DisplayImmediate (myGridEchoStructure, Standard_True);
|
myGridEchoStructure->SetZLayer (Graphic3d_ZLayerId_Topmost);
|
||||||
|
myGridEchoStructure->SetInfiniteState (Standard_True);
|
||||||
|
myGridEchoStructure->CStructure()->ViewAffinity = new Graphic3d_ViewAffinity();
|
||||||
|
myGridEchoStructure->CStructure()->ViewAffinity->SetVisible (Standard_False);
|
||||||
|
myGridEchoStructure->CStructure()->ViewAffinity->SetVisible (theView->View()->Identification(), true);
|
||||||
|
myGridEchoStructure->Display();
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -323,5 +325,7 @@ void V3d_Viewer::HideGridEcho (const Handle(V3d_View)& theView)
|
|||||||
}
|
}
|
||||||
|
|
||||||
myGridEchoLastVert.SetCoord (ShortRealLast(), ShortRealLast(), ShortRealLast());
|
myGridEchoLastVert.SetCoord (ShortRealLast(), ShortRealLast(), ShortRealLast());
|
||||||
theView->View()->EraseImmediate (myGridEchoStructure);
|
const Handle(Graphic3d_ViewAffinity)& anAffinity = myGridEchoStructure->CStructure()->ViewAffinity;
|
||||||
|
if (!anAffinity.IsNull() && anAffinity->IsVisible (theView->View()->Identification()))
|
||||||
|
myGridEchoStructure->Erase();
|
||||||
}
|
}
|
||||||
|
@@ -516,14 +516,14 @@ void ViewerTest::StandardModeActivation(const Standard_Integer mode )
|
|||||||
|
|
||||||
if(!aContext->HasOpenedContext()) {
|
if(!aContext->HasOpenedContext()) {
|
||||||
// To unhilight the preselected object
|
// To unhilight the preselected object
|
||||||
aContext->UnhilightCurrents(Standard_False);
|
aContext->UnhilightSelected(Standard_False);
|
||||||
// Open a local Context in order to be able to select subshape from
|
// Open a local Context in order to be able to select subshape from
|
||||||
// the selected shape if any or for all if there is no selection
|
// the selected shape if any or for all if there is no selection
|
||||||
if (!aContext->FirstCurrentObject().IsNull()){
|
if (!aContext->FirstSelectedObject().IsNull()){
|
||||||
aContext->OpenLocalContext(Standard_False);
|
aContext->OpenLocalContext(Standard_False);
|
||||||
|
|
||||||
for(aContext->InitCurrent();aContext->MoreCurrent();aContext->NextCurrent()){
|
for(aContext->InitSelected();aContext->MoreSelected();aContext->NextSelected()){
|
||||||
aContext->Load( aContext->Current(),-1,Standard_True);
|
aContext->Load( aContext->SelectedInteractive(),-1,Standard_True);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -992,18 +992,13 @@ static int VDispMode (Draw_Interpretor& , Standard_Integer argc, const char** ar
|
|||||||
//unset displaymode.. comportement particulier...
|
//unset displaymode.. comportement particulier...
|
||||||
if(TypeOfOperation==4){
|
if(TypeOfOperation==4){
|
||||||
if(argc==1){
|
if(argc==1){
|
||||||
if(Ctx->NbCurrents()==0 ||
|
if(Ctx->NbSelected()==0){
|
||||||
Ctx->NbSelected()==0){
|
|
||||||
Handle(AIS_InteractiveObject) IO;
|
Handle(AIS_InteractiveObject) IO;
|
||||||
VwrTst_DispErase(IO,-1,4,Standard_False);
|
VwrTst_DispErase(IO,-1,4,Standard_False);
|
||||||
}
|
}
|
||||||
else if(!Ctx->HasOpenedContext()){
|
|
||||||
for(Ctx->InitCurrent();Ctx->MoreCurrent();Ctx->NextCurrent())
|
|
||||||
VwrTst_DispErase(Ctx->Current(),-1,4,Standard_False);
|
|
||||||
}
|
|
||||||
else{
|
else{
|
||||||
for(Ctx->InitSelected();Ctx->MoreSelected();Ctx->NextSelected())
|
for(Ctx->InitSelected();Ctx->MoreSelected();Ctx->NextSelected())
|
||||||
VwrTst_DispErase(Ctx->Interactive(),-1,4,Standard_False);}
|
VwrTst_DispErase(Ctx->SelectedInteractive(),-1,4,Standard_False);}
|
||||||
Ctx->UpdateCurrentViewer();
|
Ctx->UpdateCurrentViewer();
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
@@ -1018,20 +1013,20 @@ static int VDispMode (Draw_Interpretor& , Standard_Integer argc, const char** ar
|
|||||||
}
|
}
|
||||||
else if(argc==2){
|
else if(argc==2){
|
||||||
Standard_Integer Dmode = Draw::Atoi(argv[1]);
|
Standard_Integer Dmode = Draw::Atoi(argv[1]);
|
||||||
if(Ctx->NbCurrents()==0 && TypeOfOperation==3){
|
if(Ctx->NbSelected()==0 && TypeOfOperation==3){
|
||||||
Handle(AIS_InteractiveObject) IO;
|
Handle(AIS_InteractiveObject) IO;
|
||||||
VwrTst_DispErase(IO,Dmode,TypeOfOperation,Standard_True);
|
VwrTst_DispErase(IO,Dmode,TypeOfOperation,Standard_True);
|
||||||
}
|
}
|
||||||
if(!Ctx->HasOpenedContext()){
|
if(!Ctx->HasOpenedContext()){
|
||||||
// set/unset display mode sur le Contexte...
|
// set/unset display mode sur le Contexte...
|
||||||
for(Ctx->InitCurrent();Ctx->MoreCurrent();Ctx->NextCurrent()){
|
for(Ctx->InitSelected();Ctx->MoreSelected();Ctx->NextSelected()){
|
||||||
VwrTst_DispErase(Ctx->Current(),Dmode,TypeOfOperation,Standard_False);
|
VwrTst_DispErase(Ctx->SelectedInteractive(),Dmode,TypeOfOperation,Standard_False);
|
||||||
}
|
}
|
||||||
Ctx->UpdateCurrentViewer();
|
Ctx->UpdateCurrentViewer();
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
for(Ctx->InitSelected();Ctx->MoreSelected();Ctx->NextSelected())
|
for(Ctx->InitSelected();Ctx->MoreSelected();Ctx->NextSelected())
|
||||||
Ctx->Display(Ctx->Interactive(),Dmode);
|
Ctx->Display(Ctx->SelectedInteractive(),Dmode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
@@ -1056,30 +1051,22 @@ static int VSubInt(Draw_Interpretor& di, Standard_Integer argc, const char** arg
|
|||||||
Standard_Integer On = Draw::Atoi(argv[1]);
|
Standard_Integer On = Draw::Atoi(argv[1]);
|
||||||
const Handle(AIS_InteractiveContext)& Ctx = ViewerTest::GetAISContext();
|
const Handle(AIS_InteractiveContext)& Ctx = ViewerTest::GetAISContext();
|
||||||
|
|
||||||
if(argc==2){
|
if(argc==2)
|
||||||
|
{
|
||||||
|
TCollection_AsciiString isOnOff = On == 1 ? "on" : "off";
|
||||||
|
di << "Sub intensite is turned " << isOnOff << " for " << Ctx->NbSelected() << "objects\n";
|
||||||
|
for (Ctx->InitSelected(); Ctx->MoreSelected(); Ctx->NextSelected())
|
||||||
|
{
|
||||||
|
if(On==1)
|
||||||
|
{
|
||||||
|
Ctx->SubIntensityOn (Ctx->SelectedInteractive(), Standard_False);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Ctx->SubIntensityOff (Ctx->SelectedInteractive(), Standard_False);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(!Ctx->HasOpenedContext()){
|
|
||||||
di<<"sub intensite ";
|
|
||||||
if(On==1) di<<"On";
|
|
||||||
else di<<"Off";
|
|
||||||
di<<" pour "<<Ctx->NbCurrents()<<" objets"<<"\n";
|
|
||||||
for(Ctx->InitCurrent();Ctx->MoreCurrent();Ctx->NextCurrent()){
|
|
||||||
if(On==1){
|
|
||||||
Ctx->SubIntensityOn(Ctx->Current(),Standard_False);}
|
|
||||||
else{
|
|
||||||
di <<"passage dans off"<<"\n";
|
|
||||||
Ctx->SubIntensityOff(Ctx->Current(),Standard_False);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
for(Ctx->InitSelected();Ctx->MoreSelected();Ctx->NextSelected()){
|
|
||||||
if(On==1){
|
|
||||||
Ctx->SubIntensityOn(Ctx->Interactive(),Standard_False);}
|
|
||||||
else{
|
|
||||||
Ctx->SubIntensityOff(Ctx->Interactive(),Standard_False);}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Ctx->UpdateCurrentViewer();
|
Ctx->UpdateCurrentViewer();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -1134,11 +1121,11 @@ public:
|
|||||||
mySource = IterSource_List;
|
mySource = IterSource_List;
|
||||||
mySeqIter = NCollection_Sequence<TCollection_AsciiString>::Iterator (mySeq);
|
mySeqIter = NCollection_Sequence<TCollection_AsciiString>::Iterator (mySeq);
|
||||||
}
|
}
|
||||||
else if (aCtx->NbCurrents() > 0)
|
else if (aCtx->NbSelected() > 0)
|
||||||
{
|
{
|
||||||
mySource = IterSource_Selected;
|
mySource = IterSource_Selected;
|
||||||
mySelIter = aCtx;
|
mySelIter = aCtx;
|
||||||
mySelIter->InitCurrent();
|
mySelIter->InitSelected();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1170,7 +1157,7 @@ public:
|
|||||||
{
|
{
|
||||||
case IterSource_All: return myMapIter.More();
|
case IterSource_All: return myMapIter.More();
|
||||||
case IterSource_List: return mySeqIter.More();
|
case IterSource_List: return mySeqIter.More();
|
||||||
case IterSource_Selected: return mySelIter->MoreCurrent();
|
case IterSource_Selected: return mySelIter->MoreSelected();
|
||||||
}
|
}
|
||||||
return Standard_False;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
@@ -1195,7 +1182,7 @@ public:
|
|||||||
}
|
}
|
||||||
case IterSource_Selected:
|
case IterSource_Selected:
|
||||||
{
|
{
|
||||||
mySelIter->NextCurrent();
|
mySelIter->NextSelected();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1235,10 +1222,10 @@ private:
|
|||||||
}
|
}
|
||||||
case IterSource_Selected:
|
case IterSource_Selected:
|
||||||
{
|
{
|
||||||
if (mySelIter->MoreCurrent())
|
if (mySelIter->MoreSelected())
|
||||||
{
|
{
|
||||||
myCurrentName = GetMapOfAIS().Find1 (mySelIter->Current());
|
myCurrentName = GetMapOfAIS().Find1 (mySelIter->SelectedInteractive());
|
||||||
myCurrent = mySelIter->Current();
|
myCurrent = mySelIter->SelectedInteractive();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2237,14 +2224,14 @@ static int VDonly2 (Draw_Interpretor& ,
|
|||||||
if (anArgIter >= theArgNb)
|
if (anArgIter >= theArgNb)
|
||||||
{
|
{
|
||||||
// display only selected objects
|
// display only selected objects
|
||||||
if (aCtx->NbCurrents() < 1)
|
if (aCtx->NbSelected() < 1)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (aCtx->InitCurrent(); aCtx->MoreCurrent(); aCtx->NextCurrent())
|
for (aCtx->InitSelected(); aCtx->MoreSelected(); aCtx->NextSelected())
|
||||||
{
|
{
|
||||||
aDispSet.Add (aCtx->Current());
|
aDispSet.Add (aCtx->SelectedInteractive());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2579,7 +2566,7 @@ int VErase (Draw_Interpretor& theDI,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!toEraseAll && aCtx->NbCurrents() > 0)
|
else if (!toEraseAll && aCtx->NbSelected() > 0)
|
||||||
{
|
{
|
||||||
// Erase selected objects
|
// Erase selected objects
|
||||||
for (ViewerTest_DoubleMapIteratorOfDoubleMapOfInteractiveAndName anIter (GetMapOfAIS());
|
for (ViewerTest_DoubleMapIteratorOfDoubleMapOfInteractiveAndName anIter (GetMapOfAIS());
|
||||||
@@ -2587,7 +2574,7 @@ int VErase (Draw_Interpretor& theDI,
|
|||||||
{
|
{
|
||||||
const Handle(AIS_InteractiveObject) anIO = Handle(AIS_InteractiveObject)::DownCast (anIter.Key1());
|
const Handle(AIS_InteractiveObject) anIO = Handle(AIS_InteractiveObject)::DownCast (anIter.Key1());
|
||||||
if (!anIO.IsNull()
|
if (!anIO.IsNull()
|
||||||
&& aCtx->IsCurrent (anIO))
|
&& aCtx->IsSelected (anIO))
|
||||||
{
|
{
|
||||||
theDI << anIter.Key2().ToCString() << " ";
|
theDI << anIter.Key2().ToCString() << " ";
|
||||||
if (toEraseInView)
|
if (toEraseInView)
|
||||||
@@ -2861,12 +2848,12 @@ int VBounding (Draw_Interpretor& theDI,
|
|||||||
bndPresentation (theDI, aPrs, aName, anAction);
|
bndPresentation (theDI, aPrs, aName, anAction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (aCtx->NbCurrents() > 0)
|
else if (aCtx->NbSelected() > 0)
|
||||||
{
|
{
|
||||||
// remove all currently selected objects
|
// remove all currently selected objects
|
||||||
for (aCtx->InitCurrent(); aCtx->MoreCurrent(); aCtx->NextCurrent())
|
for (aCtx->InitSelected(); aCtx->MoreSelected(); aCtx->NextSelected())
|
||||||
{
|
{
|
||||||
Handle(AIS_InteractiveObject) anIO = aCtx->Current();
|
Handle(AIS_InteractiveObject) anIO = aCtx->SelectedInteractive();
|
||||||
Handle(PrsMgr_Presentation) aPrs = findPresentation (aCtx, anIO, aMode);
|
Handle(PrsMgr_Presentation) aPrs = findPresentation (aCtx, anIO, aMode);
|
||||||
if (!aPrs.IsNull())
|
if (!aPrs.IsNull())
|
||||||
{
|
{
|
||||||
@@ -3498,7 +3485,7 @@ static int VDisplay2 (Draw_Interpretor& theDI,
|
|||||||
&& aCtx->GetAutoActivateSelection()
|
&& aCtx->GetAutoActivateSelection()
|
||||||
&& aShape->GetTransformPersistenceMode() == 0))
|
&& aShape->GetTransformPersistenceMode() == 0))
|
||||||
{
|
{
|
||||||
aSelMode = aShape->HasSelectionMode() ? aShape->SelectionMode() : -1;
|
aSelMode = aShape->GlobalSelectionMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
aCtx->Display (aShape, aDispMode, aSelMode,
|
aCtx->Display (aShape, aDispMode, aSelMode,
|
||||||
@@ -3555,7 +3542,7 @@ static int VDisplay2 (Draw_Interpretor& theDI,
|
|||||||
&& aCtx->GetAutoActivateSelection()
|
&& aCtx->GetAutoActivateSelection()
|
||||||
&& aShape->GetTransformPersistenceMode() == 0))
|
&& aShape->GetTransformPersistenceMode() == 0))
|
||||||
{
|
{
|
||||||
aSelMode = aShape->HasSelectionMode() ? aShape->SelectionMode() : -1;
|
aSelMode = aShape->GlobalSelectionMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aShape->Type() == AIS_KOI_Datum)
|
if (aShape->Type() == AIS_KOI_Datum)
|
||||||
@@ -3963,11 +3950,11 @@ static int VActivatedMode (Draw_Interpretor& di, Standard_Integer argc, const ch
|
|||||||
// on load tous les objets displayees et on Activate les objets de la liste
|
// on load tous les objets displayees et on Activate les objets de la liste
|
||||||
AIS_ListOfInteractive ListOfIO;
|
AIS_ListOfInteractive ListOfIO;
|
||||||
// on sauve dans une AISListOfInteractive tous les objets currents
|
// on sauve dans une AISListOfInteractive tous les objets currents
|
||||||
if (TheAISContext()->NbCurrents()>0 ){
|
if (TheAISContext()->NbSelected()>0 ){
|
||||||
TheAISContext()->UnhilightCurrents(Standard_False);
|
TheAISContext()->UnhilightSelected(Standard_False);
|
||||||
|
|
||||||
for (TheAISContext()->InitCurrent(); TheAISContext()->MoreCurrent(); TheAISContext()->NextCurrent() ){
|
for (TheAISContext()->InitSelected(); TheAISContext()->MoreSelected(); TheAISContext()->NextSelected() ){
|
||||||
ListOfIO.Append(TheAISContext()->Current() );
|
ListOfIO.Append(TheAISContext()->SelectedInteractive() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4015,7 +4002,7 @@ static int VActivatedMode (Draw_Interpretor& di, Standard_Integer argc, const ch
|
|||||||
TheAISContext()->UnhilightSelected(Standard_False);
|
TheAISContext()->UnhilightSelected(Standard_False);
|
||||||
// il y a des objets selected,on les parcourt
|
// il y a des objets selected,on les parcourt
|
||||||
for (TheAISContext()->InitSelected(); TheAISContext()->MoreSelected(); TheAISContext()->NextSelected() ){
|
for (TheAISContext()->InitSelected(); TheAISContext()->MoreSelected(); TheAISContext()->NextSelected() ){
|
||||||
Handle(AIS_InteractiveObject) aIO=TheAISContext()->Interactive();
|
Handle(AIS_InteractiveObject) aIO=TheAISContext()->SelectedInteractive();
|
||||||
|
|
||||||
|
|
||||||
if (HaveMode(aIO,aMode) ) {
|
if (HaveMode(aIO,aMode) ) {
|
||||||
@@ -4346,12 +4333,12 @@ static Standard_Integer VState (Draw_Interpretor& theDI,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aCtx->NbCurrents() > 0
|
if (aCtx->NbSelected() > 0
|
||||||
&& !toShowAll)
|
&& !toShowAll)
|
||||||
{
|
{
|
||||||
for (aCtx->InitCurrent(); aCtx->MoreCurrent(); aCtx->NextCurrent())
|
for (aCtx->InitSelected(); aCtx->MoreSelected(); aCtx->NextSelected())
|
||||||
{
|
{
|
||||||
Handle(AIS_InteractiveObject) anObj = aCtx->Current();
|
Handle(AIS_InteractiveObject) anObj = aCtx->SelectedInteractive();
|
||||||
TCollection_AsciiString aName = GetMapOfAIS().Find1 (anObj);
|
TCollection_AsciiString aName = GetMapOfAIS().Find1 (anObj);
|
||||||
aName.LeftJustify (20, ' ');
|
aName.LeftJustify (20, ' ');
|
||||||
theDI << aName << " ";
|
theDI << aName << " ";
|
||||||
@@ -5012,7 +4999,7 @@ static Standard_Integer VLoadSelection (Draw_Interpretor& /*theDi*/,
|
|||||||
}
|
}
|
||||||
|
|
||||||
aCtx->Load (aShape, -1, Standard_False);
|
aCtx->Load (aShape, -1, Standard_False);
|
||||||
aCtx->Activate (aShape, aShape->SelectionMode(), Standard_True);
|
aCtx->Activate (aShape, aShape->GlobalSelectionMode(), Standard_True);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -318,7 +318,7 @@ static int VSize (Draw_Interpretor& di, Standard_Integer argc, const char** argv
|
|||||||
TheAISContext()->CloseLocalContext();
|
TheAISContext()->CloseLocalContext();
|
||||||
|
|
||||||
// On set le booleen ThereIsCurrent
|
// On set le booleen ThereIsCurrent
|
||||||
if (TheAISContext() -> NbCurrents() > 0) {ThereIsCurrent=Standard_True;}
|
if (TheAISContext() -> NbSelected() > 0) {ThereIsCurrent=Standard_True;}
|
||||||
else {ThereIsCurrent=Standard_False;}
|
else {ThereIsCurrent=Standard_False;}
|
||||||
|
|
||||||
|
|
||||||
@@ -337,7 +337,7 @@ static int VSize (Draw_Interpretor& di, Standard_Integer argc, const char** argv
|
|||||||
Handle(AIS_InteractiveObject) aShape=
|
Handle(AIS_InteractiveObject) aShape=
|
||||||
Handle(AIS_InteractiveObject)::DownCast(it.Key1());
|
Handle(AIS_InteractiveObject)::DownCast(it.Key1());
|
||||||
|
|
||||||
if (!aShape.IsNull() && TheAISContext()->IsCurrent(aShape) )
|
if (!aShape.IsNull() && TheAISContext()->IsSelected(aShape) )
|
||||||
{
|
{
|
||||||
|
|
||||||
// On verifie que l'AIS InteraciveObject selectionne est bien
|
// On verifie que l'AIS InteraciveObject selectionne est bien
|
||||||
@@ -493,7 +493,7 @@ static int VPlaneTrihedron (Draw_Interpretor& di, Standard_Integer argc, const c
|
|||||||
|
|
||||||
Handle(AIS_InteractiveObject) theIOB;
|
Handle(AIS_InteractiveObject) theIOB;
|
||||||
for(TheAISContext()->InitSelected() ;TheAISContext()->MoreSelected() ;TheAISContext()->NextSelected() ) {
|
for(TheAISContext()->InitSelected() ;TheAISContext()->MoreSelected() ;TheAISContext()->NextSelected() ) {
|
||||||
theIOB = TheAISContext()->Interactive();
|
theIOB = TheAISContext()->SelectedInteractive();
|
||||||
}
|
}
|
||||||
// on le downcast
|
// on le downcast
|
||||||
Handle(AIS_Plane) PlaneB =((*(Handle(AIS_Plane)*)&theIOB));
|
Handle(AIS_Plane) PlaneB =((*(Handle(AIS_Plane)*)&theIOB));
|
||||||
@@ -4212,16 +4212,21 @@ static Standard_Integer VSetSelectionMode (Draw_Interpretor& /*di*/,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check the arguments
|
// Check the arguments
|
||||||
if (theArgc != 3 && theArgc != 4)
|
if (theArgc < 3 && theArgc > 5)
|
||||||
{
|
{
|
||||||
std::cerr << "vselmode error : expects at least 2 arguments.\n"
|
std::cerr << "vselmode error : expects at least 2 arguments.\n"
|
||||||
<< "Type help "<< theArgv[0] <<" for more information." << std::endl;
|
<< "Type help "<< theArgv[0] <<" for more information." << std::endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TCollection_AsciiString aLastArg (theArgv[theArgc - 1]);
|
||||||
|
aLastArg.LowerCase();
|
||||||
|
Standard_Boolean isToOpenLocalCtx = aLastArg == "-local";
|
||||||
|
|
||||||
// get objects to change selection mode
|
// get objects to change selection mode
|
||||||
AIS_ListOfInteractive aTargetIOs;
|
AIS_ListOfInteractive aTargetIOs;
|
||||||
if (theArgc == 3)
|
Standard_Integer anArgNb = isToOpenLocalCtx ? theArgc - 1 : theArgc;
|
||||||
|
if (anArgNb == 3)
|
||||||
{
|
{
|
||||||
anAISContext->DisplayedObjects (aTargetIOs);
|
anAISContext->DisplayedObjects (aTargetIOs);
|
||||||
}
|
}
|
||||||
@@ -4241,8 +4246,8 @@ static Standard_Integer VSetSelectionMode (Draw_Interpretor& /*di*/,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const Standard_Integer aSelectionMode = Draw::Atoi (theArgc == 3 ? theArgv[1] : theArgv[2]);
|
const Standard_Integer aSelectionMode = Draw::Atoi (anArgNb == 3 ? theArgv[1] : theArgv[2]);
|
||||||
const Standard_Boolean toTurnOn = Draw::Atoi (theArgc == 3 ? theArgv[2] : theArgv[3]);
|
const Standard_Boolean toTurnOn = Draw::Atoi (anArgNb == 3 ? theArgv[2] : theArgv[3]);
|
||||||
if (aSelectionMode == 0 && anAISContext->HasOpenedContext())
|
if (aSelectionMode == 0 && anAISContext->HasOpenedContext())
|
||||||
{
|
{
|
||||||
anAISContext->CloseLocalContext();
|
anAISContext->CloseLocalContext();
|
||||||
@@ -4255,6 +4260,12 @@ static Standard_Integer VSetSelectionMode (Draw_Interpretor& /*di*/,
|
|||||||
for (AIS_ListIteratorOfListOfInteractive aTargetIt (aTargetIOs); aTargetIt.More(); aTargetIt.Next())
|
for (AIS_ListIteratorOfListOfInteractive aTargetIt (aTargetIOs); aTargetIt.More(); aTargetIt.Next())
|
||||||
{
|
{
|
||||||
const Handle(AIS_InteractiveObject)& anIO = aTargetIt.Value();
|
const Handle(AIS_InteractiveObject)& anIO = aTargetIt.Value();
|
||||||
|
TColStd_ListOfInteger anActiveModes;
|
||||||
|
anAISContext->ActivatedModes (anIO, anActiveModes);
|
||||||
|
if (!anActiveModes.IsEmpty())
|
||||||
|
{
|
||||||
|
anAISContext->Deactivate (anIO);
|
||||||
|
}
|
||||||
if (!InList (anAISContext, anIO, aSelectionMode))
|
if (!InList (anAISContext, anIO, aSelectionMode))
|
||||||
{
|
{
|
||||||
anAISContext->Activate (anIO);
|
anAISContext->Activate (anIO);
|
||||||
@@ -4276,7 +4287,7 @@ static Standard_Integer VSetSelectionMode (Draw_Interpretor& /*di*/,
|
|||||||
|
|
||||||
if (aSelectionMode != 0 && toTurnOn) // Turn on specified mode
|
if (aSelectionMode != 0 && toTurnOn) // Turn on specified mode
|
||||||
{
|
{
|
||||||
if (!anAISContext->HasOpenedContext())
|
if (!anAISContext->HasOpenedContext() && isToOpenLocalCtx)
|
||||||
{
|
{
|
||||||
anAISContext->OpenLocalContext (Standard_False);
|
anAISContext->OpenLocalContext (Standard_False);
|
||||||
}
|
}
|
||||||
@@ -4284,6 +4295,10 @@ static Standard_Integer VSetSelectionMode (Draw_Interpretor& /*di*/,
|
|||||||
for (AIS_ListIteratorOfListOfInteractive aTargetIt (aTargetIOs); aTargetIt.More(); aTargetIt.Next())
|
for (AIS_ListIteratorOfListOfInteractive aTargetIt (aTargetIOs); aTargetIt.More(); aTargetIt.Next())
|
||||||
{
|
{
|
||||||
const Handle(AIS_InteractiveObject)& anIO = aTargetIt.Value();
|
const Handle(AIS_InteractiveObject)& anIO = aTargetIt.Value();
|
||||||
|
if (InList (anAISContext, anIO, 0))
|
||||||
|
{
|
||||||
|
anAISContext->Deactivate (anIO, 0);
|
||||||
|
}
|
||||||
if (!InList (anAISContext, anIO, aSelectionMode))
|
if (!InList (anAISContext, anIO, aSelectionMode))
|
||||||
{
|
{
|
||||||
anAISContext->Load (anIO, -1, Standard_True);
|
anAISContext->Load (anIO, -1, Standard_True);
|
||||||
@@ -4294,11 +4309,6 @@ static Standard_Integer VSetSelectionMode (Draw_Interpretor& /*di*/,
|
|||||||
|
|
||||||
if (aSelectionMode != 0 && !toTurnOn) // Turn off specified mode
|
if (aSelectionMode != 0 && !toTurnOn) // Turn off specified mode
|
||||||
{
|
{
|
||||||
if (!anAISContext->HasOpenedContext())
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (AIS_ListIteratorOfListOfInteractive aTargetIt (aTargetIOs); aTargetIt.More(); aTargetIt.Next())
|
for (AIS_ListIteratorOfListOfInteractive aTargetIt (aTargetIOs); aTargetIt.More(); aTargetIt.Next())
|
||||||
{
|
{
|
||||||
const Handle(AIS_InteractiveObject)& anIO = aTargetIt.Value();
|
const Handle(AIS_InteractiveObject)& anIO = aTargetIt.Value();
|
||||||
|
@@ -683,6 +683,7 @@ TCollection_AsciiString ViewerTest::ViewerInit (const Standard_Integer thePxLeft
|
|||||||
|
|
||||||
// NIS setup
|
// NIS setup
|
||||||
Handle(NIS_View) aView = new NIS_View (a3DViewer, VT_GetWindow());
|
Handle(NIS_View) aView = new NIS_View (a3DViewer, VT_GetWindow());
|
||||||
|
ViewerTest::GetAISContext()->RedrawImmediate (a3DViewer);
|
||||||
|
|
||||||
ViewerTest::CurrentView(aView);
|
ViewerTest::CurrentView(aView);
|
||||||
ViewerTest_myViews.Bind (aViewNames.GetViewName(), aView);
|
ViewerTest_myViews.Bind (aViewNames.GetViewName(), aView);
|
||||||
@@ -1372,7 +1373,7 @@ void VT_ProcessKeyPress (const char* buf_ret)
|
|||||||
aContext->DefaultDrawer()->SetTypeOfHLR(Prs3d_TOH_PolyAlgo);
|
aContext->DefaultDrawer()->SetTypeOfHLR(Prs3d_TOH_PolyAlgo);
|
||||||
else
|
else
|
||||||
aContext->DefaultDrawer()->SetTypeOfHLR(Prs3d_TOH_Algo);
|
aContext->DefaultDrawer()->SetTypeOfHLR(Prs3d_TOH_Algo);
|
||||||
if (aContext->NbCurrents()==0 || aContext->NbSelected() == 0)
|
if (aContext->NbSelected()==0)
|
||||||
{
|
{
|
||||||
AIS_ListOfInteractive aListOfShapes;
|
AIS_ListOfInteractive aListOfShapes;
|
||||||
aContext->DisplayedObjects(aListOfShapes);
|
aContext->DisplayedObjects(aListOfShapes);
|
||||||
@@ -1391,9 +1392,9 @@ void VT_ProcessKeyPress (const char* buf_ret)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (aContext->InitCurrent();aContext->MoreCurrent();aContext->NextCurrent())
|
for (aContext->InitSelected();aContext->MoreSelected();aContext->NextSelected())
|
||||||
{
|
{
|
||||||
Handle(AIS_Shape) aShape = Handle(AIS_Shape)::DownCast(aContext->Current());
|
Handle(AIS_Shape) aShape = Handle(AIS_Shape)::DownCast(aContext->SelectedInteractive());
|
||||||
if (aShape.IsNull())
|
if (aShape.IsNull())
|
||||||
continue;
|
continue;
|
||||||
if(aShape->TypeOfHLR() == Prs3d_TOH_PolyAlgo)
|
if(aShape->TypeOfHLR() == Prs3d_TOH_PolyAlgo)
|
||||||
@@ -1412,18 +1413,11 @@ void VT_ProcessKeyPress (const char* buf_ret)
|
|||||||
std::cout << "setup Shaded display mode" << std::endl;
|
std::cout << "setup Shaded display mode" << std::endl;
|
||||||
|
|
||||||
Handle(AIS_InteractiveContext) Ctx = ViewerTest::GetAISContext();
|
Handle(AIS_InteractiveContext) Ctx = ViewerTest::GetAISContext();
|
||||||
if(Ctx->NbCurrents()==0 ||
|
if(Ctx->NbSelected()==0)
|
||||||
Ctx->NbSelected()==0)
|
|
||||||
Ctx->SetDisplayMode(AIS_Shaded);
|
Ctx->SetDisplayMode(AIS_Shaded);
|
||||||
else{
|
else{
|
||||||
if(Ctx->HasOpenedContext()){
|
for(Ctx->InitSelected();Ctx->MoreSelected();Ctx->NextSelected())
|
||||||
for(Ctx->InitSelected();Ctx->MoreSelected();Ctx->NextSelected())
|
Ctx->SetDisplayMode(Ctx->SelectedInteractive(),1,Standard_False);
|
||||||
Ctx->SetDisplayMode(Ctx->Interactive(),1,Standard_False);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
for(Ctx->InitCurrent();Ctx->MoreCurrent();Ctx->NextCurrent())
|
|
||||||
Ctx->SetDisplayMode(Ctx->Current(),1,Standard_False);
|
|
||||||
}
|
|
||||||
Ctx->UpdateCurrentViewer();
|
Ctx->UpdateCurrentViewer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1433,18 +1427,11 @@ void VT_ProcessKeyPress (const char* buf_ret)
|
|||||||
std::cout << "reset display mode to defaults" << std::endl;
|
std::cout << "reset display mode to defaults" << std::endl;
|
||||||
|
|
||||||
Handle(AIS_InteractiveContext) Ctx = ViewerTest::GetAISContext();
|
Handle(AIS_InteractiveContext) Ctx = ViewerTest::GetAISContext();
|
||||||
if(Ctx->NbCurrents()==0 ||
|
if(Ctx->NbSelected()==0)
|
||||||
Ctx->NbSelected()==0)
|
|
||||||
Ctx->SetDisplayMode(AIS_WireFrame);
|
Ctx->SetDisplayMode(AIS_WireFrame);
|
||||||
else{
|
else{
|
||||||
if(Ctx->HasOpenedContext()){
|
for(Ctx->InitSelected();Ctx->MoreSelected();Ctx->NextSelected())
|
||||||
for(Ctx->InitSelected();Ctx->MoreSelected();Ctx->NextSelected())
|
Ctx->UnsetDisplayMode(Ctx->SelectedInteractive(),Standard_False);
|
||||||
Ctx->UnsetDisplayMode(Ctx->Interactive(),Standard_False);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
for(Ctx->InitCurrent();Ctx->MoreCurrent();Ctx->NextCurrent())
|
|
||||||
Ctx->UnsetDisplayMode(Ctx->Current(),Standard_False);
|
|
||||||
}
|
|
||||||
Ctx->UpdateCurrentViewer();
|
Ctx->UpdateCurrentViewer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1473,18 +1460,11 @@ void VT_ProcessKeyPress (const char* buf_ret)
|
|||||||
{
|
{
|
||||||
std::cout << "setup WireFrame display mode" << std::endl;
|
std::cout << "setup WireFrame display mode" << std::endl;
|
||||||
Handle(AIS_InteractiveContext) Ctx = ViewerTest::GetAISContext();
|
Handle(AIS_InteractiveContext) Ctx = ViewerTest::GetAISContext();
|
||||||
if(Ctx->NbCurrents()==0 ||
|
if(Ctx->NbSelected()==0)
|
||||||
Ctx->NbSelected()==0)
|
|
||||||
Ctx->SetDisplayMode(AIS_WireFrame);
|
Ctx->SetDisplayMode(AIS_WireFrame);
|
||||||
else{
|
else{
|
||||||
if(Ctx->HasOpenedContext()){
|
for(Ctx->InitSelected();Ctx->MoreSelected();Ctx->NextSelected())
|
||||||
for(Ctx->InitSelected();Ctx->MoreSelected();Ctx->NextSelected())
|
Ctx->SetDisplayMode(Ctx->SelectedInteractive(),0,Standard_False);
|
||||||
Ctx->SetDisplayMode(Ctx->Interactive(),0,Standard_False);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
for(Ctx->InitCurrent();Ctx->MoreCurrent();Ctx->NextCurrent())
|
|
||||||
Ctx->SetDisplayMode(Ctx->Current(),0,Standard_False);
|
|
||||||
}
|
|
||||||
Ctx->UpdateCurrentViewer();
|
Ctx->UpdateCurrentViewer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1518,7 +1498,6 @@ void VT_ProcessKeyPress (const char* buf_ret)
|
|||||||
{
|
{
|
||||||
Handle(AIS_InteractiveContext) aCtx = ViewerTest::GetAISContext();
|
Handle(AIS_InteractiveContext) aCtx = ViewerTest::GetAISContext();
|
||||||
if (!aCtx.IsNull()
|
if (!aCtx.IsNull()
|
||||||
&& aCtx->NbCurrents() > 0
|
|
||||||
&& aCtx->NbSelected() > 0)
|
&& aCtx->NbSelected() > 0)
|
||||||
{
|
{
|
||||||
Draw_Interprete ("verase");
|
Draw_Interprete ("verase");
|
||||||
@@ -3260,11 +3239,11 @@ static int VExport(Draw_Interpretor& di, Standard_Integer argc, const char** arg
|
|||||||
{
|
{
|
||||||
if (aFileName.Value (aLen - 2) == '.')
|
if (aFileName.Value (aLen - 2) == '.')
|
||||||
{
|
{
|
||||||
aFormatStr = aFileName.SubString (aLen - 1, aLen);
|
aFormatStr = aFileName.ToCString() + aLen - 2;
|
||||||
}
|
}
|
||||||
else if (aFileName.Value (aLen - 3) == '.')
|
else if (aFileName.Value (aLen - 3) == '.')
|
||||||
{
|
{
|
||||||
aFormatStr = aFileName.SubString (aLen - 2, aLen);
|
aFormatStr = aFileName.ToCString() + aLen - 3;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -6075,14 +6054,7 @@ static Standard_Integer VChangeSelected (Draw_Interpretor& di,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(aContext->HasOpenedContext())
|
aContext->AddOrRemoveSelected(anAISObject);
|
||||||
{
|
|
||||||
aContext->AddOrRemoveSelected(anAISObject);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
aContext->AddOrRemoveCurrentObject(anAISObject);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -680,6 +680,14 @@ is
|
|||||||
---Level: Advanced
|
---Level: Advanced
|
||||||
---Purpose: Returns the view manager handle which manage this view
|
---Purpose: Returns the view manager handle which manage this view
|
||||||
|
|
||||||
|
IsComputed (me;
|
||||||
|
theStructId : Integer from Standard;
|
||||||
|
theComputedStruct : out Structure from Graphic3d)
|
||||||
|
returns Boolean from Standard
|
||||||
|
is static;
|
||||||
|
---Purpose: Returns Standard_True in case if the structure with the given <theStructId> is
|
||||||
|
-- in list of structures to be computed and stores computed struct to <theComputedStruct>.
|
||||||
|
|
||||||
----------------------------
|
----------------------------
|
||||||
-- Category: Private methods
|
-- Category: Private methods
|
||||||
----------------------------
|
----------------------------
|
||||||
@@ -782,30 +790,6 @@ is
|
|||||||
---Purpose: Display the structure <AStructure> to the view <me>.
|
---Purpose: Display the structure <AStructure> to the view <me>.
|
||||||
---Category: Private methods
|
---Category: Private methods
|
||||||
|
|
||||||
DisplayImmediate ( me : mutable;
|
|
||||||
theStructure : Structure from Graphic3d;
|
|
||||||
theIsSingleView : Boolean from Standard = Standard_True)
|
|
||||||
returns Boolean from Standard
|
|
||||||
is static;
|
|
||||||
---Level: Internal
|
|
||||||
---Purpose: Add structure to the list of immediate presentations.
|
|
||||||
-- @return true if structure has not been registered in this view
|
|
||||||
|
|
||||||
EraseImmediate ( me : mutable;
|
|
||||||
theStructure : Structure from Graphic3d )
|
|
||||||
returns Boolean from Standard
|
|
||||||
is static;
|
|
||||||
---Level: Internal
|
|
||||||
---Purpose: Removes the structure from the list of immediate presentations.
|
|
||||||
-- @return true if structure has been registered in view
|
|
||||||
|
|
||||||
ClearImmediate ( me : mutable )
|
|
||||||
returns Boolean from Standard
|
|
||||||
is static;
|
|
||||||
---Level: Internal
|
|
||||||
---Purpose: Clears list of immediate presentations.
|
|
||||||
-- @return true if list was not empty
|
|
||||||
|
|
||||||
Erase ( me : mutable;
|
Erase ( me : mutable;
|
||||||
AStructure : Structure from Graphic3d )
|
AStructure : Structure from Graphic3d )
|
||||||
is static private;
|
is static private;
|
||||||
@@ -1125,7 +1109,6 @@ fields
|
|||||||
|
|
||||||
-- the displayed structures in the view
|
-- the displayed structures in the view
|
||||||
myStructsDisplayed : MapOfStructure from Graphic3d;
|
myStructsDisplayed : MapOfStructure from Graphic3d;
|
||||||
myImmediateStructures : MapOfStructure from Graphic3d;
|
|
||||||
|
|
||||||
myGTrihedron : GraduatedTrihedron from Graphic3d;
|
myGTrihedron : GraduatedTrihedron from Graphic3d;
|
||||||
|
|
||||||
|
@@ -973,7 +973,6 @@ void Visual3d_View::Redraw (const Handle(Visual3d_Layer)& theUnderLayer,
|
|||||||
if (myGraphicDriver->IsDeviceLost())
|
if (myGraphicDriver->IsDeviceLost())
|
||||||
{
|
{
|
||||||
myViewManager->RecomputeStructures();
|
myViewManager->RecomputeStructures();
|
||||||
myViewManager->RecomputeStructures (myImmediateStructures);
|
|
||||||
myGraphicDriver->ResetDeviceLostFlag();
|
myGraphicDriver->ResetDeviceLostFlag();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1256,69 +1255,6 @@ void Visual3d_View::Disconnect (const Handle(Graphic3d_Structure)& theMother,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========================================================================
|
|
||||||
// function : DisplayImmediate
|
|
||||||
// purpose :
|
|
||||||
// ========================================================================
|
|
||||||
Standard_Boolean Visual3d_View::DisplayImmediate (const Handle(Graphic3d_Structure)& theStructure,
|
|
||||||
const Standard_Boolean theIsSingleView)
|
|
||||||
{
|
|
||||||
if (!myImmediateStructures.Add (theStructure))
|
|
||||||
{
|
|
||||||
return Standard_False;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (theIsSingleView)
|
|
||||||
{
|
|
||||||
const Visual3d_SequenceOfView& aViews = myViewManager->DefinedViews();
|
|
||||||
for (Standard_Integer aViewIter = 1; aViewIter <= aViews.Length(); ++aViewIter)
|
|
||||||
{
|
|
||||||
const Handle(Visual3d_View)& aView = aViews.Value (aViewIter);
|
|
||||||
if (aView.Access() != this)
|
|
||||||
{
|
|
||||||
aView->EraseImmediate (theStructure);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
myGraphicDriver->DisplayImmediateStructure (MyCView, theStructure);
|
|
||||||
return Standard_True;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ========================================================================
|
|
||||||
// function : EraseImmediate
|
|
||||||
// purpose :
|
|
||||||
// ========================================================================
|
|
||||||
Standard_Boolean Visual3d_View::EraseImmediate (const Handle(Graphic3d_Structure)& theStructure)
|
|
||||||
{
|
|
||||||
const Standard_Boolean isErased = myImmediateStructures.Remove (theStructure);
|
|
||||||
if (isErased)
|
|
||||||
{
|
|
||||||
myGraphicDriver->EraseImmediateStructure (MyCView, *theStructure->CStructure());
|
|
||||||
}
|
|
||||||
|
|
||||||
return isErased;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ========================================================================
|
|
||||||
// function : ClearImmediate
|
|
||||||
// purpose :
|
|
||||||
// ========================================================================
|
|
||||||
Standard_Boolean Visual3d_View::ClearImmediate()
|
|
||||||
{
|
|
||||||
if (myImmediateStructures.IsEmpty())
|
|
||||||
{
|
|
||||||
return Standard_False;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Graphic3d_MapOfStructure::Iterator aStructIter (myImmediateStructures); aStructIter.More(); aStructIter.Next())
|
|
||||||
{
|
|
||||||
myGraphicDriver->EraseImmediateStructure (MyCView, *aStructIter.Key()->CStructure());
|
|
||||||
}
|
|
||||||
myImmediateStructures.Clear();
|
|
||||||
return Standard_True;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
// function : Display
|
// function : Display
|
||||||
// purpose :
|
// purpose :
|
||||||
@@ -1534,7 +1470,6 @@ void Visual3d_View::Erase (const Handle(Graphic3d_Structure)& theStruct,
|
|||||||
const Aspect_TypeOfUpdate theUpdateMode)
|
const Aspect_TypeOfUpdate theUpdateMode)
|
||||||
{
|
{
|
||||||
if ( IsDeleted()
|
if ( IsDeleted()
|
||||||
|| EraseImmediate (theStruct)
|
|
||||||
|| !IsDisplayed (theStruct))
|
|| !IsDisplayed (theStruct))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -1574,11 +1509,34 @@ void Visual3d_View::Highlight (const Handle(Graphic3d_Structure)& theStruct,
|
|||||||
const Standard_Integer anIndex = IsComputed (theStruct);
|
const Standard_Integer anIndex = IsComputed (theStruct);
|
||||||
if (anIndex != 0)
|
if (anIndex != 0)
|
||||||
{
|
{
|
||||||
const Handle(Graphic3d_Structure)& aCompStruct = myStructsComputed.ChangeValue (anIndex);
|
const Handle(Graphic3d_Structure)& aCompStruct = myStructsComputed.Value (anIndex);
|
||||||
aCompStruct->Highlight (theMethod, theStruct->HighlightColor(), Standard_False);
|
aCompStruct->Highlight (theMethod, theStruct->HighlightColor(), Standard_False);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ========================================================================
|
||||||
|
// function : IsComputed
|
||||||
|
// purpose :
|
||||||
|
// ========================================================================
|
||||||
|
Standard_Boolean Visual3d_View::IsComputed (const Standard_Integer theStructId,
|
||||||
|
Handle(Graphic3d_Structure)& theComputedStruct) const
|
||||||
|
{
|
||||||
|
theComputedStruct.Nullify();
|
||||||
|
if (!ComputedMode())
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
const Standard_Integer aNbStructs = myStructsToCompute.Length();
|
||||||
|
for (Standard_Integer aStructIter = 1; aStructIter <= aNbStructs; ++aStructIter)
|
||||||
|
{
|
||||||
|
if (myStructsToCompute.Value (aStructIter)->Identification() == theStructId)
|
||||||
|
{
|
||||||
|
theComputedStruct = myStructsComputed (aStructIter);
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
// function : SetTransform
|
// function : SetTransform
|
||||||
// purpose :
|
// purpose :
|
||||||
@@ -1745,8 +1703,6 @@ inline void addStructureBndBox (const Handle(Graphic3d_Structure)& theStruct,
|
|||||||
Bnd_Box Visual3d_View::MinMaxValues (const Standard_Boolean theToIgnoreInfiniteFlag) const
|
Bnd_Box Visual3d_View::MinMaxValues (const Standard_Boolean theToIgnoreInfiniteFlag) const
|
||||||
{
|
{
|
||||||
Bnd_Box aResult = MinMaxValues (myStructsDisplayed, theToIgnoreInfiniteFlag);
|
Bnd_Box aResult = MinMaxValues (myStructsDisplayed, theToIgnoreInfiniteFlag);
|
||||||
Bnd_Box anImmediate = MinMaxValues (myImmediateStructures, theToIgnoreInfiniteFlag);
|
|
||||||
aResult.Add (anImmediate);
|
|
||||||
return aResult;
|
return aResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
puts "TODO OCC11111 ALL: Error : Colors are not equal in default coordinate and in the near coordinates too"
|
|
||||||
|
|
||||||
puts "================"
|
puts "================"
|
||||||
puts "OCC1629"
|
puts "OCC1629"
|
||||||
puts "OCC2707"
|
puts "OCC2707"
|
||||||
@@ -37,7 +35,7 @@ set Selection_G 0.8
|
|||||||
set Selection_B 0.8
|
set Selection_B 0.8
|
||||||
|
|
||||||
#QASetChoiceMode EDGE ON
|
#QASetChoiceMode EDGE ON
|
||||||
vselmode 2 1
|
vselmode 2 1 -local
|
||||||
|
|
||||||
set BeforeNbSelected [vnbselected]
|
set BeforeNbSelected [vnbselected]
|
||||||
|
|
||||||
@@ -84,11 +82,11 @@ puts ""
|
|||||||
|
|
||||||
set CloseNbSelected [vnbselected]
|
set CloseNbSelected [vnbselected]
|
||||||
|
|
||||||
checkcolor ${x1} ${y1} ${Selection_R} ${Selection_G} ${Selection_B}
|
checkcolor ${x1} ${y1} 1 1 0
|
||||||
checkcolor ${x2} ${y2} ${Selection_R} ${Selection_G} ${Selection_B}
|
checkcolor ${x2} ${y2} 1 1 0
|
||||||
checkcolor ${x3} ${y3} ${Selection_R} ${Selection_G} ${Selection_B}
|
checkcolor ${x3} ${y3} 1 1 0
|
||||||
checkcolor ${x4} ${y4} ${Selection_R} ${Selection_G} ${Selection_B}
|
checkcolor ${x4} ${y4} 1 1 0
|
||||||
checkcolor ${x5} ${y5} ${Selection_R} ${Selection_G} ${Selection_B}
|
checkcolor ${x5} ${y5} 1 1 0
|
||||||
|
|
||||||
if {${CloseNbSelected} == 0} {
|
if {${CloseNbSelected} == 0} {
|
||||||
puts "OCC1629: OK (case 13: after close local context)"
|
puts "OCC1629: OK (case 13: after close local context)"
|
||||||
|
@@ -18,8 +18,8 @@ vertex p2 150 300 0
|
|||||||
edge e1 p1 p2
|
edge e1 p1 p2
|
||||||
|
|
||||||
vdisplay e1
|
vdisplay e1
|
||||||
vselmode e1 2 1
|
vselmode e1 2 1 -local
|
||||||
vselmode e1 1 1
|
vselmode e1 1 1 -local
|
||||||
vselect 0 0 2500 2500
|
vselect 0 0 2500 2500
|
||||||
verase -local
|
verase -local
|
||||||
|
|
||||||
|
@@ -15,7 +15,7 @@ vdisplay b
|
|||||||
vfit
|
vfit
|
||||||
|
|
||||||
# opening a local context for local selection
|
# opening a local context for local selection
|
||||||
vselmode b 4 1
|
vselmode b 4 1 -local
|
||||||
# Select a face just to simulate the scenario used in a real application
|
# Select a face just to simulate the scenario used in a real application
|
||||||
vselect 200 200
|
vselect 200 200
|
||||||
# This line should not lead to exception
|
# This line should not lead to exception
|
||||||
|
Reference in New Issue
Block a user