
Wed, 06/02/2004 - 16:44
Forums:
Folks,
I'm trying to draw shapes (TopoDS_Shape's) in a V3D view that are both shaded (have a color and a transparency) and show visible edges (in a different color).
I've tried manipulating the AIS_Drawer returned by object->Attributes(), but nothing has worked.
I have achieved the effect I'm looking for by creating two AIS_Shapes for the TopoDS_Shape, displaying one of them shaded and displaying the other in WireFrame mode. But it seems there must be a more graceful and efficient way of doing this.
Any ideas? Thanks,
--Tom B.
Thu, 01/23/2014 - 19:01
In Open CASCADE Technology 6.5.4 it says:
display of shading with edges
I can't find any documentation on this.
Fri, 01/24/2014 - 17:45
I guess it is SetFaceBoundaryDraw (const Standard_Boolean theIsEnabled).
However, this doesn't work as expected. I am setting myContext()->DefaultDrawer. The line appears in shaded but when setting SetFaceBoundaryAspect although I specify black, the edge appears white.
Wed, 07/23/2014 - 19:57
Did you solve your problem? My problem is, that sometimes the color of the shaded line switches from black to the color of its shape. Only a redisplay of the shape solves my problem.
Thu, 07/24/2014 - 14:17
try using the new AIS_ColoredShape class it's working for me, it keeps its color, with the added bonus you can specify a color to a subshape:
Handle_AIS_ColoredShape curais = new AIS_ColoredShape(theshape);
//do as your doing activate boundary edges at the global level
getContext()->DefaultDrawer ()->SetFaceBoundaryDraw(true);
getContext()->DefaultDrawer ()->FaceBoundaryAspect()->SetColor(Quantity_NameOfColor::Quantity_NOC_BLACK);
getContext()->DefaultDrawer ()->FaceBoundaryAspect()->SetWidth(1.2);
//change line width
curais->Attributes()->FaceBoundaryAspect()->SetWidth(ui.line->value());
//change line type
curais->Attributes()->FaceBoundaryAspect()->SetTypeOfLine(Aspect_TOL_SOLID);
// to set color of subshape
curais->CustomAspects(subshape);
curais->SetCustomColor(subshape,Quantity_Color(ucol,vcol,wcol,Quantity_TOC_RGB));
Thu, 09/07/2017 - 15:46
Hi,sorry,could you explain the meaning of "subshape"?
Suppose you have a box :
TopoDS_Shape B1 = BRepPrimAPI_MakeBox(200., 150., 100.).Shape();
Handle(AIS_Shape) aBox1 = new AIS_Shape(B1);
myAISContext->SetMaterial(aBox1,Graphic3d_NOM_PLASTIC,Standard_False);
myAISContext->SetColor(aBox1,Quantity_NOC_GREEN,Standard_False);
Then what's subshape meaning?