在窗体上显示实体(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
}
}
强!顶~!终于开源了嘿嘿! 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
}
}
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));
}
}
}
}
相关的函数
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;
} <p></p><p>强!顶~!终于开源了嘿嘿!</p> 附上选择实体输出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);
}
}
}
} <p></p><p>感谢雪山飞狐 这是代码vs2005+AutoCAD2007(较原创有稍许改动) 执行t1命令可将当前选择对象保存到d:\1.jpg </p><p>我试过了</p><p></p><p></p> 看看先,不知道是不是我想要的,能给图就好了 <p>贴图这里有的</p>
<p><font face="Verdana"><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=75701&star=1#10301">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=75701&star=1#10301</a></font></p>
<p> </p> 飞狐出品,必是精品!顶你,老大!