Clase ShapeNodes (Word VBA)

Una colección de todos los ShapeNode objetos en la forma libre. Para usar una variable de clase ShapeNodes, primero debe ser instanciado, por ejemplo

Count

Devuelve un Long que representa el número de nodos de forma de la colección.


Dim sns As ShapeNodes: Set sns =  
Dim lngCount As Long
lngCount = sns.Count

Delete

Elimina el nodo de forma especificado.

Delete (Index)

Index: Número dentro de la colección de nodos de forma del nodo de forma que se va a eliminar.


Dim lngIndex As Long: lngIndex = 
Dim sns As ShapeNodes: Set sns =  
sns.Delete Index:=lngIndex

Insert

Inserta un nodo en una forma libre.

Insert (Index, SegmentType, EditingType, X1, Y1, X2, Y2, X3, Y3)


Sub InsertShapeNode() 
 ActiveDocument.Shapes(3).Select 
 With Selection.ShapeRange 
 If .Type = msoFreeform Then 
 .Nodes.Insert _ 
 Index:=3, SegmentType:=msoSegmentCurve, _ 
 EditingType:=msoEditingSymmetric, x1:=35, y1:=100 
 .Fill.ForeColor.RGB = RGB(0, 0, 200) 
 .Fill.Visible = msoTrue 
 Else 
 MsgBox "This shape is not a Freeform object." 
 End If 
 End With 
End Sub

Arguments

Estos son los argumentos con nombre :

Index (Long) - Número del nodo de forma detrás del cual va a insertarse un nuevo nodo.

SegmentType (Office.MsoSegmentType) - Tipo de línea que conecta el nodo insertado con los nodos adyacentes.

EditingType (Office.MsoEditingType) - Propiedad de modificación del nodo insertado.

X1 - Single

Y1 - Single

Optional arguments

Los siguientes argumentos son opcionales

X2 - Single

Y2 - Single

X3 (Single) - Si el parámetro EditingType del nuevo segmento es msoEditingCorner, este argumento especifica la distancia horizontal, medida en puntos, desde la esquina superior izquierda del documento hasta el punto final del nuevo segmento.

Y3 - Single

Item

Devuelve un objeto ShapeNode individual de una colección.

Item (Index)

Index: El objeto individual que se va a devolver.


Dim sns As ShapeNodes: Set sns =  
Dim shpn As ShapeNode
Set shpn = sns(Index:=1)

SetEditingType

Establece el tipo de edición del nodo especificado por Index.

Si el nodo es un punto de control de un segmento curvo, este método establece el tipo de modificación del nodo adyacente que une dos segmentos.

SetEditingType (Index, EditingType)


Dim lngLoop As lngLoop 
 
With ActiveDocument.Shapes(3).Nodes 
 For lngLoop = 1 to .Count 
 If .Item(lngLoop).EditingType = msoEditingCorner Then 
 .SetEditingType lngLoop, msoEditingSmooth 
 End If 
 Next lngLoop 
End With

Arguments

Estos son los argumentos con nombre :

Index (Long) - Nodo cuyo tipo de modificación va a establecerse.

EditingType (Office.MsoEditingType) - Propiedad de modificación del vértice.

SetPosition

Establece la ubicación del nodo especificado por Index.

Dependiendo del tipo de modificación del nodo, este método puede afectar a la posición de los nodos adyacentes.

SetPosition (Index, X1, Y1)


With ActiveDocument.Shapes(3).Nodes 
 pointsArray = .Item(2).Points 
 currXvalue = pointsArray(1, 1) 
 currYvalue = pointsArray(1, 2) 
 .SetPosition 2, currXvalue + 200, currYvalue + 300 
End With

Arguments

Estos son los argumentos con nombre :

Index (Long) - Nodo cuya posición va a establecerse.

X1 - Single

Y1 - Single

SetSegmentType

Establece el tipo de segmento que sigue al nodo especificado por Index.

Si el nodo es un punto de control de un segmento curvo, este método establece el tipo de segmento de esa curva.

SetSegmentType (Index, SegmentType)


Dim lngLoop As Long 
 
With ActiveDocument.Shapes(3).Nodes 
 lngLoop = 1 
 While lngLoop <= .Count 
 If .Item(lngLoop).SegmentType = msoSegmentLine Then 
 .SetSegmentType lngLoop, msoSegmentCurve 
 End If 
 lngLoop = lngLoop + 1 
 Wend 
End With

Arguments

Estos son los argumentos con nombre :

Index (Long) - Nodo cuyo tipo de segmento va a establecerse.

SegmentType (Office.MsoSegmentType) - Especifica si el segmento es recto o curvo.