当前位置> 网站首页 > CAD技巧 >


给VS装上通义灵码编写第一个AutoCAD插件
最后修改: 2025-03-27作者: [db:作者]点击:

前面我们分享了不少开发环境的搭建以及c#二次开发的一些基础知识,已在网站开设了AI辅助CAD二次开发专题:点击查看,今天我们来分享如何给VS安装通义灵码,编写第一个AutoCAD插件

注:在AI的加持下,努力分享零代码进行CAD二次开发。遇到问题解决问题,而不刻意学习怎么写代码。

在编写之前我们先要安装通义灵码。

打开VS,点击拓展,管理拓展。

给VS装上通义灵码编写第一个AutoCAD插件

浏览处搜索通义灵码,免费的,直接安装即可,我这边已经安装就不展示安装过程了。

给VS装上通义灵码编写第一个AutoCAD插件

安装之后重启VS,打开后在右侧会有通义灵码,点击登录。

注:登录很简单,阿里旗下APP都能直接登录,比如支付宝,淘宝,阿里云等。

给VS装上通义灵码编写第一个AutoCAD插件

登录之后直接问通义灵码,写一个统计AutoCAD对象长度的功能。

给VS装上通义灵码编写第一个AutoCAD插件

很快就用c#给你写好了。

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
using System;

namespace AutoCADLengthCalculator
{
    public class LengthCalculator
    {
        [CommandMethod("CalculateLength")]
        public void CalculateLength()
        {
            // 获取当前文档和数据库
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor ed = doc.Editor;

            // 开始事务
            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                // 提示用户选择对象
                PromptSelectionOptions opts = new PromptSelectionOptions();
                opts.MessageForAdding = "
选择要计算长度的对象: ";
                PromptSelectionResult psr = ed.GetSelection(opts);

                if (psr.Status == PromptStatus.OK)
                {
                    SelectionSet ss = psr.Value;
                    double totalLength = 0.0;

                    // 遍历选择集中的每个对象
                    foreach (SelectedObject so in ss)
                    {
                        if (so != null && so.ObjectId.IsValid)
                        {
                            Entity ent = (Entity)tr.GetObject(so.ObjectId, OpenMode.ForRead);

                            // 检查对象是否为线性对象(如Line, Polyline等)
                            if (ent is Line line)
                            {
                                totalLength += line.Length;
                            }
                            else if (ent is Polyline polyline)
                            {
                                totalLength += polyline.Length;
                            }
                            else if (ent is Circle circle)
                            {
                                totalLength += circle.Circumference;
                            }
                            else if (ent is Arc arc)
                            {
                                totalLength += arc.Length;
                            }
                            // 可以继续添加其他类型的对象
                        }
                    }

                    // 显示总长度
                    ed.WriteMessage($"
所选对象的总长度为: {totalLength}");
                }
                else
                {
                    ed.WriteMessage("
未选择任何对象。");
                }

                // 提交事务
                tr.Commit();
            }
        }
    }
}

关于我们| 使用指南| 联系我们| 内容提交| 关于隐私| 广告服务| 版权声明| 免责声明| 友情链接|

  • 网上110报警
  • 360网站安全
  • 工信部网站备案
  • 支付宝商家服务