VBA开发AUTOCAD实现参数化绘图

合集下载

基于VBA在AutoCAD中自动绘图的应用

基于VBA在AutoCAD中自动绘图的应用

基于VBA在AutoCAD中自动绘图的应用------李广亚随着电脑技术的飞速发展,目前大多数企业都采用AutoCAD制图、绘图,在工程施工领域也是采用AutoCAD进行二维工程绘图。

GPS的应用使的施工现场坐标的采集非常方便,通常便于直观,监理、业主会要求将GPS采集的坐标绘制在CAD图上。

对于一个熟悉CAD的人来说,将10几个坐标数据手工录入坐标绘制到CAD中是比较容易的,但如果是几十个点,上百个点,甚至几百个点,对于一个施工技术员来说一个一个坐标的手工录入,就成了一个比较有难度的工作,主要因为手工录入会比较繁琐、耗费时间长还特别容易出错。

在这方面如何能提高技术人员的工作效率?基于此,我们采用AtuoCAD中的VBA技术,进二次开发,可以方便的将大量的坐标自动绘制到CAD图中。

下面通过一个简单事例来说明AtuoCAD中VBA技术的二次开发自动绘图程序的过程: 事件介绍:2012年业主在场区开挖一不规则多边形鱼塘,要求我单位将鱼塘进行测量并标注在总平面图上。

1、数据采集:使用GPS现场进行数据采集,在鱼塘周边从一点开始,顺时针方向进行,在不规则鱼塘的所有角点拐点均采集坐标,并保存在GPS中。

2、导出坐标:将GPS中采集的坐标导出到文本文档,如下图:3、数据处理:将导入的坐标使用EXCEl文档打开并编辑处理,高程全设为0,表单重命名为“SJ”,保存EXCEl文档到D盘,文档名称为“GPS导入坐标绘图”如下图:4、VBA跨平台技术二次开发:(1)、打开AutoCAD,选择工具->宏->VBA编辑器,打开VBA编辑器。

在VBA编缉器中插入用户窗体,在窗体上插入按钮组件,如图:(2)、双击按钮,打开代码编辑窗口,编缉代码如下:Private Sub CommandButton1_Click()Dim xlapp As Excel.ApplicationDim xlbook As Excel.workbookDim xlsheet As Excel.worksheetSet xlapp = CreateObject("excel.application")Set xlbook = xlapp.workbooks.Open("D:\GPS导入坐标绘图.xls")'打开的EXCEL路径xlapp.Visible = FalseSet xlsheet = xlbook.worksheets("sj") '打开EXCEL中的sj工作表i = xlsheet.Cells(1, 2) 'i为线条线数For p = 0 To i - 2 Step 1p = pk1 = xlsheet.Cells(3 + p, 3) '将表格第3行第3列内数值赋值给K1,X坐标值h1 = xlsheet.Cells(3 + p, 2)k3 = xlsheet.Cells(3 + p, 4)k2 = xlsheet.Cells(4 + p, 3)h2 = xlsheet.Cells(4 + p, 2)h3 = xlsheet.Cells(4 + p, 4)Dim 点 As AcadLineDim 起点(2) As DoubleDim 端点(2) As Double起点(0) = k1 '将K1值贱赋值给起点数组内第一个值,即起点X坐标。

基于VBA在AutoCAD中自动绘图的应用

基于VBA在AutoCAD中自动绘图的应用

基于VBA在AutoCAD中自动绘图的应用------李广亚随着电脑技术的飞速发展,目前大多数企业都采用AutoCAD制图、绘图,在工程施工领域也是采用AutoCAD进行二维工程绘图。

GPS的应用使的施工现场坐标的采集非常方便,通常便于直观,监理、业主会要求将GPS采集的坐标绘制在CAD图上。

对于一个熟悉CAD的人来说,将10几个坐标数据手工录入坐标绘制到CAD中是比较容易的,但如果是几十个点,上百个点,甚至几百个点,对于一个施工技术员来说一个一个坐标的手工录入,就成了一个比较有难度的工作,主要因为手工录入会比较繁琐、耗费时间长还特别容易出错。

在这方面如何能提高技术人员的工作效率?基于此,我们采用AtuoCAD中的VBA技术,进二次开发,可以方便的将大量的坐标自动绘制到CAD图中。

下面通过一个简单事例来说明AtuoCAD中VBA技术的二次开发自动绘图程序的过程: 事件介绍:2012年业主在场区开挖一不规则多边形鱼塘,要求我单位将鱼塘进行测量并标注在总平面图上。

1、数据采集:使用GPS现场进行数据采集,在鱼塘周边从一点开始,顺时针方向进行,在不规则鱼塘的所有角点拐点均采集坐标,并保存在GPS中。

2、导出坐标:将GPS中采集的坐标导出到文本文档,如下图:3、数据处理:将导入的坐标使用EXCEl文档打开并编辑处理,高程全设为0,表单重命名为“SJ”,保存EXCEl文档到D盘,文档名称为“GPS导入坐标绘图”如下图:4、VBA跨平台技术二次开发:(1)、打开AutoCAD,选择工具->宏->VBA编辑器,打开VBA编辑器。

在VBA编缉器中插入用户窗体,在窗体上插入按钮组件,如图:(2)、双击按钮,打开代码编辑窗口,编缉代码如下:Private Sub CommandButton1_Click()Dim xlapp As Excel.ApplicationDim xlbook As Excel.workbookDim xlsheet As Excel.worksheetSet xlapp = CreateObject("excel.application")Set xlbook = xlapp.workbooks.Open("D:\GPS导入坐标绘图.xls")'打开的EXCEL路径xlapp.Visible = FalseSet xlsheet = xlbook.worksheets("sj") '打开EXCEL中的sj工作表i = xlsheet.Cells(1, 2) 'i为线条线数For p = 0 To i - 2 Step 1p = pk1 = xlsheet.Cells(3 + p, 3) '将表格第3行第3列内数值赋值给K1,X坐标值h1 = xlsheet.Cells(3 + p, 2)k3 = xlsheet.Cells(3 + p, 4)k2 = xlsheet.Cells(4 + p, 3)h2 = xlsheet.Cells(4 + p, 2)h3 = xlsheet.Cells(4 + p, 4)Dim 点 As AcadLineDim 起点(2) As DoubleDim 端点(2) As Double起点(0) = k1 '将K1值贱赋值给起点数组内第一个值,即起点X坐标。

VB对AutoCAD的二次开

VB对AutoCAD的二次开

实验VB对AutoCAD的二次开发一、实验目的了解CAD二次开发的几种形式,掌握VB对AutoCAD进行二次开发,实现参数化绘图的技巧。

二、实验要求1、了解AutoCAD二次开发的基本原理2、掌握运用VB开发界面的方法3、掌握运用VB调用AutoCAD库函数,完成相关功能的方法三、实验步骤1、建立AutoCAD和VB之间的连接启动VB,建立“标准exe”程序,选择菜单“工程”——“引用”,选择“AutoCAD 2004 Type Library”。

2、创建界面3、程序编码1)定义全局变量Dim AcadApp As AcadApplication 'AutoCAD应用程序变量Dim AcadDoc As AcadDocument 'AutoCAD文档变量2)引用AutoCAD应用程序Private Sub Command1_Click()On Error Resume NextIf Err ThenErr.ClearEnd IfSet AcadApp = New AcadApplicationIf Err ThenMsgBox Err.DescriptionExit SubEnd If'设置AutoCAD应用程序参数AcadApp.WindowTop = 0AcadApp.WindowLeft = 400AcadApp.Width = 600AcadApp.Height = 800AcadApp.Visible = TrueAcadApp.Documents.AddSet AcadDoc = AcadApp.ActiveDocumentAcadDoc.WindowState = acMaxCommand4.Enabled = TrueEnd Sub3)参数化绘图Private Sub Command4_Click()'设置新图层Dim layer1 As AcadLayerDim layer2 As AcadLayerSet layer0 = yers.Item(0)Set layer1 = yers.Add("粗实线层")Set layer2 = yers.Add("中心线层")layer1.Lineweight = acLnWt080 '粗实线的线宽layer1.Color = acWhitelayer2.Color = acRedAcadDoc.Linetypes.Load "centerx2", "acad.lin"layer2.Linetype = "centerx2"'输入原始参数Dim Center(0 To 2) As DoubleDim Vert(0 To 7) As DoubleDim L04 As DoubleDim L01 As DoubleDim b As DoubleDim r As Doubleb = Val(Text2.Text): r = Val(Text1.Text) / 2: L01 = r - Val(Text3.Text) L04 = Sqr(r * r - (b / 2) ^ 2)Center(0) = 100: Center(1) = 100: Center(2) = 0'画中心线AcadDoc.ActiveLayer = layer2Dim line1 As AcadLineDim line2 As AcadLine'定义两直线的端点Dim pl1s(0 To 2) As DoubleDim pl1e(0 To 2) As DoubleDim pl2s(0 To 2) As DoubleDim pl2e(0 To 2) As Doublepl1s(0) = Center(0) - r - 1.5: pl1s(1) = Center(1): pl1s(2) = 0pl1e(0) = Center(0) + r + 1.5: pl1e(1) = Center(1): pl1e(2) = 0pl2s(0) = Center(0): pl2s(1) = Center(1) + r + 1.5: pl2s(2) = 0pl2e(0) = Center(0): pl2e(1) = Center(1) - r - 1.5: pl2e(2) = 0Set line1 = AcadDoc.ModelSpace.AddLine(pl1s, pl1e)Set line2 = AcadDoc.ModelSpace.AddLine(pl2s, pl2e)'创建辅助的优化多段线AcadDoc.ActiveLayer = layer1'定义键槽直线端点Dim p1(0 To 2) As DoubleDim p2(0 To 2) As DoubleDim p3(0 To 2) As DoubleDim p4(0 To 2) As DoubleDim angVal As DoubleDim pLine1 As AcadLineDim pLine2 As AcadLineDim pLine3 As AcadLineDim pArc As AcadArcDim pi As Double '定义圆周率p1(0) = Center(0) - b / 2: p1(1) = Center(1) + L01: p1(2) = 0p2(0) = p1(0): p2(1) = Center(1) + L04: p2(2) = 0p3(0) = p1(0) + b: p3(1) = p1(1): p3(2) = 0p4(0) = p1(0) + b: p4(1) = p2(1): p4(2) = 0Set pLine1 = AcadDoc.ModelSpace.AddLine(p1, p2)Set pLine2 = AcadDoc.ModelSpace.AddLine(p1, p3)Set pLine3 = AcadDoc.ModelSpace.AddLine(p3, p4)angVal = Atn((b / 2) / L04)pi = 3.1415Set pArc = AcadDoc.ModelSpace.AddArc(Center, r, pi / 2 + angVal, 2 * pi + pi / 2 - angVal)AcadApp.ZoomExtentsAcadDoc.ActiveLayer = layer0End Sub'查询Private Sub CmdSeek_Click() Dim aVal As Integer 'A值 aVal = CInt(Text1.Text) Text2.Text = GetVal(aVal)End Sub。

基于VBA的AutoCAD参数化设计探讨

基于VBA的AutoCAD参数化设计探讨
c1 7
图2
为了能从窗体输入数据并能正确绘制轴的参数化 图形 ,需要 为窗 体 和控件添加程序代码 , 在添加代码前 , 应首先按绘图所需 的参数定义 窗体级变量 。 P b c , ,1 2 3 A L s obe ’ ul W2 , , , , A u l 用来存储轴的各种参数 i W1 L L L I 5 D 由于篇幅所限仅列举 C d r m Da w的 Ci 事件程序代码如下 : lk c

户能够方便 的进行可视化操作 , 人机界面设计简单美 观。因此在二次开 发中,主要运用 V A语言进行图形绘制 的程序设计 。V A即 Mirsf B B coo t
ole中的 Vsa B s r pi tn,它 被 集 成 到 A tC 0 0以后 fc i l aif l ai s u co Ap c o uo AD20 所有的版 本中。VB A和 A tC uo AD中强大的 A t e 自动化对象模 型的 cvX i 结合, 代表了一种新型的定制 A t A uo D的模式构架 。通过 V A 我们可 C B, 以操作 A tC D控制 A t e uo A , ci X和其它一些应用程序 , v 使之相互之 间发生 互 易 活动 。 B 和 V VA B的 主 要 差 别 是 V A 和 A tC D在 同 一进 程 空 间 B uo A
中运行, 提供的是具有 Au C D智能的 、 t A o 非常快速 的编程环境。
二 、 uo D 参数 化 设 计 的 基本 思 想及 设 计 过 程 A tOA
参数化设计 的基本思想是保持图形结构之问的相互拓扑关 系( 进行 产 品设计所采用的数学模型及产品的结 构) 固定不变的。 是 参数化 的含 义有两种: 参数化 和图形参数化。设计参数化对应于产 品的设计过 设计 程 , 特点是 : 其 控制产 品的参数在 整个设 计过程 中其数 目、 数值 和类型 都不断发生变化 , 在设汁的某一时刻还有可能发生参数转换 , 即控制参 数 由一组变为另 一组 。 图形参数 化对应 于最终产品或某些常用零部件 , 此时控制参数 只有数值变化 , 不存在参数类型和整组控制参数的转换。 对于产品 ,我们可 以将 已知条件及其他的随着产品规格而变化的基本 参数用响应 的变量代替 ,然后根据这些已知条件和基本参数来控制图 形的几何 尺寸大小 ,部分参数值的改变能够直接导致设 汁结果的 自动 修 改。 基于 V A的 A tC D参数 化设计系统 主要采用的是二维图纸 的 B uo A 绘 制, 设计者打开 A t A uo D设计界 面, V A管理器新建 个工程 , C 由 B 并 且 保 存 在 适 当的 位 置 , 此 工 程 中创 建 系列 件 的数 据 库 , 种 零 件 的儿 在 各 何参数基于数据库系统建立通讯 与调用 ,设计过程 的主要信息和数据 均存储在数据库中。并通过 动态数据交换(D ) D E功能 向绘图程序传递尺 寸参数 。 然后进入 V A集成开发环境 , B 新建窗体和模块 , 该窗体创建 在 需要的控件 ,设定其属性要与数据库 匹配,在各 自代码 区编写绘 图程 序, 调用数据库中的相应数据 , 来完成参数化 的设计程序代码。 三、 阶梯轴参数化设计过程 有些企业的产品经 常用到阶梯轴 ,如 图 1 所示 。这些阶梯轴系列 化、 通用化和标准化程度高 。 可以利 用参数化设计极大地改善 图形设计 的重构能力, 高了设计 的柔性。 提

利用VB实现AutoCAD二次开发中参数化绘图

利用VB实现AutoCAD二次开发中参数化绘图
高 新 技 术
C h i 2 0 1 4 N O . 0 7 ( 上) n a Ne W Te c h no l o z i e s a n d Pr o d u c t s
利用 VB实现 Au t o C AD 二次开发 中 参数化绘 图
陈 炜
( 江 省 大丰 中等 专业学校 ,江苏 大丰 2 2 4 1 0 0 )
实 现参 数 化绘 图 的背景 从 A u t o C A D R1 4版 本 以 后 , 就 增 加 了 采 用 相 同 的方 法 ,将 2中所 有 菜 单 A u t o C A D作 为一 款 工 程 方 面非 常 出 A c t i v e X A u t o m a t i o n 自动化 服务 的功 能 。 全 部 建立 好 相 对 应 的 子 窗体 ,并 在 菜 单 色 的软 件 , 因其 优 秀 图 形 处 理 能力 和 通 而 V i s u a l B a s i c 是 Wi n d o w s 操 作 系 统 下 最 ’中用 “ 窗体 名 . s h o w ”命令 调 用各 自子 窗 用 性 而 得 到 广 泛 普 及 与 应 用 ,正 因 为该 常用 的支持 A c t i v e X A u t o m a t i o n技术的开 体。如 : “ 弹簧”子菜单,打开它对应 软 件 通 用 性 很 强 ,从 而 在 进行 具 体 图形 发 工 具 。V B是 一种 面 向对象 的 可视 化 程 的窗体 ( 窗 体名 为 f r m T h ),则 用命令 绘 制 和 数 据 处 理 综 合 应 用 的 时 候 自身所 序 开发 工具 ,它 入 门简 单 易 学 ,具 有 快 f r m T h . s h o w ,代码 如下 : 具 有 的功 能 就 显 得 相 形 见 绌 。 比如 在机 速 的程 序 开 发环 境 ,代 码 的编 写 量 小 , Pr i v a t e S u b t h C l i c k( ) 械 制 图时 ,如 螺母 、垫 圈 、轴 承 、弹簧 、 开 发 人 员 改 动 界 面 方 便 直 接 、 所 见 即 所 f r mTh. s h o w 齿 轮 等 一 些 标 准 件 、 常用 件 的设 计 和绘 得 , 并且 支 持各 类最 新 的 Wi n d o w s 技术 , E n d S u b最 后 添 加 L a b e l 、T e x t B o x 、 制 ,都 需 要 用 户 逐 一 绘 制 ,这 些 标 准件 拥有强大 的数据库编程能力 ,广泛使 用 C o m m a n d B u t t o n控件完 成 参数 化绘 图窗 口 都会有大量数据 ,用户绘 图时必须查找 于 Wi n d o w s 平 台上 。 的设计 。 各 种 标 准 ,不 仅 费 时 而 且 容 易 出错 。 为 根 据 以上 五个 工 具 的 比较 ,利 用 V B 4编 程 流 程 图。 开 始 一 >连 接 了解 决 上述 问题 , 尽 可 能 的不重 复劳 动 , 对A u t o C A D二 次 开 发 实 现 参 数 化 绘 图 C A D 一 >参 数 赋 值 一 >根 据 每 圈 分 段 数 计 提 高 设 计 效 率 ,减 少 设计 开 发 周 期 ,因 将更 具优势 ,用 V B语 言编程开 发 ,将 算角度间隔 一 >用循环计算每个控制点坐 此我们想到了实现图形 的自动绘制方法。 A u t o C A D看着 V B程序 中一个绘 图 的窗 标 一 > 把 所 有 控 制 点 连 接 成 多段 线 一 > 绘 根 据 机 械 制 图 中各 种 标 准 件 结 构 特 点 , 口,对其进行打开 、编辑、绘图、打印 制截 面 圆生 成面域 一 > 完成一 >结 束 同 一 个 系列 内 ,它们 基 本 结 构 相 似 ,仅 和关闭等操作 , 其速度相对较快 。为此 , 5实现结 果和 结论 是尺寸上有些变化。对于齿轮、弹簧等 可以作为我们进行程序设计的首选工具。 ( 1 ) 输人参数如下时 ,绘制弹簧并 常用件 ,尽 管不 能像 螺栓 、螺母那样完 下 面以弹簧绘制 为例用 V B实 现 参 生 成 弹 簧 图 形 每 一 圈大 小 都 相 同 ,且 弹 全实现标准化 ,但可 以实现部分结构标 数 化 绘 图 对 A u t o C A D进 行 二 次 开 发 ,解 簧 圈数 为 4圈 。 准化 。 比如弹簧 , 我们 只需输入起始半径、 决 机 械 制 图 中标 准 件 、常 用 件 的参 数 化 起 始 半 径 :6 0 , 垂 直 增 量 :1 0 , 垂 直 增 量 、 水 平 增 量 、 圈数 、分 段 数 等 绘 图 问题 。 水平增量 :0 ,旋转 圈数 :4 ,分段数 : 参 数 ,即可 编 程 实 现 该 二 维 或 三维 图形 0。 三 、V B实现参数化绘图的系统设计 5 的 自动绘 制 。 ( 2)当改变 参 数 为下所 示 时 ,生成 1建 立 主 界 面 。 打 开 在 Mi c r o s o f t 二 、V B实现 参数 化绘 图的优 势 V i s u a l B a s i c 设 计 工 具 ,选 择 文 件 中 “ 新 弹 簧 图形 每 一 圈 大小 按 增 量 递 增 ,其 弹 为 了使 重 复性 较 大 的计 算 绘 图工 作 建 工程 ”, 进入 窗体设 计 器 。 首先, 在“ 工 簧 圈数 为 3圈 。 量 减 小 和更 加 规 范 准 确 ,A u t o C A D提 供 程”菜单中选择 “ 移除 F o r m1 ”。然后 , 起 始 半 径 :3 O ,垂 直 增 量 :2 0 ,水 了 二 次 开 发 的 功 能 接 口。进 行 其 二 次 开 在 “ 工程” 菜单中选择 “ 添加 MD I 窗体 ”, 平 增 量:1 0 ,旋转 圈 数:3 ,分 段 数 : Wo r ml 主控 窗体 。最后 ,在 1 0 0。 发的常用工具 目前大体有五种 ,分别是 即可添 加 MD 通过上述 2 组 数 据 的实 验 ,输 入 的 A D S 、0 b j e c t A R X、A u t o L I S P 、. N E T 、 “ 文件”菜单 中保存该工程 ,将 窗体保 V B A。 其 中 。A D S是 A u t o C A D 的 C语 存 为 默 认文 件 名 ,把 新 工程 保存 为 “ V B 参数不同生成的图形也不同,说明 V B实 言 开 发 系 统 ,直 接 利 用 c语 言 编译 器 , 实 现参 数化 绘 图 . v b p ”。 现 参数 化绘 图是 可行 的 。 因 涉及 到 C语 言 的 编 程 它 的 开发 不 易上 2在 MD I 主 窗 体 中建 立 菜 单 。点 击 通过 V B编 程 对 A u t o C A D进 行 二 次 手 并 且 难 度 较 大 ;O b j e c t A R X的 功 能 强 MD I F o ml r 主窗 体 , 在其 上右 击 , 选择 “ 菜 开 发 ,可 以使 标 准 件 绘 图 繁 琐 的 问题 得 大 ,效率较高 ,但是开发人员必须掌握 单编辑器” ,在弹出的对话 框中根据需 以圆满解决 ,操作起来也简单易行。大 V c + + ,难度很大 ,而且开发效率不高, 求完成相应 的菜单设计 ,注意每个菜单 家 还 可 利 用 I m a g e L i s t 与T o o l B a r 控 件 制 容 易出现 内存泄 漏;A u t o L I S P语言虽然 的名称的命名必须符合语法规范并要有 作 一 个 工 具 条 ,通 过 工 具 条 按 钮 点 击 常 其语 法规则简单、灵活 ,但是缺乏综合 意 义 ,这 里统 一 用 菜 单 名 的 拼音 首 字 母 用菜单命令绘 图将会更加方便快捷。 参考 文献 性 的开发环境 ,综合 能力差 ;. N E T是微 命名,如标题为 “ 弹簧”,名称为 “ t l l ”。 软新 一代技 术平台,功能强大 ,但对开 3添加子 窗体 。选择 “ 工程 ”菜单 『 1 1 张帆 . A u t o C A D V B A 二 次 开 发 教 程 发 环境要求 较高,而且可供学 习参考 的 中 “ 添加窗体” ,在弹 出的对话框 中选 『 M】 . 北京 : 清华大学出版社 , 2 0 0 6 . 资 料 较 少;V B A即 M c o r s o f t O f l c e中 的 择 “ 2 ] 刘永 波 . 分析 A u t o C A D 二 次开 发方 法 窗体”并 打开,然后修 改新建 窗体 『 V i s u a l B a s i c(简 称 V B) f o r A p p l i c a t i o n s 的 MD I C h i l d属 性 为 “ T ee r ” ,最 后 保 存 的研 究 卟 软件 . 2 0 1 3 . 3 4( 5) . 开 发 环 境,被 集 成 到 A u t o C A D中, 该 窗体 。

利用VBA在AutoCAD2000中实现参数化绘图

利用VBA在AutoCAD2000中实现参数化绘图

基 圆 的 交点 ( l Yb ) X 2 Y 2 。过 渡 圆弧 则 使 Xb , 1 ( b , b ) 用 S t ug eB le方法 , 一 段 轻 量 多 义 线 设 成 圆 弧 段 的 将 方 式 来 实现 。 齿顶 圆和 齿根 圆则 分 别求 出 它 们 的半
Au t A 2 0 oC D 0 0中实 现 参 数化 绘 图 的过 程 。
Auo A 0 0中使 用 的 VB 是 基 于 V 5 0 tC D 20 A B .
版 本 , 全 面 向对 象体 系结 构 的一 种 编程 语 言 , 与 完 它
VB有 着 几 乎 相 同 的 开 发 环 境 和 语 法 , 能 强 大 且 功 易于 掌握 , 且 它 驻 留 在 Auo A 的 内 部 , 构 精 而 tC D 结 简 , 码运 行 效 率高 。 代
烦 的事情 。通 常在 C D 软件 系统 中 , 决 着一 类 图 A 解 形 的方 法是 通 过 参数 化编 程 的 办 法 , 入几 个 参 数 , 输 就 能 由程 序将 重 复而 烦琐 的零 件 轮廓 绘 制 出 来 。 目 前较 为 流行 的 参 数化 绘 图 是 通 过 对 Auo A 的 二 tC D 次 开 发实 现 的 。 在 Au  ̄A 0 0平 台 上 的 开 发 工 具 主 要 有 t D 20 c VIUA IP语 言 、 D 、 X、 B 等 , 中 由 于 S L LS A S AR V A 其 VB A与其 它开 发工具 相 比, 具有 运 行 速 度快 , 发界 开
黄 秀 琴
( 州工学院 延陵学院, 苏 常州 230 ) 常 江 10 2
摘要 :用 V A 开 发 Auo A 应 有 程 序 的 方 法 ,并 通 过 一 个 实 例 ,阐 述 了 用 VB 在 B tC D A

AUTOCAD利用VBA进行二次开发

AUTOCAD利用VBA进行二次开发

利用VBA对AUTOCAD进行二次开发实例——输入螺栓参数自动生成图形①打开AUTOCAD软件②依次点击工具l菜单,选择,Macro(A),click Visual Basic Editor(B)③打开 Microsoft Visual Basic Editor 窗口.and “公共的额”,之后点击“确定”,如下图所示:.⑤点击.点击:Command:输入螺钉长度完成绘制VBA原程序Public Sub liweiwei()Set acadapp = CreateObject("autocad.application") Dim lineObj As AcadLineDim pt1 As VariantDim d As DoubleDim l As DoubleDim pt2(0 To 2) As DoubleDim pt3(0 To 2) As DoubleDim pt4(0 To 2) As DoubleDim pt5(0 To 2) As DoubleDim pt6(0 To 2) As DoubleDim pt7(0 To 2) As DoubleDim pt8(0 To 2) As DoubleDim pt9(0 To 2) As DoubleDim pt10(0 To 2) As DoubleDim pt11(0 To 2) As DoubleDim pt12(0 To 2) As DoubleDim pt13(0 To 2) As DoubleDim pt14(0 To 2) As DoubleDim pt15(0 To 2) As DoubleDim pt16(0 To 2) As DoubleDim pt17(0 To 2) As DoubleDim pt18(0 To 2) As DoubleDim pt19(0 To 2) As DoubleDim pt20(0 To 2) As Doublept1 = ThisDrawing.Utility.GetPoint(, "输入第一角点")d = Val(InputBox("所绘制螺钉的直径:”) )l = Val(InputBox("所绘制螺钉的长度:"))pt2(0) = pt1(0) + 0.4 * d: pt2(1) = pt1(1): pt2(2) = pt1(2)pt3(0) = pt1(0) + 0.4 * d: pt3(1) = pt1(1) + 1.5 * d: pt3(2) = pt1(2)pt4(0) = pt1(0): pt4(1) = pt1(1) + 1.5 * d: pt4(2) = pt1(2)pt5(0) = pt1(0): pt5(1) = pt1(1) + 0.95 * d: pt5(2) = pt1(2)pt6(0) = pt1(0) + 0.2 * d: pt6(1) = pt1(1) + 0.95 * d: pt6(2) = pt1(2)pt7(0) = pt1(0) + 0.2 * d: pt7(1) = pt1(1) + 0.55 * d: pt7(2) = pt1(2)pt8(0) = pt1(0): pt8(1) = pt1(1) + 0.55 * d: pt8(2) = pt1(2)pt9(0) = pt1(0) + 0.4 * d: pt9(1) = pt1(1) + 1.25 * d: pt9(2) = pt1(2)pt10(0) = pt1(0) + 0.4 * d + l - 1: pt10(1) = pt1(1) + 1.25 * d: pt10(2) = pt1(2) pt11(0) = pt1(0) + 0.4 * d + l - 1: pt11(1) = pt1(1) + 0.25 * d: pt11(2) = pt1(2) pt12(0) = pt1(0) + 0.4 * d: pt12(1) = pt1(1) + 0.25 * d: pt12(2) = pt1(2)pt13(0) = pt1(0) + 0.4 * d: pt13(1) = pt1(1) + 1.25 * d - 1: pt13(2) = pt1(2)pt14(0) = pt1(0) + 0.4 * d + l: pt14(1) = pt1(1) + 1.25 * d - 1: pt14(2) = pt1(2) pt15(0) = pt1(0) + 0.4 * d + l: pt15(1) = pt1(1) + 0.25 * d + 1: pt15(2) = pt1(2) pt16(0) = pt1(0) + 0.4 * d: pt16(1) = pt1(1) + 0.25 * d + 1: pt16(2) = pt1(2)pt17(0) = pt1(0) + 0.4 * d +1:pt17(1) = pt1(1) + 1.25 * d: pt17(2) = pt1(2)pt18(0) = pt1(0) + 0.4 * d + 1 :pt18(1) = pt1(1) + 0.25 * d: pt18(2) = pt1(2)pt19(0) = pt1(0) - 5: pt19(1) = pt1(1) + 0.75 * d: pt19(2) = pt1(2)pt20(0) = pt1(0) + 0.4 * d + l + 5: pt20(1) = pt1(1) + 0.75 * d: pt20(2) = pt1(2) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt1, pt2)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt2, pt3)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt3, pt4)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt4, pt5)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt5, pt6)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt6, pt7)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt7, pt8)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt8, pt1)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt9, pt10)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt10, pt11)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt11, pt12) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt13, pt14) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt14, pt15) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt15, pt16) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt10, pt14) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt11, pt15) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt17, pt18) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt19, pt20)End Sub。

基于VBA的AutoCAD参数化设计

基于VBA的AutoCAD参数化设计

变 量几 何 法 . 同之 处 是 用 辅 助 线 来 表 达 约 束 。 图形 比较 简 单 不 当 这 但 参 数 化 设 计 是 通 过 改 动 图 形 的 某 一 部 分 或 某 几 部 分 的 尺 和 有 规 则 时 , 种 方 法 的求 解 速 度 较 快 , 当图 形 比较 复 杂 时 , 寸 , 修 改 已定 义好 的零 件 参 数 , 或 自动 完 成对 图 形 中 相 关 部 分 的 作 辅 助 线会 增 加 作 图 的 操 作 。 响 作 图速 度 。 影 而且 要 保 证 用 辅 助 改 动 , 而 实 现 对 图形 的驱 动 。 数 驱 动 的方 式 便 于用 户修 改 和 线 定 义 图形 约 束 集 的 完 整 性 比 较 困难 。 从 参 ( ) 于关 系 的 建模 方法 5 基 设 计 。 户 在 设 计 轮 廓 时 无 需准 确 地 定 位 和 定 形 。 用 只需 勾 画 出大 以关 系 型数 据 结 构 构 造 参 数 化 模 型 是 德 国西 门子 公 司 首 先 致 轮 廓 , 后 通 过修 改标 注 的尺 寸 值 来 达 到 最 终 的形 状 , 者 只 然 或 需 将 零 件 的关 键 部 分 定 义 为 某 个 参 数 .通 过 对 参 数 的修 改 实 现 提 出来 的 。 在系 统 内 .关 系 可 建 立 在 所 在 系 统 能 识 别 的对 象 之 也 这 对 产品 的设 计 和 优 化 。 数 化 的 含 义有 两 种: 计 参数 化和 图形 间 , 可 在 任 意 大 的模 型 中 建立 任 意 复 杂 的 关 系模 型 , 种 关 系 参 设
参 数 化 。设 计 参 数 化 对 应 于产 品 的设 计 过 程 . 特 点 是 : 制 产 的建 立 过 程 是 以 符合 设 计 师 设 计 习惯 的 、非 常简 便 自然 的方 式 其 控 品 的参 数 在 整 个 设 计 过 程 中其 数 目 、数 值 和 类 型 都 不 断 发 生变 进 行 的 关 系模 型 的建 立 能 方 便 地 进 行 修 改 以适 应 不 同用 户的 从 化 , 设计的某一时刻还有可能发生参数转换 , 在 即控 制 参 数 由一 特殊 要 求 . 而 大 大 提 高设 计 速 度 。 组 变 为 另一 组 。 图形 参 数 化 对 应 于 最 终 产 品 或 某些 常用 零 部 件 。 ( )知 识驱 动 的智 能 化 设 计 6 此 时控 制 参 数 只有 数 值 变 化 .不 存 在 参 数 类 型 和 整组 控制 参 数 知识 驱 动 的基 本 思 想 是 要 寻 求 、 录 不 同类 型 知 识 的方 法 , 记 的 转换 。 这 些 知 识 用 来 策 划 、 计 和 完 成一 种 产 品 、 目或 工 程 , 将 人 设 项 是 包括 知识 库 、 知识 规 则 、 辑 推 理 等1 C X 集 成 系 统有 逻 与 A 近 十 几 年 来 . 因为 参 数 化 设 计 在 工程 实 际 中 有 广 泛 的 应 用 工智 能 价 值 . 内外 从 事 C D研 究 的专 家 学 者 对其 投 入 极 大 的 精 力 和 机 地结 合 为一 体 。 知 识 库 必须 储 存 大 量 专 家 的 经 验 、 识 及 已 国 A 但 知 热 情进 行研 究 。 方 法 上 做 了大 量 的 研 究 和 尝 试 , 得 了重 大 成 知 的 事 实 和采 用 这 些 知 识 的 规 则 .并 且 知 识 库 中 的 知 识 数 据 能 从 取 果 。 目前 参 数 化设 计 方 法 主要 有 以下 几 种 : 够 被 推理 机制 所 采 纳 ,可 以 通 过 相 应 的 软 件 来 添 加 、修 改 和 维 ( )基 于 几 何 约 束 的 数学 方式 1 护. 因此 这 种 基 于 知识 的智 能化 设 计 仍 然 在 研 究 和 发展 中 。 利 用 尺寸 约 柬建 立方 程 组 .将 几 何 约 束 转 变 为 一 系列 以特 3 Auo . tCAD开 发 工 具 征 点 为 变 元 的 非 线 性 方 程 组 , 于 给定 的 约 束 , 过 数 值 方 法 对 通 A tC D 因为 具 有 开 放 的体 系 结 构 .允许 用 户 和 开 发 者 采 uo A 解 非 线 性 方 程 组 , 次 解 出 所有 特 征 点 的坐 标 值 。 定 出几 何 细 用高 级 编 程 语 言对 其 进 行 扩 充 和 修 改 , 二次 开 发 , 最 大 限 度 一 确 即 能 节 。 用 该 方 法 必 须 输 入 充 分 且 一致 的尺 寸 约 束 . 能 求 解 约束 地满 足 用 户 的 特殊 要 求 。其 常 用 的 二 次 开 发 语 言 有 A tLS , 采 才 uoIP 方 程 组 。 由于 非 线 性 方 程 组 求 解 过 程本 身 的不 足 . 解 稳 定性 A S O jc R 但 求 D , bet X等 。 A t IP是 一 种 嵌 入 A t A 里ห้องสมุดไป่ตู้并 运 行 A uo S L uo D C 的 问题 并 没 有 得 到根 本 解 决 .现 在 有 不 少 研 究 正 在 寻 求 提 高求 于其 中 的 、 留在 扩 展 内里 的解 释 执 行 语 言 , 有 编 程 简 单 的 特 驻 具 解 稳 定 性 的途 径 点 . 在 开 发 大项 目时 显 得 力 不 从 心 。 D 但 A S是 一 种 开 发 A t A uo D C ( ) 于几 何 推 理 的人 工 智 能 法 2 基 应 用 程 序 的 C语 言 程 序 设 计 环 境 。 A S程序 不 再 包 含 于 A t. D uo 人工智能的发展 。 促进 了参 数 化 设 计 方 法 的 发 展 。 生 了 几 C D 内 部 。 与 A t A 之 问 并 不 直 接 通 信 。 是 以 A tLS 产 A 它 uC D o 而 uoIP 何 推 理 法 。 这 种 方 法 又有 两 个方 面 : 是 建 立 在 专 家 系 统 的 基 为 中介 联 系 起 来 的 , 就 摆 脱 了 A t A 的约 束 , 有 很 大 的 一 这 uo D C 具 础上 , 用谓语表示几何约束 , 采 通过 推理 机 制 导 出 几 何 细 节 。这 灵 活 性 .其 缺 点是 不 适 应 当 前 可 视 化 编 程 的需 要 。 执 行 O j ̄ b . o 种 方 法 可 检 验 几 何 约 束 模 型 的 合 理 性 并 能 处 理 局 部 修 改 . 系 tR 应 用 程 序 所 需 系 统 开 销 最 小 。 度 最 快 。 是 开发 过 程 相 但 A X 速 但 统 庞 大 , 递 归 约 束 无 法 处 理 。二 是 扩 展 现 有 的 数 据结 构 , 其 当 复 杂 。A t IP运行 速 度 不 快 , 发 界 面 单 调 且 不 友 好 ;D 对 使 uo S L 开 AS 包 含 拓 扑 信 息 .并 通 过 程 序 实 现 从 几 何 约 束 到 几 何 细 节 的推 是建 立 在 C语 言 基 础 上 的 。而 C语 言 是 面 向 d w o s编程 的 , 理 。 由于 在 �

基于VBA的AutoCAD参数化绘图

基于VBA的AutoCAD参数化绘图

·
·
″定义面域 。
D im regionObj A s Variant regionObj = ThisD raw ing. ModelSpace. AddRegion
(CircleV ) ′拉伸生成该段 3D实体对象 。 D im solidObj A s Acad3DSolid Set solidObj = ThisD raw ing. ModelSpace. AddEx2
步长所对应角度的弧度值 ) 。 tgβ= t/2·pi·r (β为螺旋升角 ) 当 z = t时 : k = t /2·pi
图 1 弹簧几何参数关系图
2. 3 编 程 ( 1) 创建对话框界面 [4, 5 ]启动 Auto CAD (这里用的是
2002) ,单击“工具 /宏 /V isual Basic编辑器 ”,打开 VBA IDE窗 口 。单击“插入 /用户窗体 ”,即可设计出对话框界面 。
solidObjMN = solidObjM. A rrayRectangular ( 1, 1, n,
0, 0, t) ZoomA ll ′显示最大图形 (可不要 ) 。
End Sub
图 2 弹簧参数输入对话框
·101·
© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved.
Auto CAD 是一种非参数化环境的绘图软件 ,通常用户是 通过一个个交互式的绘图命令来完成绘图工作 。当产品已经 系列化 ,很多基础零件图形比较复杂 ,但形状相似 (拓扑关系 相同 ) ,只是几何参数大小不同时 ,每次都用人机交互的方式 一笔一笔地绘出 ,是很麻烦的事情 。Auto CAD 提供的二次开 发语言 V isual lisp、VBA、ObjectARX等都可很好地解决这个问 题 。 [ 1, 2 ]

在AutoCAD2000中利用VBA进行轴的参数化设计

在AutoCAD2000中利用VBA进行轴的参数化设计
A t A 在工 程设 计 与 制 图 中 已被 广泛 应 用 , uo D C 作 为 目前 最 流 行 的 工 程 图 形 处 理 软 件 , 有 简 单 、 便 、 具 方 应 用 领域 广 、 形编 辑 能 力 强等 特 点 , 在数 据 处 理 图 但
及 二 次 开 发 的 需 要 , u ds A t ek公 司 推 出 的 A tC D 00 o uo A 2 0
张 菊 : Au C D 0 0中利用 V A进行 轱 的参数 化设 计 在 t A 20 o B 6 3
V B的 子 集 身 份 出 现 的 , VB有 着 几 乎 相 同 的 开 发 环 与
境 和 语 法 , 能 强 大 , 单 易 学 。 它 驻 留 在 主 程 序 内 文件 名 , 击 【 功 简 点 确定 】 。
部 , 其结构 简单 , 码 运算 效率 高 。 尤其 适 合 专 业 使 代
在 A tC D 0 0中利 用 V A uo A 2 0 B 进 行 轴 的参 数 化 设 计
张 菊
( 渤海 船舶 职 业学院 , 辽宁 葫 芦岛 15 0 ) 20 5
[ 摘
要 ] 轴 作为 一 个非 标 准件 , 设计 和 绘 图 中 大量使 用。对 轴 的 参数 化 设计 , 以 方便 在 可
优 化 用 数 据 库 的 支 持 和 尺 寸 驱 动 原 理 , 尺 寸 变 .利 使 化 自动 转 化 成 几 何 形 状 的 变 化 , 接 输 出 图 形 , 而 直 从 提高 了设计 质量 和绘 图效率 。

三 、 的 参 数 化 编 程 轴
轴 的绘 制 由轮廓 形状 和轴 心线 两 部分 组成 , 程 编 时 轮廓 形 状 模 块 记 作 A i x s模 块 ; 心 线 模 块 记 作 e 轴

基于VBA的Autocad中实现参数化标准零件的绘图

基于VBA的Autocad中实现参数化标准零件的绘图

1参数化绘图程序设计 思想及 设计 过程 .
在机械设计绘图中 . 需要大量用到标准件 . 如果将相同的 零件不停的重复绘制 . 会降低制图效率 . 因此块的产生很 好的 解 决 了这 个 问题 将 不 同 的标 准 零 件储 存 为 块 的形 式 . 要 时 需 直 接调 用 块就 可 得 到相应 的标 准件 图 然 而相 同 的标 准件 根据 国家标 准 . 有不 同 的型 号 . 果 将 每 个 型 号 的零 件 图都 储 存 具 如 为块 的形式 . 占用 大量 的 系统 资 源 . 绘 图带 来 不便 . 引 会 给 因此 入参 数 化设 计 的标 准零 件 图绘 制 本 文 利用 V A实 现 参数 化 标 准零 件 开 槽 圆柱 头 螺钉 的绘 B 图设 计 . 计 的主 要流 程如 图 1 示 : 设 所
表 1
对 A cs 数据库或其它的 F xr、 e i e ces oPoB te 等外部数据库进行 rv 访 问和 管理 . 可 以使 用 S L语 句 对数 据 库 进 行 榆索 [ 在螺 还 Q 2 1 。 钉 的 绘制 中建立 数 据库 “ 钉 .d ” 的方 法 如 下 : 螺 m b表
P lcl o n ti g ub i u dig AsS rn Di a o n m d Co AsCo e t nn ci on Di a RsAsRe o dst m do e r e
D m nr c d er D i e t AsA a [ n e y i v

壤 潮 圄
t■M
■H
● — — — — 一

i— ——~
— — — 一

i— —— ~ ^ —— —~
nr — —— 一

用VBA对AutoCAD进行定制与开发

用VBA对AutoCAD进行定制与开发

在计算机技术飞速发展的今天,Auto-CAD已成为最成功的计算机辅助设计系列软件平台之一,该软件得到了极为广泛的应用。

这不仅是因为它界面友好、功能强大、支持的平台多、外设广,更主要的原因是它具有开放的体系结构,AutoCAD允许用户和开发者在几乎所有方面对其进行扩充与修改(即进行定制与二次开发),满足用户的特殊要求。

AutoCAD是一个计算机辅助设计、绘图软件,具有普遍性,可广泛适用于机械、电子、建筑等多种领域。

各个行业有自身特点,这就要求对AutoCAD进行针对性的定制与开发,以满足不同领域和不同行业的需求。

AutoCAD可通过AutoLISP、ADS、VBA等许多编程环境进行开发。

每种编程环境都有各自的特点。

本文采用VBA编程环境,是因为:1、在AutoCAD中采用VBA有四大优点:*VisualBasic编程环境易于学习和使用。

*VBA可与AutoCAD在同一进程空间中运行。

这使程序执行速度非常快。

*对话框的构造快速而有效。

开发人员可以构造原型应用程序并迅速收到设计的反馈。

*工程可以是独立的,也可以嵌入到图形中。

这样就为开发人员提供了非常灵活的方式来发布他们的应用程序。

2、AutoCADActiveX/VBA接口表现出超出其他AutoCADAPI环境的许多优点:*速度当与VBA在同一进程空间中运行时,ActiveX应用程序比AutoLISP和ADS应用程序运行速度快。

*易于使用其编程语言和开发环境易于使用,而且随AutoCAD安装。

*Windows互操作性ActiveX和VBA设计具有互操作性,可与其他Windows应用程序共同使用,并为应用程序之间的交流提供了绝佳的途径。

AutoCADActiveX使用户能够从Auto-用VBA对AutoCAD进行定制与开发胡进寿(天水风动机械有限责任公司,甘肃天水741020)摘要:以机械行业计算机绘图(零件图或装配图)中需要的图幅大小、图幅比例、标题栏、明细表等要素的特殊制定与开发为例,介绍如何对AutoCAD进行初始设置,建立模板文件,定义属性块;如何定义、修改AutoCAD的图标菜单和下拉菜单;如何通过ActiveX(r)Automation接口显示AutoCAD(r)对象以及使用VisualBa-sicforApplication(缩写为VBA)编程环境,对AutoCAD进行二次开发;关键词:VBA,AutoCAD,定制;开发中图分类号:TP311文献标识码:BCAD的内部或外部以编程方式来操作Auto-CAD。

电气绘图cad教学资料第7章autocadvba开发技术

电气绘图cad教学资料第7章autocadvba开发技术
根据电气元件规格参数,自动 调整绘图尺寸和样式。
图纸审查
通过VBA编写自动化检查脚本 ,确保电气图纸的规范性和准
确性。
05
autocad vba开发常见 问题与解决方案
autocad vba常见错误及解决方法
错误提示
"对象变量或With块变量未设置"
解决方法
确保在操作对象之前已经正确地 设置了对象变量。
电气绘图cad教学资 料第7章 autocad
vba开发技术
目录
• autocad vba基础 • autocad vba开发技术 • autocad vba开发实例 • autocad vba开发进阶 • autocad vba开发常见问题与解决方案
01
autocad vba基础
vba编程语言简介
01
自定义工具栏
使用VBA可以创建自定义的工具栏按钮, 通过点击按钮来执行相应的绘图命令或 宏。
02
03
自动化校核
利用VBA编写校核程序,可以对已绘 制的电气图进行自动化校核,检查是 否存在错误或遗漏。
04
autocad vba开发进阶
autocad vba高级编程技术
自定义属性
使用VBA为AutoCAD对象添加自定义属性,实现更灵活的数据管理。
错误提示
"方法或属性引用无效"
解决方法
仔细检查代码,确保语法和逻辑 没有错误。
错误提示
"程序代码错误"
解决方法
检查引用的方法和属性是否正确 ,以及对象是否支持该方法和属
性。
autocad vba性能优化技巧
技巧一
使用合适的数据类型,避免使用Variant 类型,因为它会增加内存占用并降低性能。

VBA二次开发 AutoCAD实现参数化绘图论文

VBA二次开发 AutoCAD实现参数化绘图论文

VBA二次开发 AutoCAD实现参数化绘图论文摘要:硝化曝气生物滤池的参数化设计系统,实现了自动绘制其平面图,达到节省设计与绘图时间,提高效率的目的。

该软件通过模块的建立更加灵活化,可据设计院的具体要求进行灵活改动,使该系统的实用性更强。

0 引言AutoCAD是集平面绘图、编辑图形以及三维绘图等功能于一体的、目前为止在世界上应用最广泛的CAD软件【1】。

在给排水工程的设计中,许多构筑物的设计是改变设计参数,进而相关尺寸进行改变。

针对当前水处理构筑物硝化曝气生物滤池的设计,对CAD进行二次开发,达到直接绘图和修改的目的。

1 AutoCAD二次开发及VBA概述AutoCAD 的二次开发就是把商品化、通用化的CAD系统用户化、本地化的过程,即以优秀的CAD系统为基础平台,研制开发出符合标准、适合实际应用的用户化、专业化、集成化软件【2】。

AutoCAD二次开发的主要目的是提高工作效率,使常用的重复的任务自动化。

二次开发要遵循工程化、模块化、标准化和继承性等原则。

标准化是开发的基础;工程化应按软件工程学的方法和步骤进行;模块化是将整个系统分解成若干个子系统或模块;继承性原则是在已有软件基础上根据实际需要而进行的再开发【3】。

VBA技术具有的主要功能及特点:提供强大的窗体创建功能;创建新的工具条;提供建立类模块的功能;具备完善的数据访问与管理能力【4】。

2 参数化绘图及其实现方法参数化绘图即参数化编程,主要适用于图形结构基本固定而结构尺寸参数变化的图形。

参数化绘图本质就是将图形信息记录在程序中从而进行图形绘制。

其实现的主要步骤:一、确定对象的几何参数,绘制几何关系图;二、分析图形的拓扑关系和几何关系,确定所需输入的结构参数;三、用相应的编程描述语句来建立图形的参数化模型;四、用相应算法编制程序,调试并运行。

3实现参数化绘图程序设计实例曝气生物滤池是集接触氧化和过滤于一体的工艺,是普通生物滤池的一种变形。

基于VBA模式开发的参数化绘图软件

基于VBA模式开发的参数化绘图软件

CEMENT TECHNOLOGY2021/3摘要:介绍了冷却器液压控制柜参数化绘图软件开发的原理和方法。

通过优化绘图,建立VBA代码,进行CAD软件的二次开发,实现了设备图的参数化绘制,提高了绘图工作效率,减少了重复工作量。

该软件也可用于其他设备和工艺图的绘制工作。

关键词:液压控制柜;参数化绘制;代码构建;绘制效率中图分类号:TQ172.622.4文献标识码:B文章编号:1001-6171(2021)03-0072-05D01:10.19698/ki.l001-6171.20213072Parametric Drawing Software Based on VBASHAO Yankun,GAO Zhiliang(Sikomn(Tianjin)Control Engikeering Co.Ltd.,Tianjia300400,Chinn) Abstract:The poncipie ank metdoO of develooing parameteOzed drawing softwaro foo hydraulic control cabinet of cooleo aro introOuced.By oftimizing tde drawing,estabOshing tde VBA code,and tde secood develoomevi of the CAD software,the parameteozed drawing of the equipment drawing is realized,and the drawing efficieeca is improvee,and the reeeatee workloan is reeucee.The soowaro can also be usee foo otheo equipment and procest drawing woO.Key words:hydranUc cootno parametrle drawing;code building;drawing etcieeca/前言当前,参数化绘图已成为工业领域的主流绘图方式之一,参数化绘图水平体现了企业的设计实力。

基于AutoCADVBA的滚筒参数化绘图系统开发

基于AutoCADVBA的滚筒参数化绘图系统开发
图时 ,采用可编 程对话框 交互选择 , 接插入 图形 。 直
3 界面设计。界面设计中用到的标准控件均 )
来 自 V A 系统 。本设 计选 取 滚筒直 径 、皮带 宽度 、 B
滚 筒 宽 度 和 滚 筒 厚 度 为基 本 参 数 ,默认 以 毫米 为 单 位 ,实 现 滚 筒 的参 数 化 绘 图。该 程 序 各按 钮 莱
对 象 的创建 与 引用包 含 3 步骤 : 个 ()用 Ad 对象 来创 建命 名块 ; 1 d块 ()添加 实体对 象到 块对 象 中 ; 2
( )用 Isr lc 引用该 块至 任伺地 方 。 3 net o k块 B 接下 来 我们介 绍一 下整 个程 序的设 计过 程 。 打 开 Auo a 件 ,运行 V sa B s 编 辑器 , tcd软 i l ai u c 按 以下 步骤 进行编 程 :
码段。
5 )线型 的创 建
在 不 同 图层 上 ,一 般 要 设 置 不 同 的 线 型。 L ntp iey e为 线 型 对 象 ,是 线 型 的 集 合 。 每 一 个 图 形 文 件 , 系 统 自动 创 建 三 个 线 型 对 象 : ya e B lyr
( 层 ) yl k ( 块 )和 C ni o s 连 续 随 、B b c 随 o ot u u ( n 线 , 默 认 值 ) 如 果 要 使 用 其 它 线 型 , 首 先 要 。 L a ie p o dLn t e对 象 装载 线 型 ,然 后将 已装 载 线 型 y
置 为 当前 线 型。 线 型 必 须 存 在 于 LN 库 文 件 中。 I
Auo AD 自带线 型存放 于 AcdLn文 件 中。 tC a .i
2 通 用 库设 计 。 对 于 标 题栏 、形 位 公差 、焊 )

用VBA开发在AutoCAD中实现参数化绘图的系统

用VBA开发在AutoCAD中实现参数化绘图的系统

用VBA开发在AutoCAD中实现参数化绘图的系统
马伏波
【期刊名称】《机床与液压》
【年(卷),期】2004(000)001
【摘要】通过对轴线相交的圆柱体和圆锥体数学模型的研究,建立了展开曲线方程.用VBA语言编制了通用的计算机程序,将展开图在AutoCAD2000上绘制,该方法具有快速、准确、修改方便的特点.
【总页数】3页(P95-96,41)
【作者】马伏波
【作者单位】安徽理工大学机械系,安徽,淮南,232001
【正文语种】中文
【中图分类】TP391.75
【相关文献】
1.利用VBA在AutoCAD2000中实现参数化绘图 [J], 黄秀琴
2.基于AutoCAD VBA的V型滤池参数化绘图系统的设计 [J], 尹士君;王先田;孙梦秋;王小侠;施胜焓;康健
3.用VBA在AutoCAD中开发参数化绘图系统 [J], 武妍;闫宏印
4.用VBA在AutoCAD中实现参数化绘图 [J], 曹亚斌
5.基于VBA的AutoCAD二次开发在巷道断面参数化建模中的应用 [J], 张杰因版权原因,仅展示原文概要,查看原文内容请购买。

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

VBA开发AUTOCAD实现参数化绘图王若慧Realizing The Parameter-Drawing taking the VBA and AUTOCAD(.山西大学工程学院,山西省太原,030013)Wang Ruo HuiEngineering Colledge of SHANXI University, Taiyuan 030013)摘要: 介绍了采用VBA(Visual Basic for Application)进行AutoCAD2005的二次开发,应用AutoCAD ActiveX Automation 接口技术访问AutoCAD对象,采用ADO实现AUTOCAD与Microsoft Access2000的数据通信,实现程序参数化绘图的基本思路及程序设计流程.关键词:VBA AutoCAD ActiveX Automation ADO 参数化绘图Abstract:Taking the ActiveX Automation of VBA and AutoCAD2005 to access the AutoCAD drawings, and the ADO to make the data communication between the AUTOCAD and ACCESS , the parameter-drawing can be well realized in the way what is described in the article .Key words:VBA AutoCAD ActiveX Automation ADOthe parameter-drawing引言:传统的人机交互式绘图一般需要用精确的尺寸值定义几何元素,输入的每一条线都必须有确定的位置,图形一旦建立,即使结构相似但想改变图形大小尺寸,只能对图形进行编辑。

而在工程设计中,一方面,进行新产品设计时不可避免地需要多次反复修改,需要进行多方面的综合协调和优化;另一方面,许多的专业图纸设计中,很多图形结构具有一定的相似性,往往只是尺寸的大小不同,其图形随尺寸参数的变化而相应变化。

因此,希望有一种比交互式绘图更方便、更高效、更适合结构相似图形绘制的方法.为了解决这个问题,我们可研制出一种绘图软件,图中尺寸参数通过交互方式输入,随后通过运行有关程序,确定所有的绘图信息,自动绘出图形,这种工作方式通常称为程序参数化绘图.这就是参数化绘图要解决的问题,同时它也是CAD系统很重要的一个环节.1.程序参数化绘图的实质程序参数化绘图主要适用于图形结构形式基本固定而结构尺寸参数变化的图形。

程序参数化绘图的实质,就是将图形信息记录在程序中。

图形的描述通常可分为:图形的拓扑关系、图形的几何参数以及这些几何参数与图形结构参数之间的联系。

通常用一组变量记录图形的几何参数,用一系列的赋值语句表达几何参数与结构参数之间的关系,然后用一系列的调用语句来描述图形的拓扑关系。

如图1所示图形的几何参数是四个点的坐标(x1,y1),(x2,y2),(x3,y3)和(x4,y4),结构参数是两个尺寸a和b。

这些参数之间的关系为:x1=x4;y1=y2;x2=x3;y3=y4;x2=x1+a;y3=y1+b。

(x4(x1,y1y2)图1 图形的描述2. 程序参数化绘图的实现途径为了实现参数化绘图,需要建立一个计算机图形软件系统.应用这个系统可以简化图形设计应用程序的编制,并能方便地应用计算机程序实现图形地输入和输出.建立一个图形系统可以有三种方式:(1)设计专用图形语言.(2)修改高级程序设计语言,使其具有图形处理的功能.(3)建立图形设计程序包.前两种方式都需要用低级或高级语言重写一个编译器.一般来说,修改或者重写一个编译器的工作量比较大,而且图形设计过程并非简单的数据处理过程,还包括许多文件结构和存贮结构的问题,从而使上述工作的复杂性大大增加.有些绘图软件配有内部专用绘图语言,如AutoCAD配有AutoLISP编程语言,DDM/DIMENSION3图形软件配有DAL绘图语言等,利用这些语言用户可以开发参数化绘图软件.但是这些语言的数组,循环,函数,逻辑关系等功能一般较差,不宜作大量的计算工作,编程也不太方便.第三种方式即建立图形设计程序包,其基本思想是选择一种合适的高级程序设计语言作为主语言,在此语言中扩展一系列的过程调用,以实现图形设计工作.在这种情况下,用户编写的图形描述程序由两部分组成:一是主语言语句,另一个是主语言中扩展了的过程调用语句.在扩充某种高级语言使其具有图形处理功能时,最好能利用已有的较成熟的图形软件.3. 程序参数化绘图的技术路线要实现程序参数化绘图程序的编制, 本文采用AutoCAD2005为绘图支撑软件,采用VBA(Visual Basic for Application)进行AutoCAD2005的二次开发,运用AutoCADVBA实现参数化绘制工程图纸.3.1 AUTOCAD2005简介1.AutoCAD是当今最流行的二维绘图软件, AutoCAD有强大的二维功能,如绘图、编辑、剖面线和图案绘制、尺寸标注以及二次开发等功能,同时有部分三维功能。

2.尽管AutoCAD是一个非常好的通用计算机辅助绘图和设计软件系统,但每一行业和专业都有自的行业和专业标准,许多单位也有自己的技术规格和企业标准,每个设计工程师和绘图员更有各自独特的工作方式和习惯。

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

对AutoCAD进行定制和二次开发,能使AutoCAD可以更加符合用户的需求,更方便、更规范、更专业的实现设计和绘图中的应用。

AutoCAD提供的开放式体系结构正是为使用户可以根据各自的需求来改进和扩充AutoCAD的许多功能而着想的3.AutoCAD提供AutoLISP、ADS、ARX、VBA作为二次开发的工具。

在许多实际应用领域(如机械、建筑、电子)中,一些软件开发商在AutoCAD的基础上已开发出许多符合实际应用的软件,很好的实现了参数化绘制工程图纸.3.2 VBA开发AutoCAD2005采用面向对象的程序设计方法, 使用Visual Basic在AutoCAD2005 上用VBA技术进行二次开发, 能够较好地实现系统程序参数化绘图。

VBA是通过AutoCAD ActiveX Automation接口来建立和AutoCAD对象间的联系。

ActiveX是建立在COM对象模型之上的一个标准通信协议,它允许对象之间通过一定的接口相互通信。

而AutoCAD ActiveX提供在AutoCAD外控制编程的机制,通过使用AutoCAD对象,实现控制AutoCAD。

在 AutoCAD 中实现 ActiveX 接口有两大优点:•更多的编程环境可以编程访问 AutoCAD 图形。

在 ActiveX Automation 出现以前,开发人员只能使用 AutoLISP或 C++ 接口。

•与其他 Windows 应用程序(如 Microsoft Excel 和ACCESS)共享数据变得更加容易。

对象是所有 ActiveX 应用程序的主要构造块。

每一个显示的对象均精确代表一个 AutoCAD 组件。

AutoCAD ActiveX 接口中有许多不同类型的对象。

例如:•直线、圆弧、文字和标注等图形对象都是对象。

•线型与标注样式等样式设置都是对象。

•图层、编组和块等组织结构都是对象。

•视图与视口等图形显示都是对象。

•甚至图形、AutoCAD 应用程序本身也是对象。

AutoCAD对象是通过分层方式来组织的,应用程序对象为根对象。

这种分层结构的视图被归结为对象模型。

对象模型提供了用户访问下一层对象的途径,如图2所示。

图2 AutoCAD 的对象模型用户可直接通过用户定义变量引用对象。

直接引用对象,应包括对象的层次。

举一个最简单的例子,以下语句是增加一条直线到模型空间。

Sub Drawline( )’定义两个三维的数组startPoint 和endPoint Dim startPoint(0 to 2) As Double Dim endPoint(0 to 2) As Double ’定义LineObj 为直线对象 Dim LineObj As AcadLine ’定义起点startPoint(0) = 0 startPoint(1) = 0 startPoint(2) = 0 ’定义终点endPoint(0)=30endPoint(1)=20endPoint(2)=10’调用AddLine方法绘制直线Set LineObj = ThisDrawing.ModelSpace.AddLine(startPoint,endPoint) End sub4.参数化绘制图形程序的编制4.1 创建基准函数在实际工程中设计良好的底层库能够节省很多的编码量,并且有助于团体协作的实现.底层库最好在工程编码开始之前就已经完全确定.在以上创建二维对象方法的基础上,采用对系统提供的方法进行封装,创建底层函数库,即由对象的基准函数构成.,其中还包含一些常用的计算函数基准函数就是与系统提供的方法参数一致的函数,其他的函数均调用基准函数创建对象..如.创建直线基准函数的具体步骤如下:1.在AUTOCAD2004中,选择[工具/宏/VBA管理器]菜单项,在弹出的[VBA管理器]对话框中单击[新建]按钮,创建一个新的工程,然后选择该工程,单击[另存为]按钮,将其保存在适当的位置。

2.在[VBA管理器]对话框中单击[Visual Basic编辑器]按钮,进入VBA集成开发环境,选择[插入/模块]菜单项,向工程中添加一个标准模块。

3.选择[插入/过程]菜单项,选择[类型]为[函数],[范围]为[公有的],在[名称]文本框中输入Addline,单击[确定]按钮,就在当前的模块中添加了AddLine 函数。

提示: 在VB中,子程序和函数的主要区别就在于,子程序没有返回值,但函数可以有返回值,而在VBA中,宏的定义通过子程序来实现.因此我们创建底层函数均使用函数。

4.创建直线的基准函数代码为:Public Function AddLine(ByVal ptSt As Variant, ByVal ptEn As Variant) As AcadLineSet AddLine = This Drawing .Model Space .AddLine (ptSt, ptEn)End Function需要注意的是,基准函数名称与VBA中对应的方法保持一致.函数的返回值为AcadLine,输入参数为两个Variant类型的变量,分别用于表示起点和终点的位置。

相关文档
最新文档