public static void RegisterInstance(IXCustomFeatureDefinition inst)
        {
            var type = inst.GetType();

            if (!m_Instances.ContainsKey(type))
            {
                m_Instances.Add(type, inst);
            }
        }
Exemple #2
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);
        }
Exemple #3
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);
        }
Exemple #4
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);
        }
Exemple #5
0
 public IXBody[] CreateGeometry(IXCustomFeatureDefinition def, TData data, bool isPreview, out AlignDimensionDelegate <TData> alignDim)
 {
     return(m_GeomCreator.Invoke(def, data, isPreview, out alignDim));
 }