public void TestGetTransformBetweenVectorsAroundPointAllDirs() { var comp = new DoubleEqualityComparerWithTolerance(); var mathServ = new SwVectorMathService(Sw.SldWorks.IGetMathUtility()); var transform = mathServ.GetTransformBetweenVectorsAroundPoint( new Vector(-0.86064621310564815, -0.45399049973946992, -0.230609457770521), new Vector(0, 1, 0), new Point(0, 0, 0)); //TestDisplayOnBody(transform, "Data\\t2.sldprt", "Body-Move/Copy2"); foreach (var d in transform.Rotation.ToArray()) { Debug.Print(d.ToString()); } Assert.IsTrue(transform.Translation.ToArray().SequenceEqual(new double[] { 0, 0, 0 }, comp)); Assert.IsTrue(transform.Rotation.ToArray().SequenceEqual(new double[] { -0.356591604687574, -0.860646213105648, -0.363497624934811, 0.860646213105648, -0.45399049973947, 0.230609457770521, -0.363497624934811, -0.230609457770521, 0.902601104948104 } , comp)); Assert.AreEqual(1, transform.Scale); }
public void TestGetTransformBetweenVectorsAroundPointYZ90Deg() { var comp = new DoubleEqualityComparerWithTolerance(); var mathServ = new SwVectorMathService(Sw.SldWorks.IGetMathUtility()); var transform = mathServ.GetTransformBetweenVectorsAroundPoint(new Vector(0, 0, 1), new Vector(0, 1, 0), new Point(0, 0, 0)); //TestDisplayOnBody(transform, "Data\\t5.sldprt", "Boss-Extrude2"); Assert.IsTrue(transform.Translation.ToArray().SequenceEqual(new double[] { 0, 0, 0 }, comp)); Assert.IsTrue(transform.Rotation.ToArray().SequenceEqual(new double[] { 1, 0, 0, 0, 0, -1, 0, 1, 0 }, comp)); Assert.AreEqual(1, transform.Scale); }
public void TestGetExtremePointsXYZNotAligned() { var points = Sw.App.WithDocument("Data\\t2.sldprt", m => { var body = Sw.Doc.GetBodyByName(m as IPartDoc, "Body-Move/Copy2"); var pts = new List <double[]>(); var geom = new SolidBodyGeometry(body); Point pt1; Point pt2; geom.GetExtremePoints(new Vector(-0.35659160468757367, -0.86064621310564815, -0.36349762493481108), out pt1, out pt2); pts.Add(pt1.ToArray()); pts.Add(pt2.ToArray()); geom.GetExtremePoints(new Vector(-0.86064621310564815, -0.45399049973946992, -0.230609457770521), out pt1, out pt2); pts.Add(pt1.ToArray()); pts.Add(pt2.ToArray()); geom.GetExtremePoints(new Vector(-0.363497624934811, -0.23060945777052097, 0.90260110494810375), out pt1, out pt2); pts.Add(pt1.ToArray()); pts.Add(pt2.ToArray()); //TempDisplayPoints(m, pts); return(pts); }); var comp = new DoubleEqualityComparerWithTolerance(); Assert.IsTrue(points[0].SequenceEqual(new double[] { -0.110883845818614, 0.0605238203210351, -0.0239825852813666 }, comp)); Assert.IsTrue(points[1].SequenceEqual(new double[] { -0.0412497473005035, 0.179859854385059, 0.0275862063054218 }, comp)); Assert.IsTrue(points[2].SequenceEqual(new double[] { -0.142959784835457, 0.106453187928056, 0.00530736214458289 }, comp)); Assert.IsTrue(points[3].SequenceEqual(new double[] { -0.0405325336202925, 0.171216718860278, 0.0419248817887173 }, comp)); Assert.IsTrue(points[4].SequenceEqual(new double[] { -0.13321429487189, 0.0821558975737544, 0.0167696845654225 }, comp)); Assert.IsTrue(points[5].SequenceEqual(new double[] { -0.0104076774276791, 0.149982352301203, -0.0286994667274928 }, comp)); }
public void TestGetExtremePointsXYZAligned() { var points = Sw.App.WithDocument("Data\\t6.sldprt", m => { var body = Sw.Doc.GetBodyByName(m as IPartDoc, "Cut-Extrude1"); var pts = new List <double[]>(); var geom = new SolidBodyGeometry(body); Point pt1; Point pt2; geom.GetExtremePoints(new Vector(1, 0, 0), out pt1, out pt2); pts.Add(pt1.ToArray()); pts.Add(pt2.ToArray()); geom.GetExtremePoints(new Vector(0, 1, 0), out pt1, out pt2); pts.Add(pt1.ToArray()); pts.Add(pt2.ToArray()); geom.GetExtremePoints(new Vector(0, 0, 1), out pt1, out pt2); pts.Add(pt1.ToArray()); pts.Add(pt2.ToArray()); //TempDisplayPoints(m, pts); return(pts); }); var comp = new DoubleEqualityComparerWithTolerance(); Assert.IsTrue(points[0].SequenceEqual(new double[] { 0.00966608998524698, 0.019696737014236, 0.08 }, comp)); Assert.IsTrue(points[1].SequenceEqual(new double[] { -0.0337478821675263, 0.019696737014236, 0.08 }, comp)); Assert.IsTrue(points[2].SequenceEqual(new double[] { 0.00966608998524698, 0.019696737014236, 0.08 }, comp)); Assert.IsTrue(points[3].SequenceEqual(new double[] { 0.00966608998524698, -0.0315523907373247, 0.08 }, comp)); Assert.IsTrue(points[4].SequenceEqual(new double[] { 0.00966608998524698, 0.019696737014236, 0.08 }, comp)); Assert.IsTrue(points[5].SequenceEqual(new double[] { -0.0207842984279311, 0.00525494529478507, 0 }, comp)); }
public void TestTransformPoint() { var comp = new DoubleEqualityComparerWithTolerance(); var mathServ = new SwVectorMathService(Sw.SldWorks.IGetMathUtility()); var transform = new TransformationMaxtrix( new RotationMatrix(-0.356591604687574, -0.860646213105648, -0.363497624934811, 0.860646213105648, -0.45399049973947, 0.230609457770521, -0.363497624934811, -0.230609457770521, 0.902601104948104), new Vector(0, 0, 0), 1); var pts = new Point[6]; pts[0] = new Point(-0.110883845818614, 0.0605238203210351, -0.0239825852813666); pts[1] = new Point(-0.0412497473005035, 0.179859854385059, 0.0275862063054218); pts[2] = new Point(-0.142959784835457, 0.106453187928056, 0.00530736214458289); pts[3] = new Point(-0.0405325336202925, 0.171216718860278, 0.0419248817887173); pts[4] = new Point(-0.13321429487189, 0.0821558975737544, 0.0167696845654225); pts[5] = new Point(-0.0104076774276791, 0.149982352301203, -0.0286994667274928); var ptsTransf = new Point[6]; for (int i = 0; i < pts.Length; i++) { ptsTransf[i] = mathServ.TransformPoint(pts[i], transform); } //TestDisplayOnBody(transform, "Data\\t2.sldprt", "Body-Move/Copy2", ptsTransf); Assert.IsTrue(ptsTransf[0].ToArray().SequenceEqual(new double[] { 0.100347458065948, 0.0734851335523633, 0.0326166720106647 }, comp)); Assert.IsTrue(ptsTransf[1].ToArray().SequenceEqual(new double[] { 0.159477495676095, -0.0525148664476371, 0.0813709089599175 }, comp)); Assert.IsTrue(ptsTransf[2].ToArray().SequenceEqual(new double[] { 0.140667578609346, 0.0734851335523624, 0.0813050851309728 }, comp)); Assert.IsTrue(ptsTransf[3].ToArray().SequenceEqual(new double[] { 0.146570986957314, -0.0525148664476372, 0.092059119028498 }, comp)); Assert.IsTrue(ptsTransf[4].ToArray().SequenceEqual(new double[] { 0.112114520796401, 0.073485133552363, 0.082505342603813 }, comp)); Assert.IsTrue(ptsTransf[5].ToArray().SequenceEqual(new double[] { 0.143225221928054, -0.0525148664476371, 0.0124663445857203 }, comp)); }