akbari1358_31365 Sat, 12/04/2004 - 09:30 Forums: Other usage issuesHi All, Is there any way to add two TopoDS_Edge. I dont mean TopoDS_Wire, just adding them as a one TopoDS_Edge. Thanks for any idea. Akbari Janghom Lin Tue, 12/07/2004 - 05:34 You can try this HGeomAPI_MergeCurve::HGeomAPI_MergeCurve (const Handle(Geom_BSplineCurve)& BCurve1, const Handle(Geom_BSplineCurve)& BCurve2) { Convert_CompBezierCurvesToBSplineCurve CBTB; GeomConvert_BSplineCurveToBezierCurve BCTB1(BCurve1); int nba=BCTB1.NbArcs(); for(int i=1;i<=nba;i++) { Handle(Geom_BezierCurve) BezierC=BCTB1.Arc(i); int nbp=BezierC->NbPoles(); TColgp_Array1OfPnt Poles1(1,nbp); BezierC->Poles(Poles1); CBTB.AddCurve(Poles1); } GeomConvert_BSplineCurveToBezierCurve BCTB2(BCurve2); int nbb=BCTB2.NbArcs(); for(i=1;i<=nbb;i++) { Handle(Geom_BezierCurve) BezierC=BCTB2.Arc(i); int nbp=BezierC->NbPoles(); TColgp_Array1OfPnt Poles2(1,nbp); BezierC->Poles(Poles2); CBTB.AddCurve(Poles2); } CBTB.Perform(); int nbps,nbks,degree; degree=CBTB.Degree(); nbks=CBTB.NbKnots(); nbps=CBTB.NbPoles(); TColStd_Array1OfReal Knots(1,nbks); TColStd_Array1OfInteger Mults(1,nbks); TColgp_Array1OfPnt Poles(1,nbps); CBTB.Poles(Poles); CBTB.KnotsAndMults(Knots,Mults); for(i=1;i<=nbks;i++) { double k=Knots(i); double m=Mults(i); } myCurve=new Geom_BSplineCurve(Poles,Knots,Mults,degree); } Log in to post comments akbari1358_31365 Thu, 12/09/2004 - 10:27 Hi Chien-Hung Lin, Thank you very much. I'm trying your code. Regards A.Akbari Log in to post comments
Tue, 12/07/2004 - 05:34
You can try this
HGeomAPI_MergeCurve::HGeomAPI_MergeCurve
(const Handle(Geom_BSplineCurve)& BCurve1,
const Handle(Geom_BSplineCurve)& BCurve2)
{
Convert_CompBezierCurvesToBSplineCurve CBTB;
GeomConvert_BSplineCurveToBezierCurve BCTB1(BCurve1);
int nba=BCTB1.NbArcs();
for(int i=1;i<=nba;i++)
{
Handle(Geom_BezierCurve) BezierC=BCTB1.Arc(i);
int nbp=BezierC->NbPoles();
TColgp_Array1OfPnt Poles1(1,nbp);
BezierC->Poles(Poles1);
CBTB.AddCurve(Poles1);
}
GeomConvert_BSplineCurveToBezierCurve BCTB2(BCurve2);
int nbb=BCTB2.NbArcs();
for(i=1;i<=nbb;i++)
{
Handle(Geom_BezierCurve) BezierC=BCTB2.Arc(i);
int nbp=BezierC->NbPoles();
TColgp_Array1OfPnt Poles2(1,nbp);
BezierC->Poles(Poles2);
CBTB.AddCurve(Poles2);
}
CBTB.Perform();
int nbps,nbks,degree;
degree=CBTB.Degree();
nbks=CBTB.NbKnots();
nbps=CBTB.NbPoles();
TColStd_Array1OfReal Knots(1,nbks);
TColStd_Array1OfInteger Mults(1,nbks);
TColgp_Array1OfPnt Poles(1,nbps);
CBTB.Poles(Poles);
CBTB.KnotsAndMults(Knots,Mults);
for(i=1;i<=nbks;i++)
{
double k=Knots(i);
double m=Mults(i);
}
myCurve=new Geom_BSplineCurve(Poles,Knots,Mults,degree);
}
Thu, 12/09/2004 - 10:27
Hi Chien-Hung Lin,
Thank you very much.
I'm trying your code.
Regards
A.Akbari