Verschieben des Ursprungspunkts der Schraffur näher an die Schraffurgrenze zur Leistungsverbesserung

So verschieben Sie den Ursprungspunkt der Schraffur näher an die Schraffurgrenze zur Leistungsverbesserung

Problem: Wie verschiebt man den Ursprungspunkt der Schraffur näher an die Schraffurgrenze zur Leistungsverbesserung (CADNET-1340).

Tipps: Um dies zu tun, erhalten Sie die CadHatch-Entitäten aus der Zeichnung, setzen Sie die erforderlichen Punkte mit Point2D, berechnen Sie die Entfernung und setzen Sie in CadHatchPatternData LineBasePoint für X und Y.

Beispiel:

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;
}
}
}
}
}