Anonymous | Login | 2021-01-20 13:24 MSK | ![]() |
My View | View Issues | Change Log | Roadmap |
View Revisions: Issue #29670 | [ All Revisions ] [ Back to Issue ] | ||
Summary | 0029670: Draw Harness - vtrihedron xaxis zaxis is wrong | ||
Revision | 2019-01-10 15:39 by kgv | ||
Steps To Reproduce | #include <TColgp_Array1OfPnt.hxx> #include <math_BullardGenerator.hxx> #include <GCPnts_UniformAbscissa.hxx> #include <GCPnts_UniformDeflection.hxx> #include <GCPnts_TangentialDeflection.hxx> #include <GCPnts_QuasiUniformDeflection.hxx> #include <Geom_BSplineCurve.hxx> #include <GeomAdaptor_HCurve.hxx> #include <GeomAPI_PointsToBSpline.hxx> #include <GeomFill_Fixed.hxx> #include <GeomFill_Frenet.hxx> #include <GeomFill_ConstantBiNormal.hxx> #include <GeomFill_CorrectedFrenet.hxx> #include <GeomFill_Darboux.hxx> #include <GeomFill_DiscreteTrihedron.hxx> #include <GeomFill_GuideTrihedronAC.hxx> #include <GeomFill_GuideTrihedronPlan.hxx> #include <BRepBuilderAPI_MakeEdge.hxx> #include <BRepTools.hxx> #pragma comment(lib, "TKernel.lib") #pragma comment(lib, "TKMath.lib") #pragma comment(lib, "TKG2d.lib") #pragma comment(lib, "TKG3d.lib") #pragma comment(lib, "TKGeomBase.lib") #pragma comment(lib, "TKGeomAlgo.lib") #pragma comment(lib, "TKBRep.lib") #pragma comment(lib, "TKTopAlgo.lib") void test() { TColgp_Array1OfPnt aPoints(1, 6); math_BullardGenerator aBullardGenerator; for (Standard_Integer i = aPoints.Lower(); i <= aPoints.Upper(); ++i) { Standard_Real aX = aBullardGenerator.NextReal() * 50.0; Standard_Real aY = aBullardGenerator.NextReal() * 50.0; Standard_Real aZ = aBullardGenerator.NextReal() * 50.0; aPoints.SetValue(i, gp_Pnt(aX, aY, aZ)); } GeomAPI_PointsToBSpline aBSplineFitter(aPoints); if (!aBSplineFitter.IsDone()) { return; } std::ofstream aTclFile("d:/tcl/trihedron.tcl"); aTclFile << std::fixed; aTclFile << "vclear" << std::endl; Handle(Geom_BSplineCurve) aBSplineCurve = aBSplineFitter.Curve(); Handle(GeomAdaptor_HCurve) aCurveAdaptor = new GeomAdaptor_HCurve(aBSplineCurve); BRepBuilderAPI_MakeEdge anEdgeMaker(aBSplineCurve); BRepTools::Write(anEdgeMaker, "d:/edge.brep"); aTclFile << "restore " << " d:/edge.brep e" << std::endl; aTclFile << "incmesh e " << " 0.01" << std::endl; aTclFile << "vdisplay e " << std::endl; Handle(GeomFill_Frenet) aFrenet = new GeomFill_Frenet(); aFrenet->SetCurve(aCurveAdaptor); GCPnts_UniformAbscissa aPointSampler(aCurveAdaptor->Curve(), 5.0); for (Standard_Integer i = 1; i <= aPointSampler.NbPoints(); ++i) { Standard_Real aParam = aPointSampler.Parameter(i); gp_Pnt aP = aCurveAdaptor->Value(aParam); gp_Vec aT; gp_Vec aN; gp_Vec aB; aFrenet->D0(aParam, aT, aN, aB); // vtrihedron in opencascade draw 6.9.1 aTclFile << "vtrihedron vt" << i << " " << aP.X() << " " << aP.Y() << " " << aP.Z() << " " << " " << aB.X() << " " << aB.Y() << " " << aB.Z() << " " << " " << aT.X() << " " << aT.Y() << " " << aT.Z() << std::endl; // vtrihedron in opencascade draw 7.1.0 has bug. /*aTclFile << "vtrihedron vt" << i << " -origin " << aP.X() << " " << aP.Y() << " " << aP.Z() << " " << " -zaxis " << aB.X() << " " << aB.Y() << " " << aB.Z() << " " << " -xaxis " << aT.X() << " " << aT.Y() << " " << aT.Z() << std::endl;*/ // vtrihedron in opencascade draw 7.2.0 /*aTclFile << "vtrihedron vt" << i << " -origin " << aP.X() << " " << aP.Y() << " " << aP.Z() << " " << " -zaxis " << aB.X() << " " << aB.Y() << " " << aB.Z() << " " << " -xaxis " << aT.X() << " " << aT.Y() << " " << aT.Z() << std::endl; aTclFile << "vtrihedron vt" << i << " -labels xaxis T 1" << std::endl; aTclFile << "vtrihedron vt" << i << " -labels yaxis N 1" << std::endl; aTclFile << "vtrihedron vt" << i << " -labels zaxis B 1" << std::endl;*/ aTclFile << "vsize vt" << i << " 2" << std::endl; } } int main(int argc, char* argv[]) { test(); return 0; } |
||
Revision | 2018-04-03 14:31 by eryar | ||
Steps To Reproduce | #include <TColgp_Array1OfPnt.hxx> #include <math_BullardGenerator.hxx> #include <GCPnts_UniformAbscissa.hxx> #include <GCPnts_UniformDeflection.hxx> #include <GCPnts_TangentialDeflection.hxx> #include <GCPnts_QuasiUniformDeflection.hxx> #include <Geom_BSplineCurve.hxx> #include <GeomAdaptor_HCurve.hxx> #include <GeomAPI_PointsToBSpline.hxx> #include <GeomFill_Fixed.hxx> #include <GeomFill_Frenet.hxx> #include <GeomFill_ConstantBiNormal.hxx> #include <GeomFill_CorrectedFrenet.hxx> #include <GeomFill_Darboux.hxx> #include <GeomFill_DiscreteTrihedron.hxx> #include <GeomFill_GuideTrihedronAC.hxx> #include <GeomFill_GuideTrihedronPlan.hxx> #include <BRepBuilderAPI_MakeEdge.hxx> #include <BRepTools.hxx> #pragma comment(lib, "TKernel.lib") #pragma comment(lib, "TKMath.lib") #pragma comment(lib, "TKG2d.lib") #pragma comment(lib, "TKG3d.lib") #pragma comment(lib, "TKGeomBase.lib") #pragma comment(lib, "TKGeomAlgo.lib") #pragma comment(lib, "TKBRep.lib") #pragma comment(lib, "TKTopAlgo.lib") void test() { TColgp_Array1OfPnt aPoints(1, 6); math_BullardGenerator aBullardGenerator; for (Standard_Integer i = aPoints.Lower(); i <= aPoints.Upper(); ++i) { Standard_Real aX = aBullardGenerator.NextReal() * 50.0; Standard_Real aY = aBullardGenerator.NextReal() * 50.0; Standard_Real aZ = aBullardGenerator.NextReal() * 50.0; aPoints.SetValue(i, gp_Pnt(aX, aY, aZ)); } GeomAPI_PointsToBSpline aBSplineFitter(aPoints); if (!aBSplineFitter.IsDone()) { return; } std::ofstream aTclFile("d:/tcl/trihedron.tcl"); aTclFile << std::fixed; aTclFile << "vclear" << std::endl; Handle(Geom_BSplineCurve) aBSplineCurve = aBSplineFitter.Curve(); Handle(GeomAdaptor_HCurve) aCurveAdaptor = new GeomAdaptor_HCurve(aBSplineCurve); BRepBuilderAPI_MakeEdge anEdgeMaker(aBSplineCurve); BRepTools::Write(anEdgeMaker, "d:/edge.brep"); aTclFile << "restore " << " d:/edge.brep e" << std::endl; aTclFile << "incmesh e " << " 0.01" << std::endl; aTclFile << "vdisplay e " << std::endl; Handle(GeomFill_Frenet) aFrenet = new GeomFill_Frenet(); aFrenet->SetCurve(aCurveAdaptor); GCPnts_UniformAbscissa aPointSampler(aCurveAdaptor->Curve(), 5.0); for (Standard_Integer i = 1; i <= aPointSampler.NbPoints(); ++i) { Standard_Real aParam = aPointSampler.Parameter(i); gp_Pnt aP = aCurveAdaptor->Value(aParam); gp_Vec aT; gp_Vec aN; gp_Vec aB; aFrenet->D0(aParam, aT, aN, aB); // vtrihedron in opencascade draw 6.9.1 aTclFile << "vtrihedron vt" << i << " " << aP.X() << " " << aP.Y() << " " << aP.Z() << " " << " " << aB.X() << " " << aB.Y() << " " << aB.Z() << " " << " " << aT.X() << " " << aT.Y() << " " << aT.Z() << std::endl; // vtrihedron in opencascade draw 7.1.0 has bug. /*aTclFile << "vtrihedron vt" << i << " -origin " << aP.X() << " " << aP.Y() << " " << aP.Z() << " " << " -zaxis " << aB.X() << " " << aB.Y() << " " << aB.Z() << " " << " -xaxis " << aT.X() << " " << aT.Y() << " " << aT.Z() << std::endl;*/ // vtrihedron in opencascade draw 7.2.0 /*aTclFile << "vtrihedron vt" << i << " -origin " << aP.X() << " " << aP.Y() << " " << aP.Z() << " " << " -zaxis " << aB.X() << " " << aB.Y() << " " << aB.Z() << " " << " -xaxis " << aT.X() << " " << aT.Y() << " " << aT.Z() << std::endl; aTclFile << "vtrihedron vt" << i << " -labels xaxis T 1" << std::endl; aTclFile << "vtrihedron vt" << i << " -labels yaxis N 1" << std::endl; aTclFile << "vtrihedron vt" << i << " -labels zaxis B 1" << std::endl;*/ aTclFile << "vsize vt" << i << " 2" << std::endl; } } int main(int argc, char* argv[]) { test(); return 0; } |
Copyright © 2000 - 2021 MantisBT Team |