C# 在 AutoCAD中的應(yīng)用(1)

嘗試?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);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容