当前位置: 服务支持 >  技术文档 >  C#在AutoCAD中的应用介绍(1)

C#在AutoCAD中的应用介绍(1)

阅读数 101
点赞 52
copyright 著作权
article_banner

尝试利用 C# 对 AutoCAD 进行二次开发,先学习后应用

1. 利用 C# 绘制直线编程

通过 WinForm 在 AutoCAD 中绘制一条直线。

1.1 引用设置

在 Visual Studio 中建立一个窗体项目,配置引用,添加AutoCAD 2016 Type Library(我用的就是 AutoCAD 2016)。


右击添加引用

找到AutoCAD Type Library

添加引用成功
1.2 窗体设计

包含两个标签,两个文本框,一个按钮。


窗体设计
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 对象
        private AcadApplication a;
        // 窗体构造器中加入
        public Form1()
        {
            InitializeComponent();
            // 创建 AutoCAD 对象,并使其可见
            this.a = new AcadApplication();
            a.Visible = true;
        }

        private void btnPaint_Click(object sender, EventArgs e)
        {
            // 声明起点和终点坐标
            double[] startingPoint = new double[3];
            double[] endPoint = new double[3];
            // 从文本框中读取输入的坐标值,格式为“x,y,z”
            string[] strStarting = txtStarting.Text.Split(',');
            string[] strEnding = txtEnding.Text.Split(',');
            // 将字符串转为 double 类型数据
            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. 运行

在文本框中输入起点和终点左边,点击绘制,即可。


运行界面

绘制结果

3. 注意事项

第一次编码时,并未添加 “System.Threading.Thread.Sleep(1000);”这条语句,结果出现“被呼叫方拒绝接收呼叫。异常来自...”这种问题,查找解决办法,在https://blog.csdn.net/jiutao_tang/article/details/6897992?utm_source=blogxgwz9中找到答案。
原因:在实现IDE自动化操作时,IDE还没有完全准备好,对我们所发出的命令没有时间响应。
**解决方法:执行命令前,线程暂停一下,差不多要1秒种才可以。然后再调用IDE功能,即添加一条语句。

 System.Threading.Thread.Sleep(1000);
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空