Ejemplo n.º 1
0
        public static Snap.Geom.Transform GetElecTransWcsToAcs(Snap.Vector baseDir, Snap.Orientation wcs)
        {
            var wcsOrientation      = GetStandardOrientation(wcs);
            var acsOrientation      = Snap.Orientation.Identity;
            var transR              = Snap.Geom.Transform.CreateRotation(acsOrientation, wcsOrientation);
            var baseFaceOrientation = new Snap.Orientation(-baseDir.Copy(transR));

            baseFaceOrientation = GetSidelongOrientation(baseFaceOrientation);
            transR = Snap.Geom.Transform.Composition(transR, Snap.Geom.Transform.CreateRotation(acsOrientation, baseFaceOrientation));
            return(transR);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取摄像机视角
        /// </summary>
        public static Snap.Orientation GetCameraOrientation(Snap.Orientation ori, Electrode elec = null)
        {
            var wcsOrientation = Electrode.GetStandardOrientation(Snap.Globals.WcsOrientation);
            var acsOrientation = Snap.Orientation.Identity;
            var transR         = Snap.Geom.Transform.CreateRotation(acsOrientation, wcsOrientation);

            var X = new Snap.Vector(ori.AxisX.X, ori.AxisX.Y, ori.AxisX.Z).Copy(transR);
            var Y = new Snap.Vector(ori.AxisY.X, ori.AxisY.Y, ori.AxisY.Z).Copy(transR);

            if (elec != null)
            {
                var baseDirOrientation = Electrode.GetSidelongOrientation(new Snap.Orientation(-elec.BaseFace.GetFaceDirection()));
                var transR1            = Snap.Geom.Transform.CreateRotation(baseDirOrientation, wcsOrientation);
                X = X.Copy(transR1);
                Y = Y.Copy(transR1);
            }

            return(new Snap.Orientation(X, Y));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取基准角法向
        /// </summary>
        public static Snap.Vector GetBaseCornerDirection(Snap.Vector director, Snap.NX.Body body, Snap.Position basePoint)
        {
            var vec = new Snap.Vector();

            director = director.Copy(Snap.Geom.Transform.CreateRotation(basePoint, 90));

            Snap.NX.Face baseFace = null;

            var faces = body.Faces.ToList();

            faces.ForEach(u =>
            {
                var box = u.BoxUV;
                var p1  = u.Position((box.MinU + box.MaxU) / 2, (box.MaxV + box.MinV) / 2);
                if (SnapEx.Helper.Equals(p1, basePoint, _tolerance))
                {
                    baseFace = u;
                    return;
                }
            });

            if (baseFace != null)
            {
                faces.Remove(baseFace);
                faces.ForEach(u =>
                {
                    if (u.ObjectSubType == Snap.NX.ObjectTypes.SubType.FacePlane &&
                        u.Box.MaxZ > basePoint.Z &&
                        SnapEx.Helper.Equals(u.GetFaceDirection(), director) &&
                        SnapEx.Helper.Equals(u.GetFaceDirection(), -director)
                        )
                    {
                        u.Color = System.Drawing.Color.Red;
                    }
                });
            }

            return(vec);
        }