Sub CreatesTriangleY()
'小圆点阵组成三角形
CorelDRAW.ActiveDocument.Unit = cdrMillimeter
'设置毫米单位
Dim s1 As Shape ' 声明一个Shape类型的变量s1,用于存储创建的小圆。
Dim s1R As New ShapeRange ' 声明一个ShapeRange类型的变量s1R,用于存储创建的一系列小圆。
Dim startX As Double ' 声明一个Double类型的变量startX,用于存储小圆的起始X坐标。
Dim startY As Double ' 声明一个Double类型的变量startY,用于存储小圆的起始Y坐标。
Dim CenS As Byte ' 声明一个Byte类型的变量CenS,用于存储层数。最大值255。
Dim CenI As Byte ' 声明一个Byte类型的变量CenI,用于循环计数。最大值255。
Dim CenY As Byte ' 声明一个Byte类型的变量CenY,用于存储层数元素基数。最大值255。
Dim j As Integer ' 声明一个Integer类型的变量j,用于循环计数。
Dim CenJ As Integer ' 声明一个Integer类型的变量CenJ,用于计算每层中间小圆的总数。
Dim PianY As Double ' 声明一个Double类型的变量PianY,用于存储偏移值。
Dim XieLcd As Double ' 声明一个Double类型的变量XieLcd,用于临时存储每层斜边长度。
Dim ResultsXb As Double ' 声明一个Double类型的变量ResultsXb,用于临时存储参数斜边长度。
Dim inX As Double ' 声明一个Double类型的变量inX,用于存储每层中间小圆的X坐标。
Dim inY As Double ' 声明一个Double类型的变量inY,用于存储每层中间小圆的Y坐标。
Dim inR As Double ' 声明一个Double类型的变量inR,用于存储小圆的半径。
Dim hd45 As Double ' 声明一个Double类型的变量hd45,用于存储45度角的弧度值。
startX = 0
startY = 0
PianY = 45
inR = 5
CenS = 8
CenY = 2
hd45 = DegToRad(45)
Set s1 = ActiveLayer.CreateEllipse2(startX, startY, inR)
s1R.Add s1
For CenI = 1 To CenS Step 1
Set s1 = ActiveLayer.CreateEllipse2(startX + CenI * PianY, startY, inR)
s1R.Add s1
Set s1 = ActiveLayer.CreateEllipse2(startX, startY + CenI * PianY, inR)
s1R.Add s1
CenJ = CenI * CenY
XieLcd = DiagonalLength(CenI * PianY, CenI * PianY)
'Debug.Print XieLcd
For j = 1 To CenJ Step 1
ResultsXb = (XieLcd * j / (CenJ + 1))
inX = startX + CenI * PianY - ResultsXb * Sin(hd45)
inY = startY + ResultsXb * Cos(DegToRad(45))
'Debug.Print (XieLcd * j / (CenJ + 1)) * Cos(hd45)
Set s1 = ActiveLayer.CreateEllipse2(inX, inY, inR)
s1R.Add s1
Next j
Next CenI
s1R.Group
s1R.ApplyUniformFill CreateCMYKColor(0, 100, 100, 0)
s1R.SetOutlineProperties Width:=0
End Sub
Private Function DegToRad(ByVal Degrees As Double) As Double
' 将角度转换为弧度
Dim Pi As Double
Pi = 3.14159265
DegToRad = Degrees * Pi / 180
End Function
Private Function DiagonalLength(Width As Double, Height As Double) As Double
'利用勾股定理计算矩形对角线长度函数
Dim Diagonal As Double
Diagonal = Sqr(Width ^ 2 + Height ^ 2)
DiagonalLength = Diagonal
End Function

'小圆点阵组成三角形
CorelDRAW.ActiveDocument.Unit = cdrMillimeter
'设置毫米单位
Dim s1 As Shape ' 声明一个Shape类型的变量s1,用于存储创建的小圆。
Dim s1R As New ShapeRange ' 声明一个ShapeRange类型的变量s1R,用于存储创建的一系列小圆。
Dim startX As Double ' 声明一个Double类型的变量startX,用于存储小圆的起始X坐标。
Dim startY As Double ' 声明一个Double类型的变量startY,用于存储小圆的起始Y坐标。
Dim CenS As Byte ' 声明一个Byte类型的变量CenS,用于存储层数。最大值255。
Dim CenI As Byte ' 声明一个Byte类型的变量CenI,用于循环计数。最大值255。
Dim CenY As Byte ' 声明一个Byte类型的变量CenY,用于存储层数元素基数。最大值255。
Dim j As Integer ' 声明一个Integer类型的变量j,用于循环计数。
Dim CenJ As Integer ' 声明一个Integer类型的变量CenJ,用于计算每层中间小圆的总数。
Dim PianY As Double ' 声明一个Double类型的变量PianY,用于存储偏移值。
Dim XieLcd As Double ' 声明一个Double类型的变量XieLcd,用于临时存储每层斜边长度。
Dim ResultsXb As Double ' 声明一个Double类型的变量ResultsXb,用于临时存储参数斜边长度。
Dim inX As Double ' 声明一个Double类型的变量inX,用于存储每层中间小圆的X坐标。
Dim inY As Double ' 声明一个Double类型的变量inY,用于存储每层中间小圆的Y坐标。
Dim inR As Double ' 声明一个Double类型的变量inR,用于存储小圆的半径。
Dim hd45 As Double ' 声明一个Double类型的变量hd45,用于存储45度角的弧度值。
startX = 0
startY = 0
PianY = 45
inR = 5
CenS = 8
CenY = 2
hd45 = DegToRad(45)
Set s1 = ActiveLayer.CreateEllipse2(startX, startY, inR)
s1R.Add s1
For CenI = 1 To CenS Step 1
Set s1 = ActiveLayer.CreateEllipse2(startX + CenI * PianY, startY, inR)
s1R.Add s1
Set s1 = ActiveLayer.CreateEllipse2(startX, startY + CenI * PianY, inR)
s1R.Add s1
CenJ = CenI * CenY
XieLcd = DiagonalLength(CenI * PianY, CenI * PianY)
'Debug.Print XieLcd
For j = 1 To CenJ Step 1
ResultsXb = (XieLcd * j / (CenJ + 1))
inX = startX + CenI * PianY - ResultsXb * Sin(hd45)
inY = startY + ResultsXb * Cos(DegToRad(45))
'Debug.Print (XieLcd * j / (CenJ + 1)) * Cos(hd45)
Set s1 = ActiveLayer.CreateEllipse2(inX, inY, inR)
s1R.Add s1
Next j
Next CenI
s1R.Group
s1R.ApplyUniformFill CreateCMYKColor(0, 100, 100, 0)
s1R.SetOutlineProperties Width:=0
End Sub
Private Function DegToRad(ByVal Degrees As Double) As Double
' 将角度转换为弧度
Dim Pi As Double
Pi = 3.14159265
DegToRad = Degrees * Pi / 180
End Function
Private Function DiagonalLength(Width As Double, Height As Double) As Double
'利用勾股定理计算矩形对角线长度函数
Dim Diagonal As Double
Diagonal = Sqr(Width ^ 2 + Height ^ 2)
DiagonalLength = Diagonal
End Function
