Vector3d sd = (vertices[vertices.Count - 1].Position - vertices[0].Position).GetNormal(); //Вот тут, как правильно направление вектора плоскости выбрать для проекции Xline и полилинии?
Vector3d sd2 = new Vector3d(sd.X, sd.Y, 0).RotateBy(90.0, new Vector3d(0, 0, 1));
Plane planeXoy2 = new Plane(Application.DocumentManager.MdiActiveDocument.Editor.CurrentUserCoordinateSystem.CoordinateSystem3d.Origin, sd2);
var xline = new Xline();
xline.BasePoint = vertices[j].Position;
xline.UnitDir = Vector3d.ZAxis;
Point3dCollection ip2 = new Point3dCollection();
xline.IntersectWith(polyline, Intersect.OnBothOperands, planeXoy2, ip2, IntPtr.Zero, IntPtr.Zero);
if (ip2.Count != 0)
{
// открываем объект на запись
vertices[j].UpgradeOpen();
// перемещаем вхождение блока
vertices[j].Position = new Point3d(vertices[j].Position.X, vertices[j].Position.Y, ip2[0].Z);
}
if (ip2.Count == 0)
{
DrawCircle(vertices[j].Position.X, vertices[j].Position.Y);
}
Entity entity3 = (Entity)tr.GetObject(polyline.Id, OpenMode.ForWrite, false, true);
entity3.Erase();