DiscussionsIssue archiveOther usage issues

Archived discussion

Why does AIS module not have AIS_Rectangle ?

Other usage issuesThu, 03/11/2010 - 15:393 replies

Browse this forum
QuestionAuthor

Hi, one more question not sure if it gets answered at all, but it's worth a try :

we have many AIS objects - point, circles, ellipses etc, but not rectangles why is that so ?, is there another way to construct AIS_Rectagles and display them ?

Thanks.

Discussion

3 archived replies

Posts are displayed in their archived order.

01Commenter-1

You can create an AIS_Shape. The code below is based off of the Tutorial(Qt) MakeBottle function, but stripped down quite a bit. In fact, I do not use the AIS_Point/Line/Circle for any of my shapes. I'm not sure if using a AIS_Shape versus the other classes provides any performance benefits, but so far, it seems to be a solution I like so far that can be adapted many ways. If there is a better way, or any negatives to this approach, I'm all ears, as this is a solution that has worked for me.

[code]
void MyClass::MakeRect(const gp_Pnt point1, const gp_Pnt point2)
{
if(point1.X() == point2.X() || point1.Y() == point2.Y())
{ return; }

//Profile : Define Support Points
gp_Pnt pt1(point1.X(),point1.Y(),point1.Z());
gp_Pnt pt2(point1.X(),point2.Y(),point1.Z());
gp_Pnt pt3(point2.X(),point2.Y(),point1.Z());
gp_Pnt pt4(point2.X(),point1.Y(),point1.Z());

//Profile : Define the Geometry
Handle(Geom_TrimmedCurve) aSegment1 = GC_MakeSegment(pt1, pt2);
Handle(Geom_TrimmedCurve) aSegment2 = GC_MakeSegment(pt2, pt3);
Handle(Geom_TrimmedCurve) aSegment3 = GC_MakeSegment(pt3, pt4);
Handle(Geom_TrimmedCurve) aSegment4 = GC_MakeSegment(pt4, pt1);

//Profile : Define the Topology
TopoDS_Edge aEdge1 = BRepBuilderAPI_MakeEdge(aSegment1);
TopoDS_Edge aEdge2 = BRepBuilderAPI_MakeEdge(aSegment2);
TopoDS_Edge aEdge3 = BRepBuilderAPI_MakeEdge(aSegment3);
TopoDS_Edge aEdge4 = BRepBuilderAPI_MakeEdge(aSegment4);

TopoDS_Wire aWire1 = BRepBuilderAPI_MakeWire(aEdge1, aEdge2 , aEdge3, aEdge4);

TopoDS_Shape aRect=aWire1;
Handle(AIS_Shape) AISRect=new AIS_Shape(aRect);
Quantity_Color color(1.0,1.0,0,Quantity_TOC_RGB);
AISRect->SetColor(color);
getContext()->SetDisplayMode(AISRect,1,false);
getContext()->Display(AISRect, false);
}
[/code]

02Author

jonathan, greatly appreciate it...let me try it out and back and come back to you.
Thanks,
Author

03Author

Hi Jonathan, it worked perfectly, that's exactly what I wanted..again thank you very much.

Author.