Classe ShapeNode - geometria (Word VBA)

A classe ShapeNode representa a geometria e as propriedades de edição de geometria dos nós em uma forma livre definida pelo usuário. Nós incluem os vértices entre os segmentos da forma livre e os pontos de controle para os segmentos curvos. O objeto ShapeNode é um membro da coleção ShapeNodes. A coleção ShapeNodes contém todos os nós de uma forma livre. Para usar uma variável de classe ShapeNode, ela primeiro precisa ser instanciada por exemplo

For Each

Aqui está um exemplo de processamento dos itens ShapeNode em uma coleção.


Dim shp As Shape: Set shp = 
Dim shpnNode As ShapeNode
For Each shpnNode In shp.Nodes
	With shpnNode
		
	End With
Next shpnNode

EditingType

Se o nó especificado for um vértice, essa propriedade retorna um valor que indica como as alterações feitas no nó afetam os dois segmentos conectados ao nó. Somente leitura MsoEditingType.

Se o nó for um ponto de controle de um segmento curvo, essa propriedade retorna o tipo de edição do vértice adjacente. Essa propriedade é somente leitura. Use o método SetEditingType para definir o valor dessa propriedade.


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

Points

Retorna a posição do nó especificado como um par de coordenadas. somente leitura.

Cada coordenada é expressa em pontos. Use o método SetPosition para definir o local do nó.


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

SegmentType

Retorna um valor que indica se o segmento associado com o nó especificado é reto ou curvo. MsoSegmentTypesomente leitura.

Se o nó especificado for um ponto de controle para um segmento curvo, essa propriedade retornará msoSegmentCurve. Use o método SetSegmentType para definir o valor dessa propriedade.


Set myDocument = ActiveDocument 
With myDocument.Shapes(3).Nodes 
 n = 1 
 While n <= .Count 
 If .Item(n).SegmentType = msoSegmentLine Then 
 .SetSegmentType n, msoSegmentCurve 
 End If 
 n = n + 1 
 Wend 
End With