AutoCAD二次开发
HisinWang
CAD二次开发从业者。
QQ: 280338447
展开
-
AutoCAD .Net 获取用户输入——浮点型数值
GetDouble的用法示例Document doc = Application.DocumentManager.MdiActiveDocument;double value = 0.0;PromptDoubleOptions options = new PromptDoubleOptions("\n请输入浮点数: ");options.AllowNone = true;options.De原创 2017-12-29 22:06:11 · 838 阅读 · 0 评论 -
AutoCAD .Net 创建对齐标注
以下代码展示: 在模型空间中创建如下图所示的对齐标注。 对齐标注尺寸对象是 AlignedDimension。using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServices;using Autodesk.AutoCAD.DatabaseServices;using Autodesk.AutoCAD.原创 2017-12-17 09:31:48 · 2579 阅读 · 0 评论 -
AutoCAD .Net 创建线性标注
以下代码展示: 在模型空间中创建如下图所示的线性尺寸。 线性标注尺寸对象是RotatedDimension。 当RotatedDimension.Rotation 为 0 时,创建的是水平标注。 当RotatedDimension.Rotation 为 Math.PI / 2 时,创建的是竖直标注。using Autodesk.AutoCAD.Runtime;using Autodes原创 2017-12-17 09:24:46 · 3635 阅读 · 0 评论 -
AutoCAD .Net 创建填充Hatch
以下代码展示: 往模型空间中添加填充对象。 using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServices;using Autodesk.AutoCAD.DatabaseServices;using Autodesk.AutoCAD.Geometry;using Autodesk.AutoCAD.Edit原创 2017-12-17 09:20:53 · 5087 阅读 · 0 评论 -
AutoCAD .Net 创建点Point
以下代码展示: 往模型空间中添加一个点。点的坐标为(100, 100, 50)。 设置点的图层、颜色、线型、线宽请参考文章AutoCAD .Net 创建直线Line using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServices;using Autodesk.AutoCAD.DatabaseServices原创 2017-12-17 09:19:22 · 2251 阅读 · 0 评论 -
AutoCAD .Net 创建椭圆Ellipse
以下代码展示: 往模型空间中添加一个椭圆。椭圆的中心为(0, 0, 0),长轴半径为100,短轴半径为60,圆弧所在平面为XOY平面,起始角为0度,终止角为360度。 设置椭圆的图层、颜色、线型、线宽请参考文章AutoCAD .Net 创建直线Line using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServi原创 2017-12-16 22:12:29 · 1768 阅读 · 0 评论 -
AutoCAD .Net 创建圆弧Arc
以下代码展示: 往模型空间中添加一个圆弧。圆弧的中心为(100, 100, 0),半径为20,圆弧所在平面为XOY平面,起始角为0度,终止角为90度。 设置圆弧的图层、颜色、线型、线宽请参考文章AutoCAD .Net 创建直线Line using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServices;usi原创 2017-12-16 22:10:31 · 1600 阅读 · 1 评论 -
AutoCAD .Net 创建圆Circle
以下代码展示: 往模型空间中添加一个圆。圆心为(100, 100, 0),半径为20,圆所在平面为XOY平面。 设置圆的图层、颜色、线型、线宽请参考文章AutoCAD .Net 创建直线Line using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServices;using Autodesk.AutoCAD.D原创 2017-12-16 22:06:04 · 1224 阅读 · 0 评论 -
AutoCAD .Net 创建多段线Polyline
以下代码展示: 往模型空间中添加一条多段线Polyline。多段线有三个顶点,分别为(0, 0) (100, 100) (100, 0)。 设置多段线的图层、颜色、线型、线宽请参考文章AutoCAD .Net 创建直线Line using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServices;using Au原创 2017-12-16 22:02:27 · 8610 阅读 · 0 评论 -
AutoCAD .Net 创建直线Line
以下代码展示: * 创建直线 * 设置图元的图层 * 设置图元的颜色 * 设置图元的线型 * 设置图元的线宽 using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServices;using Autodesk.AutoCAD.DatabaseServices;using Autodesk.AutoCAD.原创 2017-12-16 21:59:44 · 3114 阅读 · 0 评论 -
AutoCAD .Net EntityJig – Jig Line by Start and End Points
本实例展示使用 EntityJig 技术,动态交互模式创建直线。 翻译自: AutoCAD .NET: EntityJig – Jig Line by Start and End Pointsusing Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServices;using Autodesk.AutoCAD.Dat原创 2017-12-17 09:35:38 · 1554 阅读 · 0 评论 -
AutoCAD .Net EntityJig – Jig Circle by Center and Radius
本实例展示使用 EntityJig 技术,动态交互模式创建圆。 翻译自: AutoCAD .NET: EntityJig – Jig Circle by Center and Radiususing Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServices;using Autodesk.AutoCAD.Datab原创 2017-12-17 09:38:57 · 1071 阅读 · 0 评论 -
AutoCAD .Net 获取用户输入——GetAngle
GetAngle用于让用户指定角度值Document doc = Application.DocumentManager.MdiActiveDocument;double angle = 0.0;PromptAngleOptions options = new PromptAngleOptions("\n请指定角度: ");options.UseBasePoint = true;option原创 2017-12-30 16:20:30 · 1429 阅读 · 0 评论 -
AutoCAD .Net 获取用户输入——GetDistance
GetDistance用于让用户指定距离值Document doc = Application.DocumentManager.MdiActiveDocument;double value = 0.0;PromptDistanceOptions options = new PromptDistanceOptions("\n请指定距离: ");options.BasePoint = new Po原创 2017-12-29 22:52:04 · 983 阅读 · 0 评论 -
AutoCAD .Net 获取用户输入——整型数值
AutoCAD .Net中的Editor类提供了各种获取用户输入的方法,常用的有: * GetInteger 获取整型数值 * GetDouble 获取浮点型数值 * GetDistance 获取距离值 * GetAngle 获取角度值 * GetPoint 获取坐标点 * GetString 获取字符串 * GetKeywords 获取关键字原创 2017-12-24 22:12:39 · 2189 阅读 · 0 评论 -
AutoCAD .Net 获取用户输入——GetKeywords
GetKeywords用于让用户输入关键字,示例用法如下:Document doc = Application.DocumentManager.MdiActiveDocument;PromptKeywordOptions options = new PromptKeywordOptions("\n请输入关键字: ");options.Keywords.Add("Circle", "Circle"原创 2018-01-01 11:55:08 · 3160 阅读 · 0 评论 -
AutoCAD .Net 获取用户输入——GetString
GetString用于让用户输入字符串,示例用法如下:Document doc = Application.DocumentManager.MdiActiveDocument;PromptStringOptions options = new PromptStringOptions("\n请输入字符串: ");options.AllowSpaces = true;PromptResult re原创 2018-01-01 11:25:46 · 1776 阅读 · 0 评论 -
AutoCAD .Net 获取用户输入——GetPoint
GetPoint用于让用户指定点,示例用法如下:Document doc = Application.DocumentManager.MdiActiveDocument;PromptPointOptions options = new PromptPointOptions("\n请指定点: ");PromptPointResult result = doc.Editor.GetPoint(opt原创 2018-01-01 10:52:24 · 3130 阅读 · 0 评论 -
AutoCAD .Net 外部参照 XRef
在 AutoCAD 中,可以通过 xref 命令来创建外部参照。那外部参照在 AutoCAD 数据库中是如何存储的呢?我们如何通过程序来获取外部参照? 1、外部参照是以块表记录(BlockTableRecord)的形式存储在 AutoCAD 的模型空间块表中的。 2、BlockTableRecord 中的属性 IsFromExternalReference 为 true 时,表明该块表记录为外部原创 2017-12-17 10:15:18 · 2971 阅读 · 0 评论 -
AutoCAD .Net 使用 DrawJig 来动态地移动、旋转、缩放多个图元
本实例展示使用 DrawJig 技术,动态交互模式地移动、旋转、缩放多个图元。 如下图所示: 翻译自: AutoCAD .NET: Use DrawJig to Dynamically Move Rotate and Scale Multiple Entities of Any Kindsusing System;using System.Collections.Generic;using原创 2017-12-17 10:13:48 · 7758 阅读 · 1 评论 -
AutoCAD .Net EntityJig – Dynamic Dimension and Line Jig
本实例展示使用 EntityJig 技术,动态交互模式创建直线并同时显示动态尺寸。 如下图所示: 翻译自: AutoCAD .NET: EntityJig – Dynamic Dimension and Line Jigusing Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServices;using Autod原创 2017-12-17 10:11:25 · 1269 阅读 · 0 评论 -
AutoCAD .Net 设置UCS与直线对齐
以下代码展示: 将 用户坐标系(UCS)的X轴设置为与直线平齐,原点设置为直线的起点。[CommandMethod("SetUCS")]static public void SetUCS(){ Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database;原创 2017-12-16 21:57:51 · 1501 阅读 · 1 评论 -
AutoCAD .Net 在WCS和UCS下创建图元
AutoCAD存在常见的两个坐标系: * WCS 世界坐标系 * UCS 用户坐标系默认状态下,UCS 和 WCS是重合的。 当然用户可以在命令行使用命令ucs设置 UCS 与 WCS 不同。 我们在 AutoCAD 界面中,通过操作创建的图元都是基于 UCS 的。那通过代码,怎样分别在 UCS 和 WCS 下创建图元呢? 以下通过分别在 WCS 和 UCS 下创建圆来演示: 基于 WC原创 2017-12-16 21:55:04 · 1345 阅读 · 0 评论 -
AutoCAD .Net 程序的初始化和退出函数
我们常需要在 AutoCAD .Net 程序加载、卸载时做一些额外的事情。 比如: 在加载时,载入一些资源、读取配置文件、设置一些事件的处理函数等等。 在卸载时,需要清理一些资源等等。 AutoCAD .Net API 提供了这样的接口。 我们需要实现接口Autodesk.AutoCAD.Runtime.IExtensionApplication。Initialize为初始化函数,Term原创 2017-12-10 14:07:09 · 1723 阅读 · 0 评论 -
AutoCAD .Net 颜色系统
AutoCAD 中可以通过颜色索引(ACI)和真彩色两种方式来指定颜色。 * 颜色索引(ACI) * 真彩色ACI 提供了255种基本颜色和两种逻辑颜色 ByBlock(随块)和 ByLayer(随层)。 ACI 值的范围是 0-256 * 1-255 255中基本颜色 * 0 表示 ByBlock * 256 表示 ByLayer对应代码部分 我们可以通过Autodesk.AutoC原创 2017-12-10 14:05:49 · 4202 阅读 · 0 评论 -
AutoCAD .Net 不同文档间复制对象
使用Clone()函数可以在同一 AutoCAD 文档间复制对象。 在不同的 AutoCAD 文档间复制对象,则需要调用Database类的方法WblockCloneObjects。 以下代码演示,将一外部 AutoCAD 文档(D:\test.dwg)中的图元复制到当前文档。[CommandMethod("TestCopyBetweenDwgFiles")]public void TestC原创 2017-12-10 14:04:25 · 4531 阅读 · 1 评论 -
AutoCAD .Net 监测工作空间变化
当你需要监测 AutoCAD 工作空间变化事件。 比如:在 AutoCAD经典 工作空间时,加载一般菜单,在 草图与注释 工作空间时,加载Ribbon界面。 可以通过监测系统变量 WSCURRENT 的变化事件实现。 示例代码如下:using System;using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationSer原创 2017-12-10 14:03:13 · 887 阅读 · 0 评论 -
AutoCAD .Net 通过块参照获取块名
通过块参照获取块名,需要区分是不是动态块。 示例代码如下:[CommandMethod("GetBlockName")]public void GetBlockName(){ Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; PromptEnt原创 2017-12-10 14:01:51 · 6358 阅读 · 0 评论 -
AutoCAD .Net 程序自动加载 AutoLoader
AutoCAD .Net 程序如何实现在 AutoCAD 启动时自动加载呢? 我们通过一个实例来讲解。 现有程序 HelloAcad2014.dll。包含命令HelloAcad和HelloUI。一、组织如下形式的文件夹 HelloAcad.bundleHelloAcad.bundle ….Application ……..HelloAcad2014.dll ….PackageContents原创 2017-12-10 14:00:00 · 3407 阅读 · 2 评论 -
AutoCAD .Net 遍历符号表
AutoCAD 数据库包含以下9个符号表: * Block Table(块表) * Layer Table(层表) * TextStyle Table(文字样式表) * DimStyle Table(尺寸样式表) * Linetype Table(线型表) * UCS Table(用户坐标系表) * View Table(视图表) * Viewport Table(视口表) * R原创 2017-12-10 13:57:54 · 1605 阅读 · 0 评论 -
AutoCAD .Net 二次开发 VisualStudio 及 .Net Framework 选择
进行 AutoCAD.Net 二次开发,官方推荐的 VisualStudio 及 .Net Framework 的版本搭配如下:AutoCAD 2015、AutoCAD 2016Microsoft Visual Studio 2012Microsoft .NET Framework 4.5AutoCAD 2012、AutoCAD 2014Microsoft Visual Studio 201原创 2017-12-10 11:05:00 · 6047 阅读 · 0 评论 -
AutoCAD .Net 入门实例
以下以 VS2010 开发 AutoCAD2014 的实例来讲解。一、新建项目新建 C# 类库项目,.Net Framework选择4.0版本。 二、添加引用添加引用: * accoremgd * acdbmgd * acmgd这三个 dll 在 AutoCAD 的安装根目录下。(如:C:\Program Files\Autodesk\AutoCAD 2014) 并设置这三引用的复制本地属原创 2017-12-10 11:12:18 · 4340 阅读 · 0 评论 -
AutoCAD .Net 禁止图元被删除
禁止图元被用户删除可以通过 ObjectOverrule 实现。 以下代码: 1、命令 AddEraseOverrule 创建两个图元并禁止被删除。 2、命令 RemoveEraseOverrule 移除删除限制。原创 2017-12-13 21:20:23 · 1178 阅读 · 0 评论 -
AutoCAD .Net 遍历组
以下代码展示如何遍历 AutoCAD 文档中的组。Document doc = Application.DocumentManager.MdiActiveDocument;Database db = doc.Database;using (Transaction tr = db.TransactionManager.StartTransaction()){ DBDictionary gr原创 2017-12-13 21:22:20 · 2117 阅读 · 0 评论 -
AutoCAD .Net 将当前用户坐标系(UCS)设置为世界坐标系(WCS)
以下代码展示了如何设置当前用户坐标系为世界坐标系。public void SetUCS2WCS(){ Document doc = Application.DocumentManager.MdiActiveDocument; doc.Editor.CurrentUserCoordinateSystem = Matrix3d.Identity; doc.Editor.Rege原创 2017-12-16 21:53:22 · 8608 阅读 · 3 评论 -
AutoCAD .Net 将拾取点坐标由UCS转换到WCS
与 AutoCAD 进行交互操作时,输入与输出的点坐标都是基于UCS(用户坐标系)的。 那怎样将 UCS 坐标系下的点转换到 WCS 坐标系下呢? 请看如下代码:Document doc = Application.DocumentManager.MdiActiveDocument;Database db = doc.Database;// 拾取的点坐标为 UCS 下的坐标原创 2017-12-16 21:51:17 · 3729 阅读 · 1 评论 -
AutoCAD .Net 使用 Database.ReadDwgFile 读取dwg文件而不显示文档窗口
我们常常会碰到需要读取外部的 dwg 文件,而又不想在 AutoCAD 的文档窗口中显示。 AutoCAD .Net API 提供了 Database.ReadDwgFile 来实现。 我们首先需要构建一个 Database 对象。 public Database(bool buildDefaultDrawing, bool noDocument); 第一个参数必须传 false。原创 2017-12-16 21:49:14 · 12171 阅读 · 11 评论 -
AutoCAD .Net 禁止图元被选中时高亮显示
翻译自: Preventing AutoCAD objects from being highlighted using .NET 问题源自有人问:如何禁止 AutoCAD 中的文本对象在被选中时高亮? 我提供了一个更有弹性的解决方法,程序维护一个 AutoCAD 中的对象类型列表,该列表中的类型将在被选中时不被高亮显示。 通过类:HighlightOverrule 实现。 示例代码如下:原创 2017-12-13 21:41:04 · 3997 阅读 · 0 评论 -
AutoCAD .Net 使用扩展字典存储自定义数据
每个 AutoCAD 数据库元素对象(DBObject)都可以使用扩展字典来存储自定义数据。 通常这一机制用来为图元对象(比如:线、圆等)存储非图形数据。 以下示例代码实现: AddXRecordToEntity: 让用户选择一图元,然后在图元的扩展字典中存储自定义数据。 GetXRecordFromEntity: 让用户选择一图元,读取图元的扩展字典中存储的自定义数据。原创 2017-12-13 21:37:27 · 3470 阅读 · 0 评论 -
AutoCAD .Net 在dwg文件中存储自定义数据
问题我需要在 dwg 文件中存储一些信息,以额外描述图形文件并使它能够和其它软件程序集成。 请问怎样才能在 dwg 文件中写入自定义数据并读取?回答你可以使用 Named Object Dictionary (NOD, 中文名: 命名对象字典) 来存储自定义数据。 以下示例程序展示了如何在当前 dwg 文件中写入自定义数据并读取。[CommandMethod("CAXDEV_WNOD")]pu原创 2017-12-13 21:33:23 · 2833 阅读 · 1 评论