雪山飞狐_lzh 发表于 2010-1-18 12:07:00

在窗体上显示实体(BlockPreviewManager)

本帖最后由 作者 于 2010-1-18 12:51:13 编辑

改写自Kean的BlockView.Net
加入显示实体的功能
并集成输出图像文件的功能
BlockPreviewManager.cs
using System;
using System.IO;
using System.Drawing;
using System.Windows.Forms;
using System.Collections;
using System.Collections.Generic;
using Autodesk.AutoCAD.GraphicsSystem;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.GraphicsInterface;
using Autodesk.AutoCAD.ApplicationServices;
using TlsCad.Utils;
using TlsCad.ExtendMethods;
namespace TlsCad.Trans
{
    public class BlockPreviewManager : IEnumerable,IDisposable
    {
      List<BlockPreview> m_Previews = new List<BlockPreview>();
      Color m_BackColor = Color.Empty;
      Database m_Database = null;
      private Autodesk.AutoCAD.GraphicsSystem.RenderMode m_RenderMode = Autodesk.AutoCAD.GraphicsSystem.RenderMode.Wireframe;
      private VisualStyleType m_VisualStyleType = VisualStyleType.Basic;
      bool m_AllowMouseEvents = false;
      bool m_DisplayByBlock = true;
      #region Properties
      public Autodesk.AutoCAD.GraphicsSystem.RenderMode RenderMode
      {
            set { m_RenderMode = value; }
            get { return m_RenderMode; }
      }
      public VisualStyleType ViewStyle
      {
            set { m_VisualStyleType = value; }
            get { return m_VisualStyleType; }
      }
      public Database Database
      {
            get { return m_Database; }
      }
      public Color BackColor
      {
            set { m_BackColor = value; }
            get { return m_BackColor; }
      }
      public bool AllowMouseEvents
      {
            set { m_AllowMouseEvents = true; }
            get { return m_AllowMouseEvents; }
      }
      public bool DisplayByBlock
      {
            get { return m_DisplayByBlock; }
            set { m_DisplayByBlock = value; }
      }
      public BlockPreview this
      {
            get
            {
                if (index >= 0 && index < m_Previews.Count)
                {
                  return m_Previews;
                }
                return null;
            }
      }
      #endregion
      #region Initialize
      public void Initialize(Database database)
      {
            m_Database = database;
            Database db = HostApplicationServices.WorkingDatabase;
            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.GetDocument(db);
            BlockPreview.Manager = doc.GraphicsManager;
      }

      public BlockPreviewManager()
      {
            Initialize(new Database());
      }
      public BlockPreviewManager(Autodesk.AutoCAD.GraphicsSystem.RenderMode renderMode, VisualStyleType visualStyleType)
      {
            Initialize(new Database());
            m_RenderMode = renderMode;
            m_VisualStyleType = visualStyleType;
      }
      public BlockPreviewManager(Database database)
      {
            Initialize(database);
      }
      public BlockPreviewManager(Database database, Autodesk.AutoCAD.GraphicsSystem.RenderMode renderMode, VisualStyleType visualStyleType)
      {
            Initialize(database);
            m_RenderMode = renderMode;
            m_VisualStyleType = visualStyleType;
      }
      public BlockPreviewManager(string filename)
      {
            Database db = new Database(false, true);
            db.ReadDwgFile(filename, FileShare.Read, true, null);
            db.CloseInput(true);
            Initialize(db);
      }
      public BlockPreviewManager(string filename, Autodesk.AutoCAD.GraphicsSystem.RenderMode renderMode, VisualStyleType visualStyleType)
      {
            Database db = new Database(false, true);
            db.ReadDwgFile(filename, FileShare.Read, true, null);
            db.CloseInput(true);
            Initialize(db);
            m_RenderMode = renderMode;
            m_VisualStyleType = visualStyleType;
      }
      #endregion
      #region List
      public BlockPreview Add(Panel panel)
      {
            return Add(panel, BlockTableRecord.ModelSpace);
      }
      public BlockPreview Add(Panel panel, string blockName)
      {
            using (DBTransaction tr = new DBTransaction(m_Database))
            {
                ObjectId idbtr = tr.BlockTable.GetRecorId(blockName);
                if (idbtr != ObjectId.Null)
                {
                  BlockTableRecord btr = (BlockTableRecord)tr.GetObject(idbtr, OpenMode.ForRead);
                  Extents3d ext3d = new Extents3d();
                  ext3d.AddBlockExtents(btr);
                  if (m_DisplayByBlock)
                  {
                        return Add(panel, btr, ext3d);
                  }
                  else
                  {
                        List<Entity> ents = new List<Entity>();
                        foreach (ObjectId id in btr)
                        {
                            ents.Add((Entity)tr.GetObject(id, OpenMode.ForRead).Clone());
                        }
                        return Add(panel, ents, ext3d);
                  }
                }
            }
            return null;
      }
      public BlockPreview Add(Panel panel, BlockTableRecord btr, Extents3d ext3d)
      {
            BlockPreview bp =
                new BlockPreview(
                   this,
                   panel,
                   btr,
                   ext3d);
            m_Previews.Add(bp);
            return bp;
      }
      public BlockPreview Add(Panel panel, List<Entity> ents, Extents3d ext3d)
      {
            BlockPreview bp =
               new BlockPreview(
                   this,
                   panel,
                   ents,
                   ext3d);
            m_Previews.Add(bp);
            return bp;
      }
      public BlockPreview Add(IEnumerable<Entity> ents, Extents3d ext3d)
      {
            BlockPreview bp =
               new BlockPreview(
                   this,
                   ents,
                   ext3d);
            m_Previews.Add(bp);
            return bp;
      }
      public BlockPreview Add(IEnumerable<Entity> ents)
      {
            BlockPreview bp =
               new BlockPreview(
                   this,
                   ents,
                   DbUtility.GetExtents(ents));
            m_Previews.Add(bp);
            return bp;
      }
      public void RemoveAt(int index)
      {
            if (index >= 0 && index < m_Previews.Count)
            {
                m_Previews.Dispose();
                m_Previews.RemoveAt(index);
            }
      }
      #endregion
      #region Display
      public void Display(int index)
      {
            Display(index, BlockTableRecord.ModelSpace);
      }
      public bool Display(int index, string blockName)
      {
            if (index >= 0 && index < m_Previews.Count)
            {
                using (DBTransaction tr = new DBTransaction(m_Database))
                {
                  if (tr.BlockTable.Has(blockName))
                  {
                        BlockTableRecord btr = (BlockTableRecord)tr.GetObject(tr.BlockTable, OpenMode.ForRead);
                        Extents3d ext3d = new Extents3d();
                        ext3d.AddBlockExtents(btr);
                        if (m_DisplayByBlock)
                        {
                            Display(index, btr, ext3d);
                        }
                        else
                        {
                            List<Entity> ents = new List<Entity>();
                           
                            foreach (ObjectId id in btr)
                            {
                              ents.Add((Entity)tr.GetObject(id, OpenMode.ForRead).Clone());
                            }
                            Display(index, ents, ext3d);
                        }
                        return true;
                  }
                }
            }
            return false;
      }
      private void Display(int index, BlockTableRecord btr, Extents3d ext3d)
      {
            m_Previews.Display(btr, ext3d);
      }
      private void Display(int index, IEnumerable<Entity> ents, Extents3d ext3d)
      {
            m_Previews.Display(ents, ext3d);
      }
      public void Refresh()
      {
            foreach (BlockPreview bp in m_Previews)
            {
                bp.Refresh();
            }
      }
      #endregion
      #region IEnumerable 成员
      IEnumerator IEnumerable.GetEnumerator()
      {
            return m_Previews.GetEnumerator();
      }
      #endregion
      #region IDispose
      public void Dispose()
      {
            foreach (BlockPreview bp in m_Previews)
            {
                bp.Dispose();
            }
      }
      #endregion
    }
}

q98we 发表于 2020-3-14 20:51:22


强!顶~!终于开源了嘿嘿!

雪山飞狐_lzh 发表于 2010-1-18 12:34:00

BlockPreview.cs
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Drawing.Imaging;
using GSView = Autodesk.AutoCAD.GraphicsSystem.View;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.GraphicsSystem;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.GraphicsInterface;
using Autodesk.AutoCAD.ApplicationServices;
using TlsCad.Utils;
namespace TlsCad.Trans
{
    public class BlockPreview : IDisposable
    {
      public enum PreviewStatus
      {
            Nothing = 0,
            Orbiting = 1,
            Panning = 2,
      }
      private Panel m_Panel = null;
      // Gs specific
      private static Manager m_Manager = null;
      private Device m_Device = null;
      private Model m_Model = null;
      private GSView m_View = null;
      // flags
      private bool m_MouseDown = false;
      private PreviewStatus m_PreviewStatus;
      private System.Drawing.Point m_StartPoint;
      private System.Drawing.Point m_EndPoint;
      private BlockPreviewManager m_Owner;
      private bool m_DisplayByBlock;
      private BlockTableRecord m_BlockTableRecord;
      private List<Entity> m_Entitys;

      #region Property
      public Color BackColor
      {
            set
            {
                //update it
                m_Device.BackgroundColor = value;
                // finally set the logical palette
                m_Device.SetLogicalPalette(GsUtility.MyAcadColorPs);
                // now update the gs view
                Refresh();
            }
      }
      public static Manager Manager
      {
            get { return m_Manager; }
            set { m_Manager = value; }
      }
      public Device Device
      {
            get { return m_Device; }
            set { m_Device = value; }
      }
      public Model Model
      {
            get { return m_Model; }
            set { m_Model = value; }
      }
      public GSView View
      {
            get { return m_View; }
            set { m_View = value; }
      }
      public bool MouseDown
      {
            get { return m_MouseDown; }
            set { m_MouseDown = value; }
      }
      public Point StartPoint
      {
            get { return m_StartPoint; }
            set { m_StartPoint = value; }
      }
      public Point EndPoint
      {
            get { return m_EndPoint; }
            set { m_EndPoint = value; }
      }

      public Entity this
      {
            get
            {
                if (index >= 0 && index < m_Entitys.Count)
                {
                  return m_Entitys;
                }
                return null;
            }
      }
      #endregion
      #region BlockView
      private void Initialize(BlockPreviewManager owner, Panel panel)
      {
            m_Owner = owner;
            m_Panel = panel;
            m_Panel.Paint += OnPaint;
            m_Panel.SizeChanged += OnSizeChanged;
            if (m_Owner.AllowMouseEvents)
            {
                m_Panel.MouseDown += OnMouseDown;
                m_Panel.MouseMove += OnMouseMove;
                m_Panel.MouseUp += OnMouseUp;
            }
            // now create the Gs control, create the autocad device passing the handle to the Windows panel
            m_Device = m_Manager.CreateAutoCADDevice(m_Panel.Handle);
            if (m_Owner.BackColor != Color.Empty)
                m_Device.BackgroundColor = m_Owner.BackColor;
            // resize the device to the panel size
            m_Device.OnSize(m_Panel.Size);
            // now create a new gs view
            m_View = new Autodesk.AutoCAD.GraphicsSystem.View();
            m_View.Mode = m_Owner.RenderMode;
            m_View.VisualStyle = new VisualStyle(m_Owner.ViewStyle);
            // and create the model
            m_Model = m_Manager.CreateAutoCADModel();
            // add the view to the device
            m_Device.Add(m_View);
      }
      internal BlockPreview(BlockPreviewManager owner, Panel panel, BlockTableRecord btr, Extents3d ext)
      {
            Initialize(owner, panel);
            Display(btr, ext);
      }
      private void SetViewTo(Extents3d ext)
      {
            Point3d maxpoint = ext.MaxPoint;
            Point3d minpoint = ext.MinPoint;
            Point3d center = minpoint + 0.5 * (maxpoint - minpoint);
            m_View.SetView(
                center + Vector3d.ZAxis,
                center,
                Vector3d.YAxis,
                maxpoint.X - minpoint.X,
                maxpoint.Y - minpoint.Y);
      }

      internal void Display(BlockTableRecord btr, Extents3d ext)
      {
            if (m_View != null)
            {
                m_View.EraseAll();
                SetViewTo(ext);
                m_BlockTableRecord = btr;
                m_DisplayByBlock = true;
                m_View.Add(m_BlockTableRecord, m_Model);
                Refresh();
            }
      }
      #endregion
      #region EntityView
      private void Initialize(BlockPreviewManager owner, Size size)
      {
            m_Owner = owner;
            //
            m_Device = m_Manager.CreateAutoCADOffScreenDevice();
            if (m_Owner.BackColor != Color.Empty)
                m_Device.BackgroundColor = m_Owner.BackColor;
            m_Device.OnSize(size);
            // now create a new gs view
            m_View = new Autodesk.AutoCAD.GraphicsSystem.View();
            m_View.Mode = m_Owner.RenderMode;
            m_View.VisualStyle = new VisualStyle(m_Owner.ViewStyle);
            // and create the model
            m_Model = m_Manager.CreateAutoCADModel();
            // add the view to the device
            m_Device.Add(m_View);
      }
      internal BlockPreview(BlockPreviewManager owner, IEnumerable<Entity> entitys, Extents3d ext)
      {
            Initialize(owner, DbUtility.GetSize(ext));
            Display(entitys, ext);
      }
      
      internal BlockPreview(BlockPreviewManager owner, Panel panel, List<Entity> entitys, Extents3d ext)
      {
            Initialize(owner, panel);
            Display(entitys, ext);
      }
      internal void Display(IEnumerable<Entity> entitys, Extents3d ext)
      {
            if (m_View != null)
            {
                m_View.EraseAll();
                SetViewTo(ext);
                m_DisplayByBlock = false;
                m_Entitys = new List<Entity>();
                AddEntity(entitys);
                Refresh();
            }
      }
      public void AddEntity(params Entity[] entitys)
      {
            foreach (Entity ent in entitys)
            {
                m_Entitys.Add(ent);
                m_View.Add(ent, m_Model);
            }
      }
      public void AddEntity(IEnumerable<Entity> entitys)
      {
            foreach (Entity ent in entitys)
            {
                m_Entitys.Add(ent);
                m_View.Add(ent, m_Model);
            }
      }
      public void RemoveEntity(params Entity[] entitys)
      {
            foreach (Entity ent in entitys)
            {
                m_Entitys.Remove(ent);
                m_View.Erase(ent);
            }
      }
      public void RemoveEntity(IEnumerable<Entity> entitys)
      {
            foreach (Entity ent in entitys)
            {
                m_Entitys.Remove(ent);
                m_View.Erase(ent);
            }
      }
      public void Update(params int[] indexs)
      {
            if (m_View != null)
            {
                if (!m_DisplayByBlock)
                {
                  foreach (int index in indexs)
                  {
                        Entity ent = this;
                        if (ent != null)
                        {
                            m_View.Erase(ent);
                            m_View.Add(ent, m_Model);
                        }
                  }
                }
            }
      }
      public void Update(IEnumerable<int> indexs)
      {
            if (m_View != null)
            {
                if (!m_DisplayByBlock)
                {
                  foreach (int index in indexs)
                  {
                        Entity ent = this;
                        if (ent != null)
                        {
                            m_View.Erase(ent);
                            m_View.Add(ent, m_Model);
                        }
                  }
                }
            }
      }
      public void Update(params Entity[] entitys)
      {
            if (m_View != null)
            {
                if (!m_DisplayByBlock)
                {
                  foreach (Entity ent in entitys)
                  {
                        m_View.Erase(ent);
                        m_View.Add(ent, m_Model);
                  }
                }
            }
      }
      public void Update(IEnumerable<Entity> entitys)
      {
            if (m_View != null)
            {
                if (!m_DisplayByBlock)
                {
                  foreach (Entity ent in entitys)
                  {
                        m_View.Erase(ent);
                        m_View.Add(ent, m_Model);
                  }
                }
            }
      }
      #endregion
      #region Inage
      public void Save(string filename, ImageFormat format)
      {
            using (Bitmap bitmap = GetImage())
            {
                bitmap.Save(filename, format);
            }
      }
      public Bitmap GetImage()
      {
            return m_Device.GetSnapshot(m_View.Viewport);
      }
      public void Refresh()
      {
            m_View.Invalidate();
            m_View.Update();
      }

      // draws the zoom window rectangle
      public void RubberRectangle(Point startPt, Point endPt)
      {
            // create a new instance of my GDI helper class, it seems too tricky to create simple XOR graphics
            // in .NET so let's resort to direct calls instead
            GsUtility.RubberbandRectangle rect = new GsUtility.RubberbandRectangle();
            System.Drawing.Graphics graphics = m_Panel.CreateGraphics();
            // draw the XOR rectangle
            rect.DrawXORRectangle(graphics, startPt, endPt);
      }
      #endregion
      #region Events
      protected void OnPaint(object sender, PaintEventArgs e)
      {
            Refresh();
      }
      public void OnMouseWheel(object sender, MouseEventArgs e)
      {
            if (e.Delta < 0)
                m_View.Zoom(0.5);
            else
                // wheel up!
                m_View.Zoom(1.5);
            Refresh();
      }

      protected void OnMouseMove(object sender, MouseEventArgs e)
      {
            if (m_View != null)
            {
                if (m_MouseDown)
                {
                  // save the new point for next time
                  m_EndPoint = e.Location;
                  switch (m_PreviewStatus)
                  {
                        case PreviewStatus.Panning:
                            //transform the point from device coordinates to
                            //world coordinates
                            Vector3d pan_vec = new Vector3d(-(e.Location.X - m_StartPoint.X), e.Location.Y - m_StartPoint.Y, 0);
                            pan_vec.TransformBy(m_View.ViewingMatrix * m_View.WorldToDeviceMatrix.Inverse());
                            m_View.Dolly(pan_vec);
                            break;
                        case PreviewStatus.Orbiting:
                            double Half_Pi = 1.570796326795;
                            System.Drawing.Rectangle view_rect = m_View.Viewport;
                            int nViewportX = (view_rect.Right - view_rect.Left) + 1;
                            int nViewportY = (view_rect.Bottom - view_rect.Top) + 1;
                            int centerX = (int)(nViewportX / 2.0f + view_rect.Left);
                            int centerY = (int)(nViewportY / 2.0f + view_rect.Top);
                            double radius = System.Math.Min(nViewportX, nViewportY) * 0.4f;
                            // compute two vectors from last and new cursor positions:
                            Vector3d last_vector = new Vector3d((m_StartPoint.X - centerX) / radius,
                              -(m_StartPoint.Y - centerY) / radius,
                              0.0);
                            if (last_vector.LengthSqrd > 1.0)   // outside the radius
                            {
                              double x = last_vector.X / last_vector.Length;
                              double y = last_vector.Y / last_vector.Length;
                              double z = last_vector.Z / last_vector.Length;
                              last_vector = new Vector3d(x, y, z);
                            }
                            else
                            {
                              double x = last_vector.X;
                              double y = last_vector.Y;
                              double z = System.Math.Sqrt(1.0 - last_vector.X * last_vector.X - last_vector.Y * last_vector.Y);
                              last_vector = new Vector3d(x, y, z);
                            }
                            Vector3d new_vector = new Vector3d((e.Location.X - centerX) / radius, -(e.Location.Y - centerY) / radius, 0.0);
                            if (new_vector.LengthSqrd > 1.0)   // outside the radius
                            {
                              double x = new_vector.X / new_vector.Length;
                              double y = new_vector.Y / new_vector.Length;
                              double z = new_vector.Z / new_vector.Length;
                              new_vector = new Vector3d(x, y, z);
                            }
                            else
                            {
                              double x = new_vector.X;
                              double y = new_vector.Y;
                              double z = System.Math.Sqrt(1.0 - new_vector.X * new_vector.X - new_vector.Y * new_vector.Y);
                              new_vector = new Vector3d(x, y, z);
                            }
                            // determine angles for proper sequence of camera manipulations:
                            Vector3d rotation_vector = last_vector;
                            rotation_vector = rotation_vector.CrossProduct(new_vector);// rotation_vector = last_vector x new_vector
                            Vector3d work_vector = rotation_vector;
                            work_vector = new Vector3d(work_vector.X, work_vector.Y, 0.0f);                      // projection of rotation_vector onto xy plane
                            double roll_angle = System.Math.Atan2(work_vector.X, work_vector.Y);      // assuming that the camera's up vector is "up",
                            // this computes the angle between the up vector
                            // and the work vector, which is the roll required
                            // to make the up vector coincident with the rotation_vector
                            double length = rotation_vector.Length;
                            double orbit_y_angle = (length != 0.0) ? System.Math.Acos(rotation_vector.Z / length) + Half_Pi : Half_Pi;                   // represents inverse cosine of the dot product of the
                            if (length > 1.0f)                                              // rotation_vector and the up_vector divided by the
                              length = 1.0f;                                              // magnitude of both vectors.We add pi/2 because we
                            // are making the up-vector parallel to the the rotation
                            double rotation_angle = System.Math.Asin(length);                // vector ... up-vector is perpin. to the eye-vector.
                            // perform view manipulations
                            m_View.Roll(roll_angle);               // 1: roll camera to make up vector coincident with rotation vector
                            m_View.Orbit(0.0f, orbit_y_angle);   // 2: orbit along y to make up vector parallel with rotation vector
                            m_View.Orbit(rotation_angle, 0.0f);   // 3: orbit along x by rotation angle
                            m_View.Orbit(0.0f, -orbit_y_angle);   // 4: orbit along y by the negation of 2
                            m_View.Roll(-roll_angle);               // 5: roll camera by the negation of 1
                            break;
                  }
                  Refresh();
                  m_StartPoint = e.Location;
                }
            }
      }
      protected void OnMouseDown(object sender, MouseEventArgs e)
      {
            m_MouseDown = true;
            switch (e.Button)
            {
                case MouseButtons.Left:
                  m_PreviewStatus = PreviewStatus.Orbiting;
                  break;
                case MouseButtons.Right:
                  m_PreviewStatus = PreviewStatus.Panning;
                  break;
            }
            m_StartPoint = e.Location;
      }
      protected void OnMouseUp(object sender, MouseEventArgs e)
      {
            switch (e.Button)
            {
                case MouseButtons.Left:
                  m_PreviewStatus -= (int)PreviewStatus.Orbiting;
                  break;
                case MouseButtons.Right:
                  m_PreviewStatus -= (int)PreviewStatus.Panning;
                  break;
            }
            m_PreviewStatus = PreviewStatus.Nothing;
            m_MouseDown = false;
      }
      protected void OnSizeChanged(object sender, EventArgs e)
      {
            if (m_Device != null)
            {
                m_Device.OnSize(m_Panel.Size);
            }
      }
      #endregion
      #region IDispose
      public void Dispose()
      {
            if (m_Device != null)
            {
                bool b = m_Device.Erase(m_View);
            }
            if (m_View != null)
            {
                m_View.EraseAll();
                m_View.Dispose();
                m_View = null;
            }
            if (m_Manager != null)
            {
                if (m_Model != null)
                {
                  m_Model.Dispose();
                  m_Model = null;
                }
                if (m_Device != null)
                {
                  m_Device.Dispose();
                  m_Device = null;
                }
            }
      }
      #endregion
    }
}

雪山飞狐_lzh 发表于 2010-1-18 12:36:00

using System;
using System.Drawing;
using System.Windows.Forms;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.GraphicsSystem;
namespace TlsCad.Utils
{
    public class GsUtility
    {
      public const String strActive = "*Active";
      public const String strActiveSettings = "ACAD_RENDER_ACTIVE_SETTINGS";
      public static void CustomUpdate(System.IntPtr parmeter, int left, int right, int bottom, int top)
      {
            MessageBox.Show("Left:" + left + "Right" + right + "Bottom" + bottom + "Top" + top);
      }
      public static System.Drawing.Color[] MyAcadColorPs =
            {
            System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 0 - lets make it red for an example
            //{255, 255, 255, 255},//----- 0 - ByBlock - White
            System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 1 - Red
            System.Drawing.Color.FromArgb(255, 255, 0, 255),    //----- 2 - Yellow
            System.Drawing.Color.FromArgb(0, 255, 0, 255),    //----- 3 - Green
            System.Drawing.Color.FromArgb(0, 255, 255, 255),    //----- 4 - Cyan
            System.Drawing.Color.FromArgb(0, 0, 255, 255),    //----- 5 - Blue
            System.Drawing.Color.FromArgb(255, 0, 255, 255),    //----- 6 - Magenta
            System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 7 - More red Red
            System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 8 - More red Red
            System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 9 - More red Red
            /*System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 7 - White
            System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 8
            System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 9*/
            System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 10
            System.Drawing.Color.FromArgb(255, 127, 127, 255),//----- 11
            System.Drawing.Color.FromArgb(165, 0, 0, 255),    //----- 12
            System.Drawing.Color.FromArgb(165, 82, 82, 255),    //----- 13
            System.Drawing.Color.FromArgb(127, 0, 0, 255),    //----- 14
            System.Drawing.Color.FromArgb(127, 63, 63, 255),    //----- 15
            System.Drawing.Color.FromArgb(76, 0, 0, 255),      //----- 16
            System.Drawing.Color.FromArgb(76, 38, 38, 255),    //----- 17
            System.Drawing.Color.FromArgb(38, 0, 0, 255),      //----- 18
            System.Drawing.Color.FromArgb(38, 19, 19, 255),    //----- 19
            System.Drawing.Color.FromArgb(255, 63, 0, 255),    //----- 20
            System.Drawing.Color.FromArgb(255, 159, 127, 255),//----- 21
            System.Drawing.Color.FromArgb(165, 41, 0, 255),    //----- 22
            System.Drawing.Color.FromArgb(165, 103, 82, 255),    //----- 23
            System.Drawing.Color.FromArgb(127, 31, 0, 255),    //----- 24
            System.Drawing.Color.FromArgb(127, 79, 63, 255),    //----- 25
            System.Drawing.Color.FromArgb(76, 19, 0, 255),    //----- 26
            System.Drawing.Color.FromArgb(76, 47, 38, 255),    //----- 27
            System.Drawing.Color.FromArgb(38, 9, 0, 255),      //----- 28
            System.Drawing.Color.FromArgb(38, 23, 19, 255),    //----- 29
            System.Drawing.Color.FromArgb(255, 127, 0, 255),    //----- 30
            System.Drawing.Color.FromArgb(255, 191, 127, 255),//----- 31
            System.Drawing.Color.FromArgb(165, 82, 0, 255),    //----- 32
            System.Drawing.Color.FromArgb(165, 124, 82, 255),    //----- 33
            System.Drawing.Color.FromArgb(127, 63, 0, 255),    //----- 34
            System.Drawing.Color.FromArgb(127, 95, 63, 255),    //----- 35
            System.Drawing.Color.FromArgb(76, 38, 0, 255),    //----- 36
            System.Drawing.Color.FromArgb(76, 57, 38, 255),    //----- 37
            System.Drawing.Color.FromArgb(38, 19, 0, 255),    //----- 38
            System.Drawing.Color.FromArgb(38, 28, 19, 255),    //----- 39
            System.Drawing.Color.FromArgb(255, 191, 0, 255),    //----- 40
            System.Drawing.Color.FromArgb(255, 223, 127, 255),//----- 41
            System.Drawing.Color.FromArgb(165, 124, 0, 255),    //----- 42
            System.Drawing.Color.FromArgb(165, 145, 82, 255),    //----- 43
            System.Drawing.Color.FromArgb(127, 95, 0, 255),    //----- 44
            System.Drawing.Color.FromArgb(127, 111, 63, 255),    //----- 45
            System.Drawing.Color.FromArgb(76, 57, 0, 255),    //----- 46
            System.Drawing.Color.FromArgb(76, 66, 38, 255),    //----- 47
            System.Drawing.Color.FromArgb(38, 28, 0, 255),    //----- 48
            System.Drawing.Color.FromArgb(38, 33, 19, 255),    //----- 49
            System.Drawing.Color.FromArgb(255, 255, 0, 255),    //----- 50
            System.Drawing.Color.FromArgb(255, 255, 127, 255),//----- 51
            System.Drawing.Color.FromArgb(165, 165, 0, 255),    //----- 52
            System.Drawing.Color.FromArgb(165, 165, 82, 255),    //----- 53
            System.Drawing.Color.FromArgb(127, 127, 0, 255),    //----- 54
            System.Drawing.Color.FromArgb(127, 127, 63, 255),    //----- 55
            System.Drawing.Color.FromArgb(76, 76, 0, 255),    //----- 56
            System.Drawing.Color.FromArgb(76, 76, 38, 255),    //----- 57
            System.Drawing.Color.FromArgb(38, 38, 0, 255),    //----- 58
            System.Drawing.Color.FromArgb(38, 38, 19, 255),    //----- 59
            System.Drawing.Color.FromArgb(191, 255, 0, 255),    //----- 60
            System.Drawing.Color.FromArgb(223, 255, 127, 255),//----- 61
            System.Drawing.Color.FromArgb(124, 165, 0, 255),    //----- 62
            System.Drawing.Color.FromArgb(145, 165, 82, 255),    //----- 63
            System.Drawing.Color.FromArgb(95, 127, 0, 255),    //----- 64
            System.Drawing.Color.FromArgb(111, 127, 63, 255),    //----- 65
            System.Drawing.Color.FromArgb(57, 76, 0, 255),    //----- 66
            System.Drawing.Color.FromArgb(66, 76, 38, 255),    //----- 67
            System.Drawing.Color.FromArgb(28, 38, 0, 255),    //----- 68
            System.Drawing.Color.FromArgb(33, 38, 19, 255),    //----- 69
            System.Drawing.Color.FromArgb(127, 255, 0, 255),    //----- 70
            System.Drawing.Color.FromArgb(191, 255, 127, 255),//----- 71
            System.Drawing.Color.FromArgb(82, 165, 0, 255),    //----- 72
            System.Drawing.Color.FromArgb(124, 165, 82, 255),    //----- 73
            System.Drawing.Color.FromArgb(63, 127, 0, 255),    //----- 74
            System.Drawing.Color.FromArgb(95, 127, 63, 255),    //----- 75
            System.Drawing.Color.FromArgb(38, 76, 0, 255),    //----- 76
            System.Drawing.Color.FromArgb(57, 76, 38, 255),    //----- 77
            System.Drawing.Color.FromArgb(19, 38, 0, 255),    //----- 78
            System.Drawing.Color.FromArgb(28, 38, 19, 255),    //----- 79
            System.Drawing.Color.FromArgb(63, 255, 0, 255),    //----- 80
            System.Drawing.Color.FromArgb(159, 255, 127, 255),//----- 81
            System.Drawing.Color.FromArgb(41, 165, 0, 255),    //----- 82
            System.Drawing.Color.FromArgb(103, 165, 82, 255),    //----- 83
            System.Drawing.Color.FromArgb(31, 127, 0, 255),    //----- 84
            System.Drawing.Color.FromArgb(79, 127, 63, 255),    //----- 85
            System.Drawing.Color.FromArgb(19, 76, 0, 255),    //----- 86
            System.Drawing.Color.FromArgb(47, 76, 38, 255),    //----- 87
            System.Drawing.Color.FromArgb(9, 38, 0, 255),      //----- 88
            System.Drawing.Color.FromArgb(23, 38, 19, 255),    //----- 89
            System.Drawing.Color.FromArgb(0, 255, 0, 255),    //----- 90
            System.Drawing.Color.FromArgb(127, 255, 127, 255),//----- 91
            System.Drawing.Color.FromArgb(0, 165, 0, 255),    //----- 92
            System.Drawing.Color.FromArgb(82, 165, 82, 255),    //----- 93
            System.Drawing.Color.FromArgb(0, 127, 0, 255),    //----- 94
            System.Drawing.Color.FromArgb(63, 127, 63, 255),    //----- 95
            System.Drawing.Color.FromArgb(0, 76, 0, 255),      //----- 96
            System.Drawing.Color.FromArgb(38, 76, 38, 255),    //----- 97
            System.Drawing.Color.FromArgb(0, 38, 0, 255),      //----- 98
            System.Drawing.Color.FromArgb(19, 38, 19, 255),    //----- 99
            System.Drawing.Color.FromArgb(0, 255, 63, 255),    //----- 100
            System.Drawing.Color.FromArgb(127, 255, 159, 255),//----- 101
            System.Drawing.Color.FromArgb(0, 165, 41, 255),    //----- 102
            System.Drawing.Color.FromArgb(82, 165, 103, 255),    //----- 103
            System.Drawing.Color.FromArgb(0, 127, 31, 255),    //----- 104
            System.Drawing.Color.FromArgb(63, 127, 79, 255),    //----- 105
            System.Drawing.Color.FromArgb(0, 76, 19, 255),    //----- 106
            System.Drawing.Color.FromArgb(38, 76, 47, 255),    //----- 107
            System.Drawing.Color.FromArgb(0, 38, 9, 255),      //----- 108
            System.Drawing.Color.FromArgb(19, 38, 23, 255),    //----- 109
            System.Drawing.Color.FromArgb(0, 255, 127, 255),    //----- 110
            System.Drawing.Color.FromArgb(127, 255, 191, 255),//----- 111
            System.Drawing.Color.FromArgb(0, 165, 82, 255),    //----- 112
            System.Drawing.Color.FromArgb(82, 165, 124, 255),    //----- 113
            System.Drawing.Color.FromArgb(0, 127, 63, 255),    //----- 114
            System.Drawing.Color.FromArgb(63, 127, 95, 255),    //----- 115
            System.Drawing.Color.FromArgb(0, 76, 38, 255),    //----- 116
            System.Drawing.Color.FromArgb(38, 76, 57, 255),    //----- 117
            System.Drawing.Color.FromArgb(0, 38, 19, 255),    //----- 118
            System.Drawing.Color.FromArgb(19, 38, 28, 255),    //----- 119
            System.Drawing.Color.FromArgb(0, 255, 191, 255),    //----- 120
            System.Drawing.Color.FromArgb(127, 255, 223, 255),//----- 121
            System.Drawing.Color.FromArgb(0, 165, 124, 255),    //----- 122
            System.Drawing.Color.FromArgb(82, 165, 145, 255),    //----- 123
            System.Drawing.Color.FromArgb(0, 127, 95, 255),    //----- 124
            System.Drawing.Color.FromArgb(63, 127, 111, 255),    //----- 125
            System.Drawing.Color.FromArgb(0, 76, 57, 255),    //----- 126
            System.Drawing.Color.FromArgb(38, 76, 66, 255),    //----- 127
            System.Drawing.Color.FromArgb(0, 38, 28, 255),    //----- 128
            System.Drawing.Color.FromArgb(19, 38, 33, 255),    //----- 129
            System.Drawing.Color.FromArgb(0, 255, 255, 255),    //----- 130
            System.Drawing.Color.FromArgb(127, 255, 255, 255),//----- 131
            System.Drawing.Color.FromArgb(0, 165, 165, 255),    //----- 132
            System.Drawing.Color.FromArgb(82, 165, 165, 255),    //----- 133
            System.Drawing.Color.FromArgb(0, 127, 127, 255),    //----- 134
            System.Drawing.Color.FromArgb(63, 127, 127, 255),    //----- 135
            System.Drawing.Color.FromArgb(0, 76, 76, 255),    //----- 136
            System.Drawing.Color.FromArgb(38, 76, 76, 255),    //----- 137
            System.Drawing.Color.FromArgb(0, 38, 38, 255),    //----- 138
            System.Drawing.Color.FromArgb(19, 38, 38, 255),    //----- 139
            System.Drawing.Color.FromArgb(0, 191, 255, 255),    //----- 140
            System.Drawing.Color.FromArgb(127, 223, 255, 255),//----- 141
            System.Drawing.Color.FromArgb(0, 124, 165, 255),    //----- 142
            System.Drawing.Color.FromArgb(82, 145, 165, 255),    //----- 143
            System.Drawing.Color.FromArgb(0, 95, 127, 255),    //----- 144
            System.Drawing.Color.FromArgb(63, 111, 127, 255),    //----- 145
            System.Drawing.Color.FromArgb(0, 57, 76, 255),    //----- 146
            System.Drawing.Color.FromArgb(38, 66, 76, 255),    //----- 147
            System.Drawing.Color.FromArgb(0, 28, 38, 255),    //----- 148
            System.Drawing.Color.FromArgb(19, 33, 38, 255),    //----- 149
            System.Drawing.Color.FromArgb(0, 127, 255, 255),    //----- 150
            System.Drawing.Color.FromArgb(127, 191, 255, 255),//----- 151
            System.Drawing.Color.FromArgb(0, 82, 165, 255),    //----- 152
            System.Drawing.Color.FromArgb(82, 124, 165, 255),    //----- 153
            System.Drawing.Color.FromArgb(0, 63, 127, 255),    //----- 154
            System.Drawing.Color.FromArgb(63, 95, 127, 255),    //----- 155
            System.Drawing.Color.FromArgb(0, 38, 76, 255),    //----- 156
            System.Drawing.Color.FromArgb(38, 57, 76, 255),    //----- 157
            System.Drawing.Color.FromArgb(0, 19, 38, 255),    //----- 158
            System.Drawing.Color.FromArgb(19, 28, 38, 255),    //----- 159
            System.Drawing.Color.FromArgb(0, 63, 255, 255),    //----- 160
            System.Drawing.Color.FromArgb(127, 159, 255, 255),//----- 161
            System.Drawing.Color.FromArgb(0, 41, 165, 255),    //----- 162
            System.Drawing.Color.FromArgb(82, 103, 165, 255),    //----- 163
            System.Drawing.Color.FromArgb(0, 31, 127, 255),    //----- 164
            System.Drawing.Color.FromArgb(63, 79, 127, 255),    //----- 165
            System.Drawing.Color.FromArgb(0, 19, 76, 255),    //----- 166
            System.Drawing.Color.FromArgb(38, 47, 76, 255),    //----- 167
            System.Drawing.Color.FromArgb(0, 9, 38, 255),      //----- 168
            System.Drawing.Color.FromArgb(19, 23, 38, 255),    //----- 169
            System.Drawing.Color.FromArgb(0, 0, 255, 255),    //----- 170
            System.Drawing.Color.FromArgb(127, 127, 255, 255),//----- 171
            System.Drawing.Color.FromArgb(0, 0, 165, 255),    //----- 172
            System.Drawing.Color.FromArgb(82, 82, 165, 255),    //----- 173
            System.Drawing.Color.FromArgb(0, 0, 127, 255),    //----- 174
            System.Drawing.Color.FromArgb(63, 63, 127, 255),    //----- 175
            System.Drawing.Color.FromArgb(0, 0, 76, 255),      //----- 176
            System.Drawing.Color.FromArgb(38, 38, 76, 255),    //----- 177
            System.Drawing.Color.FromArgb(0, 0, 38, 255),      //----- 178
            System.Drawing.Color.FromArgb(19, 19, 38, 255),    //----- 179
            System.Drawing.Color.FromArgb(63, 0, 255, 255),    //----- 180
            System.Drawing.Color.FromArgb(159, 127, 255, 255),//----- 181
            System.Drawing.Color.FromArgb(41, 0, 165, 255),    //----- 182
            System.Drawing.Color.FromArgb(103, 82, 165, 255),    //----- 183
            System.Drawing.Color.FromArgb(31, 0, 127, 255),    //----- 184
            System.Drawing.Color.FromArgb(79, 63, 127, 255),    //----- 185
            System.Drawing.Color.FromArgb(19, 0, 76, 255),    //----- 186
            System.Drawing.Color.FromArgb(47, 38, 76, 255),    //----- 187
            System.Drawing.Color.FromArgb(9, 0, 38, 255),      //----- 188
            System.Drawing.Color.FromArgb(23, 19, 38, 255),    //----- 189
            System.Drawing.Color.FromArgb(127, 0, 255, 255),    //----- 190
            System.Drawing.Color.FromArgb(191, 127, 255, 255),//----- 191
            System.Drawing.Color.FromArgb(82, 0, 165, 255),    //----- 192
            System.Drawing.Color.FromArgb(124, 82, 165, 255),    //----- 193
            System.Drawing.Color.FromArgb(63, 0, 127, 255),    //----- 194
            System.Drawing.Color.FromArgb(95, 63, 127, 255),    //----- 195
            System.Drawing.Color.FromArgb(38, 0, 76, 255),    //----- 196
            System.Drawing.Color.FromArgb(57, 38, 76, 255),    //----- 197
            System.Drawing.Color.FromArgb(19, 0, 38, 255),    //----- 198
            System.Drawing.Color.FromArgb(28, 19, 38, 255),    //----- 199
            System.Drawing.Color.FromArgb(191, 0, 255, 255),    //----- 200
            System.Drawing.Color.FromArgb(223, 127, 255, 255),//----- 201
            System.Drawing.Color.FromArgb(124, 0, 165, 255),    //----- 202
            System.Drawing.Color.FromArgb(145, 82, 165, 255),    //----- 203
            System.Drawing.Color.FromArgb(95, 0, 127, 255),    //----- 204
            System.Drawing.Color.FromArgb(111, 63, 127, 255),    //----- 205
            System.Drawing.Color.FromArgb(57, 0, 76, 255),    //----- 206
            System.Drawing.Color.FromArgb(66, 38, 76, 255),    //----- 207
            System.Drawing.Color.FromArgb(28, 0, 38, 255),    //----- 208
            System.Drawing.Color.FromArgb(33, 19, 38, 255),    //----- 209
            System.Drawing.Color.FromArgb(255, 0, 255, 255),    //----- 210
            System.Drawing.Color.FromArgb(255, 127, 255, 255),//----- 211
            System.Drawing.Color.FromArgb(165, 0, 165, 255),    //----- 212
            System.Drawing.Color.FromArgb(165, 82, 165, 255),    //----- 213
            System.Drawing.Color.FromArgb(127, 0, 127, 255),    //----- 214
            System.Drawing.Color.FromArgb(127, 63, 127, 255),    //----- 215
            System.Drawing.Color.FromArgb(76, 0, 76, 255),    //----- 216
            System.Drawing.Color.FromArgb(76, 38, 76, 255),    //----- 217
            System.Drawing.Color.FromArgb(38, 0, 38, 255),    //----- 218
            System.Drawing.Color.FromArgb(38, 19, 38, 255),    //----- 219
            System.Drawing.Color.FromArgb(255, 0, 191, 255),    //----- 220
            System.Drawing.Color.FromArgb(255, 127, 223, 255),//----- 221
            System.Drawing.Color.FromArgb(165, 0, 124, 255),    //----- 222
            System.Drawing.Color.FromArgb(165, 82, 145, 255),    //----- 223
            System.Drawing.Color.FromArgb(127, 0, 95, 255),    //----- 224
            System.Drawing.Color.FromArgb(127, 63, 111, 255),    //----- 225
            System.Drawing.Color.FromArgb(76, 0, 57, 255),    //----- 226
            System.Drawing.Color.FromArgb(76, 38, 66, 255),    //----- 227
            System.Drawing.Color.FromArgb(38, 0, 28, 255),    //----- 228
            System.Drawing.Color.FromArgb(38, 19, 33, 255),    //----- 229
            System.Drawing.Color.FromArgb(255, 0, 127, 255),    //----- 230
            System.Drawing.Color.FromArgb(255, 127, 191, 255),//----- 231
            System.Drawing.Color.FromArgb(165, 0, 82, 255),    //----- 232
            System.Drawing.Color.FromArgb(165, 82, 124, 255),    //----- 233
            System.Drawing.Color.FromArgb(127, 0, 63, 255),    //----- 234
            System.Drawing.Color.FromArgb(127, 63, 95, 255),    //----- 235
            System.Drawing.Color.FromArgb(76, 0, 38, 255),    //----- 236
            System.Drawing.Color.FromArgb(76, 38, 57, 255),    //----- 237
            System.Drawing.Color.FromArgb(38, 0, 19, 255),    //----- 238
            System.Drawing.Color.FromArgb(38, 19, 28, 255),    //----- 239
            System.Drawing.Color.FromArgb(255, 0, 63, 255),    //----- 240
            System.Drawing.Color.FromArgb(255, 127, 159, 255),//----- 241
            System.Drawing.Color.FromArgb(165, 0, 41, 255),    //----- 242
            System.Drawing.Color.FromArgb(165, 82, 103, 255),    //----- 243
            System.Drawing.Color.FromArgb(127, 0, 31, 255),    //----- 244
            System.Drawing.Color.FromArgb(127, 63, 79, 255),    //----- 245
            System.Drawing.Color.FromArgb(76, 0, 19, 255),    //----- 246
            System.Drawing.Color.FromArgb(76, 38, 47, 255),    //----- 247
            System.Drawing.Color.FromArgb(38, 0, 9, 255),      //----- 248
            System.Drawing.Color.FromArgb(38, 19, 23, 255),    //----- 249
            System.Drawing.Color.FromArgb(84, 84, 84, 255),    //----- 250
            System.Drawing.Color.FromArgb(118, 118, 118, 255),//----- 251
            System.Drawing.Color.FromArgb(152, 152, 152, 255),//----- 252
            System.Drawing.Color.FromArgb(186, 186, 186, 255),//----- 253
            System.Drawing.Color.FromArgb(220, 220, 220, 255),//----- 254
            System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 255
            };
      //////////////////////////////////////////////////////////////////////////////
      // standard autocad colours
      public static System.Drawing.Color[] MyAcadColorMs =
            {
            System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 0 - ByBlock - White
            System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 1 - Red
            System.Drawing.Color.FromArgb(255, 255, 0, 255),    //----- 2 - Yellow
            System.Drawing.Color.FromArgb(0, 255, 0, 255),    //----- 3 - Green
            System.Drawing.Color.FromArgb(0, 255, 255, 255),    //----- 4 - Cyan
            System.Drawing.Color.FromArgb(0, 0, 255, 255),    //----- 5 - Blue
            System.Drawing.Color.FromArgb(255, 0, 255, 255),    //----- 6 - Magenta
            System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 7 - White
            System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 8
            System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 9
            System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 10
            System.Drawing.Color.FromArgb(255, 127, 127, 255),//----- 11
            System.Drawing.Color.FromArgb(165, 0, 0, 255),    //----- 12
            System.Drawing.Color.FromArgb(165, 82, 82, 255),    //----- 13
            System.Drawing.Color.FromArgb(127, 0, 0, 255),    //----- 14
            System.Drawing.Color.FromArgb(127, 63, 63, 255),    //----- 15
            System.Drawing.Color.FromArgb(76, 0, 0, 255),      //----- 16
            System.Drawing.Color.FromArgb(76, 38, 38, 255),    //----- 17
            System.Drawing.Color.FromArgb(38, 0, 0, 255),      //----- 18
            System.Drawing.Color.FromArgb(38, 19, 19, 255),    //----- 19
            System.Drawing.Color.FromArgb(255, 63, 0, 255),    //----- 20
            System.Drawing.Color.FromArgb(255, 159, 127, 255),//----- 21
            System.Drawing.Color.FromArgb(165, 41, 0, 255),    //----- 22
            System.Drawing.Color.FromArgb(165, 103, 82, 255),    //----- 23
            System.Drawing.Color.FromArgb(127, 31, 0, 255),    //----- 24
            System.Drawing.Color.FromArgb(127, 79, 63, 255),    //----- 25
            System.Drawing.Color.FromArgb(76, 19, 0, 255),    //----- 26
            System.Drawing.Color.FromArgb(76, 47, 38, 255),    //----- 27
            System.Drawing.Color.FromArgb(38, 9, 0, 255),      //----- 28
            System.Drawing.Color.FromArgb(38, 23, 19, 255),    //----- 29
            System.Drawing.Color.FromArgb(255, 127, 0, 255),    //----- 30
            System.Drawing.Color.FromArgb(255, 191, 127, 255),//----- 31
            System.Drawing.Color.FromArgb(165, 82, 0, 255),    //----- 32
            System.Drawing.Color.FromArgb(165, 124, 82, 255),    //----- 33
            System.Drawing.Color.FromArgb(127, 63, 0, 255),    //----- 34
            System.Drawing.Color.FromArgb(127, 95, 63, 255),    //----- 35
            System.Drawing.Color.FromArgb(76, 38, 0, 255),    //----- 36
            System.Drawing.Color.FromArgb(76, 57, 38, 255),    //----- 37
            System.Drawing.Color.FromArgb(38, 19, 0, 255),    //----- 38
            System.Drawing.Color.FromArgb(38, 28, 19, 255),    //----- 39
            System.Drawing.Color.FromArgb(255, 191, 0, 255),    //----- 40
            System.Drawing.Color.FromArgb(255, 223, 127, 255),//----- 41
            System.Drawing.Color.FromArgb(165, 124, 0, 255),    //----- 42
            System.Drawing.Color.FromArgb(165, 145, 82, 255),    //----- 43
            System.Drawing.Color.FromArgb(127, 95, 0, 255),    //----- 44
            System.Drawing.Color.FromArgb(127, 111, 63, 255),    //----- 45
            System.Drawing.Color.FromArgb(76, 57, 0, 255),    //----- 46
            System.Drawing.Color.FromArgb(76, 66, 38, 255),    //----- 47
            System.Drawing.Color.FromArgb(38, 28, 0, 255),    //----- 48
            System.Drawing.Color.FromArgb(38, 33, 19, 255),    //----- 49
            System.Drawing.Color.FromArgb(255, 255, 0, 255),    //----- 50
            System.Drawing.Color.FromArgb(255, 255, 127, 255),//----- 51
            System.Drawing.Color.FromArgb(165, 165, 0, 255),    //----- 52
            System.Drawing.Color.FromArgb(165, 165, 82, 255),    //----- 53
            System.Drawing.Color.FromArgb(127, 127, 0, 255),    //----- 54
            System.Drawing.Color.FromArgb(127, 127, 63, 255),    //----- 55
            System.Drawing.Color.FromArgb(76, 76, 0, 255),    //----- 56
            System.Drawing.Color.FromArgb(76, 76, 38, 255),    //----- 57
            System.Drawing.Color.FromArgb(38, 38, 0, 255),    //----- 58
            System.Drawing.Color.FromArgb(38, 38, 19, 255),    //----- 59
            System.Drawing.Color.FromArgb(191, 255, 0, 255),    //----- 60
            System.Drawing.Color.FromArgb(223, 255, 127, 255),//----- 61
            System.Drawing.Color.FromArgb(124, 165, 0, 255),    //----- 62
            System.Drawing.Color.FromArgb(145, 165, 82, 255),    //----- 63
            System.Drawing.Color.FromArgb(95, 127, 0, 255),    //----- 64
            System.Drawing.Color.FromArgb(111, 127, 63, 255),    //----- 65
            System.Drawing.Color.FromArgb(57, 76, 0, 255),    //----- 66
            System.Drawing.Color.FromArgb(66, 76, 38, 255),    //----- 67
            System.Drawing.Color.FromArgb(28, 38, 0, 255),    //----- 68
            System.Drawing.Color.FromArgb(33, 38, 19, 255),    //----- 69
            System.Drawing.Color.FromArgb(127, 255, 0, 255),    //----- 70
            System.Drawing.Color.FromArgb(191, 255, 127, 255),//----- 71
            System.Drawing.Color.FromArgb(82, 165, 0, 255),    //----- 72
            System.Drawing.Color.FromArgb(124, 165, 82, 255),    //----- 73
            System.Drawing.Color.FromArgb(63, 127, 0, 255),    //----- 74
            System.Drawing.Color.FromArgb(95, 127, 63, 255),    //----- 75
            System.Drawing.Color.FromArgb(38, 76, 0, 255),    //----- 76
            System.Drawing.Color.FromArgb(57, 76, 38, 255),    //----- 77
            System.Drawing.Color.FromArgb(19, 38, 0, 255),    //----- 78
            System.Drawing.Color.FromArgb(28, 38, 19, 255),    //----- 79
            System.Drawing.Color.FromArgb(63, 255, 0, 255),    //----- 80
            System.Drawing.Color.FromArgb(159, 255, 127, 255),//----- 81
            System.Drawing.Color.FromArgb(41, 165, 0, 255),    //----- 82
            System.Drawing.Color.FromArgb(103, 165, 82, 255),    //----- 83
            System.Drawing.Color.FromArgb(31, 127, 0, 255),    //----- 84
            System.Drawing.Color.FromArgb(79, 127, 63, 255),    //----- 85
            System.Drawing.Color.FromArgb(19, 76, 0, 255),    //----- 86
            System.Drawing.Color.FromArgb(47, 76, 38, 255),    //----- 87
            System.Drawing.Color.FromArgb(9, 38, 0, 255),      //----- 88
            System.Drawing.Color.FromArgb(23, 38, 19, 255),    //----- 89
            System.Drawing.Color.FromArgb(0, 255, 0, 255),    //----- 90
            System.Drawing.Color.FromArgb(127, 255, 127, 255),//----- 91
            System.Drawing.Color.FromArgb(0, 165, 0, 255),    //----- 92
            System.Drawing.Color.FromArgb(82, 165, 82, 255),    //----- 93
            System.Drawing.Color.FromArgb(0, 127, 0, 255),    //----- 94
            System.Drawing.Color.FromArgb(63, 127, 63, 255),    //----- 95
            System.Drawing.Color.FromArgb(0, 76, 0, 255),      //----- 96
            System.Drawing.Color.FromArgb(38, 76, 38, 255),    //----- 97
            System.Drawing.Color.FromArgb(0, 38, 0, 255),      //----- 98
            System.Drawing.Color.FromArgb(19, 38, 19, 255),    //----- 99
            System.Drawing.Color.FromArgb(0, 255, 63, 255),    //----- 100
            System.Drawing.Color.FromArgb(127, 255, 159, 255),//----- 101
            System.Drawing.Color.FromArgb(0, 165, 41, 255),    //----- 102
            System.Drawing.Color.FromArgb(82, 165, 103, 255),    //----- 103
            System.Drawing.Color.FromArgb(0, 127, 31, 255),    //----- 104
            System.Drawing.Color.FromArgb(63, 127, 79, 255),    //----- 105
            System.Drawing.Color.FromArgb(0, 76, 19, 255),    //----- 106
            System.Drawing.Color.FromArgb(38, 76, 47, 255),    //----- 107
            System.Drawing.Color.FromArgb(0, 38, 9, 255),      //----- 108
            System.Drawing.Color.FromArgb(19, 38, 23, 255),    //----- 109
            System.Drawing.Color.FromArgb(0, 255, 127, 255),    //----- 110
            System.Drawing.Color.FromArgb(127, 255, 191, 255),//----- 111
            System.Drawing.Color.FromArgb(0, 165, 82, 255),    //----- 112
            System.Drawing.Color.FromArgb(82, 165, 124, 255),    //----- 113
            System.Drawing.Color.FromArgb(0, 127, 63, 255),    //----- 114
            System.Drawing.Color.FromArgb(63, 127, 95, 255),    //----- 115
            System.Drawing.Color.FromArgb(0, 76, 38, 255),    //----- 116
            System.Drawing.Color.FromArgb(38, 76, 57, 255),    //----- 117
            System.Drawing.Color.FromArgb(0, 38, 19, 255),    //----- 118
            System.Drawing.Color.FromArgb(19, 38, 28, 255),    //----- 119
            System.Drawing.Color.FromArgb(0, 255, 191, 255),    //----- 120
            System.Drawing.Color.FromArgb(127, 255, 223, 255),//----- 121
            System.Drawing.Color.FromArgb(0, 165, 124, 255),    //----- 122
            System.Drawing.Color.FromArgb(82, 165, 145, 255),    //----- 123
            System.Drawing.Color.FromArgb(0, 127, 95, 255),    //----- 124
            System.Drawing.Color.FromArgb(63, 127, 111, 255),    //----- 125
            System.Drawing.Color.FromArgb(0, 76, 57, 255),    //----- 126
            System.Drawing.Color.FromArgb(38, 76, 66, 255),    //----- 127
            System.Drawing.Color.FromArgb(0, 38, 28, 255),    //----- 128
            System.Drawing.Color.FromArgb(19, 38, 33, 255),    //----- 129
            System.Drawing.Color.FromArgb(0, 255, 255, 255),    //----- 130
            System.Drawing.Color.FromArgb(127, 255, 255, 255),//----- 131
            System.Drawing.Color.FromArgb(0, 165, 165, 255),    //----- 132
            System.Drawing.Color.FromArgb(82, 165, 165, 255),    //----- 133
            System.Drawing.Color.FromArgb(0, 127, 127, 255),    //----- 134
            System.Drawing.Color.FromArgb(63, 127, 127, 255),    //----- 135
            System.Drawing.Color.FromArgb(0, 76, 76, 255),    //----- 136
            System.Drawing.Color.FromArgb(38, 76, 76, 255),    //----- 137
            System.Drawing.Color.FromArgb(0, 38, 38, 255),    //----- 138
            System.Drawing.Color.FromArgb(19, 38, 38, 255),    //----- 139
            System.Drawing.Color.FromArgb(0, 191, 255, 255),    //----- 140
            System.Drawing.Color.FromArgb(127, 223, 255, 255),//----- 141
            System.Drawing.Color.FromArgb(0, 124, 165, 255),    //----- 142
            System.Drawing.Color.FromArgb(82, 145, 165, 255),    //----- 143
            System.Drawing.Color.FromArgb(0, 95, 127, 255),    //----- 144
            System.Drawing.Color.FromArgb(63, 111, 127, 255),    //----- 145
            System.Drawing.Color.FromArgb(0, 57, 76, 255),    //----- 146
            System.Drawing.Color.FromArgb(38, 66, 76, 255),    //----- 147
            System.Drawing.Color.FromArgb(0, 28, 38, 255),    //----- 148
            System.Drawing.Color.FromArgb(19, 33, 38, 255),    //----- 149
            System.Drawing.Color.FromArgb(0, 127, 255, 255),    //----- 150
            System.Drawing.Color.FromArgb(127, 191, 255, 255),//----- 151
            System.Drawing.Color.FromArgb(0, 82, 165, 255),    //----- 152
            System.Drawing.Color.FromArgb(82, 124, 165, 255),    //----- 153
            System.Drawing.Color.FromArgb(0, 63, 127, 255),    //----- 154
            System.Drawing.Color.FromArgb(63, 95, 127, 255),    //----- 155
            System.Drawing.Color.FromArgb(0, 38, 76, 255),    //----- 156
            System.Drawing.Color.FromArgb(38, 57, 76, 255),    //----- 157
            System.Drawing.Color.FromArgb(0, 19, 38, 255),    //----- 158
            System.Drawing.Color.FromArgb(19, 28, 38, 255),    //----- 159
            System.Drawing.Color.FromArgb(0, 63, 255, 255),    //----- 160
            System.Drawing.Color.FromArgb(127, 159, 255, 255),//----- 161
            System.Drawing.Color.FromArgb(0, 41, 165, 255),    //----- 162
            System.Drawing.Color.FromArgb(82, 103, 165, 255),    //----- 163
            System.Drawing.Color.FromArgb(0, 31, 127, 255),    //----- 164
            System.Drawing.Color.FromArgb(63, 79, 127, 255),    //----- 165
            System.Drawing.Color.FromArgb(0, 19, 76, 255),    //----- 166
            System.Drawing.Color.FromArgb(38, 47, 76, 255),    //----- 167
            System.Drawing.Color.FromArgb(0, 9, 38, 255),      //----- 168
            System.Drawing.Color.FromArgb(19, 23, 38, 255),    //----- 169
            System.Drawing.Color.FromArgb(0, 0, 255, 255),    //----- 170
            System.Drawing.Color.FromArgb(127, 127, 255, 255),//----- 171
            System.Drawing.Color.FromArgb(0, 0, 165, 255),    //----- 172
            System.Drawing.Color.FromArgb(82, 82, 165, 255),    //----- 173
            System.Drawing.Color.FromArgb(0, 0, 127, 255),    //----- 174
            System.Drawing.Color.FromArgb(63, 63, 127, 255),    //----- 175
            System.Drawing.Color.FromArgb(0, 0, 76, 255),      //----- 176
            System.Drawing.Color.FromArgb(38, 38, 76, 255),    //----- 177
            System.Drawing.Color.FromArgb(0, 0, 38, 255),      //----- 178
            System.Drawing.Color.FromArgb(19, 19, 38, 255),    //----- 179
            System.Drawing.Color.FromArgb(63, 0, 255, 255),    //----- 180
            System.Drawing.Color.FromArgb(159, 127, 255, 255),//----- 181
            System.Drawing.Color.FromArgb(41, 0, 165, 255),    //----- 182
            System.Drawing.Color.FromArgb(103, 82, 165, 255),    //----- 183
            System.Drawing.Color.FromArgb(31, 0, 127, 255),    //----- 184
            System.Drawing.Color.FromArgb(79, 63, 127, 255),    //----- 185
            System.Drawing.Color.FromArgb(19, 0, 76, 255),    //----- 186
            System.Drawing.Color.FromArgb(47, 38, 76, 255),    //----- 187
            System.Drawing.Color.FromArgb(9, 0, 38, 255),      //----- 188
            System.Drawing.Color.FromArgb(23, 19, 38, 255),    //----- 189
            System.Drawing.Color.FromArgb(127, 0, 255, 255),    //----- 190
            System.Drawing.Color.FromArgb(191, 127, 255, 255),//----- 191
            System.Drawing.Color.FromArgb(82, 0, 165, 255),    //----- 192
            System.Drawing.Color.FromArgb(124, 82, 165, 255),    //----- 193
            System.Drawing.Color.FromArgb(63, 0, 127, 255),    //----- 194
            System.Drawing.Color.FromArgb(95, 63, 127, 255),    //----- 195
            System.Drawing.Color.FromArgb(38, 0, 76, 255),    //----- 196
            System.Drawing.Color.FromArgb(57, 38, 76, 255),    //----- 197
            System.Drawing.Color.FromArgb(19, 0, 38, 255),    //----- 198
            System.Drawing.Color.FromArgb(28, 19, 38, 255),    //----- 199
            System.Drawing.Color.FromArgb(191, 0, 255, 255),    //----- 200
            System.Drawing.Color.FromArgb(223, 127, 255, 255),//----- 201
            System.Drawing.Color.FromArgb(124, 0, 165, 255),    //----- 202
            System.Drawing.Color.FromArgb(145, 82, 165, 255),    //----- 203
            System.Drawing.Color.FromArgb(95, 0, 127, 255),    //----- 204
            System.Drawing.Color.FromArgb(111, 63, 127, 255),    //----- 205
            System.Drawing.Color.FromArgb(57, 0, 76, 255),    //----- 206
            System.Drawing.Color.FromArgb(66, 38, 76, 255),    //----- 207
            System.Drawing.Color.FromArgb(28, 0, 38, 255),    //----- 208
            System.Drawing.Color.FromArgb(33, 19, 38, 255),    //----- 209
            System.Drawing.Color.FromArgb(255, 0, 255, 255),    //----- 210
            System.Drawing.Color.FromArgb(255, 127, 255, 255),//----- 211
            System.Drawing.Color.FromArgb(165, 0, 165, 255),    //----- 212
            System.Drawing.Color.FromArgb(165, 82, 165, 255),    //----- 213
            System.Drawing.Color.FromArgb(127, 0, 127, 255),    //----- 214
            System.Drawing.Color.FromArgb(127, 63, 127, 255),    //----- 215
            System.Drawing.Color.FromArgb(76, 0, 76, 255),    //----- 216
            System.Drawing.Color.FromArgb(76, 38, 76, 255),    //----- 217
            System.Drawing.Color.FromArgb(38, 0, 38, 255),    //----- 218
            System.Drawing.Color.FromArgb(38, 19, 38, 255),    //----- 219
            System.Drawing.Color.FromArgb(255, 0, 191, 255),    //----- 220
            System.Drawing.Color.FromArgb(255, 127, 223, 255),//----- 221
            System.Drawing.Color.FromArgb(165, 0, 124, 255),    //----- 222
            System.Drawing.Color.FromArgb(165, 82, 145, 255),    //----- 223
            System.Drawing.Color.FromArgb(127, 0, 95, 255),    //----- 224
            System.Drawing.Color.FromArgb(127, 63, 111, 255),    //----- 225
            System.Drawing.Color.FromArgb(76, 0, 57, 255),    //----- 226
            System.Drawing.Color.FromArgb(76, 38, 66, 255),    //----- 227
            System.Drawing.Color.FromArgb(38, 0, 28, 255),    //----- 228
            System.Drawing.Color.FromArgb(38, 19, 33, 255),    //----- 229
            System.Drawing.Color.FromArgb(255, 0, 127, 255),    //----- 230
            System.Drawing.Color.FromArgb(255, 127, 191, 255),//----- 231
            System.Drawing.Color.FromArgb(165, 0, 82, 255),    //----- 232
            System.Drawing.Color.FromArgb(165, 82, 124, 255),    //----- 233
            System.Drawing.Color.FromArgb(127, 0, 63, 255),    //----- 234
            System.Drawing.Color.FromArgb(127, 63, 95, 255),    //----- 235
            System.Drawing.Color.FromArgb(76, 0, 38, 255),    //----- 236
            System.Drawing.Color.FromArgb(76, 38, 57, 255),    //----- 237
            System.Drawing.Color.FromArgb(38, 0, 19, 255),    //----- 238
            System.Drawing.Color.FromArgb(38, 19, 28, 255),    //----- 239
            System.Drawing.Color.FromArgb(255, 0, 63, 255),    //----- 240
            System.Drawing.Color.FromArgb(255, 127, 159, 255),//----- 241
            System.Drawing.Color.FromArgb(165, 0, 41, 255),    //----- 242
            System.Drawing.Color.FromArgb(165, 82, 103, 255),    //----- 243
            System.Drawing.Color.FromArgb(127, 0, 31, 255),    //----- 244
            System.Drawing.Color.FromArgb(127, 63, 79, 255),    //----- 245
            System.Drawing.Color.FromArgb(76, 0, 19, 255),    //----- 246
            System.Drawing.Color.FromArgb(76, 38, 47, 255),    //----- 247
            System.Drawing.Color.FromArgb(38, 0, 9, 255),      //----- 248
            System.Drawing.Color.FromArgb(38, 19, 23, 255),    //----- 249
            System.Drawing.Color.FromArgb(84, 84, 84, 255),    //----- 250
            System.Drawing.Color.FromArgb(118, 118, 118, 255),//----- 251
            System.Drawing.Color.FromArgb(152, 152, 152, 255),//----- 252
            System.Drawing.Color.FromArgb(186, 186, 186, 255),//----- 253
            System.Drawing.Color.FromArgb(220, 220, 220, 255),//----- 254
            System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 255
            };
      public static bool GetActiveViewPortInfo(ref double height, ref double width, ref Point3d target, ref Vector3d viewDir, ref double viewTwist, bool getViewCenter)
      {
            // get the editor object
            Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
            ed.UpdateTiledViewportsInDatabase();
            Database db = HostApplicationServices.WorkingDatabase;
            using (Transaction t = db.TransactionManager.StartTransaction())
            {
                ViewportTable vt = (ViewportTable)t.GetObject(db.ViewportTableId, OpenMode.ForRead);
                ViewportTableRecord btr = (ViewportTableRecord)t.GetObject(vt, OpenMode.ForRead);
                height = btr.Height;
                width = btr.Width;
                target = btr.Target;
                viewDir = btr.ViewDirection;
                viewTwist = btr.ViewTwist;
               
                t.Commit();
            }
            return true;
      }
      public class RubberbandRectangle
      {
            public enum PenStyles
            {
                PS_SOLID = 0,
                PS_DASH = 1,
                PS_DOT = 2,
                PS_DASHDOT = 3,
                PS_DASHDOTDOT = 4
            }
            // These values come from the larger set of defines in WinGDI.h,
            // but are all that are needed for this application.If this class
            // is expanded for more generic rectangle drawing, they should be
            // replaced by enums from those sets of defones.
            private int NULL_BRUSH = 5;
            private int R2_XORPEN = 7;
            private PenStyles penStyle;
            private int BLACK_PEN = 0;
            // Default contructor - sets member fields
            public RubberbandRectangle()
            {
                penStyle = PenStyles.PS_DOT;
            }
            // penStyles property get/set.
            public PenStyles PenStyle
            {
                get { return penStyle; }
                set { penStyle = value; }
            }
            public void DrawXORRectangle(Graphics grp, System.Drawing.Point startPt, System.Drawing.Point endPt)
            {
                int X1 = startPt.X;
                int Y1 = startPt.Y;
                int X2 = endPt.X;
                int Y2 = endPt.Y;
                // Extract the Win32 HDC from the Graphics object supplied.
                IntPtr hdc = grp.GetHdc();
                // Create a pen with a dotted style to draw the border of the
                // rectangle.
                IntPtr gdiPen = CreatePen(penStyle,
                              1, BLACK_PEN);
                // Set the ROP cdrawint mode to XOR.
                SetROP2(hdc, R2_XORPEN);
                // Select the pen into the device context.
                IntPtr oldPen = SelectObject(hdc, gdiPen);
                // Create a stock NULL_BRUSH brush and select it into the device
                // context so that the rectangle isn't filled.
                IntPtr oldBrush = SelectObject(hdc,
                                     GetStockObject(NULL_BRUSH));
                // Now XOR the hollow rectangle on the Graphics object with
                // a dotted outline.
                Rectangle(hdc, X1, Y1, X2, Y2);
                // Put the old stuff back where it was.
                SelectObject(hdc, oldBrush); // no need to delete a stock object
                SelectObject(hdc, oldPen);
                DeleteObject(gdiPen);// but we do need to delete the pen
                // Return the device context to Windows.
                grp.ReleaseHdc(hdc);
            }
            // Use Interop to call the corresponding Win32 GDI functions
            
            private static extern int SetROP2(
                  IntPtr hdc,// Handle to a Win32 device context
                  int enDrawMode // Drawing mode
                  );
            
            private static extern IntPtr CreatePen(
                  PenStyles enPenStyle, // Pen style from enum PenStyles
                  int nWidth,    // Width of pen
                  int crColor    // Color of pen
                  );
            
            private static extern bool DeleteObject(
                  IntPtr hObject // Win32 GDI handle to object to delete
                  );
            
            private static extern IntPtr SelectObject(
                  IntPtr hdc,// Win32 GDI device context
                  IntPtr hObject // Win32 GDI handle to object to select
                  );
            
            private static extern void Rectangle(
                  IntPtr hdc,   // Handle to a Win32 device context
                  int X1,    // x-coordinate of top left corner
                  int Y1,    // y-cordinate of top left corner
                  int X2,    // x-coordinate of bottom right corner
                  int Y2    // y-coordinate of bottm right corner
                  );
            
            private static extern IntPtr GetStockObject(
                  int brStyle // Selected from the WinGDI.h BrushStyles enum
                  );
            // C# version of Win32 RGB macro
            private static int RGB(int R, int G, int B)
            {
                return (R | (G << 8) | (B << 16));
            }
      }
    }
}

雪山飞狐_lzh 发表于 2010-1-18 12:46:00

相关的函数
      public static Extents3d GetExtents(IEnumerable<Entity> ents)
      {
            Extents3d ext = new Extents3d();
            foreach (Entity ent in ents)
            {
                ext.AddExtents(ent.GeometricExtents);
            }
            return ext;
      }
      public static Size GetSize(Extents3d ext)
      {
            int width = (int)Math.Floor(ext.MaxPoint.X - ext.MinPoint.X);
            int height = (int)Math.Ceiling(ext.MaxPoint.Y - ext.MinPoint.Y);
            return new Size(width, height);
      }

      /// <summary>
      /// 在符号表中获取对应键值的记录Id
      /// </summary>
      /// <param name="table">符号表</param>
      /// <param name="key">记录键值</param>
      /// <returns>对应键值的记录Id</returns>
      public static ObjectId GetRecorId<T>(this T table, string key) where T : SymbolTable
      {
            if (table.Has(key))
            {
                if (Application.Version.Major < 18)
                {
                  ObjectId idres = table;
                  if (!idres.IsErased)
                        return idres;
                  
                  foreach (ObjectId id in table)
                  {
                        if (!id.IsErased)
                        {
                            SymbolTableRecord str = id.GetObject<SymbolTableRecord>();
                            if (str.Name == key)
                              return str.ObjectId;
                        }
                  }
                }
                else
                {
                  return table;
                }
            }
            return ObjectId.Null;
      }

飞诗(fsxm) 发表于 2010-1-18 17:22:00

<p></p><p>强!顶~!终于开源了嘿嘿!</p>

雪山飞狐_lzh 发表于 2010-1-18 17:37:00

附上选择实体输出jpg文件的例子
      
      public void Test1()
      {
            PromptSelectionResult res = Helper.Editor.GetSelection();
            if (res.Status == PromptStatus.OK)
            {
                using (DBTransaction tr = new DBTransaction())
                {
                  List<Entity> ents = new List<Entity>();
                  foreach (ObjectId id in res.Value.GetObjectIds())
                  {
                        Entity ent = (Entity)tr.GetObject(id, OpenMode.ForRead);
                        ents.Add((Entity)ent.Clone());
                  }
                  using (BlockPreviewManager bps = new BlockPreviewManager())
                  {
                        BlockPreview bp = bps.Add(ents);
                        bp.Save("d:\\1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
                  }
                }
            }
      }

houlinbo 发表于 2010-5-8 09:52:00

<p></p><p>感谢雪山飞狐&nbsp;&nbsp;这是代码vs2005+AutoCAD2007(较原创有稍许改动)&nbsp;&nbsp; 执行t1命令可将当前选择对象保存到d:\1.jpg&nbsp;&nbsp; </p><p>我试过了</p><p></p><p></p>

flye_li96 发表于 2010-8-24 11:12:00

看看先,不知道是不是我想要的,能给图就好了

雪山飞狐_lzh 发表于 2010-8-24 11:54:00

<p>贴图这里有的</p>
<p><font face="Verdana"><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=75701&amp;star=1#10301">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=75701&amp;star=1#10301</a></font></p>
<p>&nbsp;</p>

single-yu 发表于 2010-8-25 20:11:00

飞狐出品,必是精品!顶你,老大!
页: [1] 2 3
查看完整版本: 在窗体上显示实体(BlockPreviewManager)