View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
Peter T[_8_] Peter T[_8_] is offline
external usenet poster
 
Posts: 88
Default Determine the end coordinates of an Arc and then add textbox


"David Cuthill" wrote in message
...
On Thursday, 24 September 2020 at 04:58:19 UTC-6, Peter T wrote:
"David Cuthill" wrote in message
I am having trouble determining what the end position of an arc is. I
would
like to determine the coordinates of the end point or start point and
then
place a textbox or other shape at those same coordinates. Of the
attributes
of an arc - which describes the top and left of the end point? The top
and
left that I can obtain seem to provide the position of the top left
corner
of the bounding box/border of the shape - which may be far from the end
point of the actual arc.

Thanks for any assistance with this question.
======================

The Arc is described by its Nodes collection, air code -

Dim nds As ShapeNodes
Dim ndStart as ShapeNode, ndEnd as ShapeNode

Set nds = myArcShape.Nodes
Set ndStart = nds(1)
Set ndEnd = nds(nds.count)

x1 = ndStart.Points(1,1) : y1 = ndStart.Points(1,2)
x2 = ndStart.Points(1,1) : y2 = ndEnd.Points(1,2)

Peter T

Thanks Peter

I understand in theory what you are showing but I am having trouble
getting it to work in practice

I have but together this but get an error at x1=ndstart.points(1,1) ....
<Error 424 Object required

Dim nds As ShapeNodes
Dim ndStart As ShapeNode, ndEnd As ShapeNode

Set myArcShape = Worksheets("test").Shapes(1)

Set nds = myArcShape.Nodes
Set ndStart = nds(1)
Set ndEnd = nds(nds.Count)

x1 = ndStart.Points(1, 1): y1 = ndStart.Points(1, 2)
x2 = ndStart.Points(1, 1): y2 = ndEnd.Points(1, 2)


Thoughts?? What is missing


Ah, I forgot, if the Arc (or any shape with freeform type nodes) hasn't had
its points manually edited need to trick it into thinking they have been.

A bit odd but try including this line which reapplies the first node's
exisiting editingtype property, then try returning the point coordinates:

nds.SetEditingType 1, ndStart.EditingType

However if you have manually edited the arc's points this probably won't
help!

Peter T