作者:原创投稿2020-03-31 12:31分类:绘画技巧
如果让你手动画上面的五角星,小编相信即使是最最最初学CATIA软件的小伙伴,也能变着法地用各种方法画出来。
但今天我们要研究的是,如何用VBA的代码画这样一个五角星。
事实上,如果你稍作分析,就会发现这个图形简单的不能再简单了:就是5条线,并且每条线的始末点的坐标都是那样的有规律(旋转72度)。
所以现在,你只需要在Part的Body里建个草图,然后再草图编辑状态下运行下面这段代码(绿色为注释,蓝色为代码),就可以实现上面动图的效果。
(如果你是刚入坑,还不知道怎么运行代码的小伙伴,可以点文章底部的阅读原文,看看视频先~)
'定义一个常量PI
Const PI = 3.1415926
Sub CATMain()
获取当前编辑的草图
Dim s As Sketch
Set s = CATIA.ActiveDocument.Part.InWorkObject
'获取草图的Factory2D对象
Dim f As Factory2D
Set f = s.Factory2D
'定义一个系数,控制图形大小
Dim Scl
Scl = InputBox("请输入五角星的大小:", , "5")
'这里循环5次,每次计算线的始末点坐标
For i = 0 To 4
a1 = i * PI / 5 * 2'第一个顶点旋转的角度
a2 = (i + 2) * PI / 5 * 2'第二个顶点旋转的角度
x1 = Cos(a1) * Scl
y1 = Sin(a1) * Scl
x2 = Cos(a2) * Scl
y2 = Sin(a2) * Scl
f.CreateLine x1, y1, x2, y2
Next
End Sub
需要注意的是,
上面的代码中,Part.InWorkObject方法,仅限于获取Body里正在编辑的草图。如果是几何图形集里正在编辑的草图,它返回的将是几何图形集。
保证当前的Part文档是单独打开的,而不是在Product下激活的Part。目前CATIA V5 VBA二次开发还没有方法获取到Product里面正在编辑的Part对象。
然后,小伙伴们,可千万不要抄一遍代码运行一下就完了啊!一定要举一反三啊!比如:
如果我想做一个用户交互界面,让用户输入边的数量和半径,然后根据输入创建正多边形,该怎么做呢?
如果我想把五角星中间相交的部分去掉,只留外面的轮廓(这样就可以拉伸了),该怎么做呢?
如果我想得到下面的实体,又应该怎么做呢?
本文网址:http://www.minghua.org/article/442.html
文章原创,转载务必注名出处,否则后果自负!