Thu, 07/21/2022 - 13:46
Forums:
Hello! I test this code:
Standard_Real IntersectorConfusion = 1.e-8;
Standard_Real IntersectorTangency = 1.e-8;
Standard_Real HatcherConfusion2d = 1.e-8;
Standard_Real HatcherConfusion3d = 1.e-8;
Geom2dHatch_Hatcher aHatcher = Geom2dHatch_Hatcher(Geom2dHatch_Intersector(IntersectorConfusion,
IntersectorTangency),
HatcherConfusion2d,
HatcherConfusion3d,
Standard_True,
Standard_False);
Standard_Real df, dl;
//
aHatcher.ClrHatchings();
Standard_Boolean bIsDone, bHasFirstPoint, bHasSecondPoint;
Standard_Integer iErr, aIH, aNbDomains;
Standard_Real aVx, aV1, aV2;
int num = 0;
Handle(Geom2d_TrimmedCurve) C1 = GCE2d_MakeSegment({ 0,0 }, { 100,0 });
Geom2dAdaptor_Curve ADC1(C1);
aIH = aHatcher.AddHatching(ADC1);
Handle(Geom2d_TrimmedCurve) C2 = GCE2d_MakeSegment({ 20,10 }, { 20,-10 });
Geom2dAdaptor_Curve ADC2(C2);
aHatcher.AddElement(ADC2);
Handle(Geom2d_TrimmedCurve) C3 = GCE2d_MakeSegment({ 80,10 }, { 80,-10 });
Geom2dAdaptor_Curve ADC3(C3);
aHatcher.AddElement(ADC3);
aHatcher.Trim(aIH);
aHatcher.ComputeDomains(aIH);
bIsDone = aHatcher.IsDone(aIH);
aNbDomains = aHatcher.NbDomains(aIH);
gp_Pnt2d p1, p2;
for (int i = 1; i <= aNbDomains; i++)
{
const HatchGen_Domain& aDomain = aHatcher.Domain(aIH, i);
bHasFirstPoint = aDomain.HasFirstPoint();
if (bHasFirstPoint) {
aV1 = aDomain.FirstPoint().Parameter();
ADC1.D0(aV1, p1);
}
//
bHasSecondPoint = aDomain.HasSecondPoint();
if (bHasSecondPoint) {
aV2 = aDomain.SecondPoint().Parameter();
ADC1.D0(aV2, p2);
}
//
}
Why aNbDomains =1? why not 3? when i=1,why bHasFirstPoint is true,but bHasSecondPoint is false?