Class FreeformBuilder (Word VBA)

The class FreeformBuilder represents the geometry of a freeform while it is being built.

To use a FreeformBuilder class variable it first needs to be instantiated, for example

Dim fbr as FreeformBuilder
Set fbr = Application.ActiveDocument.Background.CanvasItems

The following procedures can be used to set variables of type FreeformBuilder: CanvasShapes.BuildFreeform and Shapes.BuildFreeform.

AddNodes

Inserts a new segment at the end of the freeform that's being created, and adds the nodes that define the segment.

You can use this method as many times as you want to add nodes to the freeform you are creating. When you finish adding nodes, use the ConvertToShape method to create the freeform you've just defined. To add nodes to a freeform after it has been created, use the Insert method of the ShapeNodes collection.

AddNodes (SegmentType, EditingType, X1, Y1, X2, Y2, X3, Y3)

Dim docActive As Document 
 
Set docActive = ActiveDocument 
 
With docActive.Shapes.BuildFreeform(msoEditingCorner, 360, 200) 
 .AddNodes msoSegmentCurve, msoEditingCorner, _ 
 380, 230, 400, 250, 450, 300 
 .AddNodes msoSegmentCurve, msoEditingAuto, 480, 200 
 .AddNodes msoSegmentLine, msoEditingAuto, 480, 400 
 .AddNodes msoSegmentLine, msoEditingAuto, 360, 200 
 .ConvertToShape 
End With

Arguments

The following arguments are required:

SegmentType (Office.MsoSegmentType) - The type of segment to be added.

EditingType (Office.MsoEditingType) - The editing property of the vertex. If SegmentType is msoSegmentLine, EditingType must be msoEditingAuto.

X1 (Single) - If the EditingType of the new segment is msoEditingAuto, this argument specifies the horizontal distance (in points) from the upper-left corner of the document to the endpoint of the new segment. If the EditingType of the new node is msoEditingCorner, this argument specifies the horizontal distance (in points) from the upper-left corner of the document to the first control point for the new segment.

Y1 (Single) - If the EditingType of the new segment is msoEditingAuto, this argument specifies the vertical distance (in points) from the upper-left corner of the document to the endpoint of the new segment. If the EditingType of the new node is msoEditingCorner, this argument specifies the vertical distance (in points) from the upper-left corner of the document to the first control point for the new segment.

Optional arguments

The following arguments are optional

X2 (Single) - If the EditingType of the new segment is msoEditingCorner, this argument specifies the horizontal distance (in points) from the upper-left corner of the document to the second control point for the new segment. If the EditingType of the new segment is msoEditingAuto, don't specify a value for this argument.

Y2 (Single) - If the EditingType of the new segment is msoEditingCorner, this argument specifies the vertical distance (in points) from the upper-left corner of the document to the second control point for the new segment. If the EditingType of the new segment is msoEditingAuto, do not specify a value for this argument.

X3 (Single) - If the EditingType of the new segment is msoEditingCorner, this argument specifies the horizontal distance (in points) from the upper-left corner of the document to the endpoint of the new segment. If the EditingType of the new segment is msoEditingAuto, don't specify a value for this argument.

Y3 (Single) - If the EditingType of the new segment is msoEditingCorner, this argument specifies the vertical distance (in points) from the upper-left corner of the document to the endpoint of the new segment. If the EditingType of the new segment is msoEditingAuto, don't specify a value for this argument.

ConvertToShape

Creates a shape that has the geometric characteristics of the specified object. Returns a Shape object that represents the new shape.

You must apply the AddNodes method to a FreeformBuilder object at least once before you use the ConvertToShape method.

ConvertToShape (Anchor)

Anchor: A Range object that represents the text to which the shape is bound. If Anchor is specified, the anchor is positioned at the beginning of the first paragraph in the anchoring range. If this argument is omitted, the anchoring range is selected automatically and the shape is positioned relative to the top and left edges of the page.

Dim shpConvertToShape As Shape
Set shpConvertToShape = ActiveDocument.Background.CanvasItems.BuildFreeform.ConvertToShape()