明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 17639|回复: 25

[图形系统] 在窗体上显示实体(BlockPreviewManager)

    [复制链接]
发表于 2010-1-18 12:07:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2010-1-18 12:51:13 编辑

改写自Kean的BlockView.Net
加入显示实体的功能
并集成输出图像文件的功能
BlockPreviewManager.cs
  1. using System;
  2. using System.IO;
  3. using System.Drawing;
  4. using System.Windows.Forms;
  5. using System.Collections;
  6. using System.Collections.Generic;
  7. using Autodesk.AutoCAD.GraphicsSystem;
  8. using Autodesk.AutoCAD.DatabaseServices;
  9. using Autodesk.AutoCAD.GraphicsInterface;
  10. using Autodesk.AutoCAD.ApplicationServices;
  11. using TlsCad.Utils;
  12. using TlsCad.ExtendMethods;
  13. namespace TlsCad.Trans
  14. {
  15.     public class BlockPreviewManager : IEnumerable,IDisposable
  16.     {
  17.         List<BlockPreview> m_Previews = new List<BlockPreview>();
  18.         Color m_BackColor = Color.Empty;
  19.         Database m_Database = null;
  20.         private Autodesk.AutoCAD.GraphicsSystem.RenderMode m_RenderMode = Autodesk.AutoCAD.GraphicsSystem.RenderMode.Wireframe;
  21.         private VisualStyleType m_VisualStyleType = VisualStyleType.Basic;
  22.         bool m_AllowMouseEvents = false;
  23.         bool m_DisplayByBlock = true;
  24.         #region Properties
  25.         public Autodesk.AutoCAD.GraphicsSystem.RenderMode RenderMode
  26.         {
  27.             set { m_RenderMode = value; }
  28.             get { return m_RenderMode; }
  29.         }
  30.         public VisualStyleType ViewStyle
  31.         {
  32.             set { m_VisualStyleType = value; }
  33.             get { return m_VisualStyleType; }
  34.         }
  35.         public Database Database
  36.         {
  37.             get { return m_Database; }
  38.         }
  39.         public Color BackColor
  40.         {
  41.             set { m_BackColor = value; }
  42.             get { return m_BackColor; }
  43.         }
  44.         public bool AllowMouseEvents
  45.         {
  46.             set { m_AllowMouseEvents = true; }
  47.             get { return m_AllowMouseEvents; }
  48.         }
  49.         public bool DisplayByBlock
  50.         {
  51.             get { return m_DisplayByBlock; }
  52.             set { m_DisplayByBlock = value; }
  53.         }
  54.         public BlockPreview this[int index]
  55.         {
  56.             get
  57.             {
  58.                 if (index >= 0 && index < m_Previews.Count)
  59.                 {
  60.                     return m_Previews[index];
  61.                 }
  62.                 return null;
  63.             }
  64.         }
  65.         #endregion
  66.         #region Initialize
  67.         public void Initialize(Database database)
  68.         {
  69.             m_Database = database;
  70.             Database db = HostApplicationServices.WorkingDatabase;
  71.             Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.GetDocument(db);
  72.             BlockPreview.Manager = doc.GraphicsManager;
  73.         }
  74.         public BlockPreviewManager()
  75.         {
  76.             Initialize(new Database());
  77.         }
  78.         public BlockPreviewManager(Autodesk.AutoCAD.GraphicsSystem.RenderMode renderMode, VisualStyleType visualStyleType)
  79.         {
  80.             Initialize(new Database());
  81.             m_RenderMode = renderMode;
  82.             m_VisualStyleType = visualStyleType;
  83.         }
  84.         public BlockPreviewManager(Database database)
  85.         {
  86.             Initialize(database);
  87.         }
  88.         public BlockPreviewManager(Database database, Autodesk.AutoCAD.GraphicsSystem.RenderMode renderMode, VisualStyleType visualStyleType)
  89.         {
  90.             Initialize(database);
  91.             m_RenderMode = renderMode;
  92.             m_VisualStyleType = visualStyleType;
  93.         }
  94.         public BlockPreviewManager(string filename)
  95.         {
  96.             Database db = new Database(false, true);
  97.             db.ReadDwgFile(filename, FileShare.Read, true, null);
  98.             db.CloseInput(true);
  99.             Initialize(db);
  100.         }
  101.         public BlockPreviewManager(string filename, Autodesk.AutoCAD.GraphicsSystem.RenderMode renderMode, VisualStyleType visualStyleType)
  102.         {
  103.             Database db = new Database(false, true);
  104.             db.ReadDwgFile(filename, FileShare.Read, true, null);
  105.             db.CloseInput(true);
  106.             Initialize(db);
  107.             m_RenderMode = renderMode;
  108.             m_VisualStyleType = visualStyleType;
  109.         }
  110.         #endregion
  111.         #region List
  112.         public BlockPreview Add(Panel panel)
  113.         {
  114.             return Add(panel, BlockTableRecord.ModelSpace);
  115.         }
  116.         public BlockPreview Add(Panel panel, string blockName)
  117.         {
  118.             using (DBTransaction tr = new DBTransaction(m_Database))
  119.             {
  120.                 ObjectId idbtr = tr.BlockTable.GetRecorId(blockName);
  121.                 if (idbtr != ObjectId.Null)
  122.                 {
  123.                     BlockTableRecord btr = (BlockTableRecord)tr.GetObject(idbtr, OpenMode.ForRead);
  124.                     Extents3d ext3d = new Extents3d();
  125.                     ext3d.AddBlockExtents(btr);
  126.                     if (m_DisplayByBlock)
  127.                     {
  128.                         return Add(panel, btr, ext3d);
  129.                     }
  130.                     else
  131.                     {
  132.                         List<Entity> ents = new List<Entity>();
  133.                         foreach (ObjectId id in btr)
  134.                         {
  135.                             ents.Add((Entity)tr.GetObject(id, OpenMode.ForRead).Clone());
  136.                         }
  137.                         return Add(panel, ents, ext3d);
  138.                     }
  139.                 }
  140.             }
  141.             return null;
  142.         }
  143.         public BlockPreview Add(Panel panel, BlockTableRecord btr, Extents3d ext3d)
  144.         {
  145.             BlockPreview bp =
  146.                 new BlockPreview(
  147.                    this,
  148.                    panel,
  149.                    btr,
  150.                    ext3d);
  151.             m_Previews.Add(bp);
  152.             return bp;
  153.         }
  154.         public BlockPreview Add(Panel panel, List<Entity> ents, Extents3d ext3d)
  155.         {
  156.             BlockPreview bp =
  157.                new BlockPreview(
  158.                    this,
  159.                    panel,
  160.                    ents,
  161.                    ext3d);
  162.             m_Previews.Add(bp);
  163.             return bp;
  164.         }
  165.         public BlockPreview Add(IEnumerable<Entity> ents, Extents3d ext3d)
  166.         {
  167.             BlockPreview bp =
  168.                new BlockPreview(
  169.                    this,
  170.                    ents,
  171.                    ext3d);
  172.             m_Previews.Add(bp);
  173.             return bp;
  174.         }
  175.         public BlockPreview Add(IEnumerable<Entity> ents)
  176.         {
  177.             BlockPreview bp =
  178.                new BlockPreview(
  179.                    this,
  180.                    ents,
  181.                    DbUtility.GetExtents(ents));
  182.             m_Previews.Add(bp);
  183.             return bp;
  184.         }
  185.         public void RemoveAt(int index)
  186.         {
  187.             if (index >= 0 && index < m_Previews.Count)
  188.             {
  189.                 m_Previews[index].Dispose();
  190.                 m_Previews.RemoveAt(index);
  191.             }
  192.         }
  193.         #endregion
  194.         #region Display
  195.         public void Display(int index)
  196.         {
  197.             Display(index, BlockTableRecord.ModelSpace);
  198.         }
  199.         public bool Display(int index, string blockName)
  200.         {
  201.             if (index >= 0 && index < m_Previews.Count)
  202.             {
  203.                 using (DBTransaction tr = new DBTransaction(m_Database))
  204.                 {
  205.                     if (tr.BlockTable.Has(blockName))
  206.                     {
  207.                         BlockTableRecord btr = (BlockTableRecord)tr.GetObject(tr.BlockTable[blockName], OpenMode.ForRead);
  208.                         Extents3d ext3d = new Extents3d();
  209.                         ext3d.AddBlockExtents(btr);
  210.                         if (m_DisplayByBlock)
  211.                         {
  212.                             Display(index, btr, ext3d);
  213.                         }
  214.                         else
  215.                         {
  216.                             List<Entity> ents = new List<Entity>();
  217.                            
  218.                             foreach (ObjectId id in btr)
  219.                             {
  220.                                 ents.Add((Entity)tr.GetObject(id, OpenMode.ForRead).Clone());
  221.                             }
  222.                             Display(index, ents, ext3d);
  223.                         }
  224.                         return true;
  225.                     }
  226.                 }
  227.             }
  228.             return false;
  229.         }
  230.         private void Display(int index, BlockTableRecord btr, Extents3d ext3d)
  231.         {
  232.             m_Previews[index].Display(btr, ext3d);
  233.         }
  234.         private void Display(int index, IEnumerable<Entity> ents, Extents3d ext3d)
  235.         {
  236.             m_Previews[index].Display(ents, ext3d);
  237.         }
  238.         public void Refresh()
  239.         {
  240.             foreach (BlockPreview bp in m_Previews)
  241.             {
  242.                 bp.Refresh();
  243.             }
  244.         }
  245.         #endregion
  246.         #region IEnumerable 成员
  247.         IEnumerator IEnumerable.GetEnumerator()
  248.         {
  249.             return m_Previews.GetEnumerator();
  250.         }
  251.         #endregion
  252.         #region IDispose
  253.         public void Dispose()
  254.         {
  255.             foreach (BlockPreview bp in m_Previews)
  256.             {
  257.                 bp.Dispose();
  258.             }
  259.         }
  260.         #endregion
  261.     }
  262. }

评分

参与人数 2威望 +1 明经币 +2 金钱 +26 贡献 +5 激情 +5 收起 理由
l510319004 + 6 赞一个!
ahlzl + 1 + 2 + 20 + 5 + 5 【精华】好程序

查看全部评分

发表于 2020-3-14 20:51:22 | 显示全部楼层

强!顶~!终于开源了嘿嘿!
 楼主| 发表于 2010-1-18 12:34:00 | 显示全部楼层
BlockPreview.cs
  1. using System;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4. using System.Collections.Generic;
  5. using System.Drawing.Imaging;
  6. using GSView = Autodesk.AutoCAD.GraphicsSystem.View;
  7. using Autodesk.AutoCAD.Geometry;
  8. using Autodesk.AutoCAD.GraphicsSystem;
  9. using Autodesk.AutoCAD.DatabaseServices;
  10. using Autodesk.AutoCAD.GraphicsInterface;
  11. using Autodesk.AutoCAD.ApplicationServices;
  12. using TlsCad.Utils;
  13. namespace TlsCad.Trans
  14. {
  15.     public class BlockPreview : IDisposable
  16.     {
  17.         public enum PreviewStatus
  18.         {
  19.             Nothing = 0,
  20.             Orbiting = 1,
  21.             Panning = 2,
  22.         }
  23.         private Panel m_Panel = null;
  24.         // Gs specific
  25.         private static Manager m_Manager = null;
  26.         private Device m_Device = null;
  27.         private Model m_Model = null;
  28.         private GSView m_View = null;
  29.         // flags
  30.         private bool m_MouseDown = false;
  31.         private PreviewStatus m_PreviewStatus;
  32.         private System.Drawing.Point m_StartPoint;
  33.         private System.Drawing.Point m_EndPoint;
  34.         private BlockPreviewManager m_Owner;
  35.         private bool m_DisplayByBlock;
  36.         private BlockTableRecord m_BlockTableRecord;
  37.         private List<Entity> m_Entitys;
  38.         #region Property
  39.         public Color BackColor
  40.         {
  41.             set
  42.             {
  43.                 //update it
  44.                 m_Device.BackgroundColor = value;
  45.                 // finally set the logical palette
  46.                 m_Device.SetLogicalPalette(GsUtility.MyAcadColorPs);
  47.                 // now update the gs view
  48.                 Refresh();
  49.             }
  50.         }
  51.         public static Manager Manager
  52.         {
  53.             get { return m_Manager; }
  54.             set { m_Manager = value; }
  55.         }
  56.         public Device Device
  57.         {
  58.             get { return m_Device; }
  59.             set { m_Device = value; }
  60.         }
  61.         public Model Model
  62.         {
  63.             get { return m_Model; }
  64.             set { m_Model = value; }
  65.         }
  66.         public GSView View
  67.         {
  68.             get { return m_View; }
  69.             set { m_View = value; }
  70.         }
  71.         public bool MouseDown
  72.         {
  73.             get { return m_MouseDown; }
  74.             set { m_MouseDown = value; }
  75.         }
  76.         public Point StartPoint
  77.         {
  78.             get { return m_StartPoint; }
  79.             set { m_StartPoint = value; }
  80.         }
  81.         public Point EndPoint
  82.         {
  83.             get { return m_EndPoint; }
  84.             set { m_EndPoint = value; }
  85.         }
  86.         public Entity this[int index]
  87.         {
  88.             get
  89.             {
  90.                 if (index >= 0 && index < m_Entitys.Count)
  91.                 {
  92.                     return m_Entitys[index];
  93.                 }
  94.                 return null;
  95.             }
  96.         }
  97.         #endregion
  98.         #region BlockView
  99.         private void Initialize(BlockPreviewManager owner, Panel panel)
  100.         {
  101.             m_Owner = owner;
  102.             m_Panel = panel;
  103.             m_Panel.Paint += OnPaint;
  104.             m_Panel.SizeChanged += OnSizeChanged;
  105.             if (m_Owner.AllowMouseEvents)
  106.             {
  107.                 m_Panel.MouseDown += OnMouseDown;
  108.                 m_Panel.MouseMove += OnMouseMove;
  109.                 m_Panel.MouseUp += OnMouseUp;
  110.             }
  111.             // now create the Gs control, create the autocad device passing the handle to the Windows panel
  112.             m_Device = m_Manager.CreateAutoCADDevice(m_Panel.Handle);
  113.             if (m_Owner.BackColor != Color.Empty)
  114.                 m_Device.BackgroundColor = m_Owner.BackColor;
  115.             // resize the device to the panel size
  116.             m_Device.OnSize(m_Panel.Size);
  117.             // now create a new gs view
  118.             m_View = new Autodesk.AutoCAD.GraphicsSystem.View();
  119.             m_View.Mode = m_Owner.RenderMode;
  120.             m_View.VisualStyle = new VisualStyle(m_Owner.ViewStyle);
  121.             // and create the model
  122.             m_Model = m_Manager.CreateAutoCADModel();
  123.             // add the view to the device
  124.             m_Device.Add(m_View);
  125.         }
  126.         internal BlockPreview(BlockPreviewManager owner, Panel panel, BlockTableRecord btr, Extents3d ext)
  127.         {
  128.             Initialize(owner, panel);
  129.             Display(btr, ext);
  130.         }
  131.         private void SetViewTo(Extents3d ext)
  132.         {
  133.             Point3d maxpoint = ext.MaxPoint;
  134.             Point3d minpoint = ext.MinPoint;
  135.             Point3d center = minpoint + 0.5 * (maxpoint - minpoint);
  136.             m_View.SetView(
  137.                 center + Vector3d.ZAxis,
  138.                 center,
  139.                 Vector3d.YAxis,
  140.                 maxpoint.X - minpoint.X,
  141.                 maxpoint.Y - minpoint.Y);
  142.         }
  143.         internal void Display(BlockTableRecord btr, Extents3d ext)
  144.         {
  145.             if (m_View != null)
  146.             {
  147.                 m_View.EraseAll();
  148.                 SetViewTo(ext);
  149.                 m_BlockTableRecord = btr;
  150.                 m_DisplayByBlock = true;
  151.                 m_View.Add(m_BlockTableRecord, m_Model);
  152.                 Refresh();
  153.             }
  154.         }
  155.         #endregion
  156.         #region EntityView
  157.         private void Initialize(BlockPreviewManager owner, Size size)
  158.         {
  159.             m_Owner = owner;
  160.             //
  161.             m_Device = m_Manager.CreateAutoCADOffScreenDevice();
  162.             if (m_Owner.BackColor != Color.Empty)
  163.                 m_Device.BackgroundColor = m_Owner.BackColor;
  164.             m_Device.OnSize(size);
  165.             // now create a new gs view
  166.             m_View = new Autodesk.AutoCAD.GraphicsSystem.View();
  167.             m_View.Mode = m_Owner.RenderMode;
  168.             m_View.VisualStyle = new VisualStyle(m_Owner.ViewStyle);
  169.             // and create the model
  170.             m_Model = m_Manager.CreateAutoCADModel();
  171.             // add the view to the device
  172.             m_Device.Add(m_View);
  173.         }
  174.         internal BlockPreview(BlockPreviewManager owner, IEnumerable<Entity> entitys, Extents3d ext)
  175.         {
  176.             Initialize(owner, DbUtility.GetSize(ext));
  177.             Display(entitys, ext);
  178.         }
  179.         
  180.         internal BlockPreview(BlockPreviewManager owner, Panel panel, List<Entity> entitys, Extents3d ext)
  181.         {
  182.             Initialize(owner, panel);
  183.             Display(entitys, ext);
  184.         }
  185.         internal void Display(IEnumerable<Entity> entitys, Extents3d ext)
  186.         {
  187.             if (m_View != null)
  188.             {
  189.                 m_View.EraseAll();
  190.                 SetViewTo(ext);
  191.                 m_DisplayByBlock = false;
  192.                 m_Entitys = new List<Entity>();
  193.                 AddEntity(entitys);
  194.                 Refresh();
  195.             }
  196.         }
  197.         public void AddEntity(params Entity[] entitys)
  198.         {
  199.             foreach (Entity ent in entitys)
  200.             {
  201.                 m_Entitys.Add(ent);
  202.                 m_View.Add(ent, m_Model);
  203.             }
  204.         }
  205.         public void AddEntity(IEnumerable<Entity> entitys)
  206.         {
  207.             foreach (Entity ent in entitys)
  208.             {
  209.                 m_Entitys.Add(ent);
  210.                 m_View.Add(ent, m_Model);
  211.             }
  212.         }
  213.         public void RemoveEntity(params Entity[] entitys)
  214.         {
  215.             foreach (Entity ent in entitys)
  216.             {
  217.                 m_Entitys.Remove(ent);
  218.                 m_View.Erase(ent);
  219.             }
  220.         }
  221.         public void RemoveEntity(IEnumerable<Entity> entitys)
  222.         {
  223.             foreach (Entity ent in entitys)
  224.             {
  225.                 m_Entitys.Remove(ent);
  226.                 m_View.Erase(ent);
  227.             }
  228.         }
  229.         public void Update(params int[] indexs)
  230.         {
  231.             if (m_View != null)
  232.             {
  233.                 if (!m_DisplayByBlock)
  234.                 {
  235.                     foreach (int index in indexs)
  236.                     {
  237.                         Entity ent = this[index];
  238.                         if (ent != null)
  239.                         {
  240.                             m_View.Erase(ent);
  241.                             m_View.Add(ent, m_Model);
  242.                         }
  243.                     }
  244.                 }
  245.             }
  246.         }
  247.         public void Update(IEnumerable<int> indexs)
  248.         {
  249.             if (m_View != null)
  250.             {
  251.                 if (!m_DisplayByBlock)
  252.                 {
  253.                     foreach (int index in indexs)
  254.                     {
  255.                         Entity ent = this[index];
  256.                         if (ent != null)
  257.                         {
  258.                             m_View.Erase(ent);
  259.                             m_View.Add(ent, m_Model);
  260.                         }
  261.                     }
  262.                 }
  263.             }
  264.         }
  265.         public void Update(params Entity[] entitys)
  266.         {
  267.             if (m_View != null)
  268.             {
  269.                 if (!m_DisplayByBlock)
  270.                 {
  271.                     foreach (Entity ent in entitys)
  272.                     {
  273.                         m_View.Erase(ent);
  274.                         m_View.Add(ent, m_Model);
  275.                     }
  276.                 }
  277.             }
  278.         }
  279.         public void Update(IEnumerable<Entity> entitys)
  280.         {
  281.             if (m_View != null)
  282.             {
  283.                 if (!m_DisplayByBlock)
  284.                 {
  285.                     foreach (Entity ent in entitys)
  286.                     {
  287.                         m_View.Erase(ent);
  288.                         m_View.Add(ent, m_Model);
  289.                     }
  290.                 }
  291.             }
  292.         }
  293.         #endregion
  294.         #region Inage
  295.         public void Save(string filename, ImageFormat format)
  296.         {
  297.             using (Bitmap bitmap = GetImage())
  298.             {
  299.                 bitmap.Save(filename, format);
  300.             }
  301.         }
  302.         public Bitmap GetImage()
  303.         {
  304.             return m_Device.GetSnapshot(m_View.Viewport);
  305.         }
  306.         public void Refresh()
  307.         {
  308.             m_View.Invalidate();
  309.             m_View.Update();
  310.         }
  311.         // draws the zoom window rectangle
  312.         public void RubberRectangle(Point startPt, Point endPt)
  313.         {
  314.             // create a new instance of my GDI helper class, it seems too tricky to create simple XOR graphics
  315.             // in .NET so let's resort to direct calls instead
  316.             GsUtility.RubberbandRectangle rect = new GsUtility.RubberbandRectangle();
  317.             System.Drawing.Graphics graphics = m_Panel.CreateGraphics();
  318.             // draw the XOR rectangle
  319.             rect.DrawXORRectangle(graphics, startPt, endPt);
  320.         }
  321.         #endregion
  322.         #region Events
  323.         protected void OnPaint(object sender, PaintEventArgs e)
  324.         {
  325.             Refresh();
  326.         }
  327.         public void OnMouseWheel(object sender, MouseEventArgs e)
  328.         {
  329.             if (e.Delta < 0)
  330.                 m_View.Zoom(0.5);
  331.             else
  332.                 // wheel up!
  333.                 m_View.Zoom(1.5);
  334.             Refresh();
  335.         }
  336.         protected void OnMouseMove(object sender, MouseEventArgs e)
  337.         {
  338.             if (m_View != null)
  339.             {
  340.                 if (m_MouseDown)
  341.                 {
  342.                     // save the new point for next time
  343.                     m_EndPoint = e.Location;
  344.                     switch (m_PreviewStatus)
  345.                     {
  346.                         case PreviewStatus.Panning:
  347.                             //transform the point from device coordinates to
  348.                             //world coordinates
  349.                             Vector3d pan_vec = new Vector3d(-(e.Location.X - m_StartPoint.X), e.Location.Y - m_StartPoint.Y, 0);
  350.                             pan_vec.TransformBy(m_View.ViewingMatrix * m_View.WorldToDeviceMatrix.Inverse());
  351.                             m_View.Dolly(pan_vec);
  352.                             break;
  353.                         case PreviewStatus.Orbiting:
  354.                             double Half_Pi = 1.570796326795;
  355.                             System.Drawing.Rectangle view_rect = m_View.Viewport;
  356.                             int nViewportX = (view_rect.Right - view_rect.Left) + 1;
  357.                             int nViewportY = (view_rect.Bottom - view_rect.Top) + 1;
  358.                             int centerX = (int)(nViewportX / 2.0f + view_rect.Left);
  359.                             int centerY = (int)(nViewportY / 2.0f + view_rect.Top);
  360.                             double radius = System.Math.Min(nViewportX, nViewportY) * 0.4f;
  361.                             // compute two vectors from last and new cursor positions:
  362.                             Vector3d last_vector = new Vector3d((m_StartPoint.X - centerX) / radius,
  363.                                 -(m_StartPoint.Y - centerY) / radius,
  364.                                 0.0);
  365.                             if (last_vector.LengthSqrd > 1.0)     // outside the radius
  366.                             {
  367.                                 double x = last_vector.X / last_vector.Length;
  368.                                 double y = last_vector.Y / last_vector.Length;
  369.                                 double z = last_vector.Z / last_vector.Length;
  370.                                 last_vector = new Vector3d(x, y, z);
  371.                             }
  372.                             else
  373.                             {
  374.                                 double x = last_vector.X;
  375.                                 double y = last_vector.Y;
  376.                                 double z = System.Math.Sqrt(1.0 - last_vector.X * last_vector.X - last_vector.Y * last_vector.Y);
  377.                                 last_vector = new Vector3d(x, y, z);
  378.                             }
  379.                             Vector3d new_vector = new Vector3d((e.Location.X - centerX) / radius, -(e.Location.Y - centerY) / radius, 0.0);
  380.                             if (new_vector.LengthSqrd > 1.0)     // outside the radius
  381.                             {
  382.                                 double x = new_vector.X / new_vector.Length;
  383.                                 double y = new_vector.Y / new_vector.Length;
  384.                                 double z = new_vector.Z / new_vector.Length;
  385.                                 new_vector = new Vector3d(x, y, z);
  386.                             }
  387.                             else
  388.                             {
  389.                                 double x = new_vector.X;
  390.                                 double y = new_vector.Y;
  391.                                 double z = System.Math.Sqrt(1.0 - new_vector.X * new_vector.X - new_vector.Y * new_vector.Y);
  392.                                 new_vector = new Vector3d(x, y, z);
  393.                             }
  394.                             // determine angles for proper sequence of camera manipulations:
  395.                             Vector3d rotation_vector = last_vector;
  396.                             rotation_vector = rotation_vector.CrossProduct(new_vector);  // rotation_vector = last_vector x new_vector
  397.                             Vector3d work_vector = rotation_vector;
  398.                             work_vector = new Vector3d(work_vector.X, work_vector.Y, 0.0f);                      // projection of rotation_vector onto xy plane
  399.                             double roll_angle = System.Math.Atan2(work_vector.X, work_vector.Y);        // assuming that the camera's up vector is "up",
  400.                             // this computes the angle between the up vector
  401.                             // and the work vector, which is the roll required
  402.                             // to make the up vector coincident with the rotation_vector
  403.                             double length = rotation_vector.Length;
  404.                             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
  405.                             if (length > 1.0f)                                              // rotation_vector and the up_vector divided by the
  406.                                 length = 1.0f;                                              // magnitude of both vectors.  We add pi/2 because we
  407.                             // are making the up-vector parallel to the the rotation
  408.                             double rotation_angle = System.Math.Asin(length);                // vector ... up-vector is perpin. to the eye-vector.
  409.                             // perform view manipulations
  410.                             m_View.Roll(roll_angle);               // 1: roll camera to make up vector coincident with rotation vector
  411.                             m_View.Orbit(0.0f, orbit_y_angle);     // 2: orbit along y to make up vector parallel with rotation vector
  412.                             m_View.Orbit(rotation_angle, 0.0f);     // 3: orbit along x by rotation angle
  413.                             m_View.Orbit(0.0f, -orbit_y_angle);     // 4: orbit along y by the negation of 2
  414.                             m_View.Roll(-roll_angle);               // 5: roll camera by the negation of 1
  415.                             break;
  416.                     }
  417.                     Refresh();
  418.                     m_StartPoint = e.Location;
  419.                 }
  420.             }
  421.         }
  422.         protected void OnMouseDown(object sender, MouseEventArgs e)
  423.         {
  424.             m_MouseDown = true;
  425.             switch (e.Button)
  426.             {
  427.                 case MouseButtons.Left:
  428.                     m_PreviewStatus = PreviewStatus.Orbiting;
  429.                     break;
  430.                 case MouseButtons.Right:
  431.                     m_PreviewStatus = PreviewStatus.Panning;
  432.                     break;
  433.             }
  434.             m_StartPoint = e.Location;
  435.         }
  436.         protected void OnMouseUp(object sender, MouseEventArgs e)
  437.         {
  438.             switch (e.Button)
  439.             {
  440.                 case MouseButtons.Left:
  441.                     m_PreviewStatus -= (int)PreviewStatus.Orbiting;
  442.                     break;
  443.                 case MouseButtons.Right:
  444.                     m_PreviewStatus -= (int)PreviewStatus.Panning;
  445.                     break;
  446.             }
  447.             m_PreviewStatus = PreviewStatus.Nothing;
  448.             m_MouseDown = false;
  449.         }
  450.         protected void OnSizeChanged(object sender, EventArgs e)
  451.         {
  452.             if (m_Device != null)
  453.             {
  454.                 m_Device.OnSize(m_Panel.Size);
  455.             }
  456.         }
  457.         #endregion
  458.         #region IDispose
  459.         public void Dispose()
  460.         {
  461.             if (m_Device != null)
  462.             {
  463.                 bool b = m_Device.Erase(m_View);
  464.             }
  465.             if (m_View != null)
  466.             {
  467.                 m_View.EraseAll();
  468.                 m_View.Dispose();
  469.                 m_View = null;
  470.             }
  471.             if (m_Manager != null)
  472.             {
  473.                 if (m_Model != null)
  474.                 {
  475.                     m_Model.Dispose();
  476.                     m_Model = null;
  477.                 }
  478.                 if (m_Device != null)
  479.                 {
  480.                     m_Device.Dispose();
  481.                     m_Device = null;
  482.                 }
  483.             }
  484.         }
  485.         #endregion
  486.     }
  487. }
 楼主| 发表于 2010-1-18 12:36:00 | 显示全部楼层
  1. using System;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4. using Autodesk.AutoCAD.ApplicationServices;
  5. using Autodesk.AutoCAD.DatabaseServices;
  6. using Autodesk.AutoCAD.EditorInput;
  7. using Autodesk.AutoCAD.Runtime;
  8. using Autodesk.AutoCAD.Geometry;
  9. using Autodesk.AutoCAD.GraphicsSystem;
  10. namespace TlsCad.Utils
  11. {
  12.     public class GsUtility
  13.     {
  14.         public const String strActive = "*Active";
  15.         public const String strActiveSettings = "ACAD_RENDER_ACTIVE_SETTINGS";
  16.         public static void CustomUpdate(System.IntPtr parmeter, int left, int right, int bottom, int top)
  17.         {
  18.             MessageBox.Show("Left:" + left + "Right" + right + "Bottom" + bottom + "Top" + top);
  19.         }
  20.         public static System.Drawing.Color[] MyAcadColorPs =
  21.             {
  22.               System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 0 - lets make it red for an example
  23.               //{255, 255, 255, 255},//----- 0 - ByBlock - White
  24.               System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 1 - Red
  25.               System.Drawing.Color.FromArgb(255, 255, 0, 255),    //----- 2 - Yellow
  26.               System.Drawing.Color.FromArgb(0, 255, 0, 255),    //----- 3 - Green
  27.               System.Drawing.Color.FromArgb(0, 255, 255, 255),    //----- 4 - Cyan
  28.               System.Drawing.Color.FromArgb(0, 0, 255, 255),    //----- 5 - Blue
  29.               System.Drawing.Color.FromArgb(255, 0, 255, 255),    //----- 6 - Magenta
  30.               System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 7 - More red Red
  31.               System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 8 - More red Red
  32.               System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 9 - More red Red
  33.               /*System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 7 - White
  34.               System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 8
  35.               System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 9*/
  36.               System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 10
  37.               System.Drawing.Color.FromArgb(255, 127, 127, 255),//----- 11
  38.               System.Drawing.Color.FromArgb(165, 0, 0, 255),    //----- 12
  39.               System.Drawing.Color.FromArgb(165, 82, 82, 255),    //----- 13
  40.               System.Drawing.Color.FromArgb(127, 0, 0, 255),    //----- 14
  41.               System.Drawing.Color.FromArgb(127, 63, 63, 255),    //----- 15
  42.               System.Drawing.Color.FromArgb(76, 0, 0, 255),        //----- 16
  43.               System.Drawing.Color.FromArgb(76, 38, 38, 255),    //----- 17
  44.               System.Drawing.Color.FromArgb(38, 0, 0, 255),        //----- 18
  45.               System.Drawing.Color.FromArgb(38, 19, 19, 255),    //----- 19
  46.               System.Drawing.Color.FromArgb(255, 63, 0, 255),    //----- 20
  47.               System.Drawing.Color.FromArgb(255, 159, 127, 255),//----- 21
  48.               System.Drawing.Color.FromArgb(165, 41, 0, 255),    //----- 22
  49.               System.Drawing.Color.FromArgb(165, 103, 82, 255),    //----- 23
  50.               System.Drawing.Color.FromArgb(127, 31, 0, 255),    //----- 24
  51.               System.Drawing.Color.FromArgb(127, 79, 63, 255),    //----- 25
  52.               System.Drawing.Color.FromArgb(76, 19, 0, 255),    //----- 26
  53.               System.Drawing.Color.FromArgb(76, 47, 38, 255),    //----- 27
  54.               System.Drawing.Color.FromArgb(38, 9, 0, 255),        //----- 28
  55.               System.Drawing.Color.FromArgb(38, 23, 19, 255),    //----- 29
  56.               System.Drawing.Color.FromArgb(255, 127, 0, 255),    //----- 30
  57.               System.Drawing.Color.FromArgb(255, 191, 127, 255),//----- 31
  58.               System.Drawing.Color.FromArgb(165, 82, 0, 255),    //----- 32
  59.               System.Drawing.Color.FromArgb(165, 124, 82, 255),    //----- 33
  60.               System.Drawing.Color.FromArgb(127, 63, 0, 255),    //----- 34
  61.               System.Drawing.Color.FromArgb(127, 95, 63, 255),    //----- 35
  62.               System.Drawing.Color.FromArgb(76, 38, 0, 255),    //----- 36
  63.               System.Drawing.Color.FromArgb(76, 57, 38, 255),    //----- 37
  64.               System.Drawing.Color.FromArgb(38, 19, 0, 255),    //----- 38
  65.               System.Drawing.Color.FromArgb(38, 28, 19, 255),    //----- 39
  66.               System.Drawing.Color.FromArgb(255, 191, 0, 255),    //----- 40
  67.               System.Drawing.Color.FromArgb(255, 223, 127, 255),//----- 41
  68.               System.Drawing.Color.FromArgb(165, 124, 0, 255),    //----- 42
  69.               System.Drawing.Color.FromArgb(165, 145, 82, 255),    //----- 43
  70.               System.Drawing.Color.FromArgb(127, 95, 0, 255),    //----- 44
  71.               System.Drawing.Color.FromArgb(127, 111, 63, 255),    //----- 45
  72.               System.Drawing.Color.FromArgb(76, 57, 0, 255),    //----- 46
  73.               System.Drawing.Color.FromArgb(76, 66, 38, 255),    //----- 47
  74.               System.Drawing.Color.FromArgb(38, 28, 0, 255),    //----- 48
  75.               System.Drawing.Color.FromArgb(38, 33, 19, 255),    //----- 49
  76.               System.Drawing.Color.FromArgb(255, 255, 0, 255),    //----- 50
  77.               System.Drawing.Color.FromArgb(255, 255, 127, 255),//----- 51
  78.               System.Drawing.Color.FromArgb(165, 165, 0, 255),    //----- 52
  79.               System.Drawing.Color.FromArgb(165, 165, 82, 255),    //----- 53
  80.               System.Drawing.Color.FromArgb(127, 127, 0, 255),    //----- 54
  81.               System.Drawing.Color.FromArgb(127, 127, 63, 255),    //----- 55
  82.               System.Drawing.Color.FromArgb(76, 76, 0, 255),    //----- 56
  83.               System.Drawing.Color.FromArgb(76, 76, 38, 255),    //----- 57
  84.               System.Drawing.Color.FromArgb(38, 38, 0, 255),    //----- 58
  85.               System.Drawing.Color.FromArgb(38, 38, 19, 255),    //----- 59
  86.               System.Drawing.Color.FromArgb(191, 255, 0, 255),    //----- 60
  87.               System.Drawing.Color.FromArgb(223, 255, 127, 255),//----- 61
  88.               System.Drawing.Color.FromArgb(124, 165, 0, 255),    //----- 62
  89.               System.Drawing.Color.FromArgb(145, 165, 82, 255),    //----- 63
  90.               System.Drawing.Color.FromArgb(95, 127, 0, 255),    //----- 64
  91.               System.Drawing.Color.FromArgb(111, 127, 63, 255),    //----- 65
  92.               System.Drawing.Color.FromArgb(57, 76, 0, 255),    //----- 66
  93.               System.Drawing.Color.FromArgb(66, 76, 38, 255),    //----- 67
  94.               System.Drawing.Color.FromArgb(28, 38, 0, 255),    //----- 68
  95.               System.Drawing.Color.FromArgb(33, 38, 19, 255),    //----- 69
  96.               System.Drawing.Color.FromArgb(127, 255, 0, 255),    //----- 70
  97.               System.Drawing.Color.FromArgb(191, 255, 127, 255),//----- 71
  98.               System.Drawing.Color.FromArgb(82, 165, 0, 255),    //----- 72
  99.               System.Drawing.Color.FromArgb(124, 165, 82, 255),    //----- 73
  100.               System.Drawing.Color.FromArgb(63, 127, 0, 255),    //----- 74
  101.               System.Drawing.Color.FromArgb(95, 127, 63, 255),    //----- 75
  102.               System.Drawing.Color.FromArgb(38, 76, 0, 255),    //----- 76
  103.               System.Drawing.Color.FromArgb(57, 76, 38, 255),    //----- 77
  104.               System.Drawing.Color.FromArgb(19, 38, 0, 255),    //----- 78
  105.               System.Drawing.Color.FromArgb(28, 38, 19, 255),    //----- 79
  106.               System.Drawing.Color.FromArgb(63, 255, 0, 255),    //----- 80
  107.               System.Drawing.Color.FromArgb(159, 255, 127, 255),//----- 81
  108.               System.Drawing.Color.FromArgb(41, 165, 0, 255),    //----- 82
  109.               System.Drawing.Color.FromArgb(103, 165, 82, 255),    //----- 83
  110.               System.Drawing.Color.FromArgb(31, 127, 0, 255),    //----- 84
  111.               System.Drawing.Color.FromArgb(79, 127, 63, 255),    //----- 85
  112.               System.Drawing.Color.FromArgb(19, 76, 0, 255),    //----- 86
  113.               System.Drawing.Color.FromArgb(47, 76, 38, 255),    //----- 87
  114.               System.Drawing.Color.FromArgb(9, 38, 0, 255),        //----- 88
  115.               System.Drawing.Color.FromArgb(23, 38, 19, 255),    //----- 89
  116.               System.Drawing.Color.FromArgb(0, 255, 0, 255),    //----- 90
  117.               System.Drawing.Color.FromArgb(127, 255, 127, 255),//----- 91
  118.               System.Drawing.Color.FromArgb(0, 165, 0, 255),    //----- 92
  119.               System.Drawing.Color.FromArgb(82, 165, 82, 255),    //----- 93
  120.               System.Drawing.Color.FromArgb(0, 127, 0, 255),    //----- 94
  121.               System.Drawing.Color.FromArgb(63, 127, 63, 255),    //----- 95
  122.               System.Drawing.Color.FromArgb(0, 76, 0, 255),        //----- 96
  123.               System.Drawing.Color.FromArgb(38, 76, 38, 255),    //----- 97
  124.               System.Drawing.Color.FromArgb(0, 38, 0, 255),        //----- 98
  125.               System.Drawing.Color.FromArgb(19, 38, 19, 255),    //----- 99
  126.               System.Drawing.Color.FromArgb(0, 255, 63, 255),    //----- 100
  127.               System.Drawing.Color.FromArgb(127, 255, 159, 255),//----- 101
  128.               System.Drawing.Color.FromArgb(0, 165, 41, 255),    //----- 102
  129.               System.Drawing.Color.FromArgb(82, 165, 103, 255),    //----- 103
  130.               System.Drawing.Color.FromArgb(0, 127, 31, 255),    //----- 104
  131.               System.Drawing.Color.FromArgb(63, 127, 79, 255),    //----- 105
  132.               System.Drawing.Color.FromArgb(0, 76, 19, 255),    //----- 106
  133.               System.Drawing.Color.FromArgb(38, 76, 47, 255),    //----- 107
  134.               System.Drawing.Color.FromArgb(0, 38, 9, 255),        //----- 108
  135.               System.Drawing.Color.FromArgb(19, 38, 23, 255),    //----- 109
  136.               System.Drawing.Color.FromArgb(0, 255, 127, 255),    //----- 110
  137.               System.Drawing.Color.FromArgb(127, 255, 191, 255),//----- 111
  138.               System.Drawing.Color.FromArgb(0, 165, 82, 255),    //----- 112
  139.               System.Drawing.Color.FromArgb(82, 165, 124, 255),    //----- 113
  140.               System.Drawing.Color.FromArgb(0, 127, 63, 255),    //----- 114
  141.               System.Drawing.Color.FromArgb(63, 127, 95, 255),    //----- 115
  142.               System.Drawing.Color.FromArgb(0, 76, 38, 255),    //----- 116
  143.               System.Drawing.Color.FromArgb(38, 76, 57, 255),    //----- 117
  144.               System.Drawing.Color.FromArgb(0, 38, 19, 255),    //----- 118
  145.               System.Drawing.Color.FromArgb(19, 38, 28, 255),    //----- 119
  146.               System.Drawing.Color.FromArgb(0, 255, 191, 255),    //----- 120
  147.               System.Drawing.Color.FromArgb(127, 255, 223, 255),//----- 121
  148.               System.Drawing.Color.FromArgb(0, 165, 124, 255),    //----- 122
  149.               System.Drawing.Color.FromArgb(82, 165, 145, 255),    //----- 123
  150.               System.Drawing.Color.FromArgb(0, 127, 95, 255),    //----- 124
  151.               System.Drawing.Color.FromArgb(63, 127, 111, 255),    //----- 125
  152.               System.Drawing.Color.FromArgb(0, 76, 57, 255),    //----- 126
  153.               System.Drawing.Color.FromArgb(38, 76, 66, 255),    //----- 127
  154.               System.Drawing.Color.FromArgb(0, 38, 28, 255),    //----- 128
  155.               System.Drawing.Color.FromArgb(19, 38, 33, 255),    //----- 129
  156.               System.Drawing.Color.FromArgb(0, 255, 255, 255),    //----- 130
  157.               System.Drawing.Color.FromArgb(127, 255, 255, 255),//----- 131
  158.               System.Drawing.Color.FromArgb(0, 165, 165, 255),    //----- 132
  159.               System.Drawing.Color.FromArgb(82, 165, 165, 255),    //----- 133
  160.               System.Drawing.Color.FromArgb(0, 127, 127, 255),    //----- 134
  161.               System.Drawing.Color.FromArgb(63, 127, 127, 255),    //----- 135
  162.               System.Drawing.Color.FromArgb(0, 76, 76, 255),    //----- 136
  163.               System.Drawing.Color.FromArgb(38, 76, 76, 255),    //----- 137
  164.               System.Drawing.Color.FromArgb(0, 38, 38, 255),    //----- 138
  165.               System.Drawing.Color.FromArgb(19, 38, 38, 255),    //----- 139
  166.               System.Drawing.Color.FromArgb(0, 191, 255, 255),    //----- 140
  167.               System.Drawing.Color.FromArgb(127, 223, 255, 255),//----- 141
  168.               System.Drawing.Color.FromArgb(0, 124, 165, 255),    //----- 142
  169.               System.Drawing.Color.FromArgb(82, 145, 165, 255),    //----- 143
  170.               System.Drawing.Color.FromArgb(0, 95, 127, 255),    //----- 144
  171.               System.Drawing.Color.FromArgb(63, 111, 127, 255),    //----- 145
  172.               System.Drawing.Color.FromArgb(0, 57, 76, 255),    //----- 146
  173.               System.Drawing.Color.FromArgb(38, 66, 76, 255),    //----- 147
  174.               System.Drawing.Color.FromArgb(0, 28, 38, 255),    //----- 148
  175.               System.Drawing.Color.FromArgb(19, 33, 38, 255),    //----- 149
  176.               System.Drawing.Color.FromArgb(0, 127, 255, 255),    //----- 150
  177.               System.Drawing.Color.FromArgb(127, 191, 255, 255),//----- 151
  178.               System.Drawing.Color.FromArgb(0, 82, 165, 255),    //----- 152
  179.               System.Drawing.Color.FromArgb(82, 124, 165, 255),    //----- 153
  180.               System.Drawing.Color.FromArgb(0, 63, 127, 255),    //----- 154
  181.               System.Drawing.Color.FromArgb(63, 95, 127, 255),    //----- 155
  182.               System.Drawing.Color.FromArgb(0, 38, 76, 255),    //----- 156
  183.               System.Drawing.Color.FromArgb(38, 57, 76, 255),    //----- 157
  184.               System.Drawing.Color.FromArgb(0, 19, 38, 255),    //----- 158
  185.               System.Drawing.Color.FromArgb(19, 28, 38, 255),    //----- 159
  186.               System.Drawing.Color.FromArgb(0, 63, 255, 255),    //----- 160
  187.               System.Drawing.Color.FromArgb(127, 159, 255, 255),//----- 161
  188.               System.Drawing.Color.FromArgb(0, 41, 165, 255),    //----- 162
  189.               System.Drawing.Color.FromArgb(82, 103, 165, 255),    //----- 163
  190.               System.Drawing.Color.FromArgb(0, 31, 127, 255),    //----- 164
  191.               System.Drawing.Color.FromArgb(63, 79, 127, 255),    //----- 165
  192.               System.Drawing.Color.FromArgb(0, 19, 76, 255),    //----- 166
  193.               System.Drawing.Color.FromArgb(38, 47, 76, 255),    //----- 167
  194.               System.Drawing.Color.FromArgb(0, 9, 38, 255),        //----- 168
  195.               System.Drawing.Color.FromArgb(19, 23, 38, 255),    //----- 169
  196.               System.Drawing.Color.FromArgb(0, 0, 255, 255),    //----- 170
  197.               System.Drawing.Color.FromArgb(127, 127, 255, 255),//----- 171
  198.               System.Drawing.Color.FromArgb(0, 0, 165, 255),    //----- 172
  199.               System.Drawing.Color.FromArgb(82, 82, 165, 255),    //----- 173
  200.               System.Drawing.Color.FromArgb(0, 0, 127, 255),    //----- 174
  201.               System.Drawing.Color.FromArgb(63, 63, 127, 255),    //----- 175
  202.               System.Drawing.Color.FromArgb(0, 0, 76, 255),        //----- 176
  203.               System.Drawing.Color.FromArgb(38, 38, 76, 255),    //----- 177
  204.               System.Drawing.Color.FromArgb(0, 0, 38, 255),        //----- 178
  205.               System.Drawing.Color.FromArgb(19, 19, 38, 255),    //----- 179
  206.               System.Drawing.Color.FromArgb(63, 0, 255, 255),    //----- 180
  207.               System.Drawing.Color.FromArgb(159, 127, 255, 255),//----- 181
  208.               System.Drawing.Color.FromArgb(41, 0, 165, 255),    //----- 182
  209.               System.Drawing.Color.FromArgb(103, 82, 165, 255),    //----- 183
  210.               System.Drawing.Color.FromArgb(31, 0, 127, 255),    //----- 184
  211.               System.Drawing.Color.FromArgb(79, 63, 127, 255),    //----- 185
  212.               System.Drawing.Color.FromArgb(19, 0, 76, 255),    //----- 186
  213.               System.Drawing.Color.FromArgb(47, 38, 76, 255),    //----- 187
  214.               System.Drawing.Color.FromArgb(9, 0, 38, 255),        //----- 188
  215.               System.Drawing.Color.FromArgb(23, 19, 38, 255),    //----- 189
  216.               System.Drawing.Color.FromArgb(127, 0, 255, 255),    //----- 190
  217.               System.Drawing.Color.FromArgb(191, 127, 255, 255),//----- 191
  218.               System.Drawing.Color.FromArgb(82, 0, 165, 255),    //----- 192
  219.               System.Drawing.Color.FromArgb(124, 82, 165, 255),    //----- 193
  220.               System.Drawing.Color.FromArgb(63, 0, 127, 255),    //----- 194
  221.               System.Drawing.Color.FromArgb(95, 63, 127, 255),    //----- 195
  222.               System.Drawing.Color.FromArgb(38, 0, 76, 255),    //----- 196
  223.               System.Drawing.Color.FromArgb(57, 38, 76, 255),    //----- 197
  224.               System.Drawing.Color.FromArgb(19, 0, 38, 255),    //----- 198
  225.               System.Drawing.Color.FromArgb(28, 19, 38, 255),    //----- 199
  226.               System.Drawing.Color.FromArgb(191, 0, 255, 255),    //----- 200
  227.               System.Drawing.Color.FromArgb(223, 127, 255, 255),//----- 201
  228.               System.Drawing.Color.FromArgb(124, 0, 165, 255),    //----- 202
  229.               System.Drawing.Color.FromArgb(145, 82, 165, 255),    //----- 203
  230.               System.Drawing.Color.FromArgb(95, 0, 127, 255),    //----- 204
  231.               System.Drawing.Color.FromArgb(111, 63, 127, 255),    //----- 205
  232.               System.Drawing.Color.FromArgb(57, 0, 76, 255),    //----- 206
  233.               System.Drawing.Color.FromArgb(66, 38, 76, 255),    //----- 207
  234.               System.Drawing.Color.FromArgb(28, 0, 38, 255),    //----- 208
  235.               System.Drawing.Color.FromArgb(33, 19, 38, 255),    //----- 209
  236.               System.Drawing.Color.FromArgb(255, 0, 255, 255),    //----- 210
  237.               System.Drawing.Color.FromArgb(255, 127, 255, 255),//----- 211
  238.               System.Drawing.Color.FromArgb(165, 0, 165, 255),    //----- 212
  239.               System.Drawing.Color.FromArgb(165, 82, 165, 255),    //----- 213
  240.               System.Drawing.Color.FromArgb(127, 0, 127, 255),    //----- 214
  241.               System.Drawing.Color.FromArgb(127, 63, 127, 255),    //----- 215
  242.               System.Drawing.Color.FromArgb(76, 0, 76, 255),    //----- 216
  243.               System.Drawing.Color.FromArgb(76, 38, 76, 255),    //----- 217
  244.               System.Drawing.Color.FromArgb(38, 0, 38, 255),    //----- 218
  245.               System.Drawing.Color.FromArgb(38, 19, 38, 255),    //----- 219
  246.               System.Drawing.Color.FromArgb(255, 0, 191, 255),    //----- 220
  247.               System.Drawing.Color.FromArgb(255, 127, 223, 255),//----- 221
  248.               System.Drawing.Color.FromArgb(165, 0, 124, 255),    //----- 222
  249.               System.Drawing.Color.FromArgb(165, 82, 145, 255),    //----- 223
  250.               System.Drawing.Color.FromArgb(127, 0, 95, 255),    //----- 224
  251.               System.Drawing.Color.FromArgb(127, 63, 111, 255),    //----- 225
  252.               System.Drawing.Color.FromArgb(76, 0, 57, 255),    //----- 226
  253.               System.Drawing.Color.FromArgb(76, 38, 66, 255),    //----- 227
  254.               System.Drawing.Color.FromArgb(38, 0, 28, 255),    //----- 228
  255.               System.Drawing.Color.FromArgb(38, 19, 33, 255),    //----- 229
  256.               System.Drawing.Color.FromArgb(255, 0, 127, 255),    //----- 230
  257.               System.Drawing.Color.FromArgb(255, 127, 191, 255),//----- 231
  258.               System.Drawing.Color.FromArgb(165, 0, 82, 255),    //----- 232
  259.               System.Drawing.Color.FromArgb(165, 82, 124, 255),    //----- 233
  260.               System.Drawing.Color.FromArgb(127, 0, 63, 255),    //----- 234
  261.               System.Drawing.Color.FromArgb(127, 63, 95, 255),    //----- 235
  262.               System.Drawing.Color.FromArgb(76, 0, 38, 255),    //----- 236
  263.               System.Drawing.Color.FromArgb(76, 38, 57, 255),    //----- 237
  264.               System.Drawing.Color.FromArgb(38, 0, 19, 255),    //----- 238
  265.               System.Drawing.Color.FromArgb(38, 19, 28, 255),    //----- 239
  266.               System.Drawing.Color.FromArgb(255, 0, 63, 255),    //----- 240
  267.               System.Drawing.Color.FromArgb(255, 127, 159, 255),//----- 241
  268.               System.Drawing.Color.FromArgb(165, 0, 41, 255),    //----- 242
  269.               System.Drawing.Color.FromArgb(165, 82, 103, 255),    //----- 243
  270.               System.Drawing.Color.FromArgb(127, 0, 31, 255),    //----- 244
  271.               System.Drawing.Color.FromArgb(127, 63, 79, 255),    //----- 245
  272.               System.Drawing.Color.FromArgb(76, 0, 19, 255),    //----- 246
  273.               System.Drawing.Color.FromArgb(76, 38, 47, 255),    //----- 247
  274.               System.Drawing.Color.FromArgb(38, 0, 9, 255),        //----- 248
  275.               System.Drawing.Color.FromArgb(38, 19, 23, 255),    //----- 249
  276.               System.Drawing.Color.FromArgb(84, 84, 84, 255),    //----- 250
  277.               System.Drawing.Color.FromArgb(118, 118, 118, 255),//----- 251
  278.               System.Drawing.Color.FromArgb(152, 152, 152, 255),//----- 252
  279.               System.Drawing.Color.FromArgb(186, 186, 186, 255),//----- 253
  280.               System.Drawing.Color.FromArgb(220, 220, 220, 255),//----- 254
  281.               System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 255
  282.             };
  283.         //////////////////////////////////////////////////////////////////////////////
  284.         // standard autocad colours
  285.         public static System.Drawing.Color[] MyAcadColorMs =
  286.             {
  287.               System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 0 - ByBlock - White
  288.               System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 1 - Red
  289.               System.Drawing.Color.FromArgb(255, 255, 0, 255),    //----- 2 - Yellow
  290.               System.Drawing.Color.FromArgb(0, 255, 0, 255),    //----- 3 - Green
  291.               System.Drawing.Color.FromArgb(0, 255, 255, 255),    //----- 4 - Cyan
  292.               System.Drawing.Color.FromArgb(0, 0, 255, 255),    //----- 5 - Blue
  293.               System.Drawing.Color.FromArgb(255, 0, 255, 255),    //----- 6 - Magenta
  294.               System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 7 - White
  295.               System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 8
  296.               System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 9
  297.               System.Drawing.Color.FromArgb(255, 0, 0, 255),    //----- 10
  298.               System.Drawing.Color.FromArgb(255, 127, 127, 255),//----- 11
  299.               System.Drawing.Color.FromArgb(165, 0, 0, 255),    //----- 12
  300.               System.Drawing.Color.FromArgb(165, 82, 82, 255),    //----- 13
  301.               System.Drawing.Color.FromArgb(127, 0, 0, 255),    //----- 14
  302.               System.Drawing.Color.FromArgb(127, 63, 63, 255),    //----- 15
  303.               System.Drawing.Color.FromArgb(76, 0, 0, 255),        //----- 16
  304.               System.Drawing.Color.FromArgb(76, 38, 38, 255),    //----- 17
  305.               System.Drawing.Color.FromArgb(38, 0, 0, 255),        //----- 18
  306.               System.Drawing.Color.FromArgb(38, 19, 19, 255),    //----- 19
  307.               System.Drawing.Color.FromArgb(255, 63, 0, 255),    //----- 20
  308.               System.Drawing.Color.FromArgb(255, 159, 127, 255),//----- 21
  309.               System.Drawing.Color.FromArgb(165, 41, 0, 255),    //----- 22
  310.               System.Drawing.Color.FromArgb(165, 103, 82, 255),    //----- 23
  311.               System.Drawing.Color.FromArgb(127, 31, 0, 255),    //----- 24
  312.               System.Drawing.Color.FromArgb(127, 79, 63, 255),    //----- 25
  313.               System.Drawing.Color.FromArgb(76, 19, 0, 255),    //----- 26
  314.               System.Drawing.Color.FromArgb(76, 47, 38, 255),    //----- 27
  315.               System.Drawing.Color.FromArgb(38, 9, 0, 255),        //----- 28
  316.               System.Drawing.Color.FromArgb(38, 23, 19, 255),    //----- 29
  317.               System.Drawing.Color.FromArgb(255, 127, 0, 255),    //----- 30
  318.               System.Drawing.Color.FromArgb(255, 191, 127, 255),//----- 31
  319.               System.Drawing.Color.FromArgb(165, 82, 0, 255),    //----- 32
  320.               System.Drawing.Color.FromArgb(165, 124, 82, 255),    //----- 33
  321.               System.Drawing.Color.FromArgb(127, 63, 0, 255),    //----- 34
  322.               System.Drawing.Color.FromArgb(127, 95, 63, 255),    //----- 35
  323.               System.Drawing.Color.FromArgb(76, 38, 0, 255),    //----- 36
  324.               System.Drawing.Color.FromArgb(76, 57, 38, 255),    //----- 37
  325.               System.Drawing.Color.FromArgb(38, 19, 0, 255),    //----- 38
  326.               System.Drawing.Color.FromArgb(38, 28, 19, 255),    //----- 39
  327.               System.Drawing.Color.FromArgb(255, 191, 0, 255),    //----- 40
  328.               System.Drawing.Color.FromArgb(255, 223, 127, 255),//----- 41
  329.               System.Drawing.Color.FromArgb(165, 124, 0, 255),    //----- 42
  330.               System.Drawing.Color.FromArgb(165, 145, 82, 255),    //----- 43
  331.               System.Drawing.Color.FromArgb(127, 95, 0, 255),    //----- 44
  332.               System.Drawing.Color.FromArgb(127, 111, 63, 255),    //----- 45
  333.               System.Drawing.Color.FromArgb(76, 57, 0, 255),    //----- 46
  334.               System.Drawing.Color.FromArgb(76, 66, 38, 255),    //----- 47
  335.               System.Drawing.Color.FromArgb(38, 28, 0, 255),    //----- 48
  336.               System.Drawing.Color.FromArgb(38, 33, 19, 255),    //----- 49
  337.               System.Drawing.Color.FromArgb(255, 255, 0, 255),    //----- 50
  338.               System.Drawing.Color.FromArgb(255, 255, 127, 255),//----- 51
  339.               System.Drawing.Color.FromArgb(165, 165, 0, 255),    //----- 52
  340.               System.Drawing.Color.FromArgb(165, 165, 82, 255),    //----- 53
  341.               System.Drawing.Color.FromArgb(127, 127, 0, 255),    //----- 54
  342.               System.Drawing.Color.FromArgb(127, 127, 63, 255),    //----- 55
  343.               System.Drawing.Color.FromArgb(76, 76, 0, 255),    //----- 56
  344.               System.Drawing.Color.FromArgb(76, 76, 38, 255),    //----- 57
  345.               System.Drawing.Color.FromArgb(38, 38, 0, 255),    //----- 58
  346.               System.Drawing.Color.FromArgb(38, 38, 19, 255),    //----- 59
  347.               System.Drawing.Color.FromArgb(191, 255, 0, 255),    //----- 60
  348.               System.Drawing.Color.FromArgb(223, 255, 127, 255),//----- 61
  349.               System.Drawing.Color.FromArgb(124, 165, 0, 255),    //----- 62
  350.               System.Drawing.Color.FromArgb(145, 165, 82, 255),    //----- 63
  351.               System.Drawing.Color.FromArgb(95, 127, 0, 255),    //----- 64
  352.               System.Drawing.Color.FromArgb(111, 127, 63, 255),    //----- 65
  353.               System.Drawing.Color.FromArgb(57, 76, 0, 255),    //----- 66
  354.               System.Drawing.Color.FromArgb(66, 76, 38, 255),    //----- 67
  355.               System.Drawing.Color.FromArgb(28, 38, 0, 255),    //----- 68
  356.               System.Drawing.Color.FromArgb(33, 38, 19, 255),    //----- 69
  357.               System.Drawing.Color.FromArgb(127, 255, 0, 255),    //----- 70
  358.               System.Drawing.Color.FromArgb(191, 255, 127, 255),//----- 71
  359.               System.Drawing.Color.FromArgb(82, 165, 0, 255),    //----- 72
  360.               System.Drawing.Color.FromArgb(124, 165, 82, 255),    //----- 73
  361.               System.Drawing.Color.FromArgb(63, 127, 0, 255),    //----- 74
  362.               System.Drawing.Color.FromArgb(95, 127, 63, 255),    //----- 75
  363.               System.Drawing.Color.FromArgb(38, 76, 0, 255),    //----- 76
  364.               System.Drawing.Color.FromArgb(57, 76, 38, 255),    //----- 77
  365.               System.Drawing.Color.FromArgb(19, 38, 0, 255),    //----- 78
  366.               System.Drawing.Color.FromArgb(28, 38, 19, 255),    //----- 79
  367.               System.Drawing.Color.FromArgb(63, 255, 0, 255),    //----- 80
  368.               System.Drawing.Color.FromArgb(159, 255, 127, 255),//----- 81
  369.               System.Drawing.Color.FromArgb(41, 165, 0, 255),    //----- 82
  370.               System.Drawing.Color.FromArgb(103, 165, 82, 255),    //----- 83
  371.               System.Drawing.Color.FromArgb(31, 127, 0, 255),    //----- 84
  372.               System.Drawing.Color.FromArgb(79, 127, 63, 255),    //----- 85
  373.               System.Drawing.Color.FromArgb(19, 76, 0, 255),    //----- 86
  374.               System.Drawing.Color.FromArgb(47, 76, 38, 255),    //----- 87
  375.               System.Drawing.Color.FromArgb(9, 38, 0, 255),        //----- 88
  376.               System.Drawing.Color.FromArgb(23, 38, 19, 255),    //----- 89
  377.               System.Drawing.Color.FromArgb(0, 255, 0, 255),    //----- 90
  378.               System.Drawing.Color.FromArgb(127, 255, 127, 255),//----- 91
  379.               System.Drawing.Color.FromArgb(0, 165, 0, 255),    //----- 92
  380.               System.Drawing.Color.FromArgb(82, 165, 82, 255),    //----- 93
  381.               System.Drawing.Color.FromArgb(0, 127, 0, 255),    //----- 94
  382.               System.Drawing.Color.FromArgb(63, 127, 63, 255),    //----- 95
  383.               System.Drawing.Color.FromArgb(0, 76, 0, 255),        //----- 96
  384.               System.Drawing.Color.FromArgb(38, 76, 38, 255),    //----- 97
  385.               System.Drawing.Color.FromArgb(0, 38, 0, 255),        //----- 98
  386.               System.Drawing.Color.FromArgb(19, 38, 19, 255),    //----- 99
  387.               System.Drawing.Color.FromArgb(0, 255, 63, 255),    //----- 100
  388.               System.Drawing.Color.FromArgb(127, 255, 159, 255),//----- 101
  389.               System.Drawing.Color.FromArgb(0, 165, 41, 255),    //----- 102
  390.               System.Drawing.Color.FromArgb(82, 165, 103, 255),    //----- 103
  391.               System.Drawing.Color.FromArgb(0, 127, 31, 255),    //----- 104
  392.               System.Drawing.Color.FromArgb(63, 127, 79, 255),    //----- 105
  393.               System.Drawing.Color.FromArgb(0, 76, 19, 255),    //----- 106
  394.               System.Drawing.Color.FromArgb(38, 76, 47, 255),    //----- 107
  395.               System.Drawing.Color.FromArgb(0, 38, 9, 255),        //----- 108
  396.               System.Drawing.Color.FromArgb(19, 38, 23, 255),    //----- 109
  397.               System.Drawing.Color.FromArgb(0, 255, 127, 255),    //----- 110
  398.               System.Drawing.Color.FromArgb(127, 255, 191, 255),//----- 111
  399.               System.Drawing.Color.FromArgb(0, 165, 82, 255),    //----- 112
  400.               System.Drawing.Color.FromArgb(82, 165, 124, 255),    //----- 113
  401.               System.Drawing.Color.FromArgb(0, 127, 63, 255),    //----- 114
  402.               System.Drawing.Color.FromArgb(63, 127, 95, 255),    //----- 115
  403.               System.Drawing.Color.FromArgb(0, 76, 38, 255),    //----- 116
  404.               System.Drawing.Color.FromArgb(38, 76, 57, 255),    //----- 117
  405.               System.Drawing.Color.FromArgb(0, 38, 19, 255),    //----- 118
  406.               System.Drawing.Color.FromArgb(19, 38, 28, 255),    //----- 119
  407.               System.Drawing.Color.FromArgb(0, 255, 191, 255),    //----- 120
  408.               System.Drawing.Color.FromArgb(127, 255, 223, 255),//----- 121
  409.               System.Drawing.Color.FromArgb(0, 165, 124, 255),    //----- 122
  410.               System.Drawing.Color.FromArgb(82, 165, 145, 255),    //----- 123
  411.               System.Drawing.Color.FromArgb(0, 127, 95, 255),    //----- 124
  412.               System.Drawing.Color.FromArgb(63, 127, 111, 255),    //----- 125
  413.               System.Drawing.Color.FromArgb(0, 76, 57, 255),    //----- 126
  414.               System.Drawing.Color.FromArgb(38, 76, 66, 255),    //----- 127
  415.               System.Drawing.Color.FromArgb(0, 38, 28, 255),    //----- 128
  416.               System.Drawing.Color.FromArgb(19, 38, 33, 255),    //----- 129
  417.               System.Drawing.Color.FromArgb(0, 255, 255, 255),    //----- 130
  418.               System.Drawing.Color.FromArgb(127, 255, 255, 255),//----- 131
  419.               System.Drawing.Color.FromArgb(0, 165, 165, 255),    //----- 132
  420.               System.Drawing.Color.FromArgb(82, 165, 165, 255),    //----- 133
  421.               System.Drawing.Color.FromArgb(0, 127, 127, 255),    //----- 134
  422.               System.Drawing.Color.FromArgb(63, 127, 127, 255),    //----- 135
  423.               System.Drawing.Color.FromArgb(0, 76, 76, 255),    //----- 136
  424.               System.Drawing.Color.FromArgb(38, 76, 76, 255),    //----- 137
  425.               System.Drawing.Color.FromArgb(0, 38, 38, 255),    //----- 138
  426.               System.Drawing.Color.FromArgb(19, 38, 38, 255),    //----- 139
  427.               System.Drawing.Color.FromArgb(0, 191, 255, 255),    //----- 140
  428.               System.Drawing.Color.FromArgb(127, 223, 255, 255),//----- 141
  429.               System.Drawing.Color.FromArgb(0, 124, 165, 255),    //----- 142
  430.               System.Drawing.Color.FromArgb(82, 145, 165, 255),    //----- 143
  431.               System.Drawing.Color.FromArgb(0, 95, 127, 255),    //----- 144
  432.               System.Drawing.Color.FromArgb(63, 111, 127, 255),    //----- 145
  433.               System.Drawing.Color.FromArgb(0, 57, 76, 255),    //----- 146
  434.               System.Drawing.Color.FromArgb(38, 66, 76, 255),    //----- 147
  435.               System.Drawing.Color.FromArgb(0, 28, 38, 255),    //----- 148
  436.               System.Drawing.Color.FromArgb(19, 33, 38, 255),    //----- 149
  437.               System.Drawing.Color.FromArgb(0, 127, 255, 255),    //----- 150
  438.               System.Drawing.Color.FromArgb(127, 191, 255, 255),//----- 151
  439.               System.Drawing.Color.FromArgb(0, 82, 165, 255),    //----- 152
  440.               System.Drawing.Color.FromArgb(82, 124, 165, 255),    //----- 153
  441.               System.Drawing.Color.FromArgb(0, 63, 127, 255),    //----- 154
  442.               System.Drawing.Color.FromArgb(63, 95, 127, 255),    //----- 155
  443.               System.Drawing.Color.FromArgb(0, 38, 76, 255),    //----- 156
  444.               System.Drawing.Color.FromArgb(38, 57, 76, 255),    //----- 157
  445.               System.Drawing.Color.FromArgb(0, 19, 38, 255),    //----- 158
  446.               System.Drawing.Color.FromArgb(19, 28, 38, 255),    //----- 159
  447.               System.Drawing.Color.FromArgb(0, 63, 255, 255),    //----- 160
  448.               System.Drawing.Color.FromArgb(127, 159, 255, 255),//----- 161
  449.               System.Drawing.Color.FromArgb(0, 41, 165, 255),    //----- 162
  450.               System.Drawing.Color.FromArgb(82, 103, 165, 255),    //----- 163
  451.               System.Drawing.Color.FromArgb(0, 31, 127, 255),    //----- 164
  452.               System.Drawing.Color.FromArgb(63, 79, 127, 255),    //----- 165
  453.               System.Drawing.Color.FromArgb(0, 19, 76, 255),    //----- 166
  454.               System.Drawing.Color.FromArgb(38, 47, 76, 255),    //----- 167
  455.               System.Drawing.Color.FromArgb(0, 9, 38, 255),        //----- 168
  456.               System.Drawing.Color.FromArgb(19, 23, 38, 255),    //----- 169
  457.               System.Drawing.Color.FromArgb(0, 0, 255, 255),    //----- 170
  458.               System.Drawing.Color.FromArgb(127, 127, 255, 255),//----- 171
  459.               System.Drawing.Color.FromArgb(0, 0, 165, 255),    //----- 172
  460.               System.Drawing.Color.FromArgb(82, 82, 165, 255),    //----- 173
  461.               System.Drawing.Color.FromArgb(0, 0, 127, 255),    //----- 174
  462.               System.Drawing.Color.FromArgb(63, 63, 127, 255),    //----- 175
  463.               System.Drawing.Color.FromArgb(0, 0, 76, 255),        //----- 176
  464.               System.Drawing.Color.FromArgb(38, 38, 76, 255),    //----- 177
  465.               System.Drawing.Color.FromArgb(0, 0, 38, 255),        //----- 178
  466.               System.Drawing.Color.FromArgb(19, 19, 38, 255),    //----- 179
  467.               System.Drawing.Color.FromArgb(63, 0, 255, 255),    //----- 180
  468.               System.Drawing.Color.FromArgb(159, 127, 255, 255),//----- 181
  469.               System.Drawing.Color.FromArgb(41, 0, 165, 255),    //----- 182
  470.               System.Drawing.Color.FromArgb(103, 82, 165, 255),    //----- 183
  471.               System.Drawing.Color.FromArgb(31, 0, 127, 255),    //----- 184
  472.               System.Drawing.Color.FromArgb(79, 63, 127, 255),    //----- 185
  473.               System.Drawing.Color.FromArgb(19, 0, 76, 255),    //----- 186
  474.               System.Drawing.Color.FromArgb(47, 38, 76, 255),    //----- 187
  475.               System.Drawing.Color.FromArgb(9, 0, 38, 255),        //----- 188
  476.               System.Drawing.Color.FromArgb(23, 19, 38, 255),    //----- 189
  477.               System.Drawing.Color.FromArgb(127, 0, 255, 255),    //----- 190
  478.               System.Drawing.Color.FromArgb(191, 127, 255, 255),//----- 191
  479.               System.Drawing.Color.FromArgb(82, 0, 165, 255),    //----- 192
  480.               System.Drawing.Color.FromArgb(124, 82, 165, 255),    //----- 193
  481.               System.Drawing.Color.FromArgb(63, 0, 127, 255),    //----- 194
  482.               System.Drawing.Color.FromArgb(95, 63, 127, 255),    //----- 195
  483.               System.Drawing.Color.FromArgb(38, 0, 76, 255),    //----- 196
  484.               System.Drawing.Color.FromArgb(57, 38, 76, 255),    //----- 197
  485.               System.Drawing.Color.FromArgb(19, 0, 38, 255),    //----- 198
  486.               System.Drawing.Color.FromArgb(28, 19, 38, 255),    //----- 199
  487.               System.Drawing.Color.FromArgb(191, 0, 255, 255),    //----- 200
  488.               System.Drawing.Color.FromArgb(223, 127, 255, 255),//----- 201
  489.               System.Drawing.Color.FromArgb(124, 0, 165, 255),    //----- 202
  490.               System.Drawing.Color.FromArgb(145, 82, 165, 255),    //----- 203
  491.               System.Drawing.Color.FromArgb(95, 0, 127, 255),    //----- 204
  492.               System.Drawing.Color.FromArgb(111, 63, 127, 255),    //----- 205
  493.               System.Drawing.Color.FromArgb(57, 0, 76, 255),    //----- 206
  494.               System.Drawing.Color.FromArgb(66, 38, 76, 255),    //----- 207
  495.               System.Drawing.Color.FromArgb(28, 0, 38, 255),    //----- 208
  496.               System.Drawing.Color.FromArgb(33, 19, 38, 255),    //----- 209
  497.               System.Drawing.Color.FromArgb(255, 0, 255, 255),    //----- 210
  498.               System.Drawing.Color.FromArgb(255, 127, 255, 255),//----- 211
  499.               System.Drawing.Color.FromArgb(165, 0, 165, 255),    //----- 212
  500.               System.Drawing.Color.FromArgb(165, 82, 165, 255),    //----- 213
  501.               System.Drawing.Color.FromArgb(127, 0, 127, 255),    //----- 214
  502.               System.Drawing.Color.FromArgb(127, 63, 127, 255),    //----- 215
  503.               System.Drawing.Color.FromArgb(76, 0, 76, 255),    //----- 216
  504.               System.Drawing.Color.FromArgb(76, 38, 76, 255),    //----- 217
  505.               System.Drawing.Color.FromArgb(38, 0, 38, 255),    //----- 218
  506.               System.Drawing.Color.FromArgb(38, 19, 38, 255),    //----- 219
  507.               System.Drawing.Color.FromArgb(255, 0, 191, 255),    //----- 220
  508.               System.Drawing.Color.FromArgb(255, 127, 223, 255),//----- 221
  509.               System.Drawing.Color.FromArgb(165, 0, 124, 255),    //----- 222
  510.               System.Drawing.Color.FromArgb(165, 82, 145, 255),    //----- 223
  511.               System.Drawing.Color.FromArgb(127, 0, 95, 255),    //----- 224
  512.               System.Drawing.Color.FromArgb(127, 63, 111, 255),    //----- 225
  513.               System.Drawing.Color.FromArgb(76, 0, 57, 255),    //----- 226
  514.               System.Drawing.Color.FromArgb(76, 38, 66, 255),    //----- 227
  515.               System.Drawing.Color.FromArgb(38, 0, 28, 255),    //----- 228
  516.               System.Drawing.Color.FromArgb(38, 19, 33, 255),    //----- 229
  517.               System.Drawing.Color.FromArgb(255, 0, 127, 255),    //----- 230
  518.               System.Drawing.Color.FromArgb(255, 127, 191, 255),//----- 231
  519.               System.Drawing.Color.FromArgb(165, 0, 82, 255),    //----- 232
  520.               System.Drawing.Color.FromArgb(165, 82, 124, 255),    //----- 233
  521.               System.Drawing.Color.FromArgb(127, 0, 63, 255),    //----- 234
  522.               System.Drawing.Color.FromArgb(127, 63, 95, 255),    //----- 235
  523.               System.Drawing.Color.FromArgb(76, 0, 38, 255),    //----- 236
  524.               System.Drawing.Color.FromArgb(76, 38, 57, 255),    //----- 237
  525.               System.Drawing.Color.FromArgb(38, 0, 19, 255),    //----- 238
  526.               System.Drawing.Color.FromArgb(38, 19, 28, 255),    //----- 239
  527.               System.Drawing.Color.FromArgb(255, 0, 63, 255),    //----- 240
  528.               System.Drawing.Color.FromArgb(255, 127, 159, 255),//----- 241
  529.               System.Drawing.Color.FromArgb(165, 0, 41, 255),    //----- 242
  530.               System.Drawing.Color.FromArgb(165, 82, 103, 255),    //----- 243
  531.               System.Drawing.Color.FromArgb(127, 0, 31, 255),    //----- 244
  532.               System.Drawing.Color.FromArgb(127, 63, 79, 255),    //----- 245
  533.               System.Drawing.Color.FromArgb(76, 0, 19, 255),    //----- 246
  534.               System.Drawing.Color.FromArgb(76, 38, 47, 255),    //----- 247
  535.               System.Drawing.Color.FromArgb(38, 0, 9, 255),        //----- 248
  536.               System.Drawing.Color.FromArgb(38, 19, 23, 255),    //----- 249
  537.               System.Drawing.Color.FromArgb(84, 84, 84, 255),    //----- 250
  538.               System.Drawing.Color.FromArgb(118, 118, 118, 255),//----- 251
  539.               System.Drawing.Color.FromArgb(152, 152, 152, 255),//----- 252
  540.               System.Drawing.Color.FromArgb(186, 186, 186, 255),//----- 253
  541.               System.Drawing.Color.FromArgb(220, 220, 220, 255),//----- 254
  542.               System.Drawing.Color.FromArgb(255, 255, 255, 255),//----- 255
  543.             };
  544.         public static bool GetActiveViewPortInfo(ref double height, ref double width, ref Point3d target, ref Vector3d viewDir, ref double viewTwist, bool getViewCenter)
  545.         {
  546.             // get the editor object
  547.             Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
  548.             ed.UpdateTiledViewportsInDatabase();
  549.             Database db = HostApplicationServices.WorkingDatabase;
  550.             using (Transaction t = db.TransactionManager.StartTransaction())
  551.             {
  552.                 ViewportTable vt = (ViewportTable)t.GetObject(db.ViewportTableId, OpenMode.ForRead);
  553.                 ViewportTableRecord btr = (ViewportTableRecord)t.GetObject(vt[GsUtility.strActive], OpenMode.ForRead);
  554.                 height = btr.Height;
  555.                 width = btr.Width;
  556.                 target = btr.Target;
  557.                 viewDir = btr.ViewDirection;
  558.                 viewTwist = btr.ViewTwist;
  559.                
  560.                 t.Commit();
  561.             }
  562.             return true;
  563.         }
  564.         public class RubberbandRectangle
  565.         {
  566.             public enum PenStyles
  567.             {
  568.                 PS_SOLID = 0,
  569.                 PS_DASH = 1,
  570.                 PS_DOT = 2,
  571.                 PS_DASHDOT = 3,
  572.                 PS_DASHDOTDOT = 4
  573.             }
  574.             // These values come from the larger set of defines in WinGDI.h,
  575.             // but are all that are needed for this application.  If this class
  576.             // is expanded for more generic rectangle drawing, they should be
  577.             // replaced by enums from those sets of defones.
  578.             private int NULL_BRUSH = 5;
  579.             private int R2_XORPEN = 7;
  580.             private PenStyles penStyle;
  581.             private int BLACK_PEN = 0;
  582.             // Default contructor - sets member fields
  583.             public RubberbandRectangle()
  584.             {
  585.                 penStyle = PenStyles.PS_DOT;
  586.             }
  587.             // penStyles property get/set.
  588.             public PenStyles PenStyle
  589.             {
  590.                 get { return penStyle; }
  591.                 set { penStyle = value; }
  592.             }
  593.             public void DrawXORRectangle(Graphics grp, System.Drawing.Point startPt, System.Drawing.Point endPt)
  594.             {
  595.                 int X1 = startPt.X;
  596.                 int Y1 = startPt.Y;
  597.                 int X2 = endPt.X;
  598.                 int Y2 = endPt.Y;
  599.                 // Extract the Win32 HDC from the Graphics object supplied.
  600.                 IntPtr hdc = grp.GetHdc();
  601.                 // Create a pen with a dotted style to draw the border of the
  602.                 // rectangle.
  603.                 IntPtr gdiPen = CreatePen(penStyle,
  604.                               1, BLACK_PEN);
  605.                 // Set the ROP cdrawint mode to XOR.
  606.                 SetROP2(hdc, R2_XORPEN);
  607.                 // Select the pen into the device context.
  608.                 IntPtr oldPen = SelectObject(hdc, gdiPen);
  609.                 // Create a stock NULL_BRUSH brush and select it into the device
  610.                 // context so that the rectangle isn't filled.
  611.                 IntPtr oldBrush = SelectObject(hdc,
  612.                                      GetStockObject(NULL_BRUSH));
  613.                 // Now XOR the hollow rectangle on the Graphics object with
  614.                 // a dotted outline.
  615.                 Rectangle(hdc, X1, Y1, X2, Y2);
  616.                 // Put the old stuff back where it was.
  617.                 SelectObject(hdc, oldBrush); // no need to delete a stock object
  618.                 SelectObject(hdc, oldPen);
  619.                 DeleteObject(gdiPen);  // but we do need to delete the pen
  620.                 // Return the device context to Windows.
  621.                 grp.ReleaseHdc(hdc);
  622.             }
  623.             // Use Interop to call the corresponding Win32 GDI functions
  624.             [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
  625.             private static extern int SetROP2(
  626.                     IntPtr hdc,  // Handle to a Win32 device context
  627.                     int enDrawMode // Drawing mode
  628.                     );
  629.             [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
  630.             private static extern IntPtr CreatePen(
  631.                     PenStyles enPenStyle, // Pen style from enum PenStyles
  632.                     int nWidth,    // Width of pen
  633.                     int crColor    // Color of pen
  634.                     );
  635.             [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
  636.             private static extern bool DeleteObject(
  637.                     IntPtr hObject // Win32 GDI handle to object to delete
  638.                     );
  639.             [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
  640.             private static extern IntPtr SelectObject(
  641.                     IntPtr hdc,  // Win32 GDI device context
  642.                     IntPtr hObject // Win32 GDI handle to object to select
  643.                     );
  644.             [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
  645.             private static extern void Rectangle(
  646.                     IntPtr hdc,   // Handle to a Win32 device context
  647.                     int X1,    // x-coordinate of top left corner
  648.                     int Y1,    // y-cordinate of top left corner
  649.                     int X2,    // x-coordinate of bottom right corner
  650.                     int Y2    // y-coordinate of bottm right corner
  651.                     );
  652.             [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
  653.             private static extern IntPtr GetStockObject(
  654.                     int brStyle // Selected from the WinGDI.h BrushStyles enum
  655.                     );
  656.             // C# version of Win32 RGB macro
  657.             private static int RGB(int R, int G, int B)
  658.             {
  659.                 return (R | (G << 8) | (B << 16));
  660.             }
  661.         }
  662.     }
  663. }
 楼主| 发表于 2010-1-18 12:46:00 | 显示全部楼层
相关的函数
  1.         public static Extents3d GetExtents(IEnumerable<Entity> ents)
  2.         {
  3.             Extents3d ext = new Extents3d();
  4.             foreach (Entity ent in ents)
  5.             {
  6.                 ext.AddExtents(ent.GeometricExtents);
  7.             }
  8.             return ext;
  9.         }
  10.         public static Size GetSize(Extents3d ext)
  11.         {
  12.             int width = (int)Math.Floor(ext.MaxPoint.X - ext.MinPoint.X);
  13.             int height = (int)Math.Ceiling(ext.MaxPoint.Y - ext.MinPoint.Y);
  14.             return new Size(width, height);
  15.         }
  16.         /// <summary>
  17.         /// 在符号表中获取对应键值的记录Id
  18.         /// </summary>
  19.         /// <param name="table">符号表</param>
  20.         /// <param name="key">记录键值</param>
  21.         /// <returns>对应键值的记录Id</returns>
  22.         public static ObjectId GetRecorId<T>(this T table, string key) where T : SymbolTable
  23.         {
  24.             if (table.Has(key))
  25.             {
  26.                 if (Application.Version.Major < 18)
  27.                 {
  28.                     ObjectId idres = table[key];
  29.                     if (!idres.IsErased)
  30.                         return idres;
  31.                     
  32.                     foreach (ObjectId id in table)
  33.                     {
  34.                         if (!id.IsErased)
  35.                         {
  36.                             SymbolTableRecord str = id.GetObject<SymbolTableRecord>();
  37.                             if (str.Name == key)
  38.                                 return str.ObjectId;
  39.                         }
  40.                     }
  41.                 }
  42.                 else
  43.                 {
  44.                     return table[key];
  45.                 }
  46.             }
  47.             return ObjectId.Null;
  48.         }
复制代码
发表于 2010-1-18 17:22:00 | 显示全部楼层

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

 楼主| 发表于 2010-1-18 17:37:00 | 显示全部楼层
附上选择实体输出jpg文件的例子
  1.         [CommandMethod("t1")]
  2.         public void Test1()
  3.         {
  4.             PromptSelectionResult res = Helper.Editor.GetSelection();
  5.             if (res.Status == PromptStatus.OK)
  6.             {
  7.                 using (DBTransaction tr = new DBTransaction())
  8.                 {
  9.                     List<Entity> ents = new List<Entity>();
  10.                     foreach (ObjectId id in res.Value.GetObjectIds())
  11.                     {
  12.                         Entity ent = (Entity)tr.GetObject(id, OpenMode.ForRead);
  13.                         ents.Add((Entity)ent.Clone());
  14.                     }
  15.                     using (BlockPreviewManager bps = new BlockPreviewManager())
  16.                     {
  17.                         BlockPreview bp = bps.Add(ents);
  18.                         bp.Save("d:\\1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
  19.                     }
  20.                 }
  21.             }
  22.         }
发表于 2010-5-8 09:52:00 | 显示全部楼层

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

我试过了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2010-8-24 11:12:00 | 显示全部楼层
看看先,不知道是不是我想要的,能给图就好了
 楼主| 发表于 2010-8-24 11:54:00 | 显示全部楼层
发表于 2010-8-25 20:11:00 | 显示全部楼层
飞狐出品,必是精品!顶你,老大!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 06:33 , Processed in 0.202131 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表