Esempio n. 1
0
        public override bool TryGet(string name, out IXDimension ent)
        {
            var dimNameParts = name.Split('@');

            if (dimNameParts.Length != 2)
            {
                throw new Exception("Invalid dimension name. Name must be specified in the following format: DimName@FeatureName");
            }

            var dimName  = dimNameParts[0];
            var featName = dimNameParts[1];

            IXDimension dim = null;

            if (m_FeatMgr.TryGet(featName, out IXFeature feat))
            {
                dim = feat.Dimensions.FirstOrDefault(
                    d => string.Equals(d.Name, $"{dimName}@{featName}",
                                       StringComparison.CurrentCultureIgnoreCase));
            }

            if (dim != null)
            {
                ent = dim;
                return(true);
            }
            else
            {
                ent = null;
                return(false);
            }
        }
Esempio n. 2
0
        public override bool TryGet(string name, out IXDimension ent)
        {
            var dimNameParts = name.Split('@');

            var dimName  = dimNameParts[0];
            var featName = "";

            if (dimNameParts.Length == 2)
            {
                featName = dimNameParts[0];

                if (!string.Equals(featName, m_Feat.Name, StringComparison.CurrentCultureIgnoreCase))
                {
                    throw new Exception("Specified dimension does not belong to this feature");
                }
            }

            var dim = this.FirstOrDefault(
                d => string.Equals(d.Name, dimName,
                                   StringComparison.CurrentCultureIgnoreCase));

            if (dim != null)
            {
                ent = dim;
                return(true);
            }
            else
            {
                ent = null;
                return(false);
            }
        }
Esempio n. 3
0
        public void Init(IXApplication app, IXDocument model)
        {
            m_Model = model;

            m_DescPrp = m_Model.Properties["Description"];
            m_D1Dim   = m_Model.Dimensions["D1@Sketch1"];

            m_Model.Closing += OnModelClosing;
            m_Model.Selections.NewSelection += OnNewSelection;

            m_DescPrp.ValueChanged += OnPropertyValueChanged;
            m_D1Dim.ValueChanged   += OnDimensionValueChanged;
        }
Esempio n. 4
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="TParams"></typeparam>
        /// <param name="featDef"></param>
        /// <param name="dim"></param>
        /// <param name="centerPt">Point at the center of the radiam dimension (fixed point)</param>
        /// <param name="refPt">Reference point of the radial dimension (fixed point)</param>
        /// <param name="rotVec">Vector, normal to the radial dimension extension line</param>
        public static void AlignAngularDimension <TParams>(this IXCustomFeatureDefinition <TParams> featDef,
                                                           IXDimension dim, Point centerPt, Point refPt, Vector rotVec)
            where TParams : class, new()
        {
            var angle = dim.GetValue();

            var dirVec = new Vector(refPt.X - centerPt.X, refPt.Y - centerPt.Y, refPt.Z - centerPt.Z);

            var contLegLenth = dirVec.GetLength();

            var alignDir = rotVec.Cross(dirVec);

            var oppLegLength = contLegLenth * Math.Tan(angle);

            var midPt = refPt.Move(alignDir, oppLegLength);

            featDef.AlignDimension(dim, new Point[] { refPt, midPt, centerPt }, null, null);
        }
        protected override IXDimension[] GetDimensions(IXCustomFeature feat)
        {
            var dispDimsObj = ((SwMacroFeature)feat).FeatureData.GetDisplayDimensions() as object[];

            if (dispDimsObj != null)
            {
                var dimensions = new IXDimension[dispDimsObj.Length];

                for (int i = 0; i < dispDimsObj.Length; i++)
                {
                    dimensions[i]  = new SwDimension(dispDimsObj[i] as IDisplayDimension);
                    dispDimsObj[i] = null;
                }

                return(dimensions);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 6
0
 private void OnDimensionValueChanged(IXDimension dim, double newVal)
 {
     //TODO: handle dimension change
 }
Esempio n. 7
0
        private static Point CalculateEndPoint(IXDimension dim, Point startPt, Vector dir)
        {
            var length = dim.GetValue();

            return(startPt.Move(dir, length));
        }
Esempio n. 8
0
        public static void AlignLinearDimension <TParams>(this IXCustomFeatureDefinition <TParams> featDef, IXDimension dim, Point originPt, Vector dir)
            where TParams : class, new()
        {
            var yVec = new Vector(0, 1, 0);

            Vector extDir;

            if (dir.IsSame(yVec))
            {
                extDir = new Vector(1, 0, 0);
            }
            else
            {
                extDir = yVec.Cross(dir);
            }

            var endPt = CalculateEndPoint(dim, originPt, dir);

            featDef.AlignDimension(dim, new Point[] { originPt, endPt }, dir, extDir);
        }
Esempio n. 9
0
        public static void AlignRadialDimension <TParams>(this IXCustomFeatureDefinition <TParams> featDef, IXDimension dim, Point originPt, Vector normal)
            where TParams : class, new()
        {
            Vector dir    = null;
            Vector extDir = null;

            var yVec = new Vector(0, 1, 0);

            if (normal.IsSame(yVec))
            {
                dir = new Vector(1, 0, 0);
            }
            else
            {
                dir = normal.Cross(yVec);
            }

            extDir = normal.Cross(dir);

            var endPt = CalculateEndPoint(dim, originPt, normal);

            featDef.AlignDimension(dim, new Point[] { originPt, endPt }, dir, extDir);
        }
Esempio n. 10
0
 public abstract bool TryGet(string name, out IXDimension ent);