
Fri, 12/16/2005 - 22:55
I need to set selection to include the circular edges for a shape as well as a circle defined independently.
Say I Create an Arc and a Circle
gp_Dir Zaxis(0,0,1);
gp_Dir XvAxis(1,0,0);
gp_Pnt Origin(0,0,0);
gp_Ax2 Csys(Origin,Zaxis,XvAxis);
Handle(Geom_Circle) Circ = new Geom_Circle(Csys,300);
Handle(AIS_Circle) acircle = new AIS_Circle(Circ,0,3.1415,Standard_True);
myAISContext->Display(acircle);
BRepPrimAPI_MakeCylinder C(150.,100.);
aCylinder = new AIS_Shape(C.Shape());
myAISContext->SetMaterial(aCylinder,Graphic3d_NOM_PEWTER);
myAISContext->SetDisplayMode(aCylinder,1);
myAISContext->Display(aCylinder);
// And I want to allow the circular edges, and the circle to be selectable at the same time
// I have tried a number of things,
// the following seemed promising, but it filters out the circle
myAISContext->CloseAllContexts();
myAISContext->OpenLocalContext();
myAISContext->Activate(acircle,0);
myAISContext->Activate(aCylinder,2);
Handle(StdSelect_EdgeFilter) EdgeFilterCircle =
new StdSelect_EdgeFilter(StdSelect_Circle);
myAISContext->AddFilter(EdgeFilterCircle);
In my actual case I have a complicated shape with many different edge types rather than just circular...
Any Ideas?
Thu, 12/22/2005 - 01:09
Filters Work...This will do faces, verticies, points and line....
myAISContext->CloseAllContexts();
myAISContext->OpenLocalContext();
myAISContext->ActivateStandardMode(TopAbs_FACE);
myAISContext->ActivateStandardMode(TopAbs_VERTEX);
Handle(AIS_SignatureFilter) F1 = new
AIS_SignatureFilter(AIS_KOI_Datum,AIS_SD_Point);
myAISContext->AddFilter(F1);
Handle(AIS_SignatureFilter) F2 = new
AIS_SignatureFilter(AIS_KOI_Datum,AIS_SD_Line);
myAISContext->AddFilter(F2);