用C#编写AutoCAD中的直线

1)打开VS2005,选择Visual C#--》类库--》名称为:Line2,如下:

图(1) 新建C# 的类库

2)为项目Line2引用三个dll文件,分别为acdbmgd.dll、acmgd.dll、DotNetARX.dll。其中acdbmgd.dll、acdmgd.dll是AutoCCAD托管封装类,DotNetARX.dll是一个用于.net开发AutoCAD程序的类库。前两个dll在AutoCAD的安装文件里可以找到,DotNetARX.dll可以在网上下一个,我用的是DotNetARX6.0。acdbmgd.dll、acdmgd.dll的属性有一个“复制到本地“:False。

图(2)添加三个dll引用

图(3)将cdbmgd.dll、acdmgd.dll的”复制本地“选为False

3)禁用LoaderLock。点击”调试“--》异常--》 Managed Debugging Assistans-->去掉”LoaderLock“前面的对勾。

图(4)禁用LoaderLock

4)启用外部程序:C:\Program Files\AutoCAD 2006\acad.exe。

右击项目”Line2“--》属性--》调试--》勾选”启用外部程序“。如下:

图(5)启用外部的acad.exe

5) C#编写的代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;

namespace Line2
{
    public class Line2
    {
        [CommandMethod("FirstLine")]
        public static void FirstLine()
        {
            //获取当前活动图形数据库
            Database db = HostApplicationServices.WorkingDatabase;
            Point3d startPoint = new Point3d(500, 500, 0);  //直线起点
            Point3d endPoint = new Point3d(700, 500, 0); //直线终点
            Line line = new Line(startPoint, endPoint); //新建一直线对象
            //定义一个指向当前数据库的事务处理,以添加直线
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead); //以读方式打开块表.
                //以写方式打开模型空间块表记录.
                BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
                //将图形对象的信息添加到块表记录中,并返回ObjectId对象.
                btr.AppendEntity(line);
                trans.AddNewlyCreatedDBObject(line, true); //把对象添加到事务处理中.
                trans.Commit(); //提交事务处理
            }
        }
    }
}

6)按F5键启动调试,在AutoCAD的命令行窗口输入命令:

netload

找到Line2.dll(一般在工程的Debug目录里),打开Line2.dll,在AutoCAD的命令行窗口输入自定义的命令:

FirstLine

效果如下:

图(6)输入netload,加载Line2.dll

图(7)输入自定义的命令FirstLine,画一条直线

用C#编写AutoCAD中的直线

时间: 2024-08-29 22:24:42

用C#编写AutoCAD中的直线的相关文章

AutoCAD中的螺旋究竟是什么螺旋?

AutoCad从很早的时候就开始提供了螺旋线的功能,它的用法相对简单,非常适合用来对等距螺旋的理论进行演练. 选择螺旋线工具,首先画出一个基准圆,再向内(或向外)移动鼠标,拖出一个旋转3个周期的螺旋. Autocad中把螺旋的起点称作底面半径,结束点称为顶面半径(这里的螺旋功能是可以画三维螺旋的).拖动底面半径的起点时,螺旋整体会变化.拖动顶面半径时,底面半径是固定不变的.因此,在使用时,应尽量先指定好底面半径,之后调整顶面半径来控制螺旋的大小. 从螺旋的特征来看,在这三个旋转周期中,每一个周期

Java的List<Object>如何判断元素类别、输入流的回退,以及Autocad中参照块的坐标变换。

关于最近有关CAD数据的项目的一点总结 1.关于Java中的List<Object>用法. 它可以存多种不同的元素,但在取元素时怎么判断该元素是哪一类呢?在取元素时,可以通过调用getclass方法与类.class比较,来判断List中的元素是哪一类.然后再将该元素进行强制类型转换即可. 2.关于AutoCAD中数据的参照块坐标. dxf 文件中块参照会有一些坐标的定义,在实体段中可以通过INSERT来插入这些参照块.但INSERT中只有插入点的坐标,那么如何确定参照块各图元的坐标呢?以及插入

Android技术16:编写Android中直接可运行的二进制文件

我们都知道Android中所有应用程序都运行在Android的Dalvik虚拟机上,一般程序不直接与操作系统打交道,即便调用底层的方法也通过JNI技术.不过我们可以直接使用C语言编写二进制文件,直接在底层运行.下面演示其步骤. 1.安装下载编译器和链接器软件.Sourcery G++ Lite Edition for ARM. arm-none-linux-gnueabi-gcc.exe是编译命令 bin/arm-none-linux-gnueabi-ld.exe是链接命令 2.编写C代码 为了

AutoCAD 中的系统变量与环境变量

AutoCAD 中的系统变量与环境变量 (来自官方帮助文件) About System and Environment Variables (AutoLISP) (1)系统变量 AutoLISP applications can inspect andchange the value of AutoCAD system variables with the getvarandsetvar functions. ;;系统变量主要是涉及 AutoCAD 的. These functions use

Matlab实现Hough变换检测图像中的直线

Hough变换的原理: 将图像从图像空间变换至参数空间,变换公式如下: 变换以后,图像空间与参数空间存在以下关系: 图像空间中的一点在参数空间是一条曲线,而图像空间共线的各点对应于参数空间交于一点的各条曲线. 下面使用Matlab实现Hough变换对图像中的直线划痕进行检测. close all; clear all; I = imread('scratch.tif'); figure; subplot(1,3,1); imshow(I); BW = edge(I,'canny');%Canny

AutoCAD中Form的引导程序

using System;using System.Collections.Generic;using System.Linq;using System.Text;using Autodesk.AutoCAD.DatabaseServices;using Autodesk.AutoCAD.EditorInput;using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.Geometry;using Autodesk.AutoCAD.Applica

Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题

日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚本识别的难度也越来越高.这对我们自动化脚本编写带了非常的不便,那么如何解决登录时的验证码问题呢?经常有初学自动化脚本编写的小主们问及此问题. 此文主要针对如何解决自动化测试脚本中含登录态的操作问题,即如何降低验证码对自动化脚本编写过程中的解决方法进行分析和解决,并以实例演示(基于易迅网易迅账号登录)

ObjectARX2010 学习笔记001:在新数据库中创建直线并将此数据库保存成DWG文件

static void swtArxProject5createLine(void) { // Add your code for command swtArxProject5.createLine here //创建新的CAD数据库 AcDbDatabase *pDb=new AcDbDatabase(); //定义块表指针 AcDbBlockTable *pBlkTbl; //获取块表 pDb->getSymbolTable(pBlkTbl,AcDb::kForRead); //定义块表记录

AUTOCAD中图库管理演示,迅捷CAD工具箱

AUTOCAD中图库管理演示,迅捷CAD工具箱.在AUTOCAD制图软件里,加载迅捷CAD工具箱来辅助使用,下面小编简单演示图库管理.这使我们的制图工作变得更加的简单方便.具体演示步骤如下:调用迅捷CAD工具箱首先,我们运行AUTOCAD制图软件,进行如下操作:1.在命令行里输入"ap"命令字符,加载迅捷CAD工具箱插件到AUTOCAD软件中进行使用:2.然后在命令框中,我们输入"xj"命令字符,调用迅捷CAD工具箱. "图块功能"-"