2. I display the objects in the viewer (in neutral point).
myAISContext->Display
3. In order to select an edge, I followed the method showed in the MFC example.
myAISContext->CloseAllContexts();
local_context_vector.clear();
Standard_Integer local_context = myAISContext->OpenLocalContext(TRUE, TRUE, TRUE, TRUE);
local_context_vector.push_back(local_context);
myAISContext->ActivateStandardMode(TopAbs_EDGE);
4. I select an edge, and make a copy then display it.
Handle(AIS_InteractiveContext) pAIS = GetDocument()->GetAISContext();
if (pAIS->NbSelected()>0) //should be 1 if only one edge selected.
{
BRepBuilderAPI_Copy copy_api;
for (pAIS->InitSelected(); pAIS->MoreSelected();pAIS->NextSelected())
{
copy_api.Perform(pAIS->SelectedShape());
TopoDS_Shape copied_shape = copy_api.Shape();
Handle(AIS_Shape) ais_shape = new AIS_Shape(copy_shape);
myAISContext->Display(ais_shape);
}
}
5. After I close the Local context (for the edge selection filter), the new shape is gone.
I know the new copied edge is in the Local context. How can I keep it into the neutral point?
Any suggestion will be appreciated!
Hans
2012/10/22 23:49
Don't know if this is the right way, there might be a better one. But this works for me: CloseAllContexts before Display(ais_shape) and your new Shape will be displayed after your 5. Step.
:)
Shu-Fang Fan
2012/11/15 23:16
Thank you reply Hans.
I figured out the similiar way like what you suggested