mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-06-30 12:14:08 +03:00
0026886: Visualization, TKV3d - eliminate global variables
- AIS_InteractiveContext - create new dummy class field to have an empty TopoDS_Shape object. - AIS_Point, PrsMgr_PresentableObject - rename static variables to local function variables. - AIS_Shape, SelectMgr_SelectableObject - remove unused static variables. - Graphic3d_MaterialAspect, V3d_Viewer - make global static variables as constant. - V3d_View - move global variable zRotation to class field. - Move a variable theCurrentSelection as a field of AIS_InteractiveContext and AIS_LocalContext classes. Multiple selection is not used now, so each Context have an own selection. - Move myStructGenId from Graphic3d_StructureManager to Graphic3d_GraphicDriver for identifying the structures in the driver. - Move default variable (no shading light) from static value to the class field of OpenGL_View. Porting note: - Static methods of AIS_Selection is not used now. Methods of AIS_InteractiveContext::InitSelected(),::MoreSelected(),::NextSelected() should be used instead of static methods of AIS_Selection.
This commit is contained in:
parent
83da37b115
commit
016e595986
@ -11,11 +11,9 @@
|
|||||||
#include "RadiusParamsPage.h"
|
#include "RadiusParamsPage.h"
|
||||||
#include "ParamsFacesPage.h"
|
#include "ParamsFacesPage.h"
|
||||||
#include <Standard_Macro.hxx>
|
#include <Standard_Macro.hxx>
|
||||||
#include <AIS_InteractiveContext.hxx>
|
|
||||||
#include <TColStd_ListIteratorOfListOfInteger.hxx>
|
#include <TColStd_ListIteratorOfListOfInteger.hxx>
|
||||||
#include <TColStd_ListOfInteger.hxx>
|
#include <TColStd_ListOfInteger.hxx>
|
||||||
#include <AIS_LocalContext.hxx>
|
#include <AIS_LocalContext.hxx>
|
||||||
#include <AIS_Selection.hxx>
|
|
||||||
#include <Quantity_Color.hxx>
|
#include <Quantity_Color.hxx>
|
||||||
|
|
||||||
BEGIN_MESSAGE_MAP(CDimensionDlg, CDialog)
|
BEGIN_MESSAGE_MAP(CDimensionDlg, CDialog)
|
||||||
@ -763,11 +761,3 @@ void CDimensionDlg::OnClose()
|
|||||||
}
|
}
|
||||||
CDialog::OnClose();
|
CDialog::OnClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
TopoDS_Shape CDimensionDlg::SelectedShape()
|
|
||||||
{
|
|
||||||
Handle(Standard_Transient) aSelection = AIS_Selection::CurrentSelection()->Value();
|
|
||||||
Handle(SelectMgr_EntityOwner) anOwner = Handle(SelectMgr_EntityOwner)::DownCast (aSelection);
|
|
||||||
Handle(StdSelect_BRepOwner) aBrepOwner = Handle(StdSelect_BRepOwner)::DownCast(anOwner);
|
|
||||||
return aBrepOwner->Shape().Located (aBrepOwner->Location() * aBrepOwner->Shape().Location());
|
|
||||||
}
|
|
||||||
|
@ -37,12 +37,6 @@ public:
|
|||||||
const TCollection_AsciiString GetUnits() const;
|
const TCollection_AsciiString GetUnits() const;
|
||||||
const Quantity_Color GetDimensionColor() const;
|
const Quantity_Color GetDimensionColor() const;
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
// Workaround: AIS_LocalContext::SelectedShape() doesn't take into account local location of selected TopoDS shape,
|
|
||||||
// and operates with selected interactive object transformation only.
|
|
||||||
static TopoDS_Shape SelectedShape();
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Dialog Data
|
// Dialog Data
|
||||||
enum { IDD = IDD_Dimension };
|
enum { IDD = IDD_Dimension };
|
||||||
|
@ -60,7 +60,6 @@ CButton* CLengthParamsEdgePage::GetButton()
|
|||||||
return (CButton*)GetDlgItem (IDC_ChooseEdgeBtn);
|
return (CButton*)GetDlgItem (IDC_ChooseEdgeBtn);
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <AIS_Selection.hxx>
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : OnBnClickedChooseEdgeBtn
|
//function : OnBnClickedChooseEdgeBtn
|
||||||
//purpose :
|
//purpose :
|
||||||
@ -76,9 +75,7 @@ void CLengthParamsEdgePage::OnBnClickedChooseEdgeBtn()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Workaround for AIS_LocalContext::SelectedShape()
|
TopoDS_Shape aSelShape = myAISContext->SelectedShape();
|
||||||
//TopoDS_Shape aSelShape = myAISContext->LocalContext()->SelectedShape();
|
|
||||||
TopoDS_Shape aSelShape = CDimensionDlg::SelectedShape();
|
|
||||||
const TopoDS_Edge& anEdge = TopoDS::Edge (aSelShape);
|
const TopoDS_Edge& anEdge = TopoDS::Edge (aSelShape);
|
||||||
|
|
||||||
myAISContext->LocalContext()->ClearSelected();
|
myAISContext->LocalContext()->ClearSelected();
|
||||||
|
@ -78,9 +78,7 @@ void CLengthParamsEdgesPage::OnBnClickedEdge1Btn()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Workaround for AIS_LocalContext::SelectedShape()
|
myFirstEdge = TopoDS::Edge (myAISContext->SelectedShape());
|
||||||
myFirstEdge = TopoDS::Edge (CDimensionDlg::SelectedShape());
|
|
||||||
//myFirstEdge = TopoDS::Edge (myAISContext->LocalContext()->SelectedShape());
|
|
||||||
|
|
||||||
myAISContext->LocalContext()->ClearSelected();
|
myAISContext->LocalContext()->ClearSelected();
|
||||||
}
|
}
|
||||||
@ -100,9 +98,7 @@ void CLengthParamsEdgesPage::OnBnClickedEdge2Btn()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Workaround for AIS_LocalContext::SelectedShape()
|
mySecondEdge = TopoDS::Edge (myAISContext->SelectedShape());
|
||||||
mySecondEdge = TopoDS::Edge (CDimensionDlg::SelectedShape());
|
|
||||||
//mySecondEdge = TopoDS::Edge (myAISContext->LocalContext()->SelectedShape());
|
|
||||||
|
|
||||||
myAISContext->LocalContext()->ClearSelected();
|
myAISContext->LocalContext()->ClearSelected();
|
||||||
|
|
||||||
|
@ -51,9 +51,7 @@ void CParamsFacesPage::OnBnClickedFacesbtn1()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Workaround for AIS_LocalContext::SelectedShape()
|
myFirstFace = TopoDS::Face (myAISContext->SelectedShape());
|
||||||
myFirstFace = TopoDS::Face (CDimensionDlg::SelectedShape());
|
|
||||||
//myFirstFace = TopoDS::Face (myAISContext->LocalContext()->SelectedShape());
|
|
||||||
|
|
||||||
myAISContext->LocalContext()->ClearSelected();
|
myAISContext->LocalContext()->ClearSelected();
|
||||||
}
|
}
|
||||||
@ -69,9 +67,8 @@ void CParamsFacesPage::OnBnClickedFacesbtn2()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Workaround for AIS_LocalContext::SelectedShape()
|
mySecondFace = TopoDS::Face (myAISContext->SelectedShape());
|
||||||
mySecondFace = TopoDS::Face (CDimensionDlg::SelectedShape());
|
|
||||||
//mySecondFace = TopoDS::Face (myAISContext->LocalContext()->SelectedShape());
|
|
||||||
myAISContext->LocalContext()->ClearSelected();
|
myAISContext->LocalContext()->ClearSelected();
|
||||||
|
|
||||||
CDimensionDlg *aDimDlg = (CDimensionDlg*)(GetParentOwner());
|
CDimensionDlg *aDimDlg = (CDimensionDlg*)(GetParentOwner());
|
||||||
|
@ -69,9 +69,7 @@ void CRadiusParamsPage::OnBnClickedObjectBtn()
|
|||||||
Standard_Boolean isAttachPoint = Standard_False;
|
Standard_Boolean isAttachPoint = Standard_False;
|
||||||
Standard_Real aFirstPar = 0, aLastPar = 0;
|
Standard_Real aFirstPar = 0, aLastPar = 0;
|
||||||
|
|
||||||
// Workaround for AIS_LocalContext::SelectedShape()
|
TopoDS_Shape aSelShape = myAISContext->SelectedShape();
|
||||||
TopoDS_Shape aSelShape = CDimensionDlg::SelectedShape();
|
|
||||||
//TopoDS_Shape aSelShape = myAISContext->LocalContext()->SelectedShape();
|
|
||||||
|
|
||||||
if (aSelShape.ShapeType() != TopAbs_EDGE &&
|
if (aSelShape.ShapeType() != TopAbs_EDGE &&
|
||||||
aSelShape.ShapeType() != TopAbs_FACE &&
|
aSelShape.ShapeType() != TopAbs_FACE &&
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
#include <AIS_LocalStatus.hxx>
|
#include <AIS_LocalStatus.hxx>
|
||||||
#include <AIS_MapIteratorOfMapOfInteractive.hxx>
|
#include <AIS_MapIteratorOfMapOfInteractive.hxx>
|
||||||
#include <AIS_MultipleConnectedInteractive.hxx>
|
#include <AIS_MultipleConnectedInteractive.hxx>
|
||||||
#include <AIS_Selection.hxx>
|
|
||||||
#include <AIS_Shape.hxx>
|
#include <AIS_Shape.hxx>
|
||||||
#include <AIS_Trihedron.hxx>
|
#include <AIS_Trihedron.hxx>
|
||||||
#include <Geom_Axis2Placement.hxx>
|
#include <Geom_Axis2Placement.hxx>
|
||||||
@ -67,21 +66,6 @@ IMPLEMENT_STANDARD_RTTIEXT(AIS_InteractiveContext,MMgt_TShared)
|
|||||||
//#include <AIS_DataMapIteratorOfDataMapOfInteractiveInteger.hxx>
|
//#include <AIS_DataMapIteratorOfDataMapOfInteractiveInteger.hxx>
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
static volatile Standard_Integer THE_AIS_INDEX_SEL = 0;
|
|
||||||
static volatile Standard_Integer THE_AIS_INDEX_CUR = 0;
|
|
||||||
|
|
||||||
static TCollection_AsciiString AIS_Context_NewSelName()
|
|
||||||
{
|
|
||||||
return TCollection_AsciiString ("AIS_SelContext_")
|
|
||||||
+ TCollection_AsciiString (Standard_Atomic_Increment (&THE_AIS_INDEX_SEL));
|
|
||||||
}
|
|
||||||
|
|
||||||
static TCollection_AsciiString AIS_Context_NewCurName()
|
|
||||||
{
|
|
||||||
return TCollection_AsciiString ("AIS_CurContext_")
|
|
||||||
+ TCollection_AsciiString (Standard_Atomic_Increment (&THE_AIS_INDEX_CUR));
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef NCollection_DataMap<Handle(SelectMgr_SelectableObject), Handle(SelectMgr_IndexedMapOfOwner)> AIS_MapOfObjectOwners;
|
typedef NCollection_DataMap<Handle(SelectMgr_SelectableObject), Handle(SelectMgr_IndexedMapOfOwner)> AIS_MapOfObjectOwners;
|
||||||
typedef NCollection_DataMap<Handle(SelectMgr_SelectableObject), Handle(SelectMgr_IndexedMapOfOwner)>::Iterator AIS_MapIteratorOfMapOfObjectOwners;
|
typedef NCollection_DataMap<Handle(SelectMgr_SelectableObject), Handle(SelectMgr_IndexedMapOfOwner)>::Iterator AIS_MapIteratorOfMapOfObjectOwners;
|
||||||
}
|
}
|
||||||
@ -102,6 +86,7 @@ mySelectedTouched(Standard_False),
|
|||||||
myToHilightSelected(Standard_True),
|
myToHilightSelected(Standard_True),
|
||||||
myFilters(new SelectMgr_OrFilter()),
|
myFilters(new SelectMgr_OrFilter()),
|
||||||
myDefaultDrawer(new Prs3d_Drawer()),
|
myDefaultDrawer(new Prs3d_Drawer()),
|
||||||
|
mySelection(new AIS_Selection()),
|
||||||
myDefaultColor(Quantity_NOC_GOLDENROD),
|
myDefaultColor(Quantity_NOC_GOLDENROD),
|
||||||
myHilightColor(Quantity_NOC_CYAN1),
|
myHilightColor(Quantity_NOC_CYAN1),
|
||||||
mySelectionColor(Quantity_NOC_GRAY80),
|
mySelectionColor(Quantity_NOC_GRAY80),
|
||||||
@ -111,27 +96,15 @@ myDisplayMode(0),
|
|||||||
myCurLocalIndex(0),
|
myCurLocalIndex(0),
|
||||||
myAISCurDetected(0),
|
myAISCurDetected(0),
|
||||||
myZDetectionFlag(0),
|
myZDetectionFlag(0),
|
||||||
myIsAutoActivateSelMode( Standard_True )
|
myIsAutoActivateSelMode(Standard_True)
|
||||||
{
|
{
|
||||||
InitAttributes();
|
InitAttributes();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AIS_InteractiveContext::Delete() const
|
void AIS_InteractiveContext::Delete() const
|
||||||
{
|
{
|
||||||
// clear the static current selection
|
// clear the current selection
|
||||||
AIS_Selection::ClearCurrentSelection();
|
mySelection->Select();
|
||||||
|
|
||||||
// to avoid an exception
|
|
||||||
if (AIS_Selection::Find (mySelectionName.ToCString()))
|
|
||||||
{
|
|
||||||
AIS_Selection::Remove (mySelectionName.ToCString());
|
|
||||||
}
|
|
||||||
|
|
||||||
// to avoid an exception
|
|
||||||
if (AIS_Selection::Find (myCurrentName.ToCString()))
|
|
||||||
{
|
|
||||||
AIS_Selection::Remove (myCurrentName.ToCString());
|
|
||||||
}
|
|
||||||
|
|
||||||
// let's remove one reference explicitly. this operation's supposed to
|
// let's remove one reference explicitly. this operation's supposed to
|
||||||
// be performed when mgrSelector will be destroyed but anyway...
|
// be performed when mgrSelector will be destroyed but anyway...
|
||||||
@ -151,20 +124,6 @@ void AIS_InteractiveContext::Delete() const
|
|||||||
MMgt_TShared::Delete();
|
MMgt_TShared::Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : AIS_SelectionName
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
const TCollection_AsciiString& AIS_InteractiveContext::SelectionName() const
|
|
||||||
{
|
|
||||||
if(!HasOpenedContext())
|
|
||||||
return mySelectionName;
|
|
||||||
return myLocalContexts(myCurLocalIndex)->SelectionName();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : UpdateCurrentViewer
|
//function : UpdateCurrentViewer
|
||||||
//purpose :
|
//purpose :
|
||||||
@ -697,10 +656,9 @@ void AIS_InteractiveContext::DisplaySelected (const Standard_Boolean theToUpdate
|
|||||||
}
|
}
|
||||||
|
|
||||||
Standard_Boolean isFound = Standard_False;
|
Standard_Boolean isFound = Standard_False;
|
||||||
Handle(AIS_Selection) aSelIter = AIS_Selection::Selection (myCurrentName.ToCString());
|
for (mySelection->Init(); mySelection->More(); mySelection->Next())
|
||||||
for (aSelIter->Init(); aSelIter->More(); aSelIter->Next())
|
|
||||||
{
|
{
|
||||||
Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (aSelIter->Value());
|
Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (mySelection->Value());
|
||||||
Display (anObj, Standard_False);
|
Display (anObj, Standard_False);
|
||||||
isFound = Standard_True;
|
isFound = Standard_True;
|
||||||
}
|
}
|
||||||
@ -723,18 +681,16 @@ void AIS_InteractiveContext::EraseSelected (const Standard_Boolean theToUpdateVi
|
|||||||
}
|
}
|
||||||
|
|
||||||
Standard_Boolean isFound = Standard_False;
|
Standard_Boolean isFound = Standard_False;
|
||||||
Handle(AIS_Selection) aSelIter = AIS_Selection::Selection(myCurrentName.ToCString());
|
mySelection->Init();
|
||||||
|
while (mySelection->More())
|
||||||
aSelIter->Init();
|
|
||||||
while (aSelIter->More())
|
|
||||||
{
|
{
|
||||||
Handle(SelectMgr_EntityOwner) anOwner = Handle(SelectMgr_EntityOwner)::DownCast (aSelIter->Value());
|
Handle(SelectMgr_EntityOwner) anOwner = Handle(SelectMgr_EntityOwner)::DownCast (mySelection->Value());
|
||||||
Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (anOwner->Selectable());
|
Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (anOwner->Selectable());
|
||||||
|
|
||||||
Erase (anObj, Standard_False);
|
Erase (anObj, Standard_False);
|
||||||
isFound = Standard_True;
|
isFound = Standard_True;
|
||||||
|
|
||||||
aSelIter->Init();
|
mySelection->Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isFound && theToUpdateViewer)
|
if (isFound && theToUpdateViewer)
|
||||||
@ -2285,16 +2241,14 @@ void AIS_InteractiveContext::SetSelectedAspect (const Handle(Prs3d_BasicAspect)&
|
|||||||
}
|
}
|
||||||
|
|
||||||
Standard_Boolean isFound = Standard_False;
|
Standard_Boolean isFound = Standard_False;
|
||||||
Handle(AIS_Selection) aSelIter = AIS_Selection::Selection (myCurrentName.ToCString());
|
for (mySelection->Init(); mySelection->More(); mySelection->Next())
|
||||||
for (aSelIter->Init(); aSelIter->More(); aSelIter->Next())
|
|
||||||
{
|
{
|
||||||
isFound = Standard_True;
|
isFound = Standard_True;
|
||||||
Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (aSelIter->Value());
|
Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (mySelection->Value());
|
||||||
anObj->SetAspect (theAspect, theIsGlobalChange);
|
anObj->SetAspect (theAspect, theIsGlobalChange);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isFound
|
if (isFound && theToUpdateViewer)
|
||||||
&& theToUpdateViewer)
|
|
||||||
{
|
{
|
||||||
myMainVwr->Update();
|
myMainVwr->Update();
|
||||||
}
|
}
|
||||||
@ -2481,22 +2435,21 @@ void AIS_InteractiveContext::EraseGlobal (const Handle(AIS_InteractiveObject)& t
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
void AIS_InteractiveContext::unhighlightOwners (const Handle(AIS_InteractiveObject)& theObject)
|
void AIS_InteractiveContext::unhighlightOwners (const Handle(AIS_InteractiveObject)& theObject)
|
||||||
{
|
{
|
||||||
Handle(AIS_Selection) aSel = AIS_Selection::Selection (myCurrentName.ToCString());
|
mySelection->Init();
|
||||||
aSel->Init();
|
while (mySelection->More())
|
||||||
while (aSel->More())
|
|
||||||
{
|
{
|
||||||
const Handle(SelectMgr_EntityOwner) anOwner =
|
const Handle(SelectMgr_EntityOwner) anOwner =
|
||||||
Handle(SelectMgr_EntityOwner)::DownCast (aSel->Value());
|
Handle(SelectMgr_EntityOwner)::DownCast (mySelection->Value());
|
||||||
if (anOwner->Selectable() == theObject)
|
if (anOwner->Selectable() == theObject)
|
||||||
{
|
{
|
||||||
if (anOwner->IsSelected())
|
if (anOwner->IsSelected())
|
||||||
{
|
{
|
||||||
AddOrRemoveSelected (anOwner, Standard_False);
|
AddOrRemoveSelected (anOwner, Standard_False);
|
||||||
aSel->Init();
|
mySelection->Init();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
aSel->Next();
|
mySelection->Next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2801,11 +2754,6 @@ Standard_Boolean AIS_InteractiveContext::IsInLocal (const Handle(AIS_Interactive
|
|||||||
void AIS_InteractiveContext::InitAttributes()
|
void AIS_InteractiveContext::InitAttributes()
|
||||||
{
|
{
|
||||||
mgrSelector->Add (myMainSel);
|
mgrSelector->Add (myMainSel);
|
||||||
myCurrentName = AIS_Context_NewCurName();
|
|
||||||
mySelectionName = AIS_Context_NewSelName();
|
|
||||||
|
|
||||||
AIS_Selection::CreateSelection (mySelectionName.ToCString());
|
|
||||||
AIS_Selection::CreateSelection (myCurrentName.ToCString());
|
|
||||||
|
|
||||||
myDefaultDrawer->SetShadingAspectGlobal (Standard_False);
|
myDefaultDrawer->SetShadingAspectGlobal (Standard_False);
|
||||||
Graphic3d_MaterialAspect aMat (Graphic3d_NOM_BRASS);
|
Graphic3d_MaterialAspect aMat (Graphic3d_NOM_BRASS);
|
||||||
@ -2974,13 +2922,11 @@ void AIS_InteractiveContext::FitSelected (const Handle(V3d_View)& theView,
|
|||||||
const Standard_Real theMargin,
|
const Standard_Real theMargin,
|
||||||
const Standard_Boolean theToUpdate)
|
const Standard_Boolean theToUpdate)
|
||||||
{
|
{
|
||||||
Standard_CString aSelName = HasOpenedContext() ?
|
const Handle(AIS_Selection)& aSelection = HasOpenedContext() ?
|
||||||
myLocalContexts (myCurLocalIndex)->SelectionName().ToCString()
|
myLocalContexts(myCurLocalIndex)->Selection() : mySelection;
|
||||||
: myCurrentName.ToCString();
|
|
||||||
|
|
||||||
Bnd_Box aBndSelected;
|
Bnd_Box aBndSelected;
|
||||||
|
|
||||||
const Handle(AIS_Selection)& aSelection = AIS_Selection::Selection (aSelName);
|
|
||||||
AIS_MapOfObjectOwners anObjectOwnerMap;
|
AIS_MapOfObjectOwners anObjectOwnerMap;
|
||||||
for (aSelection->Init(); aSelection->More(); aSelection->Next())
|
for (aSelection->Init(); aSelection->More(); aSelection->Next())
|
||||||
{
|
{
|
||||||
|
@ -49,6 +49,7 @@
|
|||||||
#include <SelectMgr_ListOfFilter.hxx>
|
#include <SelectMgr_ListOfFilter.hxx>
|
||||||
#include <AIS_ListOfInteractive.hxx>
|
#include <AIS_ListOfInteractive.hxx>
|
||||||
#include <Standard_CString.hxx>
|
#include <Standard_CString.hxx>
|
||||||
|
#include <AIS_Selection.hxx>
|
||||||
class SelectMgr_SelectionManager;
|
class SelectMgr_SelectionManager;
|
||||||
class V3d_Viewer;
|
class V3d_Viewer;
|
||||||
class AIS_InteractiveObject;
|
class AIS_InteractiveObject;
|
||||||
@ -60,7 +61,6 @@ class Quantity_Color;
|
|||||||
class TCollection_ExtendedString;
|
class TCollection_ExtendedString;
|
||||||
class Prs3d_LineAspect;
|
class Prs3d_LineAspect;
|
||||||
class Prs3d_BasicAspect;
|
class Prs3d_BasicAspect;
|
||||||
class TopoDS_Shape;
|
|
||||||
class SelectMgr_EntityOwner;
|
class SelectMgr_EntityOwner;
|
||||||
class Standard_Transient;
|
class Standard_Transient;
|
||||||
class SelectMgr_Filter;
|
class SelectMgr_Filter;
|
||||||
@ -882,6 +882,9 @@ public:
|
|||||||
//! Same as previous methods in reverse direction...
|
//! Same as previous methods in reverse direction...
|
||||||
Standard_EXPORT Standard_Integer HilightPreviousDetected (const Handle(V3d_View)& theView, const Standard_Boolean theToRedrawImmediate = Standard_True);
|
Standard_EXPORT Standard_Integer HilightPreviousDetected (const Handle(V3d_View)& theView, const Standard_Boolean theToRedrawImmediate = Standard_True);
|
||||||
|
|
||||||
|
//! Adds object in the selection.
|
||||||
|
Standard_EXPORT AIS_StatusOfPick AddSelect (const Handle(Standard_Transient)& theObject);
|
||||||
|
|
||||||
//! Selects everything found in the bounding rectangle
|
//! Selects everything found in the bounding rectangle
|
||||||
//! defined by the pixel minima and maxima, XPMin,
|
//! defined by the pixel minima and maxima, XPMin,
|
||||||
//! YPMin, XPMax, and YPMax in the view, aView
|
//! YPMin, XPMax, and YPMax in the view, aView
|
||||||
@ -1489,21 +1492,6 @@ public:
|
|||||||
//! Returns true if there is an open context.
|
//! Returns true if there is an open context.
|
||||||
Standard_Boolean HasOpenedContext() const;
|
Standard_Boolean HasOpenedContext() const;
|
||||||
|
|
||||||
|
|
||||||
//! Returns the name of the current selected entity in Neutral Point.
|
|
||||||
//! Objects selected when there is no open local context
|
|
||||||
//! are called current objects; those selected in open
|
|
||||||
//! local context, selected objects.
|
|
||||||
const TCollection_AsciiString& CurrentName() const;
|
|
||||||
|
|
||||||
|
|
||||||
//! Returns the name of the current selected entity in
|
|
||||||
//! open local context.
|
|
||||||
//! Objects selected when there is no open local context
|
|
||||||
//! are called current objects; those selected in open
|
|
||||||
//! local context, selected objects.
|
|
||||||
Standard_EXPORT const TCollection_AsciiString& SelectionName() const;
|
|
||||||
|
|
||||||
//! Returns the domain name of the main viewer.
|
//! Returns the domain name of the main viewer.
|
||||||
Standard_EXPORT Standard_CString DomainOfMainViewer() const;
|
Standard_EXPORT Standard_CString DomainOfMainViewer() const;
|
||||||
|
|
||||||
@ -1623,8 +1611,6 @@ private:
|
|||||||
Handle(PrsMgr_PresentationManager3d) myMainPM;
|
Handle(PrsMgr_PresentationManager3d) myMainPM;
|
||||||
Handle(V3d_Viewer) myMainVwr;
|
Handle(V3d_Viewer) myMainVwr;
|
||||||
Handle(StdSelect_ViewerSelector3d) myMainSel;
|
Handle(StdSelect_ViewerSelector3d) myMainSel;
|
||||||
TCollection_AsciiString mySelectionName;
|
|
||||||
TCollection_AsciiString myCurrentName;
|
|
||||||
Handle(SelectMgr_EntityOwner) myLastPicked;
|
Handle(SelectMgr_EntityOwner) myLastPicked;
|
||||||
Handle(SelectMgr_EntityOwner) myLastinMain;
|
Handle(SelectMgr_EntityOwner) myLastinMain;
|
||||||
Standard_Boolean myWasLastMain;
|
Standard_Boolean myWasLastMain;
|
||||||
@ -1633,6 +1619,7 @@ private:
|
|||||||
Standard_Boolean myToHilightSelected;
|
Standard_Boolean myToHilightSelected;
|
||||||
Handle(SelectMgr_OrFilter) myFilters;
|
Handle(SelectMgr_OrFilter) myFilters;
|
||||||
Handle(Prs3d_Drawer) myDefaultDrawer;
|
Handle(Prs3d_Drawer) myDefaultDrawer;
|
||||||
|
Handle(AIS_Selection) mySelection;
|
||||||
Quantity_NameOfColor myDefaultColor;
|
Quantity_NameOfColor myDefaultColor;
|
||||||
Quantity_NameOfColor myHilightColor;
|
Quantity_NameOfColor myHilightColor;
|
||||||
Quantity_NameOfColor mySelectionColor;
|
Quantity_NameOfColor mySelectionColor;
|
||||||
|
@ -79,9 +79,6 @@ inline Standard_Boolean AIS_InteractiveContext::HasOpenedContext() const
|
|||||||
inline Handle(AIS_LocalContext) AIS_InteractiveContext::LocalContext() const
|
inline Handle(AIS_LocalContext) AIS_InteractiveContext::LocalContext() const
|
||||||
{ return (myCurLocalIndex > 0) ? myLocalContexts(myCurLocalIndex) : NULL; }
|
{ return (myCurLocalIndex > 0) ? myLocalContexts(myCurLocalIndex) : NULL; }
|
||||||
|
|
||||||
inline const TCollection_AsciiString& AIS_InteractiveContext::CurrentName() const
|
|
||||||
{return myCurrentName;}
|
|
||||||
|
|
||||||
inline Standard_Boolean AIS_InteractiveContext::WasCurrentTouched() const
|
inline Standard_Boolean AIS_InteractiveContext::WasCurrentTouched() const
|
||||||
{return myCurrentTouched;}
|
{return myCurrentTouched;}
|
||||||
|
|
||||||
|
@ -44,7 +44,6 @@
|
|||||||
#include <TCollection_ExtendedString.hxx>
|
#include <TCollection_ExtendedString.hxx>
|
||||||
#include <TColStd_ListIteratorOfListOfInteger.hxx>
|
#include <TColStd_ListIteratorOfListOfInteger.hxx>
|
||||||
#include <TopLoc_Location.hxx>
|
#include <TopLoc_Location.hxx>
|
||||||
#include <TopoDS_Shape.hxx>
|
|
||||||
#include <V3d_AmbientLight.hxx>
|
#include <V3d_AmbientLight.hxx>
|
||||||
#include <V3d_DirectionalLight.hxx>
|
#include <V3d_DirectionalLight.hxx>
|
||||||
#include <V3d_Light.hxx>
|
#include <V3d_Light.hxx>
|
||||||
@ -55,6 +54,11 @@
|
|||||||
|
|
||||||
typedef NCollection_DataMap<Handle(AIS_InteractiveObject), NCollection_Handle<SelectMgr_SequenceOfOwner> > AIS_MapOfObjSelectedOwners;
|
typedef NCollection_DataMap<Handle(AIS_InteractiveObject), NCollection_Handle<SelectMgr_SequenceOfOwner> > AIS_MapOfObjSelectedOwners;
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
TopoDS_Shape AIS_myDummyShape;
|
||||||
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : highlightWithColor
|
//function : highlightWithColor
|
||||||
//purpose :
|
//purpose :
|
||||||
@ -89,13 +93,11 @@ void AIS_InteractiveContext::highlightSelected (const Handle(SelectMgr_EntityOwn
|
|||||||
|
|
||||||
if (!theOwner->IsAutoHilight())
|
if (!theOwner->IsAutoHilight())
|
||||||
{
|
{
|
||||||
AIS_Selection::SetCurrentSelection (myCurrentName.ToCString());
|
|
||||||
const Handle(AIS_Selection)& aCurSel = AIS_Selection::CurrentSelection();
|
|
||||||
SelectMgr_SequenceOfOwner aSeq;
|
SelectMgr_SequenceOfOwner aSeq;
|
||||||
for (aCurSel->Init(); aCurSel->More(); aCurSel->Next())
|
for (mySelection->Init(); mySelection->More(); mySelection->Next())
|
||||||
{
|
{
|
||||||
const Handle(SelectMgr_EntityOwner) aSelOwnr =
|
const Handle(SelectMgr_EntityOwner) aSelOwnr =
|
||||||
Handle(SelectMgr_EntityOwner)::DownCast (aCurSel->Value());
|
Handle(SelectMgr_EntityOwner)::DownCast (mySelection->Value());
|
||||||
if (aSelOwnr->Selectable() != anObj)
|
if (aSelOwnr->Selectable() != anObj)
|
||||||
continue;
|
continue;
|
||||||
aSeq.Append (aSelOwnr);
|
aSeq.Append (aSelOwnr);
|
||||||
@ -114,13 +116,11 @@ void AIS_InteractiveContext::highlightSelected (const Handle(SelectMgr_EntityOwn
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
void AIS_InteractiveContext::unhighlightSelected (const Standard_Boolean theIsToHilightSubIntensity)
|
void AIS_InteractiveContext::unhighlightSelected (const Standard_Boolean theIsToHilightSubIntensity)
|
||||||
{
|
{
|
||||||
AIS_Selection::SetCurrentSelection (myCurrentName.ToCString());
|
|
||||||
Handle(AIS_Selection) aCurSel = AIS_Selection::Selection (myCurrentName.ToCString());
|
|
||||||
NCollection_IndexedMap<Handle(AIS_InteractiveObject)> anObjToClear;
|
NCollection_IndexedMap<Handle(AIS_InteractiveObject)> anObjToClear;
|
||||||
for (aCurSel->Init(); aCurSel->More(); aCurSel->Next())
|
for (mySelection->Init(); mySelection->More(); mySelection->Next())
|
||||||
{
|
{
|
||||||
const Handle(SelectMgr_EntityOwner) anOwner =
|
const Handle(SelectMgr_EntityOwner) anOwner =
|
||||||
Handle(SelectMgr_EntityOwner)::DownCast (aCurSel->Value());
|
Handle(SelectMgr_EntityOwner)::DownCast (mySelection->Value());
|
||||||
if (anOwner.IsNull() || !anOwner->HasSelectable())
|
if (anOwner.IsNull() || !anOwner->HasSelectable())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -304,6 +304,24 @@ AIS_StatusOfDetection AIS_InteractiveContext::MoveTo (const Standard_Integer th
|
|||||||
return aStatus;
|
return aStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : AddSelect
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
AIS_StatusOfPick AIS_InteractiveContext::AddSelect (const Handle(Standard_Transient)& theObject)
|
||||||
|
{
|
||||||
|
if (HasOpenedContext())
|
||||||
|
{
|
||||||
|
return myLocalContexts(myCurLocalIndex)->AddSelect (theObject);
|
||||||
|
}
|
||||||
|
mySelection->AddSelect (theObject);
|
||||||
|
|
||||||
|
Standard_Integer aSelNum = NbSelected();
|
||||||
|
return (aSelNum == 0) ? AIS_SOP_NothingSelected
|
||||||
|
: (aSelNum == 1) ? AIS_SOP_OneSelected
|
||||||
|
: AIS_SOP_SeveralSelected;
|
||||||
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : Select
|
//function : Select
|
||||||
//purpose :
|
//purpose :
|
||||||
@ -336,7 +354,6 @@ AIS_StatusOfPick AIS_InteractiveContext::Select (const Standard_Integer theXPMi
|
|||||||
}
|
}
|
||||||
|
|
||||||
aSelector->Pick (theXPMin, theYPMin, theXPMax, theYPMax, theView);
|
aSelector->Pick (theXPMin, theYPMin, theXPMax, theYPMax, theView);
|
||||||
AIS_Selection::SetCurrentSelection (myCurrentName.ToCString());
|
|
||||||
|
|
||||||
for (aSelector->Init(); aSelector->More(); aSelector->Next())
|
for (aSelector->Init(); aSelector->More(); aSelector->Next())
|
||||||
{
|
{
|
||||||
@ -344,7 +361,7 @@ AIS_StatusOfPick AIS_InteractiveContext::Select (const Standard_Integer theXPMi
|
|||||||
if (aCurOwner.IsNull() || !aCurOwner->HasSelectable() || !myFilters->IsOk (aCurOwner))
|
if (aCurOwner.IsNull() || !aCurOwner->HasSelectable() || !myFilters->IsOk (aCurOwner))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
AIS_Selection::Select (aCurOwner);
|
mySelection->Select (aCurOwner);
|
||||||
aCurOwner->State (1);
|
aCurOwner->State (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -385,7 +402,6 @@ AIS_StatusOfPick AIS_InteractiveContext::Select (const TColgp_Array1OfPnt2d& the
|
|||||||
}
|
}
|
||||||
|
|
||||||
aSelector->Pick (thePolyline, theView);
|
aSelector->Pick (thePolyline, theView);
|
||||||
AIS_Selection::SetCurrentSelection (myCurrentName.ToCString());
|
|
||||||
|
|
||||||
for (aSelector->Init(); aSelector->More(); aSelector->Next())
|
for (aSelector->Init(); aSelector->More(); aSelector->Next())
|
||||||
{
|
{
|
||||||
@ -393,7 +409,7 @@ AIS_StatusOfPick AIS_InteractiveContext::Select (const TColgp_Array1OfPnt2d& the
|
|||||||
if (anOwner.IsNull() || !anOwner->HasSelectable() || !myFilters->IsOk (anOwner))
|
if (anOwner.IsNull() || !anOwner->HasSelectable() || !myFilters->IsOk (anOwner))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
AIS_Selection::Select (anOwner);
|
mySelection->Select (anOwner);
|
||||||
anOwner->State (1);
|
anOwner->State (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -442,7 +458,7 @@ AIS_StatusOfPick AIS_InteractiveContext::Select (const Standard_Boolean toUpdate
|
|||||||
{
|
{
|
||||||
unhighlightSelected (Standard_True);
|
unhighlightSelected (Standard_True);
|
||||||
|
|
||||||
AIS_Selection::Select();
|
mySelection->Select();
|
||||||
if (toUpdateViewer && myWasLastMain)
|
if (toUpdateViewer && myWasLastMain)
|
||||||
{
|
{
|
||||||
UpdateCurrentViewer();
|
UpdateCurrentViewer();
|
||||||
@ -523,14 +539,13 @@ AIS_StatusOfPick AIS_InteractiveContext::ShiftSelect (const Standard_Integer the
|
|||||||
}
|
}
|
||||||
|
|
||||||
aSelector->Pick (theXPMin, theYPMin, theXPMax, theYPMax, theView);
|
aSelector->Pick (theXPMin, theYPMin, theXPMax, theYPMax, theView);
|
||||||
AIS_Selection::SetCurrentSelection (myCurrentName.ToCString());
|
|
||||||
for (aSelector->Init(); aSelector->More(); aSelector->Next())
|
for (aSelector->Init(); aSelector->More(); aSelector->Next())
|
||||||
{
|
{
|
||||||
const Handle(SelectMgr_EntityOwner) anOwner = aSelector->Picked();
|
const Handle(SelectMgr_EntityOwner) anOwner = aSelector->Picked();
|
||||||
if (anOwner.IsNull() || !anOwner->HasSelectable() || !myFilters->IsOk (anOwner))
|
if (anOwner.IsNull() || !anOwner->HasSelectable() || !myFilters->IsOk (anOwner))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
AIS_SelectStatus aSelStatus = AIS_Selection::Select (anOwner);
|
AIS_SelectStatus aSelStatus = mySelection->Select (anOwner);
|
||||||
Standard_Integer aState = (aSelStatus == AIS_SS_Added) ? 1 : 0;
|
Standard_Integer aState = (aSelStatus == AIS_SS_Added) ? 1 : 0;
|
||||||
anOwner->State (aState);
|
anOwner->State (aState);
|
||||||
}
|
}
|
||||||
@ -574,14 +589,13 @@ AIS_StatusOfPick AIS_InteractiveContext::ShiftSelect (const TColgp_Array1OfPnt2d
|
|||||||
|
|
||||||
aSelector->Pick (thePolyline, theView);
|
aSelector->Pick (thePolyline, theView);
|
||||||
|
|
||||||
AIS_Selection::SetCurrentSelection (myCurrentName.ToCString());
|
|
||||||
for (aSelector->Init(); aSelector->More(); aSelector->Next())
|
for (aSelector->Init(); aSelector->More(); aSelector->Next())
|
||||||
{
|
{
|
||||||
const Handle(SelectMgr_EntityOwner) anOwner = aSelector->Picked();
|
const Handle(SelectMgr_EntityOwner) anOwner = aSelector->Picked();
|
||||||
if (anOwner.IsNull() || !anOwner->HasSelectable() || !myFilters->IsOk (anOwner))
|
if (anOwner.IsNull() || !anOwner->HasSelectable() || !myFilters->IsOk (anOwner))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
AIS_SelectStatus aSelStatus = AIS_Selection::Select (anOwner);
|
AIS_SelectStatus aSelStatus = mySelection->Select (anOwner);
|
||||||
Standard_Integer aState = (aSelStatus == AIS_SS_Added) ? 1 : 0;
|
Standard_Integer aState = (aSelStatus == AIS_SS_Added) ? 1 : 0;
|
||||||
anOwner->State (aState);
|
anOwner->State (aState);
|
||||||
}
|
}
|
||||||
@ -751,13 +765,11 @@ void AIS_InteractiveContext::HilightSelected (const Standard_Boolean theToUpdate
|
|||||||
|
|
||||||
// In case of selection without using local context
|
// In case of selection without using local context
|
||||||
myMainPM->ClearImmediateDraw();
|
myMainPM->ClearImmediateDraw();
|
||||||
AIS_Selection::SetCurrentSelection (myCurrentName.ToCString());
|
|
||||||
Handle(AIS_Selection) aSel = AIS_Selection::Selection (myCurrentName.ToCString());
|
|
||||||
AIS_MapOfObjSelectedOwners anObjOwnerMap;
|
AIS_MapOfObjSelectedOwners anObjOwnerMap;
|
||||||
for (aSel->Init(); aSel->More(); aSel->Next())
|
for (mySelection->Init(); mySelection->More(); mySelection->Next())
|
||||||
{
|
{
|
||||||
const Handle(SelectMgr_EntityOwner) anOwner =
|
const Handle(SelectMgr_EntityOwner) anOwner =
|
||||||
Handle(SelectMgr_EntityOwner)::DownCast (aSel->Value());
|
Handle(SelectMgr_EntityOwner)::DownCast (mySelection->Value());
|
||||||
if (!anOwner.IsNull() && anOwner->HasSelectable())
|
if (!anOwner.IsNull() && anOwner->HasSelectable())
|
||||||
{
|
{
|
||||||
const Handle(AIS_InteractiveObject) anObj =
|
const Handle(AIS_InteractiveObject) anObj =
|
||||||
@ -815,12 +827,10 @@ void AIS_InteractiveContext::UnhilightSelected (const Standard_Boolean theToUpda
|
|||||||
return myLocalContexts (myCurLocalIndex)->UnhilightPicked (theToUpdateViewer);
|
return myLocalContexts (myCurLocalIndex)->UnhilightPicked (theToUpdateViewer);
|
||||||
}
|
}
|
||||||
|
|
||||||
AIS_Selection::SetCurrentSelection (myCurrentName.ToCString());
|
for (mySelection->Init(); mySelection->More(); mySelection->Next())
|
||||||
Handle(AIS_Selection) aSel = AIS_Selection::Selection (myCurrentName.ToCString());
|
|
||||||
for (aSel->Init(); aSel->More(); aSel->Next())
|
|
||||||
{
|
{
|
||||||
const Handle(SelectMgr_EntityOwner) anOwner =
|
const Handle(SelectMgr_EntityOwner) anOwner =
|
||||||
Handle(SelectMgr_EntityOwner)::DownCast (aSel->Value());
|
Handle(SelectMgr_EntityOwner)::DownCast (mySelection->Value());
|
||||||
if (!anOwner.IsNull() && anOwner->HasSelectable())
|
if (!anOwner.IsNull() && anOwner->HasSelectable())
|
||||||
{
|
{
|
||||||
const Handle(AIS_InteractiveObject) anObj =
|
const Handle(AIS_InteractiveObject) anObj =
|
||||||
@ -854,7 +864,7 @@ void AIS_InteractiveContext::ClearSelected (const Standard_Boolean theToUpdateVi
|
|||||||
|
|
||||||
unhighlightSelected();
|
unhighlightSelected();
|
||||||
|
|
||||||
AIS_Selection::Select();
|
mySelection->Select();
|
||||||
myMainPM->ClearImmediateDraw();
|
myMainPM->ClearImmediateDraw();
|
||||||
|
|
||||||
if (theToUpdateViewer)
|
if (theToUpdateViewer)
|
||||||
@ -908,12 +918,10 @@ void AIS_InteractiveContext::SetSelected (const Handle(AIS_InteractiveObject)& t
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
AIS_Selection::SetCurrentSelection (myCurrentName.ToCString());
|
for (mySelection->Init(); mySelection->More(); mySelection->Next())
|
||||||
Handle(AIS_Selection) aCurSel = AIS_Selection::Selection (myCurrentName.ToCString());
|
|
||||||
for (aCurSel->Init(); aCurSel->More(); aCurSel->Next())
|
|
||||||
{
|
{
|
||||||
const Handle(SelectMgr_EntityOwner) anOwner =
|
const Handle(SelectMgr_EntityOwner) anOwner =
|
||||||
Handle(SelectMgr_EntityOwner)::DownCast (aCurSel->Value());
|
Handle(SelectMgr_EntityOwner)::DownCast (mySelection->Value());
|
||||||
if (anOwner.IsNull() || !anOwner->HasSelectable() || !myFilters->IsOk (anOwner))
|
if (anOwner.IsNull() || !anOwner->HasSelectable() || !myFilters->IsOk (anOwner))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -934,7 +942,7 @@ void AIS_InteractiveContext::SetSelected (const Handle(AIS_InteractiveObject)& t
|
|||||||
aSel->Init();
|
aSel->Init();
|
||||||
Handle(SelectMgr_EntityOwner) anOwner =
|
Handle(SelectMgr_EntityOwner) anOwner =
|
||||||
Handle(SelectMgr_EntityOwner)::DownCast (aSel->Sensitive()->BaseSensitive()->OwnerId());
|
Handle(SelectMgr_EntityOwner)::DownCast (aSel->Sensitive()->BaseSensitive()->OwnerId());
|
||||||
AIS_Selection::ClearAndSelect (anOwner);
|
mySelection->ClearAndSelect (anOwner);
|
||||||
anOwner->State (1);
|
anOwner->State (1);
|
||||||
if (anOwner == theObject->GlobalSelOwner())
|
if (anOwner == theObject->GlobalSelOwner())
|
||||||
{
|
{
|
||||||
@ -993,7 +1001,7 @@ void AIS_InteractiveContext::SetSelected (const Handle(SelectMgr_EntityOwner)& t
|
|||||||
|
|
||||||
unhighlightSelected();
|
unhighlightSelected();
|
||||||
|
|
||||||
AIS_Selection::ClearAndSelect (theOwner);
|
mySelection->ClearAndSelect (theOwner);
|
||||||
theOwner->State (1);
|
theOwner->State (1);
|
||||||
Quantity_NameOfColor aCustomColor;
|
Quantity_NameOfColor aCustomColor;
|
||||||
Standard_Boolean isCustomColorSet;
|
Standard_Boolean isCustomColorSet;
|
||||||
@ -1076,10 +1084,7 @@ void AIS_InteractiveContext::AddOrRemoveSelected (const Handle(SelectMgr_EntityO
|
|||||||
if (theOwner.IsNull() || !theOwner->HasSelectable())
|
if (theOwner.IsNull() || !theOwner->HasSelectable())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
AIS_Selection::SetCurrentSelection (myCurrentName.ToCString());
|
AIS_SelectStatus aSelStat = mySelection->Select (theOwner);
|
||||||
Handle(AIS_Selection) aCurSel = AIS_Selection::Selection (myCurrentName.ToCString());
|
|
||||||
|
|
||||||
AIS_SelectStatus aSelStat = AIS_Selection::Select (theOwner);
|
|
||||||
|
|
||||||
Standard_Integer aState = aSelStat == AIS_SS_Added ? 1 : 0;
|
Standard_Integer aState = aSelStat == AIS_SS_Added ? 1 : 0;
|
||||||
theOwner->State (aState);
|
theOwner->State (aState);
|
||||||
@ -1168,7 +1173,7 @@ void AIS_InteractiveContext::InitSelected()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
AIS_Selection::Selection (myCurrentName.ToCString())->Init();
|
mySelection->Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -1180,7 +1185,7 @@ Standard_Boolean AIS_InteractiveContext::MoreSelected() const
|
|||||||
if (HasOpenedContext())
|
if (HasOpenedContext())
|
||||||
return myLocalContexts (myCurLocalIndex)->MoreSelected();
|
return myLocalContexts (myCurLocalIndex)->MoreSelected();
|
||||||
|
|
||||||
return AIS_Selection::Selection (myCurrentName.ToCString())->More();
|
return mySelection->More();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -1195,7 +1200,7 @@ void AIS_InteractiveContext::NextSelected()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
AIS_Selection::Selection (myCurrentName.ToCString())->Next();
|
mySelection->Next();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -1224,11 +1229,11 @@ TopoDS_Shape AIS_InteractiveContext::SelectedShape() const
|
|||||||
return myLocalContexts (myCurLocalIndex)->SelectedShape();
|
return myLocalContexts (myCurLocalIndex)->SelectedShape();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AIS_Selection::Selection (myCurrentName.ToCString())->Extent() == 0)
|
if (mySelection->Extent() == 0)
|
||||||
return TopoDS_Shape();
|
return TopoDS_Shape();
|
||||||
|
|
||||||
const Handle(StdSelect_BRepOwner) anOwner =
|
const Handle(StdSelect_BRepOwner) anOwner =
|
||||||
Handle(StdSelect_BRepOwner)::DownCast (AIS_Selection::Selection (myCurrentName.ToCString())->Value());
|
Handle(StdSelect_BRepOwner)::DownCast (mySelection->Value());
|
||||||
if (!anOwner->HasSelectable())
|
if (!anOwner->HasSelectable())
|
||||||
return TopoDS_Shape();
|
return TopoDS_Shape();
|
||||||
|
|
||||||
@ -1247,7 +1252,7 @@ Handle(AIS_InteractiveObject) AIS_InteractiveContext::SelectedInteractive() cons
|
|||||||
}
|
}
|
||||||
|
|
||||||
const Handle(SelectMgr_EntityOwner) anOwner =
|
const Handle(SelectMgr_EntityOwner) anOwner =
|
||||||
Handle(SelectMgr_EntityOwner)::DownCast (AIS_Selection::Selection (myCurrentName.ToCString())->Value());
|
Handle(SelectMgr_EntityOwner)::DownCast (mySelection->Value());
|
||||||
if (anOwner.IsNull() || !anOwner->HasSelectable())
|
if (anOwner.IsNull() || !anOwner->HasSelectable())
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -1264,10 +1269,8 @@ Handle(SelectMgr_EntityOwner) AIS_InteractiveContext::SelectedOwner() const
|
|||||||
return myLocalContexts(myCurLocalIndex)->SelectedOwner();
|
return myLocalContexts(myCurLocalIndex)->SelectedOwner();
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle(AIS_Selection) aCurSel = AIS_Selection::Selection (myCurrentName.ToCString());
|
return mySelection->Extent() > 0 ?
|
||||||
|
Handle(SelectMgr_EntityOwner)::DownCast (mySelection->Value()) : NULL;
|
||||||
return aCurSel->Extent() > 0 ?
|
|
||||||
Handle(SelectMgr_EntityOwner)::DownCast (aCurSel->Value()) : NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -1501,13 +1504,11 @@ const TopoDS_Shape& AIS_InteractiveContext::DetectedCurrentShape() const
|
|||||||
return myLocalContexts(myCurLocalIndex)->DetectedCurrentShape();
|
return myLocalContexts(myCurLocalIndex)->DetectedCurrentShape();
|
||||||
}
|
}
|
||||||
|
|
||||||
static TopoDS_Shape aDummyShape;
|
|
||||||
|
|
||||||
Handle(AIS_Shape) aCurrentShape = Handle(AIS_Shape)::DownCast (DetectedCurrentObject());
|
Handle(AIS_Shape) aCurrentShape = Handle(AIS_Shape)::DownCast (DetectedCurrentObject());
|
||||||
|
|
||||||
if (aCurrentShape.IsNull())
|
if (aCurrentShape.IsNull())
|
||||||
{
|
{
|
||||||
return aDummyShape;
|
return AIS_myDummyShape;
|
||||||
}
|
}
|
||||||
|
|
||||||
return aCurrentShape->Shape();
|
return aCurrentShape->Shape();
|
||||||
|
@ -419,7 +419,7 @@ SubIntensityOff(const Handle(AIS_InteractiveObject)& anIObj,
|
|||||||
|
|
||||||
Standard_Integer DM,HM,SM;
|
Standard_Integer DM,HM,SM;
|
||||||
GetDefModes(anIObj,DM,HM,SM);
|
GetDefModes(anIObj,DM,HM,SM);
|
||||||
if(AIS_Selection::IsSelected(anIObj))
|
if(mySelection->IsSelected(anIObj))
|
||||||
myMainPM->Highlight(anIObj,HM);
|
myMainPM->Highlight(anIObj,HM);
|
||||||
|
|
||||||
if(updateviewer){
|
if(updateviewer){
|
||||||
|
@ -23,7 +23,6 @@
|
|||||||
#include <AIS_ListOfInteractive.hxx>
|
#include <AIS_ListOfInteractive.hxx>
|
||||||
#include <AIS_LocalContext.hxx>
|
#include <AIS_LocalContext.hxx>
|
||||||
#include <AIS_LocalStatus.hxx>
|
#include <AIS_LocalStatus.hxx>
|
||||||
#include <AIS_Selection.hxx>
|
|
||||||
#include <AIS_Shape.hxx>
|
#include <AIS_Shape.hxx>
|
||||||
#include <Aspect_TypeOfMarker.hxx>
|
#include <Aspect_TypeOfMarker.hxx>
|
||||||
#include <Graphic3d_Structure.hxx>
|
#include <Graphic3d_Structure.hxx>
|
||||||
@ -51,17 +50,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(AIS_LocalContext,MMgt_TShared)
|
IMPLEMENT_STANDARD_RTTIEXT(AIS_LocalContext,MMgt_TShared)
|
||||||
|
|
||||||
static TCollection_AsciiString AIS_Local_SelName(const Standard_Address address,
|
|
||||||
const Standard_Integer anIndex)
|
|
||||||
{
|
|
||||||
// TCollection_AsciiString SelName;
|
|
||||||
char string[100];
|
|
||||||
sprintf(string,"%p_%d", address, anIndex); // works under any system
|
|
||||||
TCollection_AsciiString SelName(string);
|
|
||||||
return SelName;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : AIS_LocalContext
|
//function : AIS_LocalContext
|
||||||
//purpose :
|
//purpose :
|
||||||
@ -85,6 +73,7 @@ myMainVS(aCtx->MainSelector()),
|
|||||||
myFilters(new SelectMgr_OrFilter()),
|
myFilters(new SelectMgr_OrFilter()),
|
||||||
myAutoHilight(Standard_True),
|
myAutoHilight(Standard_True),
|
||||||
myMapOfOwner (new SelectMgr_IndexedMapOfOwner()),
|
myMapOfOwner (new SelectMgr_IndexedMapOfOwner()),
|
||||||
|
mySelection(new AIS_Selection()),
|
||||||
mylastindex(0),
|
mylastindex(0),
|
||||||
mylastgood(0),
|
mylastgood(0),
|
||||||
myCurDetected(0),
|
myCurDetected(0),
|
||||||
@ -98,8 +87,6 @@ myAISCurDetected(0)
|
|||||||
|
|
||||||
myMainVS->ResetSelectionActivationStatus();
|
myMainVS->ResetSelectionActivationStatus();
|
||||||
myMainPM = aCtx->MainPrsMgr();
|
myMainPM = aCtx->MainPrsMgr();
|
||||||
mySelName = AIS_Local_SelName(this, Index);
|
|
||||||
AIS_Selection::CreateSelection(mySelName.ToCString());
|
|
||||||
|
|
||||||
mySM->Add(myMainVS);
|
mySM->Add(myMainVS);
|
||||||
if(myLoadDisplayed) LoadContextObjects();
|
if(myLoadDisplayed) LoadContextObjects();
|
||||||
@ -626,18 +613,13 @@ void AIS_LocalContext::Terminate (const Standard_Boolean theToUpdate)
|
|||||||
// clear the selector...
|
// clear the selector...
|
||||||
myMainVS->Clear();
|
myMainVS->Clear();
|
||||||
|
|
||||||
|
|
||||||
AIS_Selection::SetCurrentSelection(mySelName.ToCString());
|
|
||||||
Handle(AIS_Selection) S = AIS_Selection::CurrentSelection();
|
|
||||||
Handle(Standard_Transient) Tr;
|
Handle(Standard_Transient) Tr;
|
||||||
for(S->Init();S->More();S->Next()){
|
for (mySelection->Init(); mySelection->More(); mySelection->Next()){
|
||||||
Tr = S->Value();
|
Tr = mySelection->Value();
|
||||||
Handle(SelectMgr_EntityOwner)::DownCast (Tr)->SetSelected (Standard_False);
|
Handle(SelectMgr_EntityOwner)::DownCast (Tr)->SetSelected (Standard_False);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mySelection->Select();
|
||||||
AIS_Selection::Select();
|
|
||||||
AIS_Selection::Remove(mySelName.ToCString());
|
|
||||||
|
|
||||||
Handle(V3d_View) aDummyView;
|
Handle(V3d_View) aDummyView;
|
||||||
myMainVS->ClearSensitive (aDummyView);
|
myMainVS->ClearSensitive (aDummyView);
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#include <TColStd_MapOfTransient.hxx>
|
#include <TColStd_MapOfTransient.hxx>
|
||||||
#include <Quantity_NameOfColor.hxx>
|
#include <Quantity_NameOfColor.hxx>
|
||||||
#include <Standard_Real.hxx>
|
#include <Standard_Real.hxx>
|
||||||
|
#include <AIS_Selection.hxx>
|
||||||
class AIS_InteractiveContext;
|
class AIS_InteractiveContext;
|
||||||
class SelectMgr_SelectionManager;
|
class SelectMgr_SelectionManager;
|
||||||
class SelectMgr_OrFilter;
|
class SelectMgr_OrFilter;
|
||||||
@ -91,7 +92,7 @@ public:
|
|||||||
|
|
||||||
Standard_EXPORT void SetContext (const Handle(AIS_InteractiveContext)& aCtx);
|
Standard_EXPORT void SetContext (const Handle(AIS_InteractiveContext)& aCtx);
|
||||||
|
|
||||||
const TCollection_AsciiString& SelectionName() const;
|
const Handle(AIS_Selection) Selection() const;
|
||||||
|
|
||||||
Standard_EXPORT void Terminate (const Standard_Boolean updateviewer = Standard_True);
|
Standard_EXPORT void Terminate (const Standard_Boolean updateviewer = Standard_True);
|
||||||
|
|
||||||
@ -166,6 +167,8 @@ public:
|
|||||||
Standard_EXPORT Standard_Boolean UnhilightLastDetected (const Handle(V3d_View)& aView);
|
Standard_EXPORT Standard_Boolean UnhilightLastDetected (const Handle(V3d_View)& aView);
|
||||||
|
|
||||||
//! returns the number of selected
|
//! returns the number of selected
|
||||||
|
Standard_EXPORT AIS_StatusOfPick AddSelect (const Handle(Standard_Transient)& theObject);
|
||||||
|
|
||||||
Standard_EXPORT AIS_StatusOfPick Select (const Standard_Boolean updateviewer = Standard_True);
|
Standard_EXPORT AIS_StatusOfPick Select (const Standard_Boolean updateviewer = Standard_True);
|
||||||
|
|
||||||
Standard_EXPORT AIS_StatusOfPick ShiftSelect (const Standard_Boolean updateviewer = Standard_True);
|
Standard_EXPORT AIS_StatusOfPick ShiftSelect (const Standard_Boolean updateviewer = Standard_True);
|
||||||
@ -411,7 +414,6 @@ private:
|
|||||||
Handle(SelectMgr_SelectionManager) mySM;
|
Handle(SelectMgr_SelectionManager) mySM;
|
||||||
Handle(StdSelect_ViewerSelector3d) myMainVS;
|
Handle(StdSelect_ViewerSelector3d) myMainVS;
|
||||||
Handle(PrsMgr_PresentationManager3d) myMainPM;
|
Handle(PrsMgr_PresentationManager3d) myMainPM;
|
||||||
TCollection_AsciiString mySelName;
|
|
||||||
Handle(StdSelect_ViewerSelector3d) myCollVS;
|
Handle(StdSelect_ViewerSelector3d) myCollVS;
|
||||||
AIS_DataMapOfSelStat myActiveObjects;
|
AIS_DataMapOfSelStat myActiveObjects;
|
||||||
Handle(SelectMgr_OrFilter) myFilters;
|
Handle(SelectMgr_OrFilter) myFilters;
|
||||||
@ -419,6 +421,7 @@ private:
|
|||||||
Handle(SelectMgr_Filter) myStdFilters[9];
|
Handle(SelectMgr_Filter) myStdFilters[9];
|
||||||
Standard_Boolean myAutoHilight;
|
Standard_Boolean myAutoHilight;
|
||||||
Handle(SelectMgr_IndexedMapOfOwner) myMapOfOwner;
|
Handle(SelectMgr_IndexedMapOfOwner) myMapOfOwner;
|
||||||
|
Handle(AIS_Selection) mySelection;
|
||||||
Standard_Integer mylastindex;
|
Standard_Integer mylastindex;
|
||||||
Standard_Integer mylastgood;
|
Standard_Integer mylastgood;
|
||||||
Standard_Integer myCurrentOwner;
|
Standard_Integer myCurrentOwner;
|
||||||
|
@ -18,9 +18,8 @@
|
|||||||
|
|
||||||
#include <SelectMgr_OrFilter.hxx>
|
#include <SelectMgr_OrFilter.hxx>
|
||||||
|
|
||||||
inline const TCollection_AsciiString& AIS_LocalContext::
|
inline const Handle(AIS_Selection) AIS_LocalContext::Selection() const
|
||||||
SelectionName() const
|
{return mySelection;}
|
||||||
{return mySelName;}
|
|
||||||
|
|
||||||
inline void AIS_LocalContext::SetAutomaticHilight(const Standard_Boolean aStatus)
|
inline void AIS_LocalContext::SetAutomaticHilight(const Standard_Boolean aStatus)
|
||||||
{myAutoHilight = aStatus;}
|
{myAutoHilight = aStatus;}
|
||||||
|
@ -50,9 +50,13 @@
|
|||||||
#include <TColStd_ListOfInteger.hxx>
|
#include <TColStd_ListOfInteger.hxx>
|
||||||
#include <TColStd_MapIteratorOfMapOfTransient.hxx>
|
#include <TColStd_MapIteratorOfMapOfTransient.hxx>
|
||||||
#include <TColStd_MapOfTransient.hxx>
|
#include <TColStd_MapOfTransient.hxx>
|
||||||
#include <TopoDS_Shape.hxx>
|
|
||||||
#include <V3d_View.hxx>
|
#include <V3d_View.hxx>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
TopoDS_Shape AIS_myDummyShape;
|
||||||
|
}
|
||||||
|
|
||||||
static Standard_Integer GetHiMod(const Handle(AIS_InteractiveObject)& IO)
|
static Standard_Integer GetHiMod(const Handle(AIS_InteractiveObject)& IO)
|
||||||
{
|
{
|
||||||
return IO->HasHilightMode() ? IO->HilightMode():0;
|
return IO->HasHilightMode() ? IO->HilightMode():0;
|
||||||
@ -135,6 +139,20 @@ AIS_StatusOfDetection AIS_LocalContext::MoveTo (const Standard_Integer theXpix,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : AddSelect
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
AIS_StatusOfPick AIS_LocalContext::AddSelect (const Handle(Standard_Transient)& theObject)
|
||||||
|
{
|
||||||
|
mySelection->AddSelect (theObject);
|
||||||
|
|
||||||
|
Standard_Integer aSelNum = mySelection->Extent();
|
||||||
|
return (aSelNum == 1) ? AIS_SOP_OneSelected
|
||||||
|
: (aSelNum > 1) ? AIS_SOP_SeveralSelected
|
||||||
|
: AIS_SOP_Error;
|
||||||
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : Select
|
//function : Select
|
||||||
//purpose :
|
//purpose :
|
||||||
@ -146,13 +164,11 @@ AIS_StatusOfPick AIS_LocalContext::Select (const Standard_Boolean toUpdateViewer
|
|||||||
UnhilightPicked (Standard_False);
|
UnhilightPicked (Standard_False);
|
||||||
}
|
}
|
||||||
|
|
||||||
AIS_Selection::SetCurrentSelection (mySelName.ToCString());
|
|
||||||
|
|
||||||
Standard_Integer aDetIndex = DetectedIndex();
|
Standard_Integer aDetIndex = DetectedIndex();
|
||||||
if (aDetIndex <= 0)
|
if (aDetIndex <= 0)
|
||||||
{
|
{
|
||||||
ClearSelected (toUpdateViewer);
|
ClearSelected (toUpdateViewer);
|
||||||
return (AIS_Selection::Extent() == 0) ? AIS_SOP_NothingSelected : AIS_SOP_Removed;
|
return (mySelection->Extent() == 0) ? AIS_SOP_NothingSelected : AIS_SOP_Removed;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Handle(SelectMgr_EntityOwner)& anOwner = myMapOfOwner->FindKey (aDetIndex);
|
const Handle(SelectMgr_EntityOwner)& anOwner = myMapOfOwner->FindKey (aDetIndex);
|
||||||
@ -162,7 +178,7 @@ AIS_StatusOfPick AIS_LocalContext::Select (const Standard_Boolean toUpdateViewer
|
|||||||
if (!anOwner->IsSelected()) // anOwner is not selected
|
if (!anOwner->IsSelected()) // anOwner is not selected
|
||||||
{
|
{
|
||||||
anOwner->SetSelected (Standard_True);
|
anOwner->SetSelected (Standard_True);
|
||||||
AIS_Selection::Select (anOwner);
|
mySelection->Select (anOwner);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (myAutoHilight)
|
if (myAutoHilight)
|
||||||
@ -186,7 +202,7 @@ AIS_StatusOfPick AIS_LocalContext::Select (const Standard_Boolean toUpdateViewer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (AIS_Selection::Extent() == 1) ? AIS_SOP_OneSelected : AIS_SOP_SeveralSelected;
|
return (mySelection->Extent() == 1) ? AIS_SOP_OneSelected : AIS_SOP_SeveralSelected;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -208,8 +224,7 @@ AIS_StatusOfPick AIS_LocalContext::Select (const Standard_Integer theXPMin,
|
|||||||
UnhilightPicked (Standard_False);
|
UnhilightPicked (Standard_False);
|
||||||
}
|
}
|
||||||
|
|
||||||
AIS_Selection::SetCurrentSelection (mySelName.ToCString());
|
Standard_Integer aSelNum = mySelection->Extent();
|
||||||
Standard_Integer aSelNum = AIS_Selection::Extent();
|
|
||||||
|
|
||||||
myMainVS->Init();
|
myMainVS->Init();
|
||||||
if (!myMainVS->More())
|
if (!myMainVS->More())
|
||||||
@ -230,7 +245,7 @@ AIS_StatusOfPick AIS_LocalContext::Select (const Standard_Integer theXPMin,
|
|||||||
if (!anOwner->IsSelected())
|
if (!anOwner->IsSelected())
|
||||||
{
|
{
|
||||||
anOwner->SetSelected (Standard_True);
|
anOwner->SetSelected (Standard_True);
|
||||||
AIS_Selection::Select (anOwner);
|
mySelection->Select (anOwner);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -241,7 +256,7 @@ AIS_StatusOfPick AIS_LocalContext::Select (const Standard_Integer theXPMin,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Integer aSelNum = AIS_Selection::Extent();
|
Standard_Integer aSelNum = mySelection->Extent();
|
||||||
|
|
||||||
return (aSelNum == 1) ? AIS_SOP_OneSelected
|
return (aSelNum == 1) ? AIS_SOP_OneSelected
|
||||||
: (aSelNum > 1) ? AIS_SOP_SeveralSelected
|
: (aSelNum > 1) ? AIS_SOP_SeveralSelected
|
||||||
@ -260,9 +275,7 @@ AIS_StatusOfPick AIS_LocalContext::Select (const TColgp_Array1OfPnt2d& thePolyli
|
|||||||
{
|
{
|
||||||
myMainVS->Pick (thePolyline, theView);
|
myMainVS->Pick (thePolyline, theView);
|
||||||
|
|
||||||
AIS_Selection::SetCurrentSelection (mySelName.ToCString());
|
Standard_Integer aLastSelNum = mySelection->Extent();
|
||||||
|
|
||||||
Standard_Integer aLastSelNum = AIS_Selection::Extent();
|
|
||||||
myMainVS->Init();
|
myMainVS->Init();
|
||||||
if (!myMainVS->More())
|
if (!myMainVS->More())
|
||||||
{
|
{
|
||||||
@ -290,7 +303,7 @@ AIS_StatusOfPick AIS_LocalContext::Select (const TColgp_Array1OfPnt2d& thePolyli
|
|||||||
// it can be helpful to classify this owner immediately...
|
// it can be helpful to classify this owner immediately...
|
||||||
if (!anOwner->IsSelected())
|
if (!anOwner->IsSelected())
|
||||||
{
|
{
|
||||||
AIS_Selection::AddSelect (anOwner);
|
mySelection->AddSelect (anOwner);
|
||||||
anOwner->SetSelected (Standard_True);
|
anOwner->SetSelected (Standard_True);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -302,7 +315,7 @@ AIS_StatusOfPick AIS_LocalContext::Select (const TColgp_Array1OfPnt2d& thePolyli
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Integer aSelNum = AIS_Selection::Extent();
|
Standard_Integer aSelNum = mySelection->Extent();
|
||||||
return (aSelNum == 1) ? AIS_SOP_OneSelected
|
return (aSelNum == 1) ? AIS_SOP_OneSelected
|
||||||
: (aSelNum > 1) ? AIS_SOP_SeveralSelected
|
: (aSelNum > 1) ? AIS_SOP_SeveralSelected
|
||||||
: AIS_SOP_Error;
|
: AIS_SOP_Error;
|
||||||
@ -315,15 +328,13 @@ AIS_StatusOfPick AIS_LocalContext::Select (const TColgp_Array1OfPnt2d& thePolyli
|
|||||||
AIS_StatusOfPick AIS_LocalContext::ShiftSelect (const Standard_Boolean toUpdateViewer)
|
AIS_StatusOfPick AIS_LocalContext::ShiftSelect (const Standard_Boolean toUpdateViewer)
|
||||||
{
|
{
|
||||||
Standard_Integer aDetIndex = DetectedIndex();
|
Standard_Integer aDetIndex = DetectedIndex();
|
||||||
AIS_Selection::SetCurrentSelection (mySelName.ToCString());
|
|
||||||
|
|
||||||
if(aDetIndex > 0)
|
if(aDetIndex > 0)
|
||||||
{
|
{
|
||||||
AIS_Selection::SetCurrentSelection (mySelName.ToCString());
|
Standard_Integer aSelNum = mySelection->Extent();
|
||||||
Standard_Integer aSelNum = AIS_Selection::Extent();
|
|
||||||
const Handle(SelectMgr_EntityOwner)& anOwner = myMapOfOwner->FindKey (aDetIndex);
|
const Handle(SelectMgr_EntityOwner)& anOwner = myMapOfOwner->FindKey (aDetIndex);
|
||||||
Standard_Boolean toSelect = anOwner->IsSelected() ? Standard_False : Standard_True;
|
Standard_Boolean toSelect = anOwner->IsSelected() ? Standard_False : Standard_True;
|
||||||
AIS_Selection::Select (anOwner);
|
mySelection->Select (anOwner);
|
||||||
anOwner->SetSelected (toSelect);
|
anOwner->SetSelected (toSelect);
|
||||||
|
|
||||||
if(myAutoHilight)
|
if(myAutoHilight)
|
||||||
@ -348,7 +359,7 @@ AIS_StatusOfPick AIS_LocalContext::ShiftSelect (const Standard_Boolean toUpdateV
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Integer NS = AIS_Selection::Extent();
|
Standard_Integer NS = mySelection->Extent();
|
||||||
if( NS == 1 ) return AIS_SOP_OneSelected;
|
if( NS == 1 ) return AIS_SOP_OneSelected;
|
||||||
else if( NS > 1 ) return AIS_SOP_SeveralSelected;
|
else if( NS > 1 ) return AIS_SOP_SeveralSelected;
|
||||||
return aSelNum == 0 ? AIS_SOP_NothingSelected : AIS_SOP_Removed;
|
return aSelNum == 0 ? AIS_SOP_NothingSelected : AIS_SOP_Removed;
|
||||||
@ -373,8 +384,7 @@ AIS_StatusOfPick AIS_LocalContext::ShiftSelect (const Standard_Integer theXPMin
|
|||||||
{
|
{
|
||||||
myMainVS->Pick (theXPMin, theYPMin, theXPMax, theYPMax, theView);
|
myMainVS->Pick (theXPMin, theYPMin, theXPMax, theYPMax, theView);
|
||||||
|
|
||||||
AIS_Selection::SetCurrentSelection (mySelName.ToCString());
|
Standard_Integer aLastSelNum = mySelection->Extent();
|
||||||
Standard_Integer aLastSelNum = AIS_Selection::Extent();
|
|
||||||
|
|
||||||
myMainVS->Init();
|
myMainVS->Init();
|
||||||
if (!myMainVS->More())
|
if (!myMainVS->More())
|
||||||
@ -396,7 +406,7 @@ AIS_StatusOfPick AIS_LocalContext::ShiftSelect (const Standard_Integer theXPMin
|
|||||||
if(myFilters->IsOk (anOwner))
|
if(myFilters->IsOk (anOwner))
|
||||||
{
|
{
|
||||||
Standard_Boolean toSelect = anOwner->IsSelected() ? Standard_False : Standard_True;
|
Standard_Boolean toSelect = anOwner->IsSelected() ? Standard_False : Standard_True;
|
||||||
AIS_Selection::Select (anOwner);
|
mySelection->Select (anOwner);
|
||||||
anOwner->SetSelected (toSelect);
|
anOwner->SetSelected (toSelect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -407,7 +417,7 @@ AIS_StatusOfPick AIS_LocalContext::ShiftSelect (const Standard_Integer theXPMin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Integer aSelNum = AIS_Selection::Extent();
|
Standard_Integer aSelNum = mySelection->Extent();
|
||||||
|
|
||||||
return (aSelNum == 1) ? AIS_SOP_OneSelected
|
return (aSelNum == 1) ? AIS_SOP_OneSelected
|
||||||
: (aSelNum > 1) ? AIS_SOP_SeveralSelected
|
: (aSelNum > 1) ? AIS_SOP_SeveralSelected
|
||||||
@ -426,9 +436,7 @@ AIS_StatusOfPick AIS_LocalContext::ShiftSelect (const TColgp_Array1OfPnt2d& theP
|
|||||||
{
|
{
|
||||||
myMainVS->Pick (thePolyline, theView);
|
myMainVS->Pick (thePolyline, theView);
|
||||||
|
|
||||||
AIS_Selection::SetCurrentSelection (mySelName.ToCString());
|
Standard_Integer aLastSelNum = mySelection->Extent();
|
||||||
|
|
||||||
Standard_Integer aLastSelNum = AIS_Selection::Extent();
|
|
||||||
myMainVS->Init();
|
myMainVS->Init();
|
||||||
if(!myMainVS->More())
|
if(!myMainVS->More())
|
||||||
{
|
{
|
||||||
@ -449,7 +457,7 @@ AIS_StatusOfPick AIS_LocalContext::ShiftSelect (const TColgp_Array1OfPnt2d& theP
|
|||||||
if (myFilters->IsOk (anOwner))
|
if (myFilters->IsOk (anOwner))
|
||||||
{
|
{
|
||||||
Standard_Boolean toSelect = anOwner->IsSelected() ? Standard_False : Standard_True;
|
Standard_Boolean toSelect = anOwner->IsSelected() ? Standard_False : Standard_True;
|
||||||
AIS_Selection::Select (anOwner);
|
mySelection->Select (anOwner);
|
||||||
anOwner->SetSelected (toSelect);
|
anOwner->SetSelected (toSelect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -459,7 +467,7 @@ AIS_StatusOfPick AIS_LocalContext::ShiftSelect (const TColgp_Array1OfPnt2d& theP
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Integer aSelNum = AIS_Selection::Extent();
|
Standard_Integer aSelNum = mySelection->Extent();
|
||||||
|
|
||||||
return (aSelNum == 1) ? AIS_SOP_OneSelected
|
return (aSelNum == 1) ? AIS_SOP_OneSelected
|
||||||
: (aSelNum > 1) ? AIS_SOP_SeveralSelected
|
: (aSelNum > 1) ? AIS_SOP_SeveralSelected
|
||||||
@ -516,8 +524,7 @@ void AIS_LocalContext::Unhilight (const Handle(SelectMgr_EntityOwner)& theOwner,
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
void AIS_LocalContext::HilightPicked(const Standard_Boolean updateviewer)
|
void AIS_LocalContext::HilightPicked(const Standard_Boolean updateviewer)
|
||||||
{
|
{
|
||||||
Handle(AIS_Selection) Sel = AIS_Selection::Selection(mySelName.ToCString());
|
if( mySelection.IsNull() ) return;
|
||||||
if( Sel.IsNull() ) return;
|
|
||||||
|
|
||||||
typedef NCollection_DataMap <Handle(SelectMgr_SelectableObject), NCollection_Handle<SelectMgr_SequenceOfOwner> > SelectMgr_DataMapOfObjectOwners;
|
typedef NCollection_DataMap <Handle(SelectMgr_SelectableObject), NCollection_Handle<SelectMgr_SequenceOfOwner> > SelectMgr_DataMapOfObjectOwners;
|
||||||
SelectMgr_DataMapOfObjectOwners aMap;
|
SelectMgr_DataMapOfObjectOwners aMap;
|
||||||
@ -525,7 +532,7 @@ void AIS_LocalContext::HilightPicked(const Standard_Boolean updateviewer)
|
|||||||
Handle (PrsMgr_PresentationManager3d) PM = myMainPM;
|
Handle (PrsMgr_PresentationManager3d) PM = myMainPM;
|
||||||
|
|
||||||
// to avoid problems when there is a loop searching for selected objects...
|
// to avoid problems when there is a loop searching for selected objects...
|
||||||
const AIS_NListTransient& Obj = Sel->Objects();
|
const AIS_NListTransient& Obj = mySelection->Objects();
|
||||||
AIS_NListTransient::Iterator anIter( Obj );
|
AIS_NListTransient::Iterator anIter( Obj );
|
||||||
for(; anIter.More(); anIter.Next())
|
for(; anIter.More(); anIter.Next())
|
||||||
{
|
{
|
||||||
@ -575,12 +582,11 @@ void AIS_LocalContext::UnhilightPicked (const Standard_Boolean updateviewer)
|
|||||||
{
|
{
|
||||||
myMainPM->ClearImmediateDraw();
|
myMainPM->ClearImmediateDraw();
|
||||||
|
|
||||||
Handle(AIS_Selection) Sel = AIS_Selection::Selection(mySelName.ToCString());
|
if( mySelection.IsNull() ) return;
|
||||||
if( Sel.IsNull() ) return;
|
|
||||||
Handle (PrsMgr_PresentationManager3d) PM = myMainPM;
|
Handle (PrsMgr_PresentationManager3d) PM = myMainPM;
|
||||||
NCollection_Map<Handle(SelectMgr_SelectableObject)> anObjMap;
|
NCollection_Map<Handle(SelectMgr_SelectableObject)> anObjMap;
|
||||||
|
|
||||||
const AIS_NListTransient& Obj = Sel->Objects();
|
const AIS_NListTransient& Obj = mySelection->Objects();
|
||||||
AIS_NListTransient::Iterator anIter( Obj );
|
AIS_NListTransient::Iterator anIter( Obj );
|
||||||
for(; anIter.More(); anIter.Next()){
|
for(; anIter.More(); anIter.Next()){
|
||||||
const Handle(Standard_Transient)& Tr = anIter.Value();
|
const Handle(Standard_Transient)& Tr = anIter.Value();
|
||||||
@ -639,8 +645,7 @@ Standard_Boolean AIS_LocalContext::IsSelected (const Handle(SelectMgr_EntityOwne
|
|||||||
void AIS_LocalContext::
|
void AIS_LocalContext::
|
||||||
InitSelected()
|
InitSelected()
|
||||||
{
|
{
|
||||||
AIS_Selection::SetCurrentSelection(mySelName.ToCString());
|
mySelection->Init();
|
||||||
AIS_Selection::CurrentSelection()->Init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//==================================================
|
//==================================================
|
||||||
@ -650,7 +655,7 @@ InitSelected()
|
|||||||
Standard_Boolean AIS_LocalContext::
|
Standard_Boolean AIS_LocalContext::
|
||||||
MoreSelected() const
|
MoreSelected() const
|
||||||
{
|
{
|
||||||
return AIS_Selection::CurrentSelection()->More();
|
return mySelection->More();
|
||||||
}
|
}
|
||||||
|
|
||||||
//==================================================
|
//==================================================
|
||||||
@ -660,7 +665,7 @@ MoreSelected() const
|
|||||||
void AIS_LocalContext::
|
void AIS_LocalContext::
|
||||||
NextSelected()
|
NextSelected()
|
||||||
{
|
{
|
||||||
AIS_Selection::CurrentSelection()->Next();
|
mySelection->Next();
|
||||||
}
|
}
|
||||||
|
|
||||||
//==================================================
|
//==================================================
|
||||||
@ -670,7 +675,7 @@ NextSelected()
|
|||||||
Standard_Boolean AIS_LocalContext::
|
Standard_Boolean AIS_LocalContext::
|
||||||
HasShape() const
|
HasShape() const
|
||||||
{
|
{
|
||||||
Handle(Standard_Transient) Tr = AIS_Selection::CurrentSelection()->Value();
|
Handle(Standard_Transient) Tr = mySelection->Value();
|
||||||
if( Tr.IsNull() ) return Standard_False;
|
if( Tr.IsNull() ) return Standard_False;
|
||||||
Handle(SelectMgr_EntityOwner) EO = Handle(SelectMgr_EntityOwner)::DownCast (Tr);
|
Handle(SelectMgr_EntityOwner) EO = Handle(SelectMgr_EntityOwner)::DownCast (Tr);
|
||||||
Handle(StdSelect_BRepOwner) BRO = Handle(StdSelect_BRepOwner)::DownCast(EO);
|
Handle(StdSelect_BRepOwner) BRO = Handle(StdSelect_BRepOwner)::DownCast(EO);
|
||||||
@ -686,10 +691,10 @@ HasShape() const
|
|||||||
//================================================================
|
//================================================================
|
||||||
Standard_Boolean AIS_LocalContext::HasSelectedShape() const
|
Standard_Boolean AIS_LocalContext::HasSelectedShape() const
|
||||||
{
|
{
|
||||||
if (AIS_Selection::CurrentSelection()->Extent() == 0)
|
if (mySelection->Extent() == 0)
|
||||||
return Standard_False;
|
return Standard_False;
|
||||||
|
|
||||||
Handle(Standard_Transient) aCurSelection = AIS_Selection::CurrentSelection()->Value();
|
Handle(Standard_Transient) aCurSelection = mySelection->Value();
|
||||||
if (aCurSelection.IsNull())
|
if (aCurSelection.IsNull())
|
||||||
return Standard_False;
|
return Standard_False;
|
||||||
|
|
||||||
@ -708,7 +713,7 @@ Standard_Boolean AIS_LocalContext::HasSelectedShape() const
|
|||||||
//==================================================
|
//==================================================
|
||||||
TopoDS_Shape AIS_LocalContext::SelectedShape() const
|
TopoDS_Shape AIS_LocalContext::SelectedShape() const
|
||||||
{
|
{
|
||||||
Handle(Standard_Transient) aTr = AIS_Selection::CurrentSelection()->Value();
|
Handle(Standard_Transient) aTr = mySelection->Value();
|
||||||
Handle(SelectMgr_EntityOwner) anEO = Handle(SelectMgr_EntityOwner)::DownCast (aTr);
|
Handle(SelectMgr_EntityOwner) anEO = Handle(SelectMgr_EntityOwner)::DownCast (aTr);
|
||||||
Handle(StdSelect_BRepOwner) aBRO = Handle(StdSelect_BRepOwner)::DownCast(anEO);
|
Handle(StdSelect_BRepOwner) aBRO = Handle(StdSelect_BRepOwner)::DownCast(anEO);
|
||||||
if( aBRO.IsNull() )
|
if( aBRO.IsNull() )
|
||||||
@ -727,7 +732,7 @@ Handle(AIS_InteractiveObject) AIS_LocalContext::
|
|||||||
SelectedInteractive() const
|
SelectedInteractive() const
|
||||||
{
|
{
|
||||||
Handle(AIS_InteractiveObject) IO;
|
Handle(AIS_InteractiveObject) IO;
|
||||||
Handle(Standard_Transient) Tr = AIS_Selection::CurrentSelection()->Value();
|
Handle(Standard_Transient) Tr = mySelection->Value();
|
||||||
if( !Tr.IsNull() ) {
|
if( !Tr.IsNull() ) {
|
||||||
Handle(SelectMgr_EntityOwner) EO = Handle(SelectMgr_EntityOwner)::DownCast (Tr);
|
Handle(SelectMgr_EntityOwner) EO = Handle(SelectMgr_EntityOwner)::DownCast (Tr);
|
||||||
Handle(SelectMgr_SelectableObject) SO;
|
Handle(SelectMgr_SelectableObject) SO;
|
||||||
@ -746,7 +751,7 @@ Handle(SelectMgr_EntityOwner) AIS_LocalContext::
|
|||||||
SelectedOwner() const
|
SelectedOwner() const
|
||||||
{
|
{
|
||||||
Handle(SelectMgr_EntityOwner) EO;
|
Handle(SelectMgr_EntityOwner) EO;
|
||||||
Handle(Standard_Transient) Tr = AIS_Selection::CurrentSelection()->Value();
|
Handle(Standard_Transient) Tr = mySelection->Value();
|
||||||
if( !Tr.IsNull() )
|
if( !Tr.IsNull() )
|
||||||
EO = Handle(SelectMgr_EntityOwner)::DownCast (Tr);
|
EO = Handle(SelectMgr_EntityOwner)::DownCast (Tr);
|
||||||
return EO;
|
return EO;
|
||||||
@ -797,12 +802,9 @@ void AIS_LocalContext::UpdateSelected(const Handle(AIS_InteractiveObject)& anobj
|
|||||||
if (anobj.IsNull() || anobj->IsAutoHilight())
|
if (anobj.IsNull() || anobj->IsAutoHilight())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
AIS_Selection::SetCurrentSelection(mySelName.ToCString());
|
|
||||||
Handle(AIS_Selection) Sel = AIS_Selection::CurrentSelection();
|
|
||||||
|
|
||||||
SelectMgr_SequenceOfOwner aSeq;
|
SelectMgr_SequenceOfOwner aSeq;
|
||||||
for ( Sel->Init(); Sel->More(); Sel->Next() ){
|
for (mySelection->Init(); mySelection->More(); mySelection->Next() ){
|
||||||
Handle(SelectMgr_EntityOwner) aOwner = Handle(SelectMgr_EntityOwner)::DownCast(Sel->Value());
|
Handle(SelectMgr_EntityOwner) aOwner = Handle(SelectMgr_EntityOwner)::DownCast(mySelection->Value());
|
||||||
|
|
||||||
if ( !aOwner.IsNull() && aOwner->HasSelectable() && aOwner->Selectable() == anobj )
|
if ( !aOwner.IsNull() && aOwner->HasSelectable() && aOwner->Selectable() == anobj )
|
||||||
aSeq.Append( aOwner );
|
aSeq.Append( aOwner );
|
||||||
@ -825,10 +827,8 @@ void AIS_LocalContext::UpdateSelected(const Handle(AIS_InteractiveObject)& anobj
|
|||||||
void AIS_LocalContext::ClearSelected (const Standard_Boolean updateviewer)
|
void AIS_LocalContext::ClearSelected (const Standard_Boolean updateviewer)
|
||||||
{
|
{
|
||||||
UnhilightPicked(updateviewer);
|
UnhilightPicked(updateviewer);
|
||||||
AIS_Selection::SetCurrentSelection(mySelName.ToCString());
|
|
||||||
|
|
||||||
Handle(AIS_Selection) Sel = AIS_Selection::CurrentSelection();
|
const AIS_NListTransient& Obj = mySelection->Objects();
|
||||||
const AIS_NListTransient& Obj = Sel->Objects();
|
|
||||||
AIS_NListTransient::Iterator anIter( Obj );
|
AIS_NListTransient::Iterator anIter( Obj );
|
||||||
for(; anIter.More(); anIter.Next()){
|
for(; anIter.More(); anIter.Next()){
|
||||||
const Handle(Standard_Transient)& Tr = anIter.Value();
|
const Handle(Standard_Transient)& Tr = anIter.Value();
|
||||||
@ -837,7 +837,7 @@ void AIS_LocalContext::ClearSelected (const Standard_Boolean updateviewer)
|
|||||||
(*((const Handle(SelectMgr_EntityOwner)*)&Tr))->SetSelected (Standard_False);
|
(*((const Handle(SelectMgr_EntityOwner)*)&Tr))->SetSelected (Standard_False);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AIS_Selection::Select();
|
mySelection->Select();
|
||||||
mylastindex = 0;
|
mylastindex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -918,8 +918,7 @@ void AIS_LocalContext::ClearOutdatedSelection (const Handle(AIS_InteractiveObjec
|
|||||||
|
|
||||||
// 3. AIS_Selection : remove entity owners from AIS_Selection
|
// 3. AIS_Selection : remove entity owners from AIS_Selection
|
||||||
const Handle(V3d_Viewer)& aViewer = myCTX->CurrentViewer();
|
const Handle(V3d_Viewer)& aViewer = myCTX->CurrentViewer();
|
||||||
Handle(AIS_Selection) aSelection = AIS_Selection::Selection (mySelName.ToCString());
|
AIS_NListTransient::Iterator anIter (mySelection->Objects());
|
||||||
AIS_NListTransient::Iterator anIter (aSelection->Objects());
|
|
||||||
AIS_NListTransient aRemoveEntites;
|
AIS_NListTransient aRemoveEntites;
|
||||||
for (; anIter.More(); anIter.Next())
|
for (; anIter.More(); anIter.Next())
|
||||||
{
|
{
|
||||||
@ -946,7 +945,7 @@ void AIS_LocalContext::ClearOutdatedSelection (const Handle(AIS_InteractiveObjec
|
|||||||
AIS_NListTransient::Iterator anIterRemove (aRemoveEntites);
|
AIS_NListTransient::Iterator anIterRemove (aRemoveEntites);
|
||||||
for (; anIterRemove.More(); anIterRemove.Next())
|
for (; anIterRemove.More(); anIterRemove.Next())
|
||||||
{
|
{
|
||||||
aSelection->Select (anIterRemove.Value());
|
mySelection->Select (anIterRemove.Value());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. AIS_LocalContext - myMapOfOwner : remove entity owners from myMapOfOwner
|
// 4. AIS_LocalContext - myMapOfOwner : remove entity owners from myMapOfOwner
|
||||||
@ -1045,8 +1044,6 @@ void AIS_LocalContext::SetSelected(const Handle(AIS_InteractiveObject)& anIObj,
|
|||||||
//1st case, owner already <anIObj> as owner
|
//1st case, owner already <anIObj> as owner
|
||||||
// and not separated is found...
|
// and not separated is found...
|
||||||
|
|
||||||
Handle(AIS_Selection) sel = AIS_Selection::Selection(mySelName.ToCString());
|
|
||||||
//Standard_Boolean found(Standard_False);
|
|
||||||
Handle(Standard_Transient) Tr;
|
Handle(Standard_Transient) Tr;
|
||||||
Handle(SelectMgr_EntityOwner) EO = FindSelectedOwnerFromIO(anIObj);
|
Handle(SelectMgr_EntityOwner) EO = FindSelectedOwnerFromIO(anIObj);
|
||||||
if(EO.IsNull()){
|
if(EO.IsNull()){
|
||||||
@ -1065,7 +1062,7 @@ void AIS_LocalContext::SetSelected(const Handle(AIS_InteractiveObject)& anIObj,
|
|||||||
|
|
||||||
ClearSelected(Standard_False);
|
ClearSelected(Standard_False);
|
||||||
|
|
||||||
AIS_Selection::Select(EO);
|
mySelection->Select(EO);
|
||||||
EO->SetSelected (Standard_True);
|
EO->SetSelected (Standard_True);
|
||||||
|
|
||||||
HilightPicked(updateviewer);
|
HilightPicked(updateviewer);
|
||||||
@ -1103,12 +1100,9 @@ void AIS_LocalContext::AddOrRemoveSelected(const Handle(AIS_InteractiveObject)&
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// cout<<"AIS_LocalContext::AddOrRemoveSelected : Selection = "<<mySelName<<endl;
|
if (!mySelection.IsNull())
|
||||||
const Handle(AIS_Selection)& S = AIS_Selection::Selection(mySelName.ToCString());
|
|
||||||
|
|
||||||
if (!S.IsNull())
|
|
||||||
{
|
{
|
||||||
AIS_SelectStatus aStatus = S->Select(EO);
|
AIS_SelectStatus aStatus = mySelection->Select(EO);
|
||||||
EO->SetSelected (aStatus == AIS_SS_Added);
|
EO->SetSelected (aStatus == AIS_SS_Added);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1126,7 +1120,7 @@ void AIS_LocalContext::AddOrRemoveSelected(const TopoDS_Shape& Sh,
|
|||||||
Handle(SelectMgr_EntityOwner) EO = FindSelectedOwnerFromShape(Sh);
|
Handle(SelectMgr_EntityOwner) EO = FindSelectedOwnerFromShape(Sh);
|
||||||
if (!EO.IsNull())
|
if (!EO.IsNull())
|
||||||
{
|
{
|
||||||
AIS_Selection::Selection(mySelName.ToCString())->Select(EO);
|
mySelection->Select(EO);
|
||||||
EO->SetSelected (Standard_True);
|
EO->SetSelected (Standard_True);
|
||||||
}
|
}
|
||||||
HilightPicked (updateviewer);
|
HilightPicked (updateviewer);
|
||||||
@ -1142,7 +1136,7 @@ void AIS_LocalContext::AddOrRemoveSelected (const Handle(SelectMgr_EntityOwner)&
|
|||||||
|
|
||||||
Standard_Boolean toSelect = theOwner->IsSelected() ? Standard_False : Standard_True;
|
Standard_Boolean toSelect = theOwner->IsSelected() ? Standard_False : Standard_True;
|
||||||
|
|
||||||
AIS_Selection::Selection (mySelName.ToCString())->Select (theOwner);
|
mySelection->Select(theOwner);
|
||||||
theOwner->SetSelected (toSelect);
|
theOwner->SetSelected (toSelect);
|
||||||
|
|
||||||
if(myAutoHilight)
|
if(myAutoHilight)
|
||||||
@ -1261,14 +1255,13 @@ Standard_Boolean AIS_LocalContext::HasDetectedShape() const
|
|||||||
const TopoDS_Shape&
|
const TopoDS_Shape&
|
||||||
AIS_LocalContext::DetectedShape() const
|
AIS_LocalContext::DetectedShape() const
|
||||||
{
|
{
|
||||||
static TopoDS_Shape bidsh;
|
|
||||||
if(mylastindex != 0)
|
if(mylastindex != 0)
|
||||||
{
|
{
|
||||||
Handle(StdSelect_BRepOwner) BROwnr = Handle(StdSelect_BRepOwner)::DownCast(myMapOfOwner->FindKey (mylastindex));
|
Handle(StdSelect_BRepOwner) BROwnr = Handle(StdSelect_BRepOwner)::DownCast(myMapOfOwner->FindKey (mylastindex));
|
||||||
if(BROwnr.IsNull()) return bidsh;
|
if(BROwnr.IsNull()) return AIS_myDummyShape;
|
||||||
return BROwnr->Shape();
|
return BROwnr->Shape();
|
||||||
}
|
}
|
||||||
return bidsh;
|
return AIS_myDummyShape;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -1446,8 +1439,7 @@ Handle(SelectMgr_EntityOwner) AIS_LocalContext::FindSelectedOwnerFromIO
|
|||||||
Handle(SelectMgr_EntityOwner) EO,bid;
|
Handle(SelectMgr_EntityOwner) EO,bid;
|
||||||
if (anIObj.IsNull()) return EO;
|
if (anIObj.IsNull()) return EO;
|
||||||
|
|
||||||
Handle(AIS_Selection) Sel = AIS_Selection::Selection(mySelName.ToCString());
|
if(mySelection.IsNull()) {
|
||||||
if(Sel.IsNull()) {
|
|
||||||
#ifdef OCCT_DEBUG
|
#ifdef OCCT_DEBUG
|
||||||
cout<<"\t\tAIS_LocalCOntext::FindSelectedOwnerFromShape : Selection "
|
cout<<"\t\tAIS_LocalCOntext::FindSelectedOwnerFromShape : Selection "
|
||||||
<<mySelName<<" Nulle "<<endl;
|
<<mySelName<<" Nulle "<<endl;
|
||||||
@ -1455,7 +1447,7 @@ Handle(SelectMgr_EntityOwner) AIS_LocalContext::FindSelectedOwnerFromIO
|
|||||||
return EO;
|
return EO;
|
||||||
}
|
}
|
||||||
Standard_Boolean found(Standard_False);
|
Standard_Boolean found(Standard_False);
|
||||||
const AIS_NListTransient& Obj = Sel->Objects();
|
const AIS_NListTransient& Obj = mySelection->Objects();
|
||||||
AIS_NListTransient::Iterator anIter( Obj );
|
AIS_NListTransient::Iterator anIter( Obj );
|
||||||
for(; anIter.More(); anIter.Next()){
|
for(; anIter.More(); anIter.Next()){
|
||||||
const Handle(Standard_Transient)& Tr = anIter.Value();
|
const Handle(Standard_Transient)& Tr = anIter.Value();
|
||||||
@ -1485,8 +1477,7 @@ Handle(SelectMgr_EntityOwner) AIS_LocalContext::FindSelectedOwnerFromShape(const
|
|||||||
Handle(SelectMgr_EntityOwner) EO, bid;
|
Handle(SelectMgr_EntityOwner) EO, bid;
|
||||||
if (sh.IsNull()) return EO;
|
if (sh.IsNull()) return EO;
|
||||||
|
|
||||||
Handle(AIS_Selection) Sel = AIS_Selection::Selection(mySelName.ToCString());
|
if(mySelection.IsNull()) {
|
||||||
if(Sel.IsNull()) {
|
|
||||||
#ifdef OCCT_DEBUG
|
#ifdef OCCT_DEBUG
|
||||||
cout<<"\t\tAIS_LocalCOntext::FindSelectedOwnerFromShape : Selection "<<mySelName<<" Nulle "<<endl;
|
cout<<"\t\tAIS_LocalCOntext::FindSelectedOwnerFromShape : Selection "<<mySelName<<" Nulle "<<endl;
|
||||||
#endif
|
#endif
|
||||||
@ -1546,13 +1537,11 @@ void AIS_LocalContext::NextDetected()
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
const TopoDS_Shape& AIS_LocalContext::DetectedCurrentShape() const
|
const TopoDS_Shape& AIS_LocalContext::DetectedCurrentShape() const
|
||||||
{
|
{
|
||||||
static TopoDS_Shape aDummyShape;
|
|
||||||
|
|
||||||
Handle(AIS_Shape) aCurrentShape = Handle(AIS_Shape)::DownCast (DetectedCurrentObject());
|
Handle(AIS_Shape) aCurrentShape = Handle(AIS_Shape)::DownCast (DetectedCurrentObject());
|
||||||
|
|
||||||
if (aCurrentShape.IsNull())
|
if (aCurrentShape.IsNull())
|
||||||
{
|
{
|
||||||
return aDummyShape;
|
return AIS_myDummyShape;
|
||||||
}
|
}
|
||||||
|
|
||||||
return aCurrentShape->Shape();
|
return aCurrentShape->Shape();
|
||||||
|
@ -87,9 +87,7 @@ void AIS_Point::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPresentat
|
|||||||
StdPrs_Point::Add(aPresentation,myComponent,myDrawer);
|
StdPrs_Point::Add(aPresentation,myComponent,myDrawer);
|
||||||
else if (aMode== -99)
|
else if (aMode== -99)
|
||||||
{
|
{
|
||||||
// Beeurk.. a revoir - rob-25/04/97
|
Handle(Graphic3d_AspectMarker3d) PtA = new Graphic3d_AspectMarker3d ();
|
||||||
static Handle(Graphic3d_AspectMarker3d) PtA =
|
|
||||||
new Graphic3d_AspectMarker3d ();
|
|
||||||
PtA->SetType(Aspect_TOM_PLUS);
|
PtA->SetType(Aspect_TOM_PLUS);
|
||||||
PtA->SetScale(3.);
|
PtA->SetScale(3.);
|
||||||
Handle(Graphic3d_Group) TheGroup = Prs3d_Root::CurrentGroup(aPresentation);
|
Handle(Graphic3d_Group) TheGroup = Prs3d_Root::CurrentGroup(aPresentation);
|
||||||
|
@ -21,147 +21,50 @@
|
|||||||
#include <Standard_Transient.hxx>
|
#include <Standard_Transient.hxx>
|
||||||
#include <Standard_Type.hxx>
|
#include <Standard_Type.hxx>
|
||||||
#include <Standard_TypeMismatch.hxx>
|
#include <Standard_TypeMismatch.hxx>
|
||||||
#include <TCollection_AsciiString.hxx>
|
|
||||||
#include <TColStd_SequenceOfTransient.hxx>
|
|
||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(AIS_Selection,MMgt_TShared)
|
IMPLEMENT_STANDARD_RTTIEXT(AIS_Selection,MMgt_TShared)
|
||||||
|
|
||||||
#define MaxSizeOfResult 100000
|
#define MaxSizeOfResult 100000
|
||||||
|
|
||||||
//current selection (handle)
|
|
||||||
static Handle(AIS_Selection) theCurrentSelection;
|
|
||||||
static void AIS_Sel_CurrentSelection (Handle(AIS_Selection)& InputSel)
|
|
||||||
{
|
|
||||||
if(!InputSel.IsNull())
|
|
||||||
theCurrentSelection = InputSel;
|
|
||||||
else
|
|
||||||
InputSel = theCurrentSelection;
|
|
||||||
}
|
|
||||||
|
|
||||||
static TColStd_SequenceOfTransient& AIS_Sel_GetSelections()
|
|
||||||
{
|
|
||||||
static TColStd_SequenceOfTransient Selections;
|
|
||||||
return Selections;
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : AIS_Selection
|
//function : AIS_Selection
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
AIS_Selection::AIS_Selection(const Standard_CString aName) :
|
AIS_Selection::AIS_Selection() :
|
||||||
myName(TCollection_AsciiString(aName)),
|
|
||||||
myNb(0)
|
myNb(0)
|
||||||
{
|
{
|
||||||
myResultMap.ReSize( MaxSizeOfResult ); // for maximum performnace on medium selections ( < 100000 objects )
|
myResultMap.ReSize( MaxSizeOfResult ); // for maximum performnace on medium selections ( < 100000 objects )
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : CreateSelection
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
Standard_Boolean AIS_Selection::CreateSelection(const Standard_CString aName)
|
|
||||||
{
|
|
||||||
Handle(AIS_Selection) S = AIS_Selection::Selection(aName);
|
|
||||||
if(!S.IsNull())
|
|
||||||
return Standard_False;
|
|
||||||
S = new AIS_Selection(aName);
|
|
||||||
AIS_Sel_GetSelections().Prepend(S);
|
|
||||||
AIS_Sel_CurrentSelection(S);
|
|
||||||
return Standard_True;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : Selection
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
Handle(AIS_Selection) AIS_Selection::Selection(const Standard_CString aName)
|
|
||||||
{
|
|
||||||
Handle(AIS_Selection) S;
|
|
||||||
if(AIS_Sel_GetSelections().IsEmpty()) return S;
|
|
||||||
|
|
||||||
Handle(Standard_Transient) curobj;
|
|
||||||
Handle(AIS_Selection) Sel;
|
|
||||||
// Standard_Boolean found(Standard_False);
|
|
||||||
for(Standard_Integer I =1; I<= AIS_Sel_GetSelections().Length();I++){
|
|
||||||
curobj = AIS_Sel_GetSelections().Value(I);
|
|
||||||
Sel = Handle(AIS_Selection)::DownCast (curobj);
|
|
||||||
if(Sel->myName.IsEqual(aName))
|
|
||||||
return Sel;
|
|
||||||
}
|
|
||||||
|
|
||||||
return S;
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : Find
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
Standard_Boolean AIS_Selection::Find(const Standard_CString aName)
|
|
||||||
{
|
|
||||||
Handle(AIS_Selection) S = AIS_Selection::Selection(aName);
|
|
||||||
return !S.IsNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : SetCurrentSelection
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
Standard_Boolean AIS_Selection::SetCurrentSelection (const Standard_CString aName)
|
|
||||||
{
|
|
||||||
AIS_Selection::CreateSelection(aName);
|
|
||||||
|
|
||||||
|
|
||||||
Handle(AIS_Selection) anAISSelection = AIS_Selection::Selection(aName) ;
|
|
||||||
AIS_Sel_CurrentSelection ( anAISSelection ) ;
|
|
||||||
return Standard_True;
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : Select
|
//function : Select
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void AIS_Selection::Select()
|
void AIS_Selection::Select()
|
||||||
{
|
{
|
||||||
Handle(AIS_Selection) S;
|
myNb=0;
|
||||||
AIS_Sel_CurrentSelection (S);
|
myresult.Clear();
|
||||||
if(!S.IsNull()){
|
myResultMap.Clear();
|
||||||
S->myNb=0;
|
|
||||||
S->myresult.Clear();
|
|
||||||
S->myResultMap.Clear();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : CurrentSelection
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
Handle(AIS_Selection) AIS_Selection::CurrentSelection() {
|
|
||||||
Handle(AIS_Selection) S;
|
|
||||||
AIS_Sel_CurrentSelection (S);
|
|
||||||
return S;
|
|
||||||
}
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : Select
|
//function : Select
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
AIS_SelectStatus AIS_Selection::Select(const Handle(Standard_Transient)& anObject)
|
AIS_SelectStatus AIS_Selection::Select(const Handle(Standard_Transient)& anObject)
|
||||||
{
|
{
|
||||||
Handle(AIS_Selection) S;
|
|
||||||
AIS_Sel_CurrentSelection (S);
|
|
||||||
if(S.IsNull()) return AIS_SS_NotDone;
|
|
||||||
Handle(AIS_InteractiveObject) anAISObj;
|
Handle(AIS_InteractiveObject) anAISObj;
|
||||||
Handle(SelectMgr_EntityOwner) owner = Handle(SelectMgr_EntityOwner)::DownCast( anObject );
|
Handle(SelectMgr_EntityOwner) owner = Handle(SelectMgr_EntityOwner)::DownCast( anObject );
|
||||||
if ( owner.IsNull() )
|
if ( owner.IsNull() )
|
||||||
anAISObj = Handle(AIS_InteractiveObject)::DownCast( anObject );
|
anAISObj = Handle(AIS_InteractiveObject)::DownCast( anObject );
|
||||||
if ( S->myResultMap.IsBound( anObject ) ){
|
if ( myResultMap.IsBound( anObject ) ){
|
||||||
AIS_NListTransient::Iterator aListIter = S->myResultMap.Find( anObject );
|
AIS_NListTransient::Iterator aListIter = myResultMap.Find( anObject );
|
||||||
//skt-----------------------------------------------------------------
|
//skt-----------------------------------------------------------------
|
||||||
if( S->myIterator == aListIter ) {
|
if( myIterator == aListIter ) {
|
||||||
if( S->myIterator.More() )
|
if( myIterator.More() )
|
||||||
S->myIterator.Next();
|
myIterator.Next();
|
||||||
else
|
else
|
||||||
S->myIterator = AIS_NListTransient::Iterator();
|
myIterator = AIS_NListTransient::Iterator();
|
||||||
}
|
}
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
// In the mode of advanced mesh selection only one owner is created
|
// In the mode of advanced mesh selection only one owner is created
|
||||||
@ -170,16 +73,16 @@ AIS_SelectStatus AIS_Selection::Select(const Handle(Standard_Transient)& anObjec
|
|||||||
// the same as previous selected (IsForcedHilight call)
|
// the same as previous selected (IsForcedHilight call)
|
||||||
if( !anAISObj.IsNull() || ( !owner.IsNull() && !owner->IsForcedHilight() ) )
|
if( !anAISObj.IsNull() || ( !owner.IsNull() && !owner->IsForcedHilight() ) )
|
||||||
{
|
{
|
||||||
S->myresult.Remove( aListIter );
|
myresult.Remove( aListIter );
|
||||||
S->myResultMap.UnBind( anObject );
|
myResultMap.UnBind( anObject );
|
||||||
|
|
||||||
// update list iterator for next object in <myresult> list if any
|
// update list iterator for next object in <myresult> list if any
|
||||||
if ( aListIter.More() ){
|
if ( aListIter.More() ){
|
||||||
const Handle(Standard_Transient)& aNextObject = aListIter.Value();
|
const Handle(Standard_Transient)& aNextObject = aListIter.Value();
|
||||||
if ( S->myResultMap.IsBound( aNextObject ) )
|
if ( myResultMap.IsBound( aNextObject ) )
|
||||||
S->myResultMap( aNextObject ) = aListIter;
|
myResultMap( aNextObject ) = aListIter;
|
||||||
else
|
else
|
||||||
S->myResultMap.Bind( aNextObject, aListIter );
|
myResultMap.Bind( aNextObject, aListIter );
|
||||||
}
|
}
|
||||||
return AIS_SS_Removed;
|
return AIS_SS_Removed;
|
||||||
}
|
}
|
||||||
@ -188,8 +91,8 @@ AIS_SelectStatus AIS_Selection::Select(const Handle(Standard_Transient)& anObjec
|
|||||||
}
|
}
|
||||||
|
|
||||||
AIS_NListTransient::Iterator aListIter;
|
AIS_NListTransient::Iterator aListIter;
|
||||||
S->myresult.Append( anObject, aListIter );
|
myresult.Append( anObject, aListIter );
|
||||||
S->myResultMap.Bind( anObject, aListIter );
|
myResultMap.Bind( anObject, aListIter );
|
||||||
return AIS_SS_Added;
|
return AIS_SS_Added;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,16 +102,12 @@ AIS_SelectStatus AIS_Selection::Select(const Handle(Standard_Transient)& anObjec
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
AIS_SelectStatus AIS_Selection::AddSelect(const Handle(Standard_Transient)& anObject)
|
AIS_SelectStatus AIS_Selection::AddSelect(const Handle(Standard_Transient)& anObject)
|
||||||
{
|
{
|
||||||
Handle(AIS_Selection) S;
|
if ( myResultMap.IsBound( anObject ) )
|
||||||
AIS_Sel_CurrentSelection (S);
|
|
||||||
if(S.IsNull()) return AIS_SS_NotDone;
|
|
||||||
|
|
||||||
if ( S->myResultMap.IsBound( anObject ) )
|
|
||||||
return AIS_SS_NotDone;
|
return AIS_SS_NotDone;
|
||||||
|
|
||||||
AIS_NListTransient::Iterator aListIter;
|
AIS_NListTransient::Iterator aListIter;
|
||||||
S->myresult.Append( anObject, aListIter );
|
myresult.Append( anObject, aListIter );
|
||||||
S->myResultMap.Bind( anObject, aListIter );
|
myResultMap.Bind( anObject, aListIter );
|
||||||
return AIS_SS_Added;
|
return AIS_SS_Added;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,14 +117,10 @@ AIS_SelectStatus AIS_Selection::AddSelect(const Handle(Standard_Transient)& anOb
|
|||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
|
||||||
void AIS_Selection::ClearAndSelect(const Handle(Standard_Transient)& anObject) {
|
void AIS_Selection::ClearAndSelect(const Handle(Standard_Transient)& anObject)
|
||||||
Handle(AIS_Selection) S;
|
{
|
||||||
AIS_Sel_CurrentSelection (S);
|
|
||||||
if(S.IsNull()) return;
|
|
||||||
|
|
||||||
Select();
|
Select();
|
||||||
Select(anObject);
|
Select(anObject);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -233,14 +128,9 @@ void AIS_Selection::ClearAndSelect(const Handle(Standard_Transient)& anObject) {
|
|||||||
//function : Extent
|
//function : Extent
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
Standard_Integer AIS_Selection::Extent() {
|
Standard_Integer AIS_Selection::Extent() const
|
||||||
Handle(AIS_Selection) S;
|
{
|
||||||
AIS_Sel_CurrentSelection (S);
|
return myresult.Extent();
|
||||||
|
|
||||||
if (S.IsNull())
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return S->myresult.Extent();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -249,63 +139,16 @@ Standard_Integer AIS_Selection::Extent() {
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
Handle(Standard_Transient) AIS_Selection::Single()
|
Handle(Standard_Transient) AIS_Selection::Single()
|
||||||
{
|
{
|
||||||
Handle(AIS_Selection) S;
|
Init();
|
||||||
AIS_Sel_CurrentSelection (S);
|
return Value();
|
||||||
|
|
||||||
if (S.IsNull())
|
|
||||||
return Handle(Standard_Transient)();
|
|
||||||
|
|
||||||
S->Init();
|
|
||||||
return S->Value();
|
|
||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : IsSelected
|
//function : IsSelected
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
Standard_Boolean AIS_Selection::IsSelected(const Handle(Standard_Transient)& anObject)
|
Standard_Boolean AIS_Selection::IsSelected(const Handle(Standard_Transient)& anObject) const
|
||||||
{
|
{
|
||||||
Handle(AIS_Selection) S;
|
return myResultMap.IsBound( anObject );
|
||||||
AIS_Sel_CurrentSelection (S);
|
|
||||||
if(S.IsNull()) return Standard_False;
|
|
||||||
return S->myResultMap.IsBound( anObject );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : Index
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
|
|
||||||
Standard_Integer AIS_Selection::Index(const Standard_CString aName)
|
|
||||||
{
|
|
||||||
Handle (Standard_Transient) curobj;
|
|
||||||
for(Standard_Integer I =1; I<= AIS_Sel_GetSelections().Length();I++){
|
|
||||||
curobj = AIS_Sel_GetSelections().Value(I);
|
|
||||||
if(Handle(AIS_Selection)::DownCast (curobj)->myName.IsEqual(aName))
|
|
||||||
return I;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : Remove
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
|
|
||||||
void AIS_Selection::Remove(const Standard_CString aName)
|
|
||||||
{
|
|
||||||
Standard_Integer I = AIS_Selection::Index(aName);
|
|
||||||
if(I!=0) {
|
|
||||||
Handle(AIS_Selection) selection = Handle(AIS_Selection)::DownCast( AIS_Sel_GetSelections().Value(I) );
|
|
||||||
Standard_Integer stored = selection->NbStored();
|
|
||||||
if ( stored )
|
|
||||||
selection->Select();
|
|
||||||
AIS_Sel_GetSelections().Remove(I);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// clean the static current selection handle
|
|
||||||
void AIS_Selection::ClearCurrentSelection()
|
|
||||||
{
|
|
||||||
theCurrentSelection.Nullify();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -20,7 +20,6 @@
|
|||||||
#include <Standard.hxx>
|
#include <Standard.hxx>
|
||||||
#include <Standard_Type.hxx>
|
#include <Standard_Type.hxx>
|
||||||
|
|
||||||
#include <TCollection_AsciiString.hxx>
|
|
||||||
#include <AIS_NListTransient.hxx>
|
#include <AIS_NListTransient.hxx>
|
||||||
#include <AIS_NListIteratorOfListTransient.hxx>
|
#include <AIS_NListIteratorOfListTransient.hxx>
|
||||||
#include <AIS_NDataMapOfTransientIteratorOfListTransient.hxx>
|
#include <AIS_NDataMapOfTransientIteratorOfListTransient.hxx>
|
||||||
@ -45,63 +44,33 @@ class AIS_Selection : public MMgt_TShared
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
//! creates a new selection and make it current in the session.
|
//! creates a new selection.
|
||||||
//! the selection will be accessible later through its name
|
|
||||||
//! to make it again current.
|
|
||||||
//!
|
|
||||||
//! Note that if a session has been created, a session with
|
|
||||||
//! the name "default" is created.
|
|
||||||
//!
|
|
||||||
//! In this case, the is always a current selection which
|
|
||||||
//! is the last one created until SetCurrentSelection is used.
|
|
||||||
//!
|
|
||||||
//! The class methods deals with the current selection.
|
|
||||||
//!
|
|
||||||
//! Warning : Better Call AIS_Selection::CreateSelection.
|
|
||||||
Standard_EXPORT AIS_Selection(const Standard_CString aName);
|
|
||||||
|
|
||||||
Standard_EXPORT static void Remove (const Standard_CString aName);
|
Standard_EXPORT AIS_Selection();
|
||||||
|
|
||||||
//! returns True if a selection having this name exsits.
|
//! removes all the object of the selection.
|
||||||
Standard_EXPORT static Standard_Boolean Find (const Standard_CString aName);
|
Standard_EXPORT void Select();
|
||||||
|
|
||||||
//! calls the private constructor and puts the new Selection
|
//! if the object is not yet in the selection, it will be added.
|
||||||
//! in the list of existing selections.
|
//! if the object is already in the selection, it will be removed.
|
||||||
//! returns False if the selection exists.
|
Standard_EXPORT AIS_SelectStatus Select (const Handle(Standard_Transient)& anObject);
|
||||||
Standard_EXPORT static Standard_Boolean CreateSelection (const Standard_CString aName);
|
|
||||||
|
|
||||||
Standard_EXPORT static Handle(AIS_Selection) Selection (const Standard_CString aName);
|
|
||||||
|
|
||||||
//! returns False if There is no selection of name <aName>
|
|
||||||
Standard_EXPORT static Standard_Boolean SetCurrentSelection (const Standard_CString aName);
|
|
||||||
|
|
||||||
Standard_EXPORT static Handle(AIS_Selection) CurrentSelection();
|
|
||||||
|
|
||||||
//! Clears selection.
|
|
||||||
Standard_EXPORT static void ClearCurrentSelection();
|
|
||||||
|
|
||||||
//! removes all the object of the currentselection.
|
|
||||||
Standard_EXPORT static void Select();
|
|
||||||
|
|
||||||
//! if the object is not yet in the current selection, it will be added.
|
|
||||||
//! if the object is already in the current selection, it will be removed.
|
|
||||||
Standard_EXPORT static AIS_SelectStatus Select (const Handle(Standard_Transient)& anObject);
|
|
||||||
|
|
||||||
//! the object is always add int the selection.
|
//! the object is always add int the selection.
|
||||||
//! faster when the number of objects selected is great.
|
//! faster when the number of objects selected is great.
|
||||||
Standard_EXPORT static AIS_SelectStatus AddSelect (const Handle(Standard_Transient)& anObject);
|
Standard_EXPORT AIS_SelectStatus AddSelect (const Handle(Standard_Transient)& anObject);
|
||||||
|
|
||||||
//! clears the selection and adds the object in the selection.
|
//! clears the selection and adds the object in the selection.
|
||||||
Standard_EXPORT static void ClearAndSelect (const Handle(Standard_Transient)& anObject);
|
Standard_EXPORT void ClearAndSelect (const Handle(Standard_Transient)& anObject);
|
||||||
|
|
||||||
Standard_EXPORT static Standard_Boolean IsSelected (const Handle(Standard_Transient)& anObject);
|
//! checks if the object is in the selection.
|
||||||
|
Standard_EXPORT Standard_Boolean IsSelected (const Handle(Standard_Transient)& anObject) const;
|
||||||
|
|
||||||
//! returns the number of objects selected.
|
//! returns the number of objects selected.
|
||||||
Standard_EXPORT static Standard_Integer Extent();
|
Standard_EXPORT Standard_Integer Extent() const;
|
||||||
|
|
||||||
//! returns the single object selected.
|
//! returns the single object selected.
|
||||||
//! Warning: raises TypeMismatch from Standard if Extent is not equal to 1.
|
//! Warning: raises TypeMismatch from Standard if Extent is not equal to 1.
|
||||||
Standard_EXPORT static Handle(Standard_Transient) Single();
|
Standard_EXPORT Handle(Standard_Transient) Single();
|
||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
|
|
||||||
@ -115,11 +84,6 @@ public:
|
|||||||
|
|
||||||
const AIS_NListTransient& Objects() const;
|
const AIS_NListTransient& Objects() const;
|
||||||
|
|
||||||
Standard_EXPORT static Standard_Integer Index (const Standard_CString aName);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DEFINE_STANDARD_RTTIEXT(AIS_Selection,MMgt_TShared)
|
DEFINE_STANDARD_RTTIEXT(AIS_Selection,MMgt_TShared)
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -129,8 +93,6 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
||||||
TCollection_AsciiString myName;
|
|
||||||
AIS_NListTransient myresult;
|
AIS_NListTransient myresult;
|
||||||
AIS_NListIteratorOfListTransient myIterator;
|
AIS_NListIteratorOfListTransient myIterator;
|
||||||
AIS_NDataMapOfTransientIteratorOfListTransient myResultMap;
|
AIS_NDataMapOfTransientIteratorOfListTransient myResultMap;
|
||||||
|
@ -70,8 +70,6 @@
|
|||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(AIS_Shape,AIS_InteractiveObject)
|
IMPLEMENT_STANDARD_RTTIEXT(AIS_Shape,AIS_InteractiveObject)
|
||||||
|
|
||||||
static Standard_Boolean myFirstCompute;
|
|
||||||
|
|
||||||
static Standard_Boolean IsInList(const TColStd_ListOfInteger& LL, const Standard_Integer aMode)
|
static Standard_Boolean IsInList(const TColStd_ListOfInteger& LL, const Standard_Integer aMode)
|
||||||
{
|
{
|
||||||
TColStd_ListIteratorOfListOfInteger It(LL);
|
TColStd_ListIteratorOfListOfInteger It(LL);
|
||||||
@ -92,7 +90,6 @@ AIS_InteractiveObject(PrsMgr_TOP_ProjectorDependant),
|
|||||||
myInitAng(0.)
|
myInitAng(0.)
|
||||||
{
|
{
|
||||||
Set (shap);
|
Set (shap);
|
||||||
myFirstCompute = Standard_True;
|
|
||||||
SetHilightMode(0);
|
SetHilightMode(0);
|
||||||
myDrawer->SetShadingAspectGlobal(Standard_False);
|
myDrawer->SetShadingAspectGlobal(Standard_False);
|
||||||
}
|
}
|
||||||
@ -398,8 +395,7 @@ void AIS_Shape::ComputeSelection(const Handle(SelectMgr_Selection)& aSelection,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static TopAbs_ShapeEnum TypOfSel;
|
TopAbs_ShapeEnum TypOfSel = AIS_Shape::SelectionType(aMode);
|
||||||
TypOfSel = AIS_Shape::SelectionType(aMode);
|
|
||||||
TopoDS_Shape shape = myshape;
|
TopoDS_Shape shape = myshape;
|
||||||
|
|
||||||
// POP protection against crash in low layers
|
// POP protection against crash in low layers
|
||||||
|
@ -118,7 +118,6 @@ Graphic3d_Structure.pxx
|
|||||||
Graphic3d_StructureDefinitionError.hxx
|
Graphic3d_StructureDefinitionError.hxx
|
||||||
Graphic3d_StructureManager.cxx
|
Graphic3d_StructureManager.cxx
|
||||||
Graphic3d_StructureManager.hxx
|
Graphic3d_StructureManager.hxx
|
||||||
Graphic3d_StructureManager.pxx
|
|
||||||
Graphic3d_StructureManagerPtr.hxx
|
Graphic3d_StructureManagerPtr.hxx
|
||||||
Graphic3d_StructurePtr.hxx
|
Graphic3d_StructurePtr.hxx
|
||||||
Graphic3d_TextPath.hxx
|
Graphic3d_TextPath.hxx
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include "Graphic3d_Structure.pxx"
|
#include "Graphic3d_Structure.pxx"
|
||||||
#include <Graphic3d_StructureManager.hxx>
|
#include <Graphic3d_StructureManager.hxx>
|
||||||
#include <Graphic3d_TransModeFlags.hxx>
|
#include <Graphic3d_TransModeFlags.hxx>
|
||||||
|
#include <Graphic3d_GraphicDriver.hxx>
|
||||||
|
|
||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(Graphic3d_CStructure,Standard_Transient)
|
IMPLEMENT_STANDARD_RTTIEXT(Graphic3d_CStructure,Standard_Transient)
|
||||||
@ -26,8 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(Graphic3d_CStructure,Standard_Transient)
|
|||||||
//purpose :
|
//purpose :
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
Graphic3d_CStructure::Graphic3d_CStructure (const Handle(Graphic3d_StructureManager)& theManager)
|
Graphic3d_CStructure::Graphic3d_CStructure (const Handle(Graphic3d_StructureManager)& theManager)
|
||||||
: Id (theManager->NewIdentification()),
|
: myZLayer (Graphic3d_ZLayerId_Default),
|
||||||
myZLayer (Graphic3d_ZLayerId_Default),
|
|
||||||
Priority (Structure_MAX_PRIORITY / 2),
|
Priority (Structure_MAX_PRIORITY / 2),
|
||||||
PreviousPriority (Structure_MAX_PRIORITY / 2),
|
PreviousPriority (Structure_MAX_PRIORITY / 2),
|
||||||
ContainsFacet (0),
|
ContainsFacet (0),
|
||||||
@ -41,6 +41,8 @@ Graphic3d_CStructure::Graphic3d_CStructure (const Handle(Graphic3d_StructureMana
|
|||||||
Is2dText (Standard_False),
|
Is2dText (Standard_False),
|
||||||
myGraphicDriver (theManager->GraphicDriver())
|
myGraphicDriver (theManager->GraphicDriver())
|
||||||
{
|
{
|
||||||
|
Id = myGraphicDriver->NewIdentification();
|
||||||
|
|
||||||
ContextLine.IsDef = 1,
|
ContextLine.IsDef = 1,
|
||||||
ContextFillArea.IsDef = 1,
|
ContextFillArea.IsDef = 1,
|
||||||
ContextMarker.IsDef = 1,
|
ContextMarker.IsDef = 1,
|
||||||
|
@ -55,3 +55,21 @@ void Graphic3d_GraphicDriver::ResetDeviceLostFlag()
|
|||||||
{
|
{
|
||||||
myDeviceLostFlag = Standard_False;
|
myDeviceLostFlag = Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : NewIdentification
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
Standard_Integer Graphic3d_GraphicDriver::NewIdentification()
|
||||||
|
{
|
||||||
|
return myStructGenId.Next();
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : RemoveIdentification
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void Graphic3d_GraphicDriver::RemoveIdentification(const Standard_Integer theId)
|
||||||
|
{
|
||||||
|
myStructGenId.Free(theId);
|
||||||
|
}
|
@ -40,6 +40,7 @@
|
|||||||
#include <Standard_Address.hxx>
|
#include <Standard_Address.hxx>
|
||||||
#include <Image_PixMap.hxx>
|
#include <Image_PixMap.hxx>
|
||||||
#include <Graphic3d_BufferType.hxx>
|
#include <Graphic3d_BufferType.hxx>
|
||||||
|
#include <Aspect_GenId.hxx>
|
||||||
#include <Aspect_Handle.hxx>
|
#include <Aspect_Handle.hxx>
|
||||||
#include <Aspect_PrintAlgo.hxx>
|
#include <Aspect_PrintAlgo.hxx>
|
||||||
#include <Graphic3d_ExportFormat.hxx>
|
#include <Graphic3d_ExportFormat.hxx>
|
||||||
@ -139,6 +140,12 @@ public:
|
|||||||
|
|
||||||
Standard_EXPORT void ResetDeviceLostFlag();
|
Standard_EXPORT void ResetDeviceLostFlag();
|
||||||
|
|
||||||
|
//! Returns a new identification number for a new structure.
|
||||||
|
Standard_EXPORT Standard_Integer NewIdentification();
|
||||||
|
|
||||||
|
//! Frees the identifier of a structure.
|
||||||
|
Standard_EXPORT void RemoveIdentification(const Standard_Integer theId);
|
||||||
|
|
||||||
DEFINE_STANDARD_RTTIEXT(Graphic3d_GraphicDriver,MMgt_TShared)
|
DEFINE_STANDARD_RTTIEXT(Graphic3d_GraphicDriver,MMgt_TShared)
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -150,6 +157,8 @@ protected:
|
|||||||
Handle(Aspect_DisplayConnection) myDisplayConnection;
|
Handle(Aspect_DisplayConnection) myDisplayConnection;
|
||||||
Standard_Boolean myDeviceLostFlag;
|
Standard_Boolean myDeviceLostFlag;
|
||||||
|
|
||||||
|
Aspect_GenId myStructGenId;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -1009,8 +1009,10 @@ typedef struct _Material
|
|||||||
Graphic3d_TypeOfMaterial type;
|
Graphic3d_TypeOfMaterial type;
|
||||||
} Material;
|
} Material;
|
||||||
|
|
||||||
static Material theMaterials[] =
|
namespace
|
||||||
{
|
{
|
||||||
|
static const Material theMaterials[] =
|
||||||
|
{
|
||||||
{"Brass", Graphic3d_MATERIAL_PHYSIC},
|
{"Brass", Graphic3d_MATERIAL_PHYSIC},
|
||||||
{"Bronze", Graphic3d_MATERIAL_PHYSIC},
|
{"Bronze", Graphic3d_MATERIAL_PHYSIC},
|
||||||
{"Copper", Graphic3d_MATERIAL_PHYSIC},
|
{"Copper", Graphic3d_MATERIAL_PHYSIC},
|
||||||
@ -1035,7 +1037,8 @@ static Material theMaterials[] =
|
|||||||
{"Glass", Graphic3d_MATERIAL_PHYSIC},
|
{"Glass", Graphic3d_MATERIAL_PHYSIC},
|
||||||
{"Diamond", Graphic3d_MATERIAL_PHYSIC}
|
{"Diamond", Graphic3d_MATERIAL_PHYSIC}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
// function : NumberOfMaterials
|
// function : NumberOfMaterials
|
||||||
|
@ -188,15 +188,9 @@ void Graphic3d_Structure::Remove()
|
|||||||
|
|
||||||
// Destruction of me in the graphic library
|
// Destruction of me in the graphic library
|
||||||
const Standard_Integer aStructId = myCStructure->Id;
|
const Standard_Integer aStructId = myCStructure->Id;
|
||||||
|
myCStructure->GraphicDriver()->RemoveIdentification(aStructId);
|
||||||
myCStructure->GraphicDriver()->RemoveStructure (myCStructure);
|
myCStructure->GraphicDriver()->RemoveStructure (myCStructure);
|
||||||
myCStructure.Nullify();
|
myCStructure.Nullify();
|
||||||
|
|
||||||
// Liberation of the identification if the destroyed structure
|
|
||||||
// in the first manager that performs creation of the structure.
|
|
||||||
if (myFirstStructureManager != NULL)
|
|
||||||
{
|
|
||||||
myFirstStructureManager->Remove (aStructId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
@ -20,12 +20,4 @@
|
|||||||
#define Structure_MAX_PRIORITY 10
|
#define Structure_MAX_PRIORITY 10
|
||||||
#define Structure_MIN_PRIORITY 0
|
#define Structure_MIN_PRIORITY 0
|
||||||
|
|
||||||
#include "Graphic3d_StructureManager.pxx"
|
|
||||||
|
|
||||||
// structures identifiers : possible range
|
|
||||||
// check the value of View_IDMAX (must be < Structure_IDMIN)
|
|
||||||
#define Structure_IDMIN 10001
|
|
||||||
// /2 pour eviter les problemes d'overflow
|
|
||||||
#define Structure_IDMAX INT_MAX/2
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -30,65 +30,17 @@
|
|||||||
#include <Graphic3d_InitialisationError.hxx>
|
#include <Graphic3d_InitialisationError.hxx>
|
||||||
#include <Graphic3d_Structure.hxx>
|
#include <Graphic3d_Structure.hxx>
|
||||||
#include <Graphic3d_StructureManager.hxx>
|
#include <Graphic3d_StructureManager.hxx>
|
||||||
#include "Graphic3d_StructureManager.pxx"
|
|
||||||
#include <Standard_Transient.hxx>
|
#include <Standard_Transient.hxx>
|
||||||
#include <Standard_Type.hxx>
|
#include <Standard_Type.hxx>
|
||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(Graphic3d_StructureManager,MMgt_TShared)
|
IMPLEMENT_STANDARD_RTTIEXT(Graphic3d_StructureManager,MMgt_TShared)
|
||||||
|
|
||||||
static Standard_Boolean Initialisation = Standard_True;
|
|
||||||
static int StructureManager_ArrayId[StructureManager_MAX];
|
|
||||||
static Standard_Integer StructureManager_CurrentId = 0;
|
|
||||||
|
|
||||||
#include "Graphic3d_Structure.pxx"
|
|
||||||
#include <Graphic3d_MapIteratorOfMapOfStructure.hxx>
|
#include <Graphic3d_MapIteratorOfMapOfStructure.hxx>
|
||||||
#include <Graphic3d_CView.hxx>
|
#include <Graphic3d_CView.hxx>
|
||||||
|
|
||||||
Graphic3d_StructureManager::Graphic3d_StructureManager (const Handle(Graphic3d_GraphicDriver)& theDriver)
|
Graphic3d_StructureManager::Graphic3d_StructureManager (const Handle(Graphic3d_GraphicDriver)& theDriver)
|
||||||
: myViewGenId (0, 31)
|
: myViewGenId (0, 31)
|
||||||
{
|
{
|
||||||
|
|
||||||
Standard_Real Coef;
|
|
||||||
Standard_Integer i;
|
|
||||||
Standard_Boolean NotFound = Standard_True;
|
|
||||||
Standard_Integer Limit = Graphic3d_StructureManager::Limit ();
|
|
||||||
|
|
||||||
/* Initialize PHIGS and start up */
|
|
||||||
if (Initialisation) {
|
|
||||||
|
|
||||||
Initialisation = Standard_False;
|
|
||||||
/* table to manage IDs of StructureManager */
|
|
||||||
for (i=0; i<Limit; i++) StructureManager_ArrayId[i] = 0;
|
|
||||||
|
|
||||||
StructureManager_CurrentId = 0;
|
|
||||||
StructureManager_ArrayId[0] = 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
for (i=0; i<Limit && NotFound; i++)
|
|
||||||
if (StructureManager_ArrayId[i] == 0) {
|
|
||||||
NotFound = Standard_False;
|
|
||||||
StructureManager_CurrentId = i;
|
|
||||||
StructureManager_ArrayId[i] = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (NotFound)
|
|
||||||
{
|
|
||||||
Standard_SStream anErrorDescription;
|
|
||||||
anErrorDescription<<"You are trying to create too many ViewManagers at the same time!\n"<<
|
|
||||||
"The number of simultaneously created ViewManagers can't exceed "<<Limit<<".\n";
|
|
||||||
Graphic3d_InitialisationError::Raise(anErrorDescription);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Coef = (Structure_IDMIN+Structure_IDMAX)/Limit;
|
|
||||||
Aspect_GenId theGenId(
|
|
||||||
Standard_Integer (Structure_IDMIN+Coef*(StructureManager_CurrentId)),
|
|
||||||
Standard_Integer (Structure_IDMIN+Coef*(StructureManager_CurrentId+1)-1));
|
|
||||||
myStructGenId = theGenId;
|
|
||||||
|
|
||||||
myId = StructureManager_CurrentId;
|
|
||||||
|
|
||||||
myAspectLine3d = new Graphic3d_AspectLine3d ();
|
myAspectLine3d = new Graphic3d_AspectLine3d ();
|
||||||
myAspectText3d = new Graphic3d_AspectText3d ();
|
myAspectText3d = new Graphic3d_AspectText3d ();
|
||||||
myAspectMarker3d = new Graphic3d_AspectMarker3d ();
|
myAspectMarker3d = new Graphic3d_AspectMarker3d ();
|
||||||
@ -106,7 +58,6 @@ Graphic3d_StructureManager::~Graphic3d_StructureManager ()
|
|||||||
myDisplayedStructure.Clear ();
|
myDisplayedStructure.Clear ();
|
||||||
myHighlightedStructure.Clear ();
|
myHighlightedStructure.Clear ();
|
||||||
myDefinedViews.Clear();
|
myDefinedViews.Clear();
|
||||||
StructureManager_ArrayId[myId] = 0;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,12 +178,6 @@ Handle(Graphic3d_AspectFillArea3d) Graphic3d_StructureManager::FillArea3dAspect
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Graphic3d_StructureManager::Remove (const Standard_Integer theId) {
|
|
||||||
|
|
||||||
myStructGenId.Free (theId);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void Graphic3d_StructureManager::DisplayedStructures (Graphic3d_MapOfStructure& SG) const {
|
void Graphic3d_StructureManager::DisplayedStructures (Graphic3d_MapOfStructure& SG) const {
|
||||||
|
|
||||||
SG.Assign(myDisplayedStructure);
|
SG.Assign(myDisplayedStructure);
|
||||||
@ -264,14 +209,6 @@ void Graphic3d_StructureManager::HighlightedStructures (Graphic3d_MapOfStructure
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Integer Graphic3d_StructureManager::NewIdentification () {
|
|
||||||
|
|
||||||
Standard_Integer Id = myStructGenId.Next ();
|
|
||||||
|
|
||||||
return Id;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Handle(Graphic3d_Structure) Graphic3d_StructureManager::Identification (const Standard_Integer AId) const {
|
Handle(Graphic3d_Structure) Graphic3d_StructureManager::Identification (const Standard_Integer AId) const {
|
||||||
|
|
||||||
// Standard_Integer ind=0;
|
// Standard_Integer ind=0;
|
||||||
@ -299,28 +236,9 @@ Handle(Graphic3d_Structure) Graphic3d_StructureManager::Identification (const St
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Integer Graphic3d_StructureManager::Identification () const {
|
const Handle(Graphic3d_GraphicDriver)& Graphic3d_StructureManager::GraphicDriver () const
|
||||||
|
{
|
||||||
return (myId);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Standard_Integer Graphic3d_StructureManager::Limit () {
|
|
||||||
|
|
||||||
return (StructureManager_MAX);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Standard_Integer Graphic3d_StructureManager::CurrentId () {
|
|
||||||
|
|
||||||
return (StructureManager_CurrentId);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
const Handle(Graphic3d_GraphicDriver)& Graphic3d_StructureManager::GraphicDriver () const {
|
|
||||||
|
|
||||||
return (myGraphicDriver);
|
return (myGraphicDriver);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Graphic3d_StructureManager::RecomputeStructures()
|
void Graphic3d_StructureManager::RecomputeStructures()
|
||||||
|
@ -129,9 +129,6 @@ public:
|
|||||||
//! Returns the values of the current default attributes.
|
//! Returns the values of the current default attributes.
|
||||||
Standard_EXPORT Handle(Graphic3d_AspectFillArea3d) FillArea3dAspect() const;
|
Standard_EXPORT Handle(Graphic3d_AspectFillArea3d) FillArea3dAspect() const;
|
||||||
|
|
||||||
//! Returns maximum number of managers defineable.
|
|
||||||
Standard_EXPORT static Standard_Integer Limit();
|
|
||||||
|
|
||||||
//! Returns the values of the current default attributes.
|
//! Returns the values of the current default attributes.
|
||||||
Standard_EXPORT Handle(Graphic3d_AspectLine3d) Line3dAspect() const;
|
Standard_EXPORT Handle(Graphic3d_AspectLine3d) Line3dAspect() const;
|
||||||
|
|
||||||
@ -144,9 +141,6 @@ public:
|
|||||||
//! Returns the values of the current default attributes.
|
//! Returns the values of the current default attributes.
|
||||||
Standard_EXPORT Handle(Graphic3d_AspectText3d) Text3dAspect() const;
|
Standard_EXPORT Handle(Graphic3d_AspectText3d) Text3dAspect() const;
|
||||||
|
|
||||||
//! Returns a current identifier available.
|
|
||||||
Standard_EXPORT static Standard_Integer CurrentId();
|
|
||||||
|
|
||||||
//! Forces a new construction of the structure.
|
//! Forces a new construction of the structure.
|
||||||
//! if <theStructure> is displayed and TOS_COMPUTED.
|
//! if <theStructure> is displayed and TOS_COMPUTED.
|
||||||
Standard_EXPORT virtual void ReCompute (const Handle(Graphic3d_Structure)& theStructure);
|
Standard_EXPORT virtual void ReCompute (const Handle(Graphic3d_Structure)& theStructure);
|
||||||
@ -200,15 +194,9 @@ public:
|
|||||||
//! view must have an identification and we have different managers.
|
//! view must have an identification and we have different managers.
|
||||||
Standard_EXPORT Standard_Integer MaxNumOfViews() const;
|
Standard_EXPORT Standard_Integer MaxNumOfViews() const;
|
||||||
|
|
||||||
//! Returns the identification number of the manager.
|
|
||||||
Standard_EXPORT virtual Standard_Integer Identification() const;
|
|
||||||
|
|
||||||
//! Returns the structure with the identification number <AId>.
|
//! Returns the structure with the identification number <AId>.
|
||||||
Standard_EXPORT virtual Handle(Graphic3d_Structure) Identification (const Standard_Integer AId) const;
|
Standard_EXPORT virtual Handle(Graphic3d_Structure) Identification (const Standard_Integer AId) const;
|
||||||
|
|
||||||
//! Returns a new identification number for a new structure in the manager.
|
|
||||||
Standard_EXPORT Standard_Integer NewIdentification();
|
|
||||||
|
|
||||||
//! Suppress the highlighting on the structure <AStructure>.
|
//! Suppress the highlighting on the structure <AStructure>.
|
||||||
Standard_EXPORT virtual void UnHighlight (const Handle(Graphic3d_Structure)& AStructure);
|
Standard_EXPORT virtual void UnHighlight (const Handle(Graphic3d_Structure)& AStructure);
|
||||||
|
|
||||||
@ -237,15 +225,7 @@ protected:
|
|||||||
//! Returns the structure displayed in visualizer <me>.
|
//! Returns the structure displayed in visualizer <me>.
|
||||||
Standard_EXPORT Standard_Integer NumberOfDisplayedStructures() const;
|
Standard_EXPORT Standard_Integer NumberOfDisplayedStructures() const;
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
//! Frees the identifier of a structure.
|
|
||||||
void Remove (const Standard_Integer theId);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
Standard_Integer myId;
|
Standard_Integer myId;
|
||||||
Aspect_GenId myStructGenId;
|
|
||||||
Aspect_GenId myViewGenId;
|
Aspect_GenId myViewGenId;
|
||||||
Aspect_TypeOfUpdate myUpdateMode;
|
Aspect_TypeOfUpdate myUpdateMode;
|
||||||
Handle(Graphic3d_AspectLine3d) myAspectLine3d;
|
Handle(Graphic3d_AspectLine3d) myAspectLine3d;
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
// Copyright (c) 1995-1999 Matra Datavision
|
|
||||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
|
||||||
//
|
|
||||||
// This file is part of Open CASCADE Technology software library.
|
|
||||||
//
|
|
||||||
// This library is free software; you can redistribute it and/or modify it under
|
|
||||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
|
||||||
// by the Free Software Foundation, with special exception defined in the file
|
|
||||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
|
||||||
// distribution for complete text of the license and disclaimer of any warranty.
|
|
||||||
//
|
|
||||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
|
||||||
// commercial license or contractual agreement.
|
|
||||||
|
|
||||||
#ifndef STRUCTUREMANAGER_PXX_INCLUDED
|
|
||||||
#define STRUCTUREMANAGER_PXX_INCLUDED
|
|
||||||
|
|
||||||
//static Standard_Boolean Initialisation = Standard_True;
|
|
||||||
|
|
||||||
#define StructureManager_MAX 100
|
|
||||||
|
|
||||||
//static int StructureManager_ArrayId[StructureManager_MAX];
|
|
||||||
|
|
||||||
//static Standard_Integer StructureManager_CurrentId = 0;
|
|
||||||
|
|
||||||
#endif
|
|
@ -24,20 +24,4 @@
|
|||||||
typedef Graphic3d_CLight OpenGl_Light;
|
typedef Graphic3d_CLight OpenGl_Light;
|
||||||
typedef Graphic3d_ListOfCLight OpenGl_ListOfLight;
|
typedef Graphic3d_ListOfCLight OpenGl_ListOfLight;
|
||||||
|
|
||||||
static inline OpenGl_ListOfLight& OpenGl_NoShadingLight()
|
|
||||||
{
|
|
||||||
static OpenGl_ListOfLight aLights;
|
|
||||||
if (aLights.IsEmpty())
|
|
||||||
{
|
|
||||||
OpenGl_Light aLight;
|
|
||||||
aLight.Type = Graphic3d_TOLS_AMBIENT;
|
|
||||||
aLight.IsHeadlight = Standard_False;
|
|
||||||
aLight.Color.r() = 1.;
|
|
||||||
aLight.Color.g() = 1.;
|
|
||||||
aLight.Color.b() = 1.;
|
|
||||||
aLights.Append (aLight);
|
|
||||||
}
|
|
||||||
return aLights;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // OpenGl_Light_Header
|
#endif // OpenGl_Light_Header
|
||||||
|
@ -104,6 +104,14 @@ OpenGl_View::OpenGl_View (const Handle(Graphic3d_StructureManager)& theMgr,
|
|||||||
if (sscanf (anAaEnv, "%d", &v) > 0) myAntiAliasing = v;
|
if (sscanf (anAaEnv, "%d", &v) > 0) myAntiAliasing = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OpenGl_Light aLight;
|
||||||
|
aLight.Type = Graphic3d_TOLS_AMBIENT;
|
||||||
|
aLight.IsHeadlight = Standard_False;
|
||||||
|
aLight.Color.r() = 1.;
|
||||||
|
aLight.Color.g() = 1.;
|
||||||
|
aLight.Color.b() = 1.;
|
||||||
|
myNoShadingLight.Append (aLight);
|
||||||
|
|
||||||
myCurrLightSourceState = myStateCounter->Increment();
|
myCurrLightSourceState = myStateCounter->Increment();
|
||||||
myMainSceneFbos[0] = new OpenGl_FrameBuffer();
|
myMainSceneFbos[0] = new OpenGl_FrameBuffer();
|
||||||
myMainSceneFbos[1] = new OpenGl_FrameBuffer();
|
myMainSceneFbos[1] = new OpenGl_FrameBuffer();
|
||||||
|
@ -565,6 +565,7 @@ protected:
|
|||||||
Handle(Graphic3d_TextureEnv) myTextureEnvData;
|
Handle(Graphic3d_TextureEnv) myTextureEnvData;
|
||||||
Graphic3d_GraduatedTrihedron myGTrihedronData;
|
Graphic3d_GraduatedTrihedron myGTrihedronData;
|
||||||
|
|
||||||
|
OpenGl_ListOfLight myNoShadingLight;
|
||||||
OpenGl_ListOfLight myLights;
|
OpenGl_ListOfLight myLights;
|
||||||
OpenGl_LayerList myZLayers; //!< main list of displayed structure, sorted by layers
|
OpenGl_LayerList myZLayers; //!< main list of displayed structure, sorted by layers
|
||||||
|
|
||||||
|
@ -2068,7 +2068,7 @@ Standard_Boolean OpenGl_View::updateRaytraceLightSources (const OpenGl_Mat4& the
|
|||||||
|
|
||||||
myRaytraceGeometry.Ambient = BVH_Vec4f (0.0f, 0.0f, 0.0f, 0.0f);
|
myRaytraceGeometry.Ambient = BVH_Vec4f (0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
|
|
||||||
OpenGl_ListOfLight::Iterator aLightIter (myShadingModel == Graphic3d_TOSM_NONE ? OpenGl_NoShadingLight() : myLights);
|
OpenGl_ListOfLight::Iterator aLightIter (myShadingModel == Graphic3d_TOSM_NONE ? myNoShadingLight : myLights);
|
||||||
for (; aLightIter.More(); aLightIter.Next())
|
for (; aLightIter.More(); aLightIter.Next())
|
||||||
{
|
{
|
||||||
const OpenGl_Light& aLight = aLightIter.Value();
|
const OpenGl_Light& aLight = aLightIter.Value();
|
||||||
|
@ -783,7 +783,7 @@ void OpenGl_View::render (Graphic3d_Camera::Projection theProjection,
|
|||||||
const Handle(OpenGl_ShaderManager)& aManager = aContext->ShaderManager();
|
const Handle(OpenGl_ShaderManager)& aManager = aContext->ShaderManager();
|
||||||
if (StateInfo (myCurrLightSourceState, aManager->LightSourceState().Index()) != myLastLightSourceState)
|
if (StateInfo (myCurrLightSourceState, aManager->LightSourceState().Index()) != myLastLightSourceState)
|
||||||
{
|
{
|
||||||
aManager->UpdateLightSourceStateTo (myShadingModel == Graphic3d_TOSM_NONE ? &OpenGl_NoShadingLight() : &myLights);
|
aManager->UpdateLightSourceStateTo (myShadingModel == Graphic3d_TOSM_NONE ? &myNoShadingLight : &myLights);
|
||||||
myLastLightSourceState = StateInfo (myCurrLightSourceState, aManager->LightSourceState().Index());
|
myLastLightSourceState = StateInfo (myCurrLightSourceState, aManager->LightSourceState().Index());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1270,7 +1270,7 @@ void OpenGl_View::renderScene (Graphic3d_Camera::Projection theProjection,
|
|||||||
THE_DEFAULT_AMBIENT[3]);
|
THE_DEFAULT_AMBIENT[3]);
|
||||||
GLenum aLightGlId = GL_LIGHT0;
|
GLenum aLightGlId = GL_LIGHT0;
|
||||||
|
|
||||||
OpenGl_ListOfLight::Iterator aLightIt (myShadingModel == Graphic3d_TOSM_NONE ? OpenGl_NoShadingLight() : myLights);
|
OpenGl_ListOfLight::Iterator aLightIt (myShadingModel == Graphic3d_TOSM_NONE ? myNoShadingLight : myLights);
|
||||||
for (; aLightIt.More(); aLightIt.Next())
|
for (; aLightIt.More(); aLightIt.Next())
|
||||||
{
|
{
|
||||||
bindLight (aLightIt.Value(), aLightGlId, anAmbientColor, myWorkspace);
|
bindLight (aLightIt.Value(), aLightGlId, anAmbientColor, myWorkspace);
|
||||||
|
@ -212,7 +212,7 @@ void PrsMgr_PresentableObject::ToBeUpdated(TColStd_ListOfInteger& OutList) const
|
|||||||
{
|
{
|
||||||
OutList.Clear();
|
OutList.Clear();
|
||||||
// on dimensionne les buckets a la taille de la seq.
|
// on dimensionne les buckets a la taille de la seq.
|
||||||
static TColStd_MapOfInteger MI(myPresentations.Length());
|
TColStd_MapOfInteger MI(myPresentations.Length());
|
||||||
|
|
||||||
for(Standard_Integer IP =1; IP<=myPresentations.Length();IP++){
|
for(Standard_Integer IP =1; IP<=myPresentations.Length();IP++){
|
||||||
const PrsMgr_ModedPresentation& MP = myPresentations(IP);
|
const PrsMgr_ModedPresentation& MP = myPresentations(IP);
|
||||||
@ -222,7 +222,6 @@ void PrsMgr_PresentableObject::ToBeUpdated(TColStd_ListOfInteger& OutList) const
|
|||||||
MI.Add(MP.Mode());
|
MI.Add(MP.Mode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MI.Clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
@ -183,7 +183,6 @@ void SelectMgr_SelectableObject::ClearSelections(const Standard_Boolean update)
|
|||||||
const Handle(SelectMgr_Selection)& SelectMgr_SelectableObject
|
const Handle(SelectMgr_Selection)& SelectMgr_SelectableObject
|
||||||
::Selection(const Standard_Integer aMode) const
|
::Selection(const Standard_Integer aMode) const
|
||||||
{
|
{
|
||||||
static Handle(SelectMgr_Selection) bidsel;
|
|
||||||
Standard_Boolean Found = Standard_False;
|
Standard_Boolean Found = Standard_False;
|
||||||
Standard_Integer Rank=0;
|
Standard_Integer Rank=0;
|
||||||
for (Standard_Integer i=1;i<=myselections.Length() && !Found;i++)
|
for (Standard_Integer i=1;i<=myselections.Length() && !Found;i++)
|
||||||
|
@ -131,6 +131,7 @@ V3d_View::V3d_View (const Handle(V3d_Viewer)& theViewer, const V3d_TypeOfView th
|
|||||||
MyActiveLights(),
|
MyActiveLights(),
|
||||||
myActiveLightsIterator(),
|
myActiveLightsIterator(),
|
||||||
SwitchSetFront (Standard_False),
|
SwitchSetFront (Standard_False),
|
||||||
|
myZRotation (Standard_False),
|
||||||
MyTrsf (1, 4, 1, 4)
|
MyTrsf (1, 4, 1, 4)
|
||||||
{
|
{
|
||||||
myView = theViewer->Driver()->CreateView (theViewer->StructureManager());
|
myView = theViewer->Driver()->CreateView (theViewer->StructureManager());
|
||||||
@ -188,6 +189,7 @@ V3d_View::V3d_View (const Handle(V3d_Viewer)& theViewer, const Handle(V3d_View)&
|
|||||||
MyActiveLights(),
|
MyActiveLights(),
|
||||||
myActiveLightsIterator(),
|
myActiveLightsIterator(),
|
||||||
SwitchSetFront(Standard_False),
|
SwitchSetFront(Standard_False),
|
||||||
|
myZRotation (Standard_False),
|
||||||
MyTrsf (1, 4, 1, 4)
|
MyTrsf (1, 4, 1, 4)
|
||||||
{
|
{
|
||||||
myView = theViewer->Driver()->CreateView (theViewer->StructureManager());
|
myView = theViewer->Driver()->CreateView (theViewer->StructureManager());
|
||||||
@ -2777,7 +2779,6 @@ void V3d_View::FitAll(const Handle(Aspect_Window)& aWindow,
|
|||||||
//function : StartRotation
|
//function : StartRotation
|
||||||
//purpose :
|
//purpose :
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
static Standard_Boolean zRotation = Standard_False;
|
|
||||||
void V3d_View::StartRotation(const Standard_Integer X,
|
void V3d_View::StartRotation(const Standard_Integer X,
|
||||||
const Standard_Integer Y,
|
const Standard_Integer Y,
|
||||||
const Quantity_Ratio zRotationThreshold)
|
const Quantity_Ratio zRotationThreshold)
|
||||||
@ -2789,13 +2790,13 @@ void V3d_View::StartRotation(const Standard_Integer X,
|
|||||||
ry = Standard_Real(Convert(y));
|
ry = Standard_Real(Convert(y));
|
||||||
Gravity(gx,gy,gz);
|
Gravity(gx,gy,gz);
|
||||||
Rotate(0.,0.,0.,gx,gy,gz,Standard_True);
|
Rotate(0.,0.,0.,gx,gy,gz,Standard_True);
|
||||||
zRotation = Standard_False;
|
myZRotation = Standard_False;
|
||||||
if( zRotationThreshold > 0. ) {
|
if( zRotationThreshold > 0. ) {
|
||||||
Standard_Real dx = Abs(sx - rx/2.);
|
Standard_Real dx = Abs(sx - rx/2.);
|
||||||
Standard_Real dy = Abs(sy - ry/2.);
|
Standard_Real dy = Abs(sy - ry/2.);
|
||||||
// if( dx > rx/3. || dy > ry/3. ) zRotation = Standard_True;
|
// if( dx > rx/3. || dy > ry/3. ) myZRotation = Standard_True;
|
||||||
Standard_Real dd = zRotationThreshold * (rx + ry)/2.;
|
Standard_Real dd = zRotationThreshold * (rx + ry)/2.;
|
||||||
if( dx > dd || dy > dd ) zRotation = Standard_True;
|
if( dx > dd || dy > dd ) myZRotation = Standard_True;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -2812,7 +2813,7 @@ void V3d_View::Rotation(const Standard_Integer X,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Standard_Real dx=0.,dy=0.,dz=0.;
|
Standard_Real dx=0.,dy=0.,dz=0.;
|
||||||
if( zRotation ) {
|
if( myZRotation ) {
|
||||||
dz = atan2(Standard_Real(X)-rx/2., ry/2.-Standard_Real(Y)) -
|
dz = atan2(Standard_Real(X)-rx/2., ry/2.-Standard_Real(Y)) -
|
||||||
atan2(sx-rx/2.,ry/2.-sy);
|
atan2(sx-rx/2.,ry/2.-sy);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1092,6 +1092,7 @@ private:
|
|||||||
Standard_Real gz;
|
Standard_Real gz;
|
||||||
Standard_Boolean myComputedMode;
|
Standard_Boolean myComputedMode;
|
||||||
Standard_Boolean SwitchSetFront;
|
Standard_Boolean SwitchSetFront;
|
||||||
|
Standard_Boolean myZRotation;
|
||||||
Standard_Integer MyZoomAtPointX;
|
Standard_Integer MyZoomAtPointX;
|
||||||
Standard_Integer MyZoomAtPointY;
|
Standard_Integer MyZoomAtPointY;
|
||||||
Handle(Aspect_Grid) MyGrid;
|
Handle(Aspect_Grid) MyGrid;
|
||||||
|
@ -50,28 +50,6 @@
|
|||||||
#include <V3d_View.hxx>
|
#include <V3d_View.hxx>
|
||||||
#include <V3d_Viewer.hxx>
|
#include <V3d_Viewer.hxx>
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
|
||||||
/*
|
|
||||||
* Static variable
|
|
||||||
*/
|
|
||||||
static TCollection_AsciiString _XLetter() {
|
|
||||||
static TCollection_AsciiString XLetter("X");
|
|
||||||
return XLetter;
|
|
||||||
}
|
|
||||||
#define XLetter _XLetter()
|
|
||||||
|
|
||||||
static TCollection_AsciiString _YLetter() {
|
|
||||||
static TCollection_AsciiString YLetter("Y");
|
|
||||||
return YLetter;
|
|
||||||
}
|
|
||||||
#define YLetter _YLetter()
|
|
||||||
|
|
||||||
static TCollection_AsciiString _ZLetter() {
|
|
||||||
static TCollection_AsciiString ZLetter("Z");
|
|
||||||
return ZLetter;
|
|
||||||
}
|
|
||||||
#define ZLetter _ZLetter()
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
void V3d_Viewer::SetPrivilegedPlane(const gp_Ax3& aPlane)
|
void V3d_Viewer::SetPrivilegedPlane(const gp_Ax3& aPlane)
|
||||||
@ -127,17 +105,17 @@ void V3d_Viewer::DisplayPrivilegedPlane(const Standard_Boolean OnOff, const Quan
|
|||||||
const gp_Pnt pX(p0.XYZ() + myDisplayPlaneLength*myPrivilegedPlane.XDirection().XYZ());
|
const gp_Pnt pX(p0.XYZ() + myDisplayPlaneLength*myPrivilegedPlane.XDirection().XYZ());
|
||||||
aPrims->AddVertex(p0);
|
aPrims->AddVertex(p0);
|
||||||
aPrims->AddVertex(pX);
|
aPrims->AddVertex(pX);
|
||||||
Group->Text(XLetter.ToCString(),Graphic3d_Vertex(pX.X(),pX.Y(),pX.Z()),1./81.);
|
Group->Text("X",Graphic3d_Vertex(pX.X(),pX.Y(),pX.Z()),1./81.);
|
||||||
|
|
||||||
const gp_Pnt pY(p0.XYZ() + myDisplayPlaneLength*myPrivilegedPlane.YDirection().XYZ());
|
const gp_Pnt pY(p0.XYZ() + myDisplayPlaneLength*myPrivilegedPlane.YDirection().XYZ());
|
||||||
aPrims->AddVertex(p0);
|
aPrims->AddVertex(p0);
|
||||||
aPrims->AddVertex(pY);
|
aPrims->AddVertex(pY);
|
||||||
Group->Text(YLetter.ToCString(),Graphic3d_Vertex(pY.X(),pY.Y(),pY.Z()),1./81.);
|
Group->Text("Y",Graphic3d_Vertex(pY.X(),pY.Y(),pY.Z()),1./81.);
|
||||||
|
|
||||||
const gp_Pnt pZ(p0.XYZ() + myDisplayPlaneLength*myPrivilegedPlane.Direction().XYZ());
|
const gp_Pnt pZ(p0.XYZ() + myDisplayPlaneLength*myPrivilegedPlane.Direction().XYZ());
|
||||||
aPrims->AddVertex(p0);
|
aPrims->AddVertex(p0);
|
||||||
aPrims->AddVertex(pZ);
|
aPrims->AddVertex(pZ);
|
||||||
Group->Text(ZLetter.ToCString(),Graphic3d_Vertex(pZ.X(),pZ.Y(),pZ.Z()),1./81.);
|
Group->Text("Z",Graphic3d_Vertex(pZ.X(),pZ.Y(),pZ.Z()),1./81.);
|
||||||
|
|
||||||
Group->AddPrimitiveArray(aPrims);
|
Group->AddPrimitiveArray(aPrims);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user