[CDR 2023] CorelDRAW 2023 Variable Outline Code Examples

dastin

Некромант-любитель
Топикстартер
12 лет на форуме
Сообщения
2 145
Реакции
2 043

Variable Outline Code Examples

Posted 12-03-2023 at 14:47 by shelbym


Introduction

CorelDRAW 2023 has a new Variable Outline Tool. You can also apply a variable outline via code. :) I have put together a number of VBA examples of how this works. Hopefully you will find these useful.
Код:
Sub TestAddVariableWidthNodes()
    Dim sLine As Shape
    
    Set sLine = ActiveLayer.CreateLineSegment(2, 8, 2, 5)
    sLine.Outline.VariableWidthNodes.Add 0.25, 0.125
    sLine.Outline.VariableWidthNodes.Add 0.5, 0.25
    sLine.Outline.VariableWidthNodes.Add 0.75, 0.125
End Sub

Код:
Sub TestClearVariableWidthNodes()
    Dim sLine As Shape
    
    Set sLine = ActiveLayer.CreateLineSegment(2, 8, 2, 5)
    sLine.Outline.VariableWidthNodes.Add 0.25, 0.125
    sLine.Outline.VariableWidthNodes.Add 0.5, 0.25
    sLine.Outline.VariableWidthNodes.Add 0.75, 0.125
    
    sLine.Outline.VariableWidthNodes.Clear
End Sub


Код:
Sub TestCopyVariableWidthNodes()
    Dim sLine As Shape, sLine2 As Shape
    
    Set sLine = ActiveLayer.CreateLineSegment(2, 8, 2, 5)
    sLine.Outline.VariableWidthNodes.Add 0.25, 0.125
    sLine.Outline.VariableWidthNodes.Add 0.5, 0.25
    sLine.Outline.VariableWidthNodes.Add 0.75, 0.125
    
    Set sLine2 = ActiveLayer.CreateLineSegment(4, 8, 4, 5)
    sLine2.Outline.VariableWidthNodes.Copy sLine.Outline.VariableWidthNodes
End Sub

Код:
Sub TestCountVariableWidthNodes()
    Dim sLine As Shape
    
    Set sLine = ActiveLayer.CreateLineSegment(2, 8, 2, 5)
    sLine.Outline.VariableWidthNodes.Add 0.25, 0.125
    sLine.Outline.VariableWidthNodes.Add 0.5, 0.25
    sLine.Outline.VariableWidthNodes.Add 0.75, 0.125
    
    MsgBox “Number of variable width nodes: “ & sLine.Outline.VariableWidthNodes.Count, , “Variable Width Nodes”
End Sub

Код:
Sub TestSelectedVariableWidthNodes()
    Dim sLine As Shape
    Dim vwNode1 As IVGVariableWidthNode, vwNode2 As IVGVariableWidthNode, vwNode3 As IVGVariableWidthNode
    
    Set sLine = ActiveLayer.CreateLineSegment(2, 8, 2, 5)
    Set vwNode1 = sLine.Outline.VariableWidthNodes.Add(0.25, 0.125)
    Set vwNode2 = sLine.Outline.VariableWidthNodes.Add(0.5, 0.25)
    Set vwNode3 = sLine.Outline.VariableWidthNodes.Add(0.75, 0.125)
    
    vwNode2.Selected = True
End Sub

Код:
Sub TestSidesVariableWidthNodes()
    Dim sLine As Shape
    Dim vwNode1 As IVGVariableWidthNode, vwNode2 As IVGVariableWidthNode, vwNode3 As IVGVariableWidthNode
    
    Set sLine = ActiveLayer.CreateLineSegment(2, 8, 2, 5)
    Set vwNode1 = sLine.Outline.VariableWidthNodes.Add(0.25, 0.125)
    Set vwNode2 = sLine.Outline.VariableWidthNodes.Add(0.5, 0.25)
    Set vwNode3 = sLine.Outline.VariableWidthNodes.Add(0.75, 0.125)
    
    vwNode1.Side1Width = 0.25
    vwNode3.Side2Width = 0.25
End Sub

Код:
Sub TestDeleteVariableWidthNodes()
    Dim sLine As Shape
    Dim vwNode1 As IVGVariableWidthNode, vwNode2 As IVGVariableWidthNode, vwNode3 As IVGVariableWidthNode
    
    Set sLine = ActiveLayer.CreateLineSegment(2, 8, 2, 5)
    Set vwNode1 = sLine.Outline.VariableWidthNodes.Add(0.25, 0.125)
    Set vwNode2 = sLine.Outline.VariableWidthNodes.Add(0.5, 0.25)
    Set vwNode3 = sLine.Outline.VariableWidthNodes.Add(0.75, 0.125)
    
    vwNode2.Delete
End Sub

Код:
Sub TestMoveVariableWidthNodes()
    Dim sLine As Shape
    Dim vwNode1 As IVGVariableWidthNode, vwNode2 As IVGVariableWidthNode, vwNode3 As IVGVariableWidthNode
    
    Set sLine = ActiveLayer.CreateLineSegment(2, 8, 2, 5)
    Set vwNode1 = sLine.Outline.VariableWidthNodes.Add(0.25, 0.125)
    Set vwNode2 = sLine.Outline.VariableWidthNodes.Add(0.5, 0.25)
    Set vwNode3 = sLine.Outline.VariableWidthNodes.Add(0.75, 0.125)
    
    vwNode1.PositionT = 0.125
    vwNode3.PositionT = 0.875
End Sub

Код:
Sub TestDetialsVariableWidthNodes()
    Dim sLine As Shape
    Dim vwNode1 As IVGVariableWidthNode, vwNode2 As IVGVariableWidthNode, vwNode3 As IVGVariableWidthNode
    Dim strDetails As String
    
    Set sLine = ActiveLayer.CreateLineSegment(2, 8, 2, 5)
    Set vwNode1 = sLine.Outline.VariableWidthNodes.Add(0.25, 0.125)
    Set vwNode2 = sLine.Outline.VariableWidthNodes.Add(0.5, 0.25)
    Set vwNode3 = sLine.Outline.VariableWidthNodes.Add(0.75, 0.125)
    
    vwNode1.Selected = True
    
    For i = 1 To sLine.Outline.VariableWidthNodes.Count
        strDetails = strDetails & i & “: “ & sLine.Outline.VariableWidthNodes(i).Width & “ Pos: “ & sLine.Outline.VariableWidthNodes(i).PositionT & “ Sel: “ & sLine.Outline.VariableWidthNodes(i).Selected & “ S1: “ & sLine.Outline.VariableWidthNodes(i).Side1Width & “ S2: “ & sLine.Outline.VariableWidthNodes(i).Side2Width & “ Width: “ & sLine.Outline.VariableWidthNodes(i).Width & vbNewLine
    Next i
    
    MsgBox strDetails, , “Variable Width Nodes”
End Sub

Conclusion

Have some fun coding Variable Outlines. :)
 
  • Спасибо
Реакции: izrukvruki и DukereD

dastin

Некромант-любитель
Топикстартер
12 лет на форуме
Сообщения
2 145
Реакции
2 043
Вот как выглядит нововведение
- новым инструментом Variable Outline Tool. добавляется контрольная точка
- сдвигом маркера управления меняется толщина контура

1678810356802.png


Окно Outline Pen теперь выглядит следующим образом

1678810803959.png


Вид Panel Properties при активном Variable Outline Tool ( V )

1678811505648.png
 
Последнее редактирование: