【Word VBA】三葉線模様描画マクロ▽ソースコード

記事
IT・テクノロジー
HC230426A.png

Option Explicit
Option Base 0
'
Public Sub 三葉線模様描画マクロ()
    Const THLFCNXP = 100    '描画開始中心位置X
    Const THLFCNYP = 120    '        Y
    '
    Const THLFANSP = 5            '描画刻み角度
    Const THLFRATE = 15          '線の長さ倍率
    '
    Const THLFCOLS = 4           '横描画数
    Const THLFVPIT = THLFRATE * 4.5   '横間隔
    Const THLFLNWE = 1          '線の太さ
    '---------------------------------------------------------------------------
    Dim Ip As Integer, Jp As Integer
    Dim Kp As Integer, Lp As Integer
    Dim intCxp As Integer, intCyp As Integer
    Dim sngPBas(360 / THLFANSP, 1) As Single
    Dim sngPDat(360 / THLFANSP, 1) As Single
    '
    Dim sngSit As Single, sngRad As Single
    Dim sngRds As Single
    '
  '*三葉線カーブベースポリラインデータ作成
    sngRad = Atn(1) / 45
    For Kp = 0 To UBound(sngPDat, 1)
        sngSit = sngRad * (Kp * THLFANSP)
        sngRds = 2 * Sin(3 * sngSit)
        sngPBas(Kp, 0) = (sngRds * Cos(sngSit)) * THLFRATE
        sngPBas(Kp, 1) = (sngRds * Sin(sngSit)) * THLFRATE
    Next Kp
    '
    intCyp = THLFCNYP
    For Ip = 0 To THLFCOLS - 1
        intCxp = THLFCNXP + THLFVPIT * Ip
        '↓描画数
        Lp = Choose((Ip Mod 4) + 1, 3, 4, 6, 8)
        For Jp = 0 To Lp - 1
            '↓回転角
            sngSit = sngRad * (Jp * (120 \ Lp))
            '*ポリラインデータ位置設定
            For Kp = 0 To UBound(sngPDat, 1)
                sngPDat(Kp, 0) = sngPBas(Kp, 0) * Cos(sngSit) _
                     - sngPBas(Kp, 1) * Sin(sngSit) + intCxp
                sngPDat(Kp, 1) = sngPBas(Kp, 1) * Cos(sngSit) _
                     + sngPBas(Kp, 0) * Sin(sngSit) + intCyp
            Next Kp
            '*ポリライン描画
            With ActiveDocument.Shapes.AddPolyline(sngPDat)
                .Fill.Visible = msoFalse
                .Line.Visible = msoTrue
                .Line.ForeColor = vbMagenta        '←線色
                .Line.Weight = THLFLNWE           '←線の太さ
            End With
        Next Jp
    Next Ip
End Sub


蛇足
 手動で一部をドラッグすると、このようになります。
HC230426B.png


サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す