AutoCAD VBA创建椭圆和样条曲线,代码如下。

Public Function AddEllipse(ByVal ptCen As Variant, ByVal ptmajAxis As Variant, ByVal radRatio As Double) As AcadEllipse
Set AddEllipse = ThisDrawing.ModelSpace.AddEllipse(ptCen, ptmajAxis, radRatio)
End Function
Public Function AddEllipseRec(ByVal pt1 As Variant, ByVal pt2 As Variant, ByVal angle As Double) As AcadEllipse
Dim majAxisLen, minAxisLen As Double
Dim ptCen As Variant
Dim radRatio As Double
Dim ptmajAxis(0 To 2) As Double
Dim objEllipse As AcadEllipse
majAxisLen = Abs(pt1(0) - pt2(0))
minAxisLen = Abs(pt1(1) - pt2(1))
radRatio = minAxisLen / majAxisLen
If radRatio < 1 Then
ptmajAxis(0) = majAxisLen / 2: ptmajAxis(1) = 0: ptmajAxis(2) = 0
ElseIf radRatio > 1 Then
ptmajAxis(0) = 0: ptmajAxis(1) = minAxisLen / 2: ptmajAxis(2) = 0
Else
MsgBox "参数错误,无法创建椭圆!"
Exit Function
End If
ptCen = GetMidPt(pt1, pt2)
Set objEllipse = AddEllipse(ptCen, ptmajAxis, radRatio)
objEllipse.Rotate ptCen, angle
objEllipse.Update
Set AddEllipseRec = objEllipse
End Function
Public Function GetMidPt(pt1 As Variant, pt2 As Variant) As Variant
Dim ptMid(0 To 2) As Double
ptMid(0) = (pt1(0) + pt2(0)) / 2
ptMid(1) = (pt1(1) + pt2(1)) / 2
ptMid(0) = 0
GetMidPt = ptMid
End Function
Public Function AddSpline(ByRef ptArr() As Double, ByVal vecSt As Variant, ByVal vecEn As Variant) As AcadSpline
If (UBound(ptArr) + 1) Mod 3 <> 0 Then
MsgBox "数组参数无法创建样条曲线!"
Exit Function
End If
Set AddSpline = ThisDrawing.ModelSpace.AddSpline(ptArr, vecSt, vecEn)
End Function

Sub TestElandSp()
Dim ptCen(0 To 2) As Double
Dim ptmajAxis(0 To 2) As Double
Dim radRatio As Double
ptCen(0) = 150: ptCen(1) = 150: ptCen(2) = 0
ptmajAxis(0) = 30: ptmajAxis(1) = 0: ptmajAxis(2) = 0
radRatio = 0.3
AddEllipse ptCen, ptmajAxis, radRatio
ptCen(0) = 50: ptCen(1) = 50: ptCen(2) = 0
ptmajAxis(0) = 100: ptmajAxis(1) = 120: ptmajAxis(2) = 0
AddEllipseRec ptCen, ptmajAxis, 0
Dim vec1(2) As Double
Dim vec2(2) As Double
Dim ptArr(14) As Double
vec1(0) = -1: vec1(1) = -1: vec1(2) = 0
vec2(0) = 1: vec1(1) = -1: vec2(2) = 0
ptArr(0) = 0: ptArr(1) = 50: ptArr(2) = 0: ptArr(3) = 20: ptArr(4) = 90: ptArr(5) = 0
ptArr(6) = 40: ptArr(7) = 50: ptArr(8) = 0: ptArr(9) = 60: ptArr(10) = 90: ptArr(11) = 0
ptArr(12) = 80: ptArr(13) = 50: ptArr(14) = 0
AddSpline ptArr, vec1, vec2
ZoomAll
End Sub

代码完。

基本建模失败。

AutoCAD VBA创建椭圆和样条曲线相关推荐

  1. c++ Arx二次开发创建椭圆和样条曲线

    一.本节课程 c++ Arx二次开发创建椭圆和样条曲线 二.本节要讲解的知识点 1.如何应用C++ ARX二次开发创建椭圆(对AcDbEllipse类的构造函数的直接封装和根据外接矩形来创建椭圆) 2 ...

  2. Autocad VBA初级教程

    转载自CAD世界论坛普天同庆老师的作品.深表感谢!! Autocad VBA初级教程(第一课:入门) 1.为什么要写这个教程 市面上ACAD VBA的书不多,它的帮助是英文版的,很多人看不懂.其实我转 ...

  3. AutoCAD VBA 离散高程点应用

    江苏省地质测绘院  姜法明 离散高程点应用很广,本文介绍AutoCAD VBA进行二资开发,利用离散高程点创建TIN三角形,进而绘制等高线.高程网格.地表曲面图的方法. 1.创建TIN三角形 1.1第 ...

  4. lisp自动生成界址点表_基于AutoCAD VBA增减挂钩报备坐标文件自动生成.doc

    基于AutoCAD VBA增减挂钩报备坐标文件自动生成 基于AutoCAD VBA增减挂钩报备坐标文件自动生成 摘要:生成增减挂钩报备坐标文件是一项非常繁琐的工作,会占用大量工作时间.如果利用VBA对 ...

  5. 使用AutoCAD 2021创建真实世界的土木设计项目

    由工程组织创建|最后更新日期:2021年9月 时长:7h 24m | 7节| 64节讲座|视频:1280×720,44 KHz | 大小解压后3 GB 流派:电子学习|语言:英语+中英文字幕(根据原英 ...

  6. AutoCAD VBA对齐对象

    AutoCAD VBA对齐对象,代码如下. Sub AlignEnt() Dim ss As AcadSelectionSet Set ss = CreateSelectionSet ss.Selec ...

  7. AutoCAD VBA基于对象的分层

    AutoCAD VBA基于对象的分层,讲不同对象根据特性分层,代码如下. Dim Value As Variant Value = ThisDrawing.GetVariable("cmde ...

  8. AutoCAD VBA 通过选择集 删除图层上所有对象和图层

    AutoCAD VBA 通过选择集 删除图层上所有对象和图层 '删除图层上所有对象 Function DelAllInLayer(ByVal LName As String)     'On Erro ...

  9. [转载]VBA创建数据透视表

    Sub 透视表() Dim PTC As PivotCache Dim PVT As PivotTable Dim rng As Range Set rng = Sheet1.Range(" ...

  10. 使用VBA创建数字金字塔

    各位同学数学课中肯定学习过杨辉三角形,英文名称Pascal's triangle,其实还是多种不同的类似金字塔. 接下来我们看一下如果使用VBA创建如下图所示的数字金字塔. 示例代码如下. Sub D ...

最新文章

  1. Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据
  2. elasticsearch索引结构和配置优化
  3. 2018/7/7-纪中某C组题【jzoj1494,jzoj1495,jzoj1496,jzoj1497】
  4. Web For Pentester -- File Upload
  5. javaBean和Servlet的区别
  6. css选择器位置和数量技巧
  7. 在 vue/cli 中使用 Module Federation
  8. js清理cookie
  9. 【Network In Network】Global Average Pooling(GAP)的由来
  10. 中兴盒子B860A-免拆机-线刷-第三方刷机固件及教程
  11. excel下拉列表多选框_移动Excel列表框项目
  12. 获取中文拼音或拼音首字母方法
  13. at89s51单片机是几位微型计算机,单片机原理章习题
  14. C语言日期计算器vs2022
  15. 曹鹏 其言其人 2009-06-15 17:44
  16. JS金额“分”转换成“元”,金额上万时,以万为单位
  17. 使用Qt通过Post发送Json格式数据
  18. STM32F05x移植GD32F1x0注意事项
  19. Beta冲刺-星期五
  20. 数据数据泄露泄露_通过超参数调整进行数据泄漏

热门文章

  1. 【深度学习系列】卷积神经网络详解(二)——自己手写一个卷积神经网络
  2. Python全栈之路--Django ORM详解
  3. 来教你用什么泡脚好,泡脚的好处有那些?
  4. centos7下扩充swap空间
  5. Ubuntu 14.04 无线网卡驱动安装
  6. 图片内包含文本制作方法
  7. redis发布与订阅的实现
  8. django中配置多个mongodb数据库
  9. 父子进程共享内存通信的三种方法
  10. Js中去除数组中重复元素的4种方法