关于VB对AutoCAD二次开发学习笔记

合集下载

VB与AutoCAD二次开发入门技巧资料_13066-ARX

VB与AutoCAD二次开发入门技巧资料_13066-ARX

编写第一个ARX程序以一个实际的程序为例子,讲述如何在AutoCAD14 上开发ARX 程序。

这里采用的是MSVC++5.0 编译器,如果读者使用的是MSVC++4.2b ,其开发步骤几乎是完全一样的。

在传统的C语言程序设计教材中经常可以看到下面的一个程序:#include<stdio.h>main(){printf(“Hello,world!\n”);}在本章中,我们将给出用ARX开发的类似的程序helloarx,它只是简单的在AutoCAD的“Command:”提示符下打印“Hello,ARX!”。

建立一个ARX程序的第一步是创建一个CPP和DEF文件。

下面是文件hello.cpp的清单。

/*********helloarx.cpp*********/#include<stdlib.h>#include<aced.h>#include<adslib.h>void hello();void initApp();void unloadApp();extern "C"AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode, void*);// 往命令堆栈中增加命令void initApp(){acedRegCmds->addCommand("TSIN_HELLO", "hello", "hello", ACRX_CMD_MODAL, hello);"}//从命令堆栈中删除该应用程序的命令组void unloadApp(){acedRegCmds->removeGroup("TSIN_HELLO");}//程序入口AcRx::AppRetCodeacrxEntryPoint(AcRx::AppMsgCode msg, void* pkt) {switch (msg) {case AcRx::kInitAppMsg:acrxDynamicLinker->unlockApplication(pkt); initApp();break;case AcRx::kUnloadAppMsg:unloadApp();}return AcRx::kRetOK;}//命令函数void hello(void){ads_printf("Hello, ARX!");}DEF文件必须包括一个描述行,并对变量arxEntryPoint,SetacrxPtp和acrxGetApiVersion进行定义。

基于VBA的AUTOCAD二次开发及应用实例

基于VBA的AUTOCAD二次开发及应用实例

基于VBA的AutoCAD二次开发及应用实例时间:2011-10-0318:25:09来源:作者:1引言AutOCAD2005是AutOdesk公司的系列产品,该软件从其使用和设计思路上都秉承了工程制图人员的绘图习惯,能够非常轻松地绘制出带有平面视图和三维渲染效果的工程图纸,是绘图人员的一个理想工具。

随着CAD基础理论和应用技术的不断发展,对CAD系统的功能要求也越来越高。

因而AutoCAD 不可能完全满足每个用户的具体而特定的要求。

设计人员希望它能从本质上减轻大量简单烦琐的工作量,使他们能集中精力于那些富有创造性的高层次思维活动中。

AutoCAD提供的开放式体系结构允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求,更方便、更规范、更专业的实现设计和绘图中的应用。

VBA最早是建立在0ffice97中的标准宏语言,由于它在开发方面的易用性及具有的强大功能,许多软件开发商都将其嵌入自己的应用程序中,作为一种开发工具提供给用户使用。

AutOdeSk公司自从Aut0CADRl4.0l版开始,内置了VBA开发工具。

新一代程序开发工具ViSual BaSic,不仅继承了面向对象方法的特性,同时具备可视化程序语言及程序产生器的概念。

VBA(visual Basic For Apphcation)是AutoCAD R12以后推出的一种新的编程环境,提供了以Visual Basic为基础的面向对象的开发特征及程序接口,能真正快速地访问AutOCAD图形数据库,能明显提高软件开发和维护的效率。

2VBA的技术特性2.1VBA开发AUTOCAD的技术特点VBA是微软开发出来的应用程序共享一种通用的自动化语言,它可以使常用的程序自动化,并可以创建自定义的解决方案。

VBA被集成到AutoCAD中,VBA和AutoCAD中强大的Activex自动化对象模型的结合,代表了一种新型的定制AutoCAD的模式构架。

关于VB的AutoCAD二次开发及其在测绘中应用研究

关于VB的AutoCAD二次开发及其在测绘中应用研究

High & New Technology︱16︱2017年8期关于VB 的AutoCAD 二次开发及其在测绘中应用研究林 武四川省第三测绘工程院,四川 成都 610000摘要:本文主要对VB(Visual Basic)和AutoCAD 作了简要介绍。

在此基础上,重点阐述了基于VB(Visual Basic)的AutoCAD 二次开发步骤,然后详细对基于VB(Visual Basic)的AutoCAD 二次开发技术在具体工程测绘中的程序设计、数据预处理、图形绘制等主要应用内容进行分析,以实现快速对工程纵断面进行科学绘制。

关键词:Visual Basic;AutoCAD;二次开发;测绘中图分类号:P237 文献标识码:B 文章编号:1006-8465(2017)08-0016-01AutoCAD 是Autodesk 公司的系列产品,该产品的设计思路和使用理念都与工程测绘技术人员的绘图习惯相符,其能够绘制出具有三维渲染效果和带有平面视图的工程测绘图纸[1]。

应用表明,AutoCAD 绘图软件是当前交互式、通用式的计算机辅助绘图与设计软件包,其已广泛运用于汽车、机械、飞机、服装和电子、集成电路、航空、建筑及轮船等多个技术领域。

本文主要对Visual Basic 编程语言下,AutoCAD 二次开发的具体原理和步骤进行阐述。

在此基础上,详细对基于VB(Visual Basic)的AutoCAD 技术在工程测绘中的具体应用展开论述。

1 VB 及AutoCAD 简介VB 又称“Visual Basic”,它是美国微软公司推出的一款应用程序开发工具。

目前,这款程序开发工具已在Windows 平台中被广泛应用,其不仅简单、便捷,而且使用性较强,其为广大工程测绘工作者快速测绘成图奠定了重要技术基础[2]。

AutoCAD 则称之为绘图程序软件包,该技术工具于上世纪80年代由国外的 Autodesk 科技公司开发。

关于VB对AutoCAD二次开发学习笔记

关于VB对AutoCAD二次开发学习笔记

关于VB对AutoCAD二次开发学习笔记□By OYLS基于VB对AutoCAD的二次开发,主要是通过运用VB编程对AutoCAD软件中的基本绘图操作进行控制,了解AutoCAD软件中的常用命令。

在编程过程中我们要借助AutoCAD软件中的“帮助文件”,即“AutoCAD开发人员帮助”文档。

一、获取VB对AutoCAD的控制权:先定义变量acadApp,acadDoc:Public acadApp As AcadApplicationPublic acadDoc As AcadDocumentFunction boot_CAD() As BooleanOn Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application")If Err ThenErr.ClearSet acadApp = CreateObject("AutoCAD.Application")If Err ThenMsgBox "您没有安装AutoCAD ,或安装版本错误!", vbOKOnly + vbInformation, "CAD简易绘图系统"boot_CAD = FalseBtOK = FalseExit FunctionEnd IfEnd IfSet acadDoc = acadApp.ActiveDocumentacadApp.Visible = Trueboot_CAD = TrueEnd Function需要说明的是,我们只有先对CAD获取了控制权以后才能有效地运用VB编程方式进行CAD的基本绘图操作。

不然,以后的各种对CAD的操作将无法得以实现。

二、基本绘图思路:先了解所绘对象的基本属性,可以说,也正是由于对象的各种属性才构成了一个特性为一而标准的实体。

对象的属性特点我们可以事先通过CAD帮助文件查找得出。

VB与AutoCAD二次开发入门技巧资料_13062-ARX

VB与AutoCAD二次开发入门技巧资料_13062-ARX

ARX 程序的装载和卸载---- 1. ARX 程序的装载---- ARX 应用程序的装载有以下几种方法:---- (1)在AutoCAD 启动文件acad.rx 中指定待装入的ARX 应用程序名。

acad.rx 是ASCII 文本文件,每个ARX 应用程序必须单独占一行,AutoCAD 启动时会自动装载该文件中的ARX 应用程序。

另外,应确保$ACAD 路径定义中包括文件acad.rx 的存放目录。

---- (2)用acrxLoadModule() 或AcRxDynamicLinker::loadModule() 函数,在一个ARX 应用程序里装载另一个ARX 应用程序。

这两个函数的原型是:---- int acrxLoadModule(char *moduleName, int printit);---- virtual Adesk::Boolean AcRxDynamicLinker::loadModule (char *fileName, int printIt) = 0;---- 其中各参数含义如下:---- moduleName:待装载的ARX 应用程序名;ARX 应用程序扩展名默认为.ARX,如果不是.ARX,则此处char *moduleName 参数必须包括应用程序扩展名。

---- fileName:含义与上述moduleName 相同。

但是fileName 必须包括待装载的ARX 应用程序的路径和扩展名。

---- printit:取0 则不显示装载结果,取非0 值则显示。

当printit 取非0 值时,如装载成功,则在AutoCAD 命令窗口显示“Runtime Extension is already loaded.",否则,显示“AcRxDynamicLinker failed to load "。

"---- acrxLoadModule() 与AcRxDynamicLinker::loadModule 不同的是:acrxLoadModule() 从$ACAD 定义的AutoCAD 搜索路径自动搜索待装载的ARX 应用程序,并默认ARX 应用程序扩展名为.ARX。

用VB对AutoCAD进行二次开发

用VB对AutoCAD进行二次开发

用VB对AutoCAD进行二次开发|用VB对AutoCAD进行二次开发AutoCAD一直是CAD市场中的主流产品。

随着AutoCAD的日益普及,在其上进行二次开发的工具也不断更新。

从早期的AutoLisp、ADS、DCL到现在流行的ObjectARX、ActiveXAutomation、VisualLisp,均可十分方便地对AutoCAD进行二次开发。

本文主要讨论关于运用VisualBasic对AutoCAD基于ActiveXAutomation的二次开发技术。

选用ActiveX有两个原因,一是因为VisualBasic的普及性与易用性,二是采用这种方法进行二次开发可方便地实现与其它图形软件的接口,如与SolidWorks实现实体造型与二维绘图的结合,以及根据用户的特殊需要开发出一定功能的软件。

的自动(如VB的图在启动对象。

EndIf2.Preferences与Document对象与AutoCAD中的Preferences对话框的作用相同,通过Preferences对象可以读取或设置AutoCAD的一些基本设置。

Preferences对象通过Application的Preferences属性返回。

DimAcadPrefasObjectSetAcadPref=AcadApp.Preferences比如,用户可通过Preferences对象进行如下的设置AcadPref.Cursorsize=100AcadPref.DisplayScreenMenu=acTrueAcadPref.DisplayScrollBars=Check1.valueDocument对象表示AutoCAD中中当前打开的文档,对AutoCAD中的任何其它操作都需用到Document对象,该对象可以通过ActiveDocument属性返回。

DimAcadDocasObjectSetAcadDoc=AcadApp.ActiveDocumentAutoDesk公司使用了集合的概念。

基于VB的AutoCAD二次开发

基于VB的AutoCAD二次开发

基于VB的AutoCAD二次开发摘要:Visual Basic是当今世界上最流行的编程语言之一,CAD是目前使用最广泛的绘图软件,本文将在测绘领域,探讨基于Visual Basic对AutoCAD进行二次开发,对外业获取的数据内业进行自动绘图,提高工作效率。

关键词:Visual basic;AutoCAD;ActiveX;CAD二次开发1.引言在使用全站仪的外业测图,如果我们对采集的数据赋予遵循特定规则的简码,用成图软件导入外业数据,然后利用二次开发的软件完成自动绘图,更能提高作业效率。

本文将基于Visual Basic对AutoCAD二次开发一个自动绘图的程序。

2.需求分析需求分析:该程序可以实现“外业测图,内业自动绘图”的功能。

具体是通过导出外业数据,对数据进行读取、分析识别,然后实现在AutoCAD画布上展点,自动绘图。

3.程序的设计程序的设计包括界面和功能设计和数据格式的设计。

3.1界面和功能设计程序Frmbase窗体由一个菜单栏、一个状态栏、一个公共对话框组成。

该程序主窗体frmbase设计如图3.1所示。

图3.1 frmbase窗体设计效果图菜单栏“文件”菜单下有创建新图形文件、打开、保存图形文件、导入DXF文件、导出DXF和BMP文件、关闭图形文件和退出程序这些子菜单。

如图3.2所示。

图3.2 “文件”菜单及其子菜单菜单栏“绘图”菜单下有展点和自动绘图子菜单,而展点可以通过两种数据文件来读取数据,所以展点子菜单下还有两个子菜单。

如图3.3所示。

图3.3 “绘图”菜单及其子菜单3.2数据格式的设计数据格式的设计:文件后缀为*.dat或者*.xls。

第一列是点名,第二列是简码,第三列是AutoCAD中的Y坐标,也是测量坐标系中的X坐标,第四列是测量坐标系中的Y坐标,第五列是高程。

编码规则:以地物名字的中文拼音首字母进行命名,例如井盖的简码为“JG”,平房的简码为“pf”。

图上的地物都是由点状地物、线状地物和面状地物这三种的抽象。

第三章 AutoCAD二次开发

第三章 AutoCAD二次开发

第三章 创建和编辑二维图形对象 一、VBA
Hale Waihona Puke 3.1 直线 Public Sub MacroDemo() Dim doc As AcadDocument Set doc = ThisDrawing.Application.Documents.Add() MsgBox "Hello,Welcome to Autocad VBA" Set doc = ThisDrawing.Application.Documents.Add() Dim ptstart(0 To 2) As Double Dim ptend(0 To 2) As Double ptstart(0) = 1: ptstart(1) = 1: ptstart(2) = 0 ptend(0) = 100: ptend(1) = 100: ptend(2) = 0 ThisDrawing.ModelSpace.AddLine ptstart, ptend End Sub
数据库程序
• Private Sub CommandButton1_Click() • Dim cn As ADODB.Connection • Dim Constr As String • Set cn = New ADODB.Connection • • cn.CursorLocation = adUseClient • cn.Provider = "Microdoft.Jet.OLEDB.4.0;" • Constr = "Data source=c:\db1.mdb" • • cn.Open • End Sub
3.2 圆 Dim ptCen(0 To 2) As Double ptCen(0) = 50: ptCen(1) = 50: ptCen(2) = 0 Set acaddoc = acadapp.ActiveDocument.ModelSpace.Ad dCircle(ptCen, 32)

VB与AutoCAD二次开发入门技巧资料_13065-AutoCAD

VB与AutoCAD二次开发入门技巧资料_13065-AutoCAD

AutoCAD中表格自动化彭德华 工程图纸中经常遇到大量表格填写,例如工程勘察中的成果表、设计的材料表,在AutoCAD中文字处理比较差,用TEXT、DTEXT命令在表格中定位也不方便,填写的表格既不美观,还容易出错。

在一些杂志中有关表格填写程序介绍,但是使用不方便,也不能连续填写多个表格,长距离线路勘察中线转点少则几十个,多则上千,中线数据可由计算直接生成,能否利用中线数据直接填表出图。

利用AutoCAD二次开发,编写中线成果填写程序(zxcg.lsp),改变以往出图工序(填写、校对),大大提高工作效率。

一、程序功能与编写说明 1、本程序具有下列功能: (1)直接在文本编辑器(EDIT、QE、WPS等等)编辑、修改数据,免去AutoCAD文字编辑、修改之不便; (2)可以自动分页,自动填写工程名称、档案号、日期等等; (3)可以自动处理中线成果数据前后的空格,例如: “123123.123”将自动转化为“123123.123”; (4)可以自动识别两种工程名称数据文件; (5)文本状态下数据正确无误,出图前无需在AutoCAD中修改,调图速度和重新成图速度相差无几,可直接保存数据文件,节省磁盘空间。

2、程序说明: 程序利用AutoLISP的计算、判断、字符处理、循环结构以及调用Text命令等功能对读入的数据进行处理后填写,与本程序对应的Zxcg.dwg图形文件含四个表格图块,程序中的有关参数均取决于四个图块。

二、使用说明 1、关于中线成果数据格式: (1)无曲线 第一行,总点数(N) 第二至七行,点名(NAME)、里程(K)、高程(H)、坐标X、Y、转角(B)……重复二至七行(没有数据项用空行代替) (2)有曲线 第一行,总点数(N) 第二至十一行,点名(NAME)、里程(K)、高程(H)、坐标X、Y、转角B,半径R,切线长T、曲线长L、外矢矩E……重复二至十一行(没有数据项用空行代替) 2、关于工程名称数据格式: (1)单标题 第一行,工程名称 第二行,档案号(如测-3777/表,只需输入3777) 第三行,日期(可省略,取当前日期) (2)双标题 第一行,工程名称大标题 第二行,工程名称小标题 第三行,档案号(如测-3777/表,只需输入3777) 第四行,日期(可省略,取当前日期)三、加载及运行{{婓AutoCADR12ㄗ么AutoCADforWindowsㄘ笢ㄛ参Zxcgㄝlsp睿Zxcg ㄝdwg萧探善SUPPORT赽醴翘狟ㄛ蚚扷梓萸恅璃ㄗFileㄘ狟茼蚚最唗ㄗApplicationsㄘㄛ么婓Com珏mandㄩ狟??Appload楼婥Zxcgㄝlspㄛ么婓Commandㄩ狟??ㄗLoad※Zxcg§ㄘ捞褫〔?缀婓Commandㄩ狟??ZX堍俴最唗ㄛ挂最唗蔚笢恅枑尨〔四、结束语 该应用程序提供了两种形式的表格,有兴趣的AutoCAD用户不妨增加几种表格,修改程序中对应的参数即可。

Autocad二次开发vba教程第三课

Autocad二次开发vba教程第三课

Autocad二次开发vba教程第三课第三课编程基础二有一位叫自然9172的网友提出了下面的问题:绘制三维多段线时X、Y值在屏幕上用鼠标选取,Z值用键盘输入本课将讲解这个问题。

为了简化程序,这里用多条直线来代替多段线。

以下是源码:Sub myl()Dim p1 As Variant '申明端点坐标Dim p2 As Variantp1 = ThisDrawing.Utility.GetPoint(, "输入点:") '获取点坐标z = ThisDrawing.Utility.GetReal("Z坐标:") '用户输入Z坐标值p1(2) = z '将Z坐标值赋予点坐标中On Error GoTo Err_Control '出错陷井Do '开始循环p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & "输入下一点:") '获取下一个点的坐标z = ThisDrawing.Utility.GetReal("Z坐标:") '用户输入Z坐标值p2(2) = z '将Z坐标值赋予点坐标中Call ThisDrawing.ModelSpace.AddLine(p1, p2) '画直线p1 = p2 '将第二点的端点保存为下一条直线的第一个端点坐标LoopErr_Control:End Sub先谈一下本程序的设计思路:1、获取第一点坐标2、输入第一点Z坐标3、获取第二点坐标4、输入第二点Z坐标5、以第一、二点为端点,画直线6、下一条线的第一点=这条线的第二点7、回到第3步进行循环如果用户没有输入坐标或Z值,则程序结束。

首先看以下两条语句:p1 = ThisDrawing.Utility.GetPoint(, "输入点:") ‘获取点坐标……p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & "输入下一点:") '获取下一个点的坐标这两条语句的作用是由用户输入点用鼠标选取点坐标,并把坐标值赋给p1、p2两个变量。

VBA与AutoCAD的二次开发

VBA与AutoCAD的二次开发

2007 NO.15SCIENCE & TECHNOLOGY INFORMATIONI T 技 术1 AutoCAD与 VBAAutoCAD是由Autodesk公司开发的工程绘图软件,是CAD市场的主流产品,功能十分强大,它广泛应用于建筑、机械、测量等工程领域,是工程制图人员常用的绘图软件之一。

AutoCAD除了具有强大的绘图功能,它的开放式体系结构也允许第三方开发者为它编写应用程序,这又显著增加了它的工作效率,并使其市场占用率首屈一指,成为图形绘制的世界标准。

在AutoCAD 14版本中,Autodesk公司首次获得Microsoft公司的许可,在AutoCAD R14中使用VBA(即Visual Basic forApplication的简称),VBA是由Microsoft创建的,用来自动执行任务的一个编程环境。

它引入了对象的程序设计环境,为用户提供类似Visual Basic(VB)语言所拥有的功能,提供了一些用来创建图形用户界面(GUI)的可拖拉工具和用来与AutoCAD对象交互的编程语言。

2 使用AutoCAD VBA进行二次开发的好处工程技术人员绘制图形时,也许会一次一次重复地执行着相同的任务。

如在进行地下管线的综合普查的任务时,一条街道上存在着具有各种不同属性的管线(电力管线、燃气管线、下水管线、电信管线等),测量人员要将算以万计的管线特征点的坐标测量出来,并在AutoCAD上将这些具有相同属性的管线点连接起来绘制成综合管线图。

如果我们用手工绘制管线图,那不仅仅是一项重复的、乏味的、极低效率的工作,还会极易由于绘图人员的工作疲劳和疏忽产生错误。

此时,我们为什么不考虑让这些令人讨厌的工作能自动执行呢?幸好我们可以使用VBA语言在AutoCAD平台上进行二次开发,创建非常好的定制应用程序,帮助我们自动地高效率地完成绘图任务。

那么为什么要使用VBA呢?最简单的原因就是,VBA要比Lisp、C/C++等易学。

浅谈基于VB的AutoCAD二次开发及其在测绘中的应用

浅谈基于VB的AutoCAD二次开发及其在测绘中的应用
Ex i t S u b En d f I
En dI f
o b j _ A e a d . V i s i b l e =T r u e 设置 A u t o C A D为可 见( 或者在后 台运 行, 不可见) o b i A e a d . D o c u m e n t s . O p e n( n l e n me ) 打开 A u t o C A D图形文件 获 得 当前 活 动 图形 文 S e t o b j — D o c= o b j _ A 件. 即刚打开的图形文件 S e t o b j _ Mo d e l S p a e e=o b j D c. o Mo d e l S p a c e 获得 当前 活动图形文 件 的模型空间
2 开发 Au t o CA D 2 0 0 4应 用 程 序 实例
笔者用 V B 6 . 0 编制 了水文断面机助制图程序 ,程序设 计流程图 、 界面及部分源代码见下图 。 该程序通过读取野外采集 的纵断面数据文 件 .自动计算 和提取完成制 图所需的亘长和高程数据并写成文件 , 然 后完成纵断面的绘制 . 并可通过对界面的操作来控制制图的横 向比例 尺及纵 向比例尺。 2 . 1 程序设计整体流程
了V B与 A u t o C A D 的连 接 、 绘 制 纵 断 面 的数 据格 式 、 数据转换 。 以 实现 快 速 绘 制 纵 断 面 。
M s g B o x” 不能运行 A u t o C A D , 请 检查是否安装 ! I I , v b O K O n l y , ” 警告 !”
ห้องสมุดไป่ตู้
A c t i v e X A u t o m a t i o n是微软 公 司的一 个技 术标 准 .其宗 旨是在 Wi n d o W S 系统 的统一管理下协调不 同的应用程序 . 允许 这此应 用程序 之间相互沟通 、相互控制 ,但两个应用程序间的沟通不是对等的 , 其 中 ,一个 程 序称 为客 户程 序 ( C l i e n t ) ,另 一个 程序 称 为服 务程 序 ( s e “ 。 r ) , 一般情况下 。 由客户程序提 出需要进 行什么操作 , 服务程序 针对操作 申请 , 完成相应 的命令 。A u t o C A D R1 4后的版本中就引人 了 A c t i v e x A u t o ma t i 0 n技 术 . 利用 A u t o C A D A c t i v e X技 术 . 可 以从其 它外 部应用 程序 ( 如V B ) 或A mo C A D内部 ( A u t o C A D V B A ) 操作 A u t o C A D 对象 V B是最为常用的支持 A c t i v e X A u t o m a t i o n 技术 的开发工具 。 它 可 以编制 出 A c t i v e x的客户程序 . 用来操作 A u t o C A D 。 即利用 V B 编制 能与 A u t o C A D相沟通 的应用程序 . 以此来实现 A u t o C A D的二次 开发。 1 . 2 利用 V B进行 A u t o C A D二次开发的关键步骤 首 先 .要 在 v B中引用 A u t o C A D的类型 库 A c a d . t l b .该库 位 于 A u t 0 C A D 2 0 0 4的安装 目录下。其次 . 要建立用 V B 开发 的应用程序 与 A u t o C A D间的联系, 这一过程 . 称为初始化 。相应的程序代码如下 :

VB与AutoCAD二次开发入门技巧资料_13051-VBAutoCADR14TEXT

VB与AutoCAD二次开发入门技巧资料_13051-VBAutoCADR14TEXT

用VB 在AutoCAD R14 中写TEXT 的方法AutoCAD 可以写不同高宽比、不同角度、不同颜色的TEXT。

无论是用AutoCAD的TEXT 命令,还是用AutoLISP,都是很容易做到的,用VB 是否也很容易哪?我们来看下面一段示例:Public objAcad As ObjectPublic objDoc As ObjectDim ent As ObjectDim startPoint(0 To 2) As DoubleDim Point1(0 To 2) As DoubleSet objAcad = GetObject(, "AutoCAD.Application") ' 获得AutoCAD R14对象Set objDoc = objAcad.ActiveDocument' 初始化TEXT 的起点startPoint(0) = 10#startPoint(1) = 10#startPoint(2) = 0#' 写一串TEXT, 其中字高为5Set ent = objDoc.ModelSpace.AddText("textString", startPoint, 5#)' 初始化TEXT 的调整点Point1(0) = 20#Point1(1) = 10#Point1(2) = 0#With ent.Color = 1 ' 改用红色.ObliqueAngle = 0.174444 ' 改倾斜角度.VerticalAlignment = 0 ' 设垂直位置为0.ScaleFactor = 1# ' 设文字高宽比,当需要两端对齐时,必须任意给一个值.HorizontalAlignment = 5 ' 设文字为两端对齐.TextAlignmentPoint = Point1 ' 设对齐点End WithSet objAcad = Nothinga VB应用程序中用DDE功能开发AutoCAD for Windows目前,许多工程CAD系统是以AutoCAD作为支撑软件,在其基础上进行二次开发而形成的。

VB与AutoCAD二次开发入门技巧资料_13053-TextBox

VB与AutoCAD二次开发入门技巧资料_13053-TextBox

能自行调节高度的TextBox概述TextBox 在放到Form 中以后,就不管内容有多少,就是占这么多的地盘,为什么不让它灵活一些呢?每当TextBox 的内容修改好以后,就查看TextBox 的行数是否变化。

如果有改变的话,就把TextBox 的位置调整到合适的位置。

一个可能的应用就是在TextBox 和MsFlexGrid 配合使用的情况,可以动态修改高度。

实现步骤1、开启一个新的工程。

2、增加一个TextBox(Text1),修改BorderStyle 为0-None,MultiLine 为True。

3、在Form1 的声明中增加:Const EM_GETLINECOUNT = &HBAPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongDim LastLine As Long '最后的行数Dim LineHeight '每行的高度4、在Form_Load 过程中增加:Private Sub Form_Load()Set Me.Font = Text1.FontLineHeight = Me.TextHeight("TT")End Sub5、在Text1_Change 中增加代码:Private Sub Text1_Change()Dim Ret As LongRet = SendMessage(Text1.hWnd, EM_GETLINECOUNT, 0, 0&) '取行数If Ret <> LastLine ThenIf Text1.Height + Text1.Top + LineHeight > Me.ScaleHeight And Ret > 1 ThenIf LastLine <= Ret - 1 ThenExit Sub '如果已经是最大高度,保持End IfLastLine = Ret - 1 '超过最大高度ElseLastLine = RetEnd IfText1.Height = LastLine * LineHeight '修改高度End IfEnd Sub6、在Text1_GotFocus 中增加代码:Private Sub Text1_GotFocus()LastLine = SendMessage(Text1.hWnd, EM_GETLINECOUNT, 0, 0&)End Sub7、按F5,开始运行。

CAD应用二次开发---VB和VBA开发CAD的知识

CAD应用二次开发---VB和VBA开发CAD的知识

CAD应⽤⼆次开发---VB和VBA开发CAD的知识1、如何在 VB 中连接 AutoCAD。

启动 VB ,引⽤ AutoCAD 类型库。

操作步骤:从“⼯程”菜单中选择“引⽤”选项,启动“引⽤”对话框。

在“引⽤”对话框中,选择AutoCAD 类型库,然后单击“确定”。

定义模块级变量 AutoCAD 应⽤程序 (acadApp) 和当前的⽂档 (acadDoc)。

如果 AutoCAD 正在运⾏,使⽤ GetObject 函数将检索 AutoCAD Application 对象。

如果 AutoCAD 没有运⾏,使⽤CreateObject 函数试图创建⼀个 AutoCAD Application 对象。

如果创建成功,会启动 AutoCAD;如果失败,则会发⽣错误。

同时运⾏多个 AutoCAD 任务时,GetObject 函数会返回 Windows 运⾏对象表中的第⼀个 AutoCAD 实例。

要显⽰ AutoCAD 图形窗⼝,需要将 AutoCAD 应⽤程序的 Visible 特性设置为 TRUE。

使⽤ acadDoc 变量引⽤当前的 AutoCAD 图形。

⽰例:Dim acadApp As AcadApplicationDim acadDoc as AcadDocumentSub ConnectToAcad()On Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application")If Err ThenErr.ClearSet acadApp = CreateObject("AutoCAD.Application")If Err Then EndEnd IfacadApp.Visible = TrueSet acadDoc = acadApp.ActiveDocumentEnd Sub2、如何使 VB 开发的程序不依赖于 AutoCAD 的版本。

VB在AutoCAD二次开发中的应用

VB在AutoCAD二次开发中的应用
a x i s P t ( 1 ) =铣 刀 3 d . C e n t r o i d ( 1 )
a x i s P t ( 2 ) =铣 刀 3 d . C e n t r o i d ( 2 ) p o i n t l ( 0 ) =铣 刀 3 d . C e n t r o i d ( 0 )
mo v e方法 让铣 刀沿 z 轴 上下 移 动 。距 离 为齿 宽 . 同
分。 再 镜 像得 到左半 部 分 。各 个点 之 间的 曲线 创 建
思 路 如下 :
时用 R o t a t e 3 d方法 饶 自身轴 旋 转一 定 角度 . 同样用 R o t a t e方 法将 齿 轮旋 转 . 角度 为 3 6 0 / 齿 数 3 . 1 4 / 1 8 0 弧度 . 铣 刀 自身 复制 . 齿 轮 模 型 与 面域 拉 伸 做 布 尔 减运算 。具体 程序 如下 : 定 义铣 刀拉 伸 . 做 动 画差集 用 Di m 铣刀 拉伸 A s A c a d 3 D S 0 l i d S e t 铣 刀拉伸= A c a d A p p . A c t i v e D 0 c u me n t . M0 d e l S p a c e .
铣 刀拉 伸. M o v e铣刀拉 伸 . C e n t r o i d . a x i s P t
铣 刀拉 伸. Vi s i b l e =F a l s e 隐藏 了铣 刀拉 伸 a x i s P t ( 0 ) =铣刀 3 d . C e n t r o i d ( 0 ) +1 0
( 1 ) 铣 刀 回转 面创 建 铣刀 回转 面 的数 学模 型如 图 4.先创 建右 半 部
为 使动 画逼 真 , 将 铣 刀模 型 隐藏 ( 1 ) 用A d d E x t r u d e d s o l i d方 法 将 创 建 旋 转 铣 刀 的面域 拉伸 . 高 度 为齿宽 , 锥 角为 0度 。 ( 2 ) 用D e l e t e方 法将 除齿 轮 , 铣刀 , 铣 刀拉 伸 的 实体外 的 实体删 除 ( 3 ) 用 D 0 …L o 0 p做 一 个 循 环 , 在 循 环 体 内用

VB与AutoCAD二次开发入门技巧资料_13050-

VB与AutoCAD二次开发入门技巧资料_13050-

什么是"ObjectARX"AutoCAD 有几种编程接口,最原始的一种是AutoLISP。

它是一种解释性的编程语言,最初出现于1985年发行的AutoCAD 2.5 版中。

四年以后,在R10中增加了称为ADS的C 语言编程能力。

然后,在R13中又增添了ARX(AutoCAD运行扩展)编程接口,它是新一代的基于C++的应用程序接口,可以为应用程序扩展AutoCAD的功能提供前所未有的能力。

ObjectARX 接口的功能十分强大,R14自身的很大一部分就是用ObjectARX 实现的。

例如,处理光栅图像的子系统就几乎没有向AutoCAD 核心系统增添什么新代码。

其结果是,ObjectARX 使得AutoCAD 成为了一个更加模块化的系统。

需要了解的是,ObjectARX 并没有取代LISP和ADS,在R14中,LISP和ADS仍然存在并有所扩展。

R13中使用的ARX是1996年1月发行的1.1版。

在R14中,通过新的API和其他改进,ARX的功能又有了新的扩充。

它最主要的特点是:14版的ARX与13版中的ARX具有高度的向上兼容关系。

R13上的ARX程序只需要重新编译就可以在R14上运行。

R14中的ARX已经重新命名为ObjectARX, 借此强调这一强有力的编程工具所具有的面向对象的基本特性。

ActiveX Automation开放的体系结构一直是AutoCAD软件极为重要的特性。

在AutoCAD过去的版本中,我们提供了一系列软件客户化工具。

而现在,通过ActiveX Automation 系统,我们更提供了R14与其他应用程序集成的客户化工具。

对于ObjectARX 应用程序,可以享受改进的对象协同操作能力带来的益处。

通过按需装入和驻留的LISP特性节约操作时间。

这里,我们重点谈谈ActiveX Automation。

AutoCAD R14宣布支持Active Automation。

AUTOCAD二次开发笔记(ObjectARX)---全部

AUTOCAD二次开发笔记(ObjectARX)---全部

AUTOCAD二次开发笔记(ObjectARX)---全部编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(AUTOCAD二次开发笔记(ObjectARX)---全部)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为AUTOCAD二次开发笔记(ObjectARX)---全部的全部内容。

ObjectARX开发环境的创建与开发实例Hello World(VS2005+AutoCad2008+ObjectArx2008)在一个做CAD二次开发的公司做Web开发,感觉可提升的空间很小。

有必要研究一下公司的产品开发,以利发展。

一、首先安装好vs05与cad2008安装cad的时候也没有什么特别,加载到虚拟光驱,安装过程中有个错误提示,不影响继续。

二、安装ObjectArx2008直接打开解压缩到某个目录即可。

比如C:\ObjectARX 2008然后打开C:\ObjectARX 2008\utils\ObjARXWiz目录,运行ArxWizards.msi这样在新建C++项目的时候会出现ObjectARX项目,如图三、包含文件工具—〉选项—>项目和解决方案-〉VC++目录,如图所示:包含文件(添加图中前两个目录即可)库文件(添加图中前两个目录即可)四、新建ObjectARX项目,完成后添加MFC支持,如图所示:然后直接点finish打开acrxEntryPoint.cpp点击左上角的a>按钮,然后新建一个命令。

如图:只需要修改Internation Name与Localized Name为testcmd即可添加完成后,会在acrxEntryPoint。

AutoCAD_VBA二次开发初级教程(选做)

AutoCAD_VBA二次开发初级教程(选做)

AutoCAD VBA二次开发初级教程第一课:入门1.什么是Autocad VBA?VBA是Visual Basic for Applications的英文缩写,它是一个功能强大的开发工具,学好VBA可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用ACAD命令不可能完成的,只要学好VBA就可以做到,相信到时候您一定会得到同事的佩服、老板的器重。

2、VBA有多难?相信大家都知道Basic是的含义。

应该承认,我的水平还不高,错误之处在所难免,如果大家发现错误一定要提出批评,以便及时更正。

3、怎样学习VBA?介绍大家一个学习公式:信心+恒心=开心。

仔细阅读本教程,完成例题,在学习的过程中一定要多思考,多想一些是什么、为什么。

本教程将陆续发布在CAD 世界论坛上,您不需要付费就可以学习。

本作者在此郑重承诺:关于本教程中有任何疑问,可以跟贴提问,只要有时间,本人一定会耐心解答。

我不会发到任何人的邮箱中,您自己在论坛上找就可以了,请不要再向我索要这份教程。

4、现在我们开始编写第一个程序:画一百个同心圆第一步:复制下面的红色代码第二步:在模型空间按快捷键Alt+F8,出现宏窗口第三步:在宏名称中填写C100,点“创建”、“确定”第四步:在Sub c100()和End Sub之间粘贴代码第五步:回到模型空间,再次按Alt+F8,点击“运行”Sub c100()Dim cc(0 To 2) As Double '声明坐标变量cc(0) = 1000 '定义圆心座标cc(1) = 1000cc(2) = 0For i = 1 To 1000 Step 10 '开始循环Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) '画圆Next iEnd Sub也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关于VB对AutoCAD二次开发学习笔记□By OYLS基于VB对AutoCAD的二次开发,主要是通过运用VB编程对AutoCAD软件中的基本绘图操作进行控制,了解AutoCAD软件中的常用命令。

在编程过程中我们要借助AutoCAD软件中的“帮助文件”,即“AutoCAD开发人员帮助”文档。

一、获取VB对AutoCAD的控制权:先定义变量acadApp,acadDoc:Public acadApp As AcadApplicationPublic acadDoc As AcadDocumentFunction boot_CAD() As BooleanOn Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application")If Err ThenErr.ClearSet acadApp = CreateObject("AutoCAD.Application")If Err ThenMsgBox "您没有安装AutoCAD ,或安装版本错误!", vbOKOnly + vbInformation, "CAD简易绘图系统"boot_CAD = FalseBtOK = FalseExit FunctionEnd IfEnd IfSet acadDoc = acadApp.ActiveDocumentacadApp.Visible = Trueboot_CAD = TrueEnd Function需要说明的是,我们只有先对CAD获取了控制权以后才能有效地运用VB编程方式进行CAD的基本绘图操作。

不然,以后的各种对CAD的操作将无法得以实现。

二、基本绘图思路:先了解所绘对象的基本属性,可以说,也正是由于对象的各种属性才构成了一个特性为一而标准的实体。

对象的属性特点我们可以事先通过CAD帮助文件查找得出。

接下来我们就应了解创建方法,同样,我们也是通过CAD帮助文件进行查找。

可以看出,在整个绘图编程过程中我们都离不开CAD帮助文件,所以我们应当对其充分利用。

三、介绍直线画法:先了解到直线Line的创建方法:RetVal = object.AddLine(StartPoint, EndPoint)可以看出,创建一直线我们所需的参数有StartPoint,EndPoint也就是开始点与结束点,并且:StartPoint:Variant (three-element array of doubles); input-only The 3D WCS coordinates specifying the line start point.因此,在定义StartPoint时应为一数组,且为double型,以后多数数组也都为这一类型;EndPoint:Variant (three-element array of doubles); input-onlyThe 3D WCS coordinates specifying the line endpoint.因此,在定义EndPoint时也应为一数组,且为double型;值得注意的是,这里的StartPoint,EndPoint都是三维坐标形式。

在CAD帮助文件中可以查到Line的添加形式为:Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)通过上面给出的添加形式我们也可以看出它的基本参数。

无论是何种对象创建,我们都事先应对该对象的属性或参数作必要的变量定义。

在定义变量时,我们最好应定义比较方便我们自己代码识别的形式。

下面将以创建直线的方法来说明此过程:先定义两个参数和一个创建对象:Dim mStPt(2) As Double, mEdPt(2) As DoubleDim mLine As AcadLine获取参数数值,这里是以在窗体上添加文本Text的形式给出:mStPt(0) = Val(Text1.Text)mStPt(1) = Val(Text2.Text)mStPt(2) = Val(Text3.Text)mEdPt(0) = Val(Text4.Text)mEdPt(1) = Val(Text5.Text)mEdPt(2) = Val(Text6.Text)Set mLine = acadDoc.ModelSpace.AddLine(mStPt, mEdPt)mLine.UpdateZoomAll这样,我们只要将上述程序代码放在VB一操作事件(如Click())中,就可以实现对直线Line的创建了。

创建了一个对象,这里指直线Line,我们同时也获取了对该对象的控制权,通过这,我们可以在以后方便地根据用户自己的要求来设置或改变对象的一些属性值。

了解了关于Line的创建方法后,我们也就了解到了CAD绘图操作的一般创建方法和思路。

四、介绍曲线(圆弧)画法:通过对直线Line的创建,我们可以用相同的方法对曲线Arc进行创建。

同样,我们在CAD的帮助文件中查出关于Arc对象的一些属性。

先了解到曲线Arc的创建方法:RetVal = object.AddArc(Center, Radius, StartAngle, EndAngle)可以看出,创建一曲线时我们所需的参数有Center, Radius, StartAngle, EndAngle 也就是曲线所对应圆弧中心点,半径,开始角和结束角,并且:Center:Variant (three-element array of doubles); input-only The 3D WCS coordinates specifying the center point of the arc.因此,在定义Center时,要注意它是一点坐标形式,三维的。

所以,我们也要为它定义为一double型数组。

Radius:Double; input-only The radius of the arc.因此,在定义Radius时为一double型变量即可。

StartAngle, EndAngle: Double; input-only The start and end angles, in radians, defining the arc. A start angle greater than an end angle defines a counterclockwise arc.同上面一样,StartAngle, EndAngle为double型变量。

但值得注意的是,开始角与结束角在编程时要以弧度制,而不是以角度制出现。

可外面显示又最好为角度制,这样可以方便读取,因此,在编程时我们要做适当的转换。

在CAD帮助文件中可以查到Arc的添加形式为:Set arcObj = ThisDrawing.ModelSpace.AddArc(centerPoint, radius, startAngleInRadian, endAngleInRadian)可以看出,曲线与直线的添加形式基本上一致,只是个中的参数发生变化了。

这样,我们就可以编程实现对Arc的创建了:先定义四个参数和一个创建对象:Dim mArc As AcadArcDim mCen(2) As DoubleDim mR As DoubleDim mStAga As DoubleDim mEnAg As Double获取参数数值,这里同样是以在窗体上添加文本Text的形式给出:mCen(0) = Val(Text1.Text)mCen(1) = Val(Text2.Text)mCen(2) = Val(Text3.Text)mR = Val(Text4.Text)mStAg = Val(Text5.Text) * 3.1415926 / 180mEnAg = Val(Text6.Text) * 3.1415926 / 180Set mArc = acadDoc.ModelSpace.AddArc(mCen, mR, mStAg, mEnAg)mArc.UpdateZoomAll同直线一样,我们只要将上述程序代码放在VB一操作事件(如Click())中,就可以实现对曲线Arc的创建了。

当然,也获取了对曲线Arc的控制权。

在以后的对象(如圆、椭圆等)创建过程中就不将仔细介绍,方法基本一样。

五、介绍圆的画法:RetVal = object.AddCircle(Center, Radius)Dim circleObj As AcadCircleDim centerPoint(0 To 2) As DoubleDim radius As Double' Define the circlecenterPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#radius = 5#' Create the Circle object in model spaceSet circleObj = ThisDrawing.ModelSpace.AddCircle(centerPoint, radius)ZoomAll六、介绍椭圆画法:RetVal = object.AddEllipse(Center, MajorAxis, RadiusRatio)' This example creates an ellipse in model space.Dim ellObj As AcadEllipseDim majAxis(0 To 2) As DoubleDim center(0 To 2) As DoubleDim radRatio As Double' Create an ellipse in model spacecenter(0) = 5#: center(1) = 5#: center(2) = 0#majAxis(0) = 10: majAxis(1) = 20#: majAxis(2) = 0#radRatio = 0.3Set ellObj = ThisDrawing.ModelSpace.AddEllipse(center, majAxis, radRatio) ZoomAll七、常用属性设置:(一)颜色设置:Dim color As AcadAcCmColorSet color = _AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.16")Call color.SetRGB(80, 100, 244)circleObj.TrueColor = colorZoomAll(二)线型设置:线型是重复的划、点和空格组成的图案。

相关文档
最新文档