Hi,
Maybe this is more readable:
private Matrix3d Ucs3Points(Point3d origin, Point3d pointX, Point3d pointY)
{
Vector3d toXAxis = origin.GetVectorTo(pointX).GetNormal();
Vector3d toZAxis = toXAxis.CrossProduct(origin.GetVectorTo(pointY)).GetNormal();
Vector3d toYAxis = toZAxis.CrossProduct(toXAxis).GetNormal();
return Matrix3d.AlignCoordinateSystem(
Point3d.Origin, Vector3d.XAxis, Vector3d.YAxis, Vector3d.ZAxis,
origin, toXAxis, toYAxis, toZAxis);
}
Use with current UCS defined points (e.g. got with ed.GetPoint()):
ed.CurrentUserCoordinateSystem *= Ucs3Points(org, ptX, ptY);
Use with WCS defined points:
ed.CurrentUserCoordinateSystem = Ucs3Points(org, ptX, ptY);