嘗試?yán)?C# 對(duì) AutoCAD 進(jìn)行二次開發(fā),先學(xué)習(xí)后應(yīng)用
1. 利用 C# 繪制直線編程
通過 WinForm 在 AutoCAD 中繪制一條直線。
1.1 引用設(shè)置
在 Visual Studio 中建立一個(gè)窗體項(xiàng)目,配置引用,添加AutoCAD 2016 Type Library(我用的就是 AutoCAD 2016)。
右擊添加引用
找到AutoCAD Type Library
添加引用成功
1.2 窗體設(shè)計(jì)
包含兩個(gè)標(biāo)簽,兩個(gè)文本框,一個(gè)按鈕。
窗體設(shè)計(jì)
1.3 代碼
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AutoCAD;// 加入引用的 AutoCAD 命名空間
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
// 聲明 AutoCAD 對(duì)象
private AcadApplication a;
// 窗體構(gòu)造器中加入
public Form1()
{
InitializeComponent();
// 創(chuàng)建 AutoCAD 對(duì)象,并使其可見
this.a = new AcadApplication();
a.Visible = true;
}
private void btnPaint_Click(object sender, EventArgs e)
{
// 聲明起點(diǎn)和終點(diǎn)坐標(biāo)
double[] startingPoint = new double[3];
double[] endPoint = new double[3];
// 從文本框中讀取輸入的坐標(biāo)值,格式為“x,y,z”
string[] strStarting = txtStarting.Text.Split(',');
string[] strEnding = txtEnding.Text.Split(',');
// 將字符串轉(zhuǎn)為 double 類型數(shù)據(jù)
for (int i = 0; i < 3; i++)
{
startingPoint[i] = Convert.ToDouble(strStarting[i]);
endPoint[i] = Convert.ToDouble(strEnding[i]);
}
// 在 AutoCAD 中繪制直線,并刷新顯示
System.Threading.Thread.Sleep(1000);
a.ActiveDocument.ModelSpace.AddLine(startingPoint, endPoint);
a.Application.Update();
}
}
}
2. 運(yùn)行
在文本框中輸入起點(diǎn)和終點(diǎn)左邊,點(diǎn)擊繪制,即可。
運(yùn)行界面
繪制結(jié)果
3. 注意事項(xiàng)
第一次編碼時(shí),并未添加 “System.Threading.Thread.Sleep(1000);”這條語句,結(jié)果出現(xiàn)“被呼叫方拒絕接收呼叫。異常來自...”這種問題,查找解決辦法,在https://blog.csdn.net/jiutao_tang/article/details/6897992?utm_source=blogxgwz9中找到答案。
原因:在實(shí)現(xiàn)IDE自動(dòng)化操作時(shí),IDE還沒有完全準(zhǔn)備好,對(duì)我們所發(fā)出的命令沒有時(shí)間響應(yīng)。
**解決方法:執(zhí)行命令前,線程暫停一下,差不多要1秒種才可以。然后再調(diào)用IDE功能,即添加一條語句。
System.Threading.Thread.Sleep(1000);





