我先把代码贴下来:
using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.Windows;
using Autodesk.AutoCAD.ApplicationServices;
using acadApp = Autodesk.AutoCAD.ApplicationServices.Application;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using System.Windows.Controls;
using System.Windows;
using System.Windows.Data;
using Autodesk.AutoCAD.Ribbon;
using System.Runtime.InteropServices;
using System.Windows.Interop;
using System.Text;
using CUMTLab;
using System.Data.OleDb;
using System.Windows.Forms;
using System.Data;
using drawCircle;
namespace ribbon2009
{
    public class testribbon
    {
        //public static int count;
        //定义三个数组存储坐标
        public static double[] X ;
        public static double[] Y ;
        public static double[] Z ;
   
        [CommandMethod("test")]
        #region row
        public void creatRibbon()
        {
            RibbonButton button = new RibbonButton();
            button.Text = "巷道设计";
            button.Orientation = System.Windows.Controls.Orientation.Vertical;
            button.Size = RibbonItemSize.Large;
            button.ShowText = true;
            button.Id = "ClickMe_1";            RibbonButton loadExcel_button = new RibbonButton();
            loadExcel_button.Text = "导入坐标点";
            loadExcel_button.Orientation = System.Windows.Controls.Orientation.Vertical;
            loadExcel_button.Size = button.Size;
            loadExcel_button.ShowText = true;
            loadExcel_button.Id = "excel_Button";            //创建RibbonRow用来放置按钮
            RibbonRow row = new RibbonRow();
            row.IsInSlideoutPanel = false;
            row.Items.Add(button);
            RibbonRow row2 = new RibbonRow();
            row2.Items.Add(loadExcel_button);
            //创建RibbonPanelSource,用来放置RibbonRow
            RibbonPanelSource panelSource = new RibbonPanelSource();
            panelSource.Title = "巷道选型";
            panelSource.Rows.Add(row);
            RibbonPanelSource panelSource2 = new RibbonPanelSource();
            panelSource2.Title = "坐标点导入";
            panelSource2.Rows.Add(row2);            //再创建一个RibbonPanel来放置上面的RibbonSource
            RibbonPanel panel = new RibbonPanel();
            panel.Source = panelSource;
            RibbonPanel panel2 = new RibbonPanel();
            panel2.Source = panelSource2;            //创建AutoCAD菜单标签,放置RibbonPanel
            RibbonTab tab = new RibbonTab();
            tab.Title = "采矿";
            tab.IsContextualTab = false;
            tab.CopyFrom(tab);
            tab.Panels.Add(panel);
            tab.Panels.Add(panel2);            //RibbonControl是所有AutoCAD控制按钮的基础
            RibbonControl ribbonControl = Autodesk.AutoCAD.Ribbon.RibbonServices.RibbonPaletteSet.RibbonControl;
            ribbonControl.Tabs.Add(tab);
            //激活标签,响应事件
            ribbonControl.ActiveTab = tab;
            button.Click += new RoutedEventHandler(button_Click);
            loadExcel_button.Click += new RoutedEventHandler(loadExcel_button_Click);
            
        }        private static void button_Click(Object sender, RoutedEventArgs e)
        {
            RibbonButton button = sender as RibbonButton;
            if (button != null && (button.Id == "ClickMe_1"))
            {
                MainForm myForm = new MainForm();
                myForm.Show();
            }
        }
        private static void loadExcel_button_Click(Object sender, RoutedEventArgs e)
        {
            RibbonButton loadExcel_button = sender as RibbonButton;            if (loadExcel_button != null && (loadExcel_button.Id == "excel_Button"))
            {
                OpenFileDialog openExcelFileDialog1 = new OpenFileDialog();
                openExcelFileDialog1.Filter = "excel文件(*.xls)|*.xls";
                
                if (openExcelFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                
                    //打开EXCEL文件,从中读取数据
                    string filePath = openExcelFileDialog1.FileName;//指定文件位置
                    string myString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source='" + filePath +
                        "';Extended Properties=Excel 8.0;";
                    OleDbConnection connxls = new OleDbConnection(myString);//与excel文件建立连接
                    OleDbDataAdapter myDa = new OleDbDataAdapter("Select * from [Sheet1$]", connxls);//读取数据
                    DataSet myDataSet = new DataSet();
                    myDa.Fill(myDataSet);
                    System.Data.DataTable myDataTab = myDataSet.Tables[0];
                    int count = myDataSet.Tables[0].Rows.Count;
                    //从excel里面读出数据存入数组,在下面传入画圆的函数
                    for (int index = 0; index < count; index++)
                    {
                        X[index] = Convert.ToDouble(myDataTab.Rows[index][0]);
               
                        Y[index] = Convert.ToDouble(myDataTab.Rows[index][1]);
                
                        Z[index] = Convert.ToDouble(myDataTab.Rows[index][2]);
                    }
                    Draw(X, Y, Z);
                }
        }                
        }
               public static void Draw(double[] arr1, double[] arr2, double[] arr3)
        {
            for (int i = 0; i < arr1.Length; i++)
            {
                double x = arr1[i];
                double y = arr2[i];
                double z = arr3[i];
                //这是我自己写的类库里面的函数,传递三个参数做为圆心的位置,在CAD上画出圆
                drawCircle.circle_drawings.drawCircle(x, y, z);
            }
        }
        #endregion
    }
}
编译能通过,但是在AutoCAD里面运行的时候总是崩溃,提示Unhandled Access Violation Reading 0X0004 Exception at 644fee80h 希望哪位高手能进来帮我看看,谢谢了