AutoCAD二次开发基础(一):基础使用

这篇具有很好参考价值的文章主要介绍了AutoCAD二次开发基础(一):基础使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

AutoCAD二次开发系列


前言

  • 在船舶与海洋工程专业中,经常会涉及到依据型值表绘制型线图、从型线图中读数据点用作三维建模基础数据、绘制静水力曲线图等等,这些过程往往伴随着大量简单重复性的工作,全手工绘制费时费力又无意义。AutoCAD为上述过程常用的一款绘图软件,通过其内置的VBA,运用代码代替手工进行部分工作。

一、VBA简介

  • VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。它也可说是一种应用程式视觉化的 Basic 脚本。

二、AutoCAD中使用VBA

1.简单使用

打开AutoCAD,输入VBAMAN调出VBA管理器,进入Visual Basic编辑器,从“视图”菜单里进入代码窗口,输入如下代码:

Sub test()
MsgBox("VBA test")
End Sub

返回AutoCAD,按下Alt+F8,选择运行刚定义的过程,执行结果如下:
AutoCAD二次开发基础(一):基础使用

2.常用图元

AutoCAD中常用图元(统称实体Entity,区别于AcadEntity)在VBA中类型名称为:

​类型名称 含义 ​类型名称 含义
AcadEntity 实体 AcadLine 直线
AcadRegion 面域 AcadArc 圆弧
Acad3dSolid 实体 AcadXLine 射线
AcadText 文本 AcadSpline 样条曲线

​绘制一条过 (0, 0) 与 (200, 100) 的直线:

Sub createLine()  ' 定义名为createLine的过程
Dim Line_1 As AcadLine  ' 定义名为Line_1的AcadLine类型
Dim point_1(2) As Double  ' 定义名为point_1的double类型的三维数组
Dim point_2(2) As Double
point_1(0) = 0  ' 将 (0, 0) 点的x坐标值赋给point_1的第一个元素
point_1(1) = 0
point_2(0) = 200
point_2(1) = 100
ThisDrawing.ModelSpace.AddLine point_1, point_2  ' 在当前活动的CAD页面绘制直线
End Sub  ' 过程定义结束

运行上述函数,即在CAD活动页面中创建了一条过固定点的直线。如看不到绘制结果,可点击“范围缩放”让绘制的图形以最大缩放范围显示在视图中心。

​绘制一条过 (0, 0) 、 (100, 200) 与(200, -100)的样条曲线:

  • 首先应明确点数组的定义及使用:
Dim Pta(0 to 3*n-1) as Double  ' 包含n个点的名为Pta的数组
'第i个点的x坐标:Pta(i*3)
'第i个点的y坐标:Pta(i*3+1)
'第i个点的z坐标:Pta(i*3+2)
  • 绘制上述样条曲线:
Sub CreateSpline
Dim sT(2) as double  ' 定义三维数组存放样条曲线起点端切量
Dim eT(2) as double  ' 定义三维数组存放样条曲线终点端切量
Dim pta(3*3-1) as double  '定义包含3个点的数组
pta(3) = 100 : pta(4) = 200  ' 第二个点的x和y坐标赋值(第一个点不赋值默认为0)
pta(6) = 200 : pta(7) = -100  ' 第三个点的x和y坐标赋值
ThisDrawing.ModelSpace.AddSpline pta, sT, eT  '绘制样条曲线
End Sub

绘制结果:
AutoCAD二次开发基础(一):基础使用

3.选择实体

拾取图纸上的直线并在命令行输出其端点x坐标:

Sub outPutLineEnd()
Dim ln AS AcadLine
ThisDrawing.Utility.GetEntity ln, p1, "选择一条直线"  ' ln(返回值): 选中的直线, p1(返回值): 做选择时点的位置
ThisDrawing.Utility.Prompt ln.StartPoint(0) ' 命令行输出所选直线的起点x坐标
End Sub

拾取点:

Sub getPoint()
Dim p1(2) as double
rp = ThisDrawing.Utility.getPoint(p1, "选择一个点")  ' p1为参考点
ThisDrawing.ModelSpace.AddPoint rp  ' 绘制所选择的点
End Sub

多选实体(一般按以下步骤):文章来源地址https://www.toymoban.com/news/detail-440075.html

  • 定义选择集
  • 将选择集添加至图形数据库
  • 执行选择命令
  • 删除选择集
Sub mutiSelect()
On Error GoTo toExit  ' 发生异常则跳转至toExit
Dim ss1 as AcadSelectionSet  ' 定义选择集
Set ss1 = ThisDrawing.SelectionSets.Add("set")  ' 将选择集添加至图形数据库
ss1.SelectOnScreen  ' 执行选择命令,选择完成后按回车结束选择状态
For Each element in ss1
	element.Color = acYellow  ' 将选中的实体的颜色改为黄色
Next
ss1.Delete
toExit:
End Sub

到了这里,关于AutoCAD二次开发基础(一):基础使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python与CAD系列基础篇(一)操作AutoCAD与读写CAD文件

    对于Python与CAD进行联动而言,首要的就是建立Python与AutoCAD软件的连接以及操作CAD文件。 作为本系列文章的开篇,将介绍:①如何通过python连接到AutoCAD软件;②如何使用python进行cad文件的读写。两者的区别是①通过win32com.client或pyautocad连接AutoCAD进行处理(需要AutoCAD软件,可

    2024年02月04日
    浏览(44)
  • vue前端开发自学,插槽练习第二次,name属性的使用

    vue前端开发自学,插槽练习第二次,name属性的使用!可以使用name属性,来自定义一个名字,这样,就可以在一个组件内同时出现多个插槽的内容了。在子组件内接收的时候,很简答,只需要在slot标签里面加上name=“mz”; 下面看代码。 这个内容是app.vue入口文件的内容源码。下面

    2024年02月02日
    浏览(52)
  • xmind2testcase使用与二次开发

    xmind2testcase安装、简单二次开发与使用说明: 添加xmind文件备份 重构生成CSV文件 preview预览页面数据显示重构 一、安装 1.xmind2testcase安装 pip install xmind2testcase 2.启动服务 进入默认位置:C:UsersdellAppDataRoamingPythonPython38Scripts,打开cmd命令窗口,执行命令xmind2testcase.exe webtoo

    2024年02月06日
    浏览(38)
  • 【NX】NX二次开发BlockUI集列表的详细使用步骤

    最近使用NX二次开发,需要用到集列表,也就是SetList这个控件,然而网上相关的资料和范例实在是太少,有幸找到《NX二次开发-BlockUI集列表的使用技巧》和《UG(NX)二次开发 BlockUI 集列表使用方法》,这两篇文章,对我的帮助很大,但是因为使用的编程语言不同(我使用的

    2024年02月03日
    浏览(35)
  • C# Solidworks二次开发:自动创建虚拟零件及使用注意事项

    今天要讲的是关于在solidworks中如何自动创建虚拟零件的功能,也就是solidworks中插入新零件这个功能。 实现这个功能需要使用的API如下所示: InsertNewVirtualPart(swFaceOrPlane1, out swcomp2); 其中这个方法中使用到了两个参数。 第一个参数:为一个平面,或是一个基准平面。 第二

    2024年02月15日
    浏览(60)
  • 使用通用MCU实现无人机飞行任务的快速二次开发

    无名小哥 2024年1月1日 传统飞控二次开发方法和主要存在的问题简介 通过对前面几讲中《零基础竞赛无人机积木式编程指南》系列开发教程的学习可知,在以往TI电赛真题的学习训练方案中飞行任务代码开发主要集中在Substask_Demo.c和Developer_Mode.c两个程序文件, 其中在Substask

    2024年02月02日
    浏览(42)
  • UG\NX二次开发 使用录制功能录制操作记录时,如何设置默认的开发语言?

    文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,CC++,Qt-CSDN博客 NX二次开发使用BlockUI设计对话框时,如何设置默认的代码语言?   依次打开“文件”-“实用工具”-“用户默认设置”-“用户界面”-“操作记录”-“C++”。       

    2024年02月11日
    浏览(41)
  • [游戏开发][Unity]Assetbundle打包篇(5)使用Manifest二次构建资源索引

    打包与资源加载框架目录 正文开始前,先把打包代码放过来,请注意,前面的代码已省略,自己去对比前面的文章。本篇文章从第一次执行打包代码开始。 第一次调用BuildPipeline.BuildAssetBundles打包API后(详见代码第七行),会返回AssetBundleManifest的引用, 【疑问】: BuildPipe

    2024年02月03日
    浏览(35)
  • UG\NX二次开发 使用throw重新抛出异常

    文章作者:里海 来源网站: https://blog.csdn.net/WangPaiFeiXingYuan         在异常处理代码中,可以使用 throw 来抛出异常。如果希望在捕获异常后重新抛出该异常,可以使用类似以下的代码:         在 catch 块中,先对异常进行处理,例如记录日志、修复问题等。

    2024年02月16日
    浏览(44)
  • C# Solidworks二次开发:向量相关的数学函数API的使用介绍

    今天要讲的是Solidworks二次开发时候,如何使用一些与数学相关的API方法的介绍,在Solidworks中本身提供了一个函数用于对数学对象的访问,函数名为MathUtility。借助这个函数,我们来引出今天要介绍的几个API。 (1)创建向量的函数API,CreateVector(); 这个方法需要传入的参数

    2024年02月15日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包