Kapak köken noktası daha iyi performans için kapak sınırına yaklaştırma

Kapak köken noktasını kapak sınırına daha iyi performans için nasıl yaklaştırılır

Sorun: Kapak köken noktasını kapak sınırına daha iyi performans için nasıl yaklaştırılır (CADNET-1340).

İpuçları: Bunu yapmak için, çizimden CadHatch varlıklarını alın, gerekli noktaları Point2D ile ayarlayın, mesafeyi hesaplayın ve CadHatchPatternData’da X ve Y için LineBasePoint’i ayarlayın.

Örnek:

foreach (CadBaseEntity entity in cadImage.Entities)
{
if (entity.TypeName == CadEntityTypeName.HATCH)
{
CadHatch hatch = (CadHatch)entity;
if (hatch.PatternDefinitions.Count > 0)
{
Point2D firstPoint = new Point2D(hatch.PatternDefinitions[0].LineBasePoint.X, hatch.PatternDefinitions[0].LineBasePoint.Y);
if (hatch.BoundaryPaths[0].BoundaryPath[0].GetType() == typeof(CadPolylineBoundaryPath))
{
CadPolylineBoundaryPath polyline = (CadPolylineBoundaryPath)(hatch.BoundaryPaths[0].BoundaryPath[0]);
firstPoint = polyline.Vertices[0];
}
else
{
CadEdgeBoundaryPath edgePath = (CadEdgeBoundaryPath)(hatch.BoundaryPaths[0].BoundaryPath[0]);
if (edgePath.Objects[0].GetType() == typeof(CadBoundaryPathLine))
{
CadBoundaryPathLine line = (CadBoundaryPathLine)edgePath.Objects[0];
firstPoint = line.FirstPoint;
}
if (edgePath.Objects[0].GetType() == typeof(CadBoundaryPathCircularArc))
{
// TODO
}
if (edgePath.Objects[0].GetType() == typeof(CadBoundaryPathCircularEllipse))
{
// TODO
}
if (edgePath.Objects[0].GetType() == typeof(CadBoundaryPathSpline))
{
// TODO
}
}
bool requiresShift = false;
double distanceX = 0, distanceY = 0;
if (Math.Abs(hatch.PatternDefinitions[0].LineBasePoint.X - firstPoint.X) > 20000
|| Math.Abs(hatch.PatternDefinitions[0].LineBasePoint.Y - firstPoint.Y) > 20000)
{
requiresShift = true;
distanceX = hatch.PatternDefinitions[0].LineBasePoint.X - firstPoint.X;
distanceY = hatch.PatternDefinitions[0].LineBasePoint.Y - firstPoint.Y;
}
if (requiresShift)
{
foreach (CadHatchPatternData d in hatch.PatternDefinitions)
{
d.LineBasePoint.X -= distanceX;
d.LineBasePoint.Y -= distanceY;
}
}
}
}
}