AutoCAD .NET二次开发(四)】的更多相关文章

众所周知,对AutoCAD进行二次开发用到的主要工具有:ObjectArx,VBA,VLisp.但它们的优缺点是显而易见的:ObjectArx功能强大,编程效率高,但它的缺点是编程者必须掌握VC++,而这门语言非常的难学;VBA和VLisp虽然简单易上手,但它们对于开发大型的程序好象无能为力.那究竟有没有一种语言能结合它们的优点而尽量避免它们的缺点呢? 回答是肯定的,那就是微软新推出的21世纪编程语言C#.关于C#的详细介绍,大家可以参考有关的文章. C#是通过AutoCAD ActiveX 这…
其他话不多说,直接进入主题,既然是二次开发,当然是用CAD平台已经封装好了很多类,我们需要熟悉和使用它们.常用的AutoCAD .NET API的四个主要DLL文件是: 名称 作用 备注 AcDbMgd.dll 处理图形文件中存储的对象   AcMgd.dll 处理AutoCAD应用程序和用户接口   AcCui.dll 处理自定义文件   AcCoreMgd.dll 处理编辑器.发布与打印.定义AutoLISP命令和函数 AutoCAD 2014版 我们现在不必去深究这些类库的构造,这四个引用…
在CAD中,属性信息一般是以注记的形式存在,但当属性数据内容较多时,显示就成了问题.扩展属性(Xdata)可以解决这一问题,比如南方Cass中就利用了这一点.我们经常用Lisp来读取操作扩展属性. 查看实体属性信息: (entget(car(entsel))'("*")) 但我们为了方便与GIS交互,我们得在.NET中来读取.修改CAD文件中实体的扩展属性.本文先只讲解怎么读取扩展属性. 第一步,不管怎么样,都要先打开文件,获取文档,选择对象,获取实体.下面这段代码在测试中肯定会经常用…
在ArcGIS中,锁是一个经常遇到的东西,在打开一个该当时要锁定,编辑一个文档是再次锁定.要深入理解这个,要学习一下进程与线程.在CAD.NET中,也有Lock与Unlock. 获取一个文档,在进行处理前应当LockDocument,像官网帮助所说,因为修改或访问CAD的请求随时随地都在发生,为避免与其他请求冲突,我们有责任在修改前锁定文档.但是,某些情形下的锁定文档会导致在更新数据库过程中锁定犯规. 下列四种情况我们需要锁定: (1)从无模式对话框与CAD交互时: (2)访问已调入的文档不是当…
当我们要在CAD中创建自定菜单时,可以引用COM组件来实现. 下面是实现方式: 1.新建类库项目,并引用CAD目录(我这里用的是CAD2008)下的acdbmgd.dll.acmgd.dll,并将引用属性中的“复制本地”设为False. 2.添加Com引用:AutoCAD 2008 Type Library. 3.创建类“Main.cs”,并在类头部命名空间上加上修饰: [assembly: CommandClass(typeof(AutoCAD_PopMenuTestCom.Main))] 这…
从CAD2007之后,Autodesk提供了一个新的程序集AcCui.dll,使用这个程序集,我们可以方便地做一些界面方面的操作,比如创建自定义菜单. 下面介绍一下菜单的创建过程: 1.在项目中添加引用:AcCui.dll,这个DLL存放在CAD的安装目录中.但是,好像CAD2007之前的版本里没有这个DLL),我电脑上安装了CAD2004.CAD2005.CAD2008.CAD2010,其中,只有CAD2008和CAD2010中有这个DLL. 2.在代码中添加using: using Auto…
https://www.cnblogs.com/gisoracle/archive/2012/02/19/2357925.html using System; using System.Collections.Generic; using System.Linq; using System.Text; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD…
结果缓存——ResultBuffer 结果缓存即 Autodesk.AutoCAD.DatabaseServices.ResultBuffer 类型,使用 ResultBuffer 对象时需要提供一个数据对,每个数据对包含一个数据类型描述和一个值,这些数据对是 Autodesk.AutoCAD.DatabaseServices.TypedValue 类的实例. TypedValue.TypeCode 属性是一个16位整型数据,它指明 TypedValue.Value 属性的数据类型,可接受的 T…
目前我已经掌握的创建CAD菜单方法有两种: COM方式: http://www.cnblogs.com/bomb12138/p/3607929.html CUI方式: http://www.cnblogs.com/bomb12138/p/3600842.html 从程序复杂度来看,COM方式更简单一些,CUI方式较复杂. 从版本特性来看,COM方式更通用一些,CUI方式仅支持CAD2007+的版本. 从兼容性来看,基本一样:在测试程序中,对于CUI方式,我引用的是CAD2008的类库,而最后生成…
Webcast Language Date AutoCAD .Net - Session 2 English 13-Sep-12 AutoCAD .Net - Session 1 English 6-Sep-12 AutoCAD API Chinese 25-Apr-12 DevTV: AutoCAD .Net API - Chinese - Part 1 Chinese 6-Apr-12 DevTV: AutoCAD .Net API - Chinese - Part 2 Chinese 6-…
今天专门讲一个--CommandMethod.我们都在知道CAD操作要快,必须要熟悉掌握各种命令.在Lisp开发中,在函数后C:即可添加一个命令,非常方法,在.NET API也可以非常方便的设置命令,它需要CommandMethod属性. 先来看CommandMethod的定义,它的构造函数很多,其中参数最全的一个如下图所示: groupName组名,string,命令编组名称,一般在小项目开发中用得比较少. globalName,全局名称, string,即命令,它应该是唯一的,不然在调用时会…
测试结果: 主要思路:假设有两条曲线分别是c1和c2,把c1按照1的距离划分我这里用变量jd表示,得到一个曲线集合coll,然后遍历coll,得到coll中每一个曲线的两个端点,再用这两个端点分别求离曲线c2的最短距离,直接使用开发库的GetClosestPointTo方法就可以了,直到遍历完整个coll集合就能得到最短距离和其对应的点. 主要代码得到曲线集合coll: public List<Curve> GetCurves(Curve curve ,double jd) { List<…
1.CAD崩溃,错误“unhandled access violation reading”=“未将对象引用设置到对象的实例”. 2. 建模操作错误:指向给定边的指针为空. 建模操作错误:访问冲突. acdbmgdeGeneralModelingFailure 这类错误是CAD直接在其命令行中输出提示的,有时候会引发CAD崩溃,但有时候又不会引发崩溃. 我碰到的这种类错误的情况是:频繁对一些Region进行重复炸碎,出现了这类错误.重复时间间隔越短越容易出问题,有时候中间间隔十几秒半分钟,但还会…
上一节中我们在initApp()函数中,将helloWorld()函数注册给了CAD主程序,注册指令的字符串为“Hello”. void initApp() { acedRegCmds->addCommand(_T("HELLOWORLD_COMMANDS"), _T("Hello"),_T("Bonjour"), ACRX_CMD_TRANSPARENT,helloWorld); } 如果你用过CAD的话会知道在CAD中经常用类似命令行的…
原帖地址 http://379910987.blog.163.com/blog/static/33523797201011184552167/ 今天在改代码的时候,遇到了AddVertexAt方法的用法,不甚了解,遂转载 AddVertexAt方法的说明 2010-12-01 20:52:21|  分类: AutoCAD.NET二次 |  标签:bulge  addvertexat  |字号 订阅     用.NET对AutoCAD进行二次开发的时,会发现一个很奇观的现象,那就是居然没有矩形类,…
AutoCAD二次开发工具:1986年AutoLisp,1989年ADS,1990年DCL,1993年ADS-RX,1995年ObjectARX,1996年Active X Automation(COM),1997年VBA,1998年Visual Lisp,2006年.net API(DLL). 趋势和方向:AutoCAD.net API(AutoCAD2006出现,形式是用netload调用DLL插件) ACAD.ARX.VS..NetFramework版本对应关系. AutoCAD     …
1.添加删除实体 C# ObjectARX二次开发添加删除实体是非常容易主要代码如下: 添加实体: objId = btr.AppendEntity(entity); trans.AddNewlyCreatedDBObject(entity, true); 删除实体: entity.Erase(true); 2.基本过程 在代码YunyouXueYuan命名空间,新增Tools类.这个例子非常简单,想学习AutoCAD二次开发(c#.C++等语言).BIM软件二次开发.Java.python等在…
不积跬步无以至千里,不积小流无以成江海.虽然创建一条直线.添加一个图层这样的小程序没有什么实际意义(内部命令很简单就可以完成),但对于初学二次开发的您来说,这可是一大步,这一步跨出去,您就跨进了二次开发的大门. 闲话少说,言归正传.这一节我们通过两个简单和一个相对复杂的例子来了解创建AutoCAD对象的基本过程.为了增加面向对象程序设计的印象,本节实例的代码比AutoCAD managed .NET developer’s guide 中的例子稍微复杂一些,希望我能为您讲解明白. 首相利用向导创…
C#/AutoCAD 2018/ObjectArx/二次开发添加圆对象的的例子(五) 1.创建一个图形对象的步骤如下见上一篇博客(三)2.添加删除实体的工具函数见上一篇博客(四) 3.添加圆的例子(完整源代码请加云幽学院免费课yunyun.ke.qq.com)   [CommandMethod("MKCircle")]        public void MKCircle()        {            //(1)获取当前活动图形数据库            Databa…
AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层 AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层我理解的图层的作用大概是把相同作用的功能聚集在一起,以便好选择.比如,把一副图块中的所有标注定义为一个图层,把编号定义为一个图层,把相同的块参照定义为一个图层.图层表的操作和块表的操作类似. 在这里我就分享一下自己从书<AUTOCAD VBA&VB.NET开发基础与实例教程(C#版) 第2版>学习到的关于图层的一些…
AutoCad 二次开发 文字镜像 参考:https://adndevblog.typepad.com/autocad/2013/10/mirroring-a-dbtext-entity.html 在autocad中如果使用Mirror命令把块参照给镜像了(最终得到一个对称的块),块里面的文字包括DBText和MText以及标注上面的文字都会被对称,变得不易阅读.而在单个字体实体和标注实体镜像的时候只要设置系统变量mirrtext为0镜像后的文字就不会与原文字对称变成我们未学习过的文字了.  …
1.创建一个图形对象的步骤如下(1)得到创建对象的图形数据库:(2)在内存中创建实体类的一个对象:(3)定义一个指向当前数据库的事务处理:(4)打开图形数据库的块表:(5)打开一个存储实体的块表记录(通常绘图都在模型空间中进行),所有模型空间的实体都存储在块表"模型空间"记录中:(6)将该对象添加到块表记录中:(7)把对象添加到事务处理中:(8)提交事务处理. 2.添加直线的例子 using System; using System.Collections; using System.…
环境需求为: AutoCAD 2020版 ObjectARX SDK 下载地址:https://www.autodesk.com/developer-network/platform-technologies/autocad/objectarx-license-download 进入页面后需要填写资料再下载 此开发库有C++和.net两种框架,本教程为C++开发. ObjectARX向导        此程序由官方提供,可以在VS中添加AUTOCAD二次开发的编程模板,不是必备. 下载地址:ht…
AutoCad 二次开发 jig操作之标注跟随线移动 在autocad当中,我认为的jig操作的意思就是即时绘图的意思,它能够实时的显示出当前的操作,以便我们直观的感受到当前的绘图操作是什么样子会有什么样的结果.比如我们自己写命令话一条直线,不用jig操作,只提示输入两个端点,我们在绘制过程中无法预先的感受到这条直线是在哪个位置,有多长,与x轴成什么角度,而是直接输入两点后就得到一条直线的结果了.还有当有了jig操作后,我们确定了一个端点后,在未输入第二个端点的时候,可以拖动鼠标拉长或缩短这条直…
AutoCAD2007+vs2005 首先自己去网上搜索下载AutoCAD2007的ARX开发包. 解压后如下 打开后如下 classmap文件夹为C++类和.net类的框架图,是一个DWG文件. docs帮助文件 inc引用的头文件 lib引用的库文件 redistrib其他引用的库文件 samples例子 utils其他东西 打开utils 上面几个是头文件和库文件 ObjARXWiz这个文件夹是向导(2012以后的版本就没有了,要去官网单独下载,不和开发包在一起) 打开后如下 直接双击安装…
在Autocad中直接调用Python二次开发程序是有必要的,下面介绍一种方法来实现这个功能: 其基本思路是:先将二次开发的程序打包为可执行程序exe,然后编写lsp文件,该文件写入调用exe程序的语句,然后就可以直接在Autocad命令行用命令直接调用python二次开发的程序了. 例子: (1)打包为exe (2)编写lsp文件: johnyang.Lsp (defun c:johnyang() (startapp "F:\\PycharmProject\\DesignWorkTask\\s…
本人有多年的CAD开发经验,独立完成多个CAD二次开发项目.熟悉.net及Asp.net开发技术,和Lisp开发技术. 现在成立了工作室,独立承接CAD二次开发项目.结项后提供源码及开发文档,有需要的话可以提供发票. 有需求的可以 qilongliao@qq.com 联系开发事宜.…
WorkItemStore:表示跟踪与运行 Team Foundation Server的服务器的工作项客户端连接. A.添加工作项 1.首先获得某服务器的WorkItemStore. WorkItemStore workstore = server.GetService<WorkItemStore>(); 2.然后通过对上面WorkItemStore获得Project项目. Project project = workstore.Projects["Calueng"];…
nagios监控原理 下面根据上面摘自网络的原理图对nagios的监控原理进行一下简单的说明: 1.nagios通过nsca进行被动监控.那么什么是被动监控呢?被动监测:就是指由被监测的服务器主动上传数据到nagios监控系统中.这种监测方式提高了实时性(出现问题的时候,被监测的服务器可以及时上传数据通知nagios,从而使管理员可以尽快作出处理,而不用像主动监测中一样,非要等到下一个监测周期才能获知被监测服务器的状态).NSCA就是可以实现Nagios被动监测的一个程序.目前所知道的,只能通过…
Spss的授权方式有两种,单机版和网络版. Spss的激活,在联网的情况下,通过20位的激活码激活,在未联网的情况下,Spss根据机器获取一个类似4-XXXX的锁定码,然后由激活码和锁定码算出一个授权码,来激活程序. 整个激活过程,可以在IBM网站上处理,申请一个单号,然后注册,然后逐步操作,也可以直接打服务电话,由IBM相关人员帮助处理. 网络版的授权模式为,在证书服务器上安装证书授权管理程序,然后客户机通过证书服务器进行授权,允许在任意客户机上安装Spss并授权,但并发数目收到购买的数量的限…