如何用VBA的代码画这样一个五角星。

作者:原创投稿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对象。

然后,小伙伴们,可千万不要抄一遍代码运行一下就完了啊!一定要举一反三啊!比如:

如果我想做一个用户交互界面,让用户输入边的数量和半径,然后根据输入创建正多边形,该怎么做呢?

5dad332c60d5eb03.jpg

如果我想把五角星中间相交的部分去掉,只留外面的轮廓(这样就可以拉伸了),该怎么做呢?

如果我想得到下面的实体,又应该怎么做呢?


本文网址:http://www.minghua.org/article/442.html
文章原创,转载务必注名出处,否则后果自负!
发表评论