示例#1
0
文件: Test.cs 项目: evstmax/CopyCtrl
        public static void MT2DT() // newly 20130815
        {
            var ids = Interaction.GetSelection("\nSelect MText", "MTEXT");
            var mts = ids.QOpenForRead <MText>().Select(mt =>
            {
                var dt   = NoDraw.Text(mt.Text, mt.TextHeight, mt.Location, mt.Rotation, false, mt.TextStyleName);
                dt.Layer = mt.Layer;
                return(dt);
            }).ToArray();

            ids.QForEach(mt => mt.Erase());
            mts.AddToCurrentSpace();
        }
示例#2
0
        private static List <ObjectId> AlignText(string text, double height, Point3d start, Point3d end)
        {
            if (text.Length < 2)
            {
                return(new List <ObjectId>());
            }
            var chars = text.Select(x => x.ToString()).ToList();
            var angle = Math.Atan2(end.Y - start.Y, end.X - start.X);
            var div   = 1.0 / (chars.Count - 1);
            var texts = Enumerable.Range(0, chars.Count).Select(i => NoDraw.Text(chars[i], height, LerpPoint(start, end, i * div), angle)).ToArray();

            return(texts.AddToCurrentSpace().ToList());
        }
示例#3
0
        public static List <ObjectId> AddTextFill(Polyline boundary, string text, double interval, double rotation = 0)
        {
            var scale = EntityManager.GetGlobalScaleFactor();

            interval *= scale;
            var extents   = boundary.GeometricExtents;
            var tjExtents = new Dreambuild.Geometry.Extent2D(extents.MinPoint.X, extents.MinPoint.Y, extents.MaxPoint.X, extents.MaxPoint.Y);
            var pts       = tjExtents.GetHexGrid(interval, 0.5).Select(p => new Point3d(p.X, p.Y, 0)).Where(p => boundary.IsPointIn(p) && boundary.GetDistToPoint(p) > interval / 2).ToList();

            if (pts.Count == 0)
            {
                pts.Add(boundary.GetCenter());
            }
            var dts = pts.Take(1000).Select(p =>
            {
                return(NoDraw.Text(text, 2.5 * scale, p, rotation));
            }).ToArray();

            return(dts.AddToCurrentSpace().ToList());
        }