For all issues regarding the Forums use, please, refer to the Forum Rules.

Our Solutions

Need professional assistance?
Consider our:

Support Offerings


Need to speed up your development?
Have a look at our:

Samples & Tools


Need some functionality extending standard OCCT capabilities?
Check out our:

Adv. Components

Question about the neutral point and local context

SF. Fan's picture

I'm new to OpenCASCADE.
What I want to do is quite simple.

1. I read a IGES file and put the everything in one shape

IGESControl_Reader reader;
Standard_Integer Status=reader.ReadFile(filepathname);
return Status;

TopoDS_Shape aShape = reader.OneShape();

2. I display the objects in the viewer (in neutral point).

3. In order to select an edge, I followed the method showed in the MFC example.
Standard_Integer local_context = myAISContext->OpenLocalContext(TRUE, TRUE, TRUE, TRUE);

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())
TopoDS_Shape copied_shape = copy_api.Shape();
Handle(AIS_Shape) ais_shape = new AIS_Shape(copy_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's picture

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.


SF. Fan's picture

Thank you reply Hans.

I figured out the similiar way like what you suggested