VS:GetPolylineVertex
.VectorScript|VectorScript ..VS:Function Reference|Function Reference ..VS:Function_Reference_Appendix|Appendix
Description
Returns information about the specified polyline vertex.
Note that vertexNum is 1-based for Polygons and Polylines, and 0-based for 3D Polylines.
PROCEDURE GetPolylineVertex(
obj :HANDLE;
vertexNum :INTEGER;
VAR pX,pY :REAL;
VAR vertexType :INTEGER;
VAR arcRadius :REAL);
def vs.GetPolylineVertex(obj, vertexNum): return (p, vertexType, arcRadius)
Parameters
obj HANDLE Handle to object. vertexNum INTEGER Index of vertex to be queried. p REAL X-Y coordinates of vertex. vertexType INTEGER Type of vertex: 0 - Corner, 1 - Bezier, 2 - Cubic, 3 - Arc, 4 - Radius arcRadius REAL Radius of vertex corner (arc vertex only).
Remarks
(_c_, 2022.01.18) In VS Python this routine will always return a 2-items tuple, clipping it if "necessary". If you need a 3 items tuple for usage in vs.Vec2Ang, for example, you will need to restore the third item.
# test GetPolylineVertex p = (0, 0, 0) vs.AlrtDialog( 'init tuple: ' + str(len(p)) ) # 3 items p, vertexType, arcRadius = vs.GetPolylineVertex(vs.FSActLayer(), 1) # take care to have a polygon selected vs.AlrtDialog( 'after GetPolylineVertex: ' + str(len(p)) ) # 2 items?!?
(Charles Chandler, 2001 Jun. 11) The radius value can be one of three things:
- 0, in which case the actual drawn radius is simply the biggest radius that will fit,
- the same as the actual displayed radius,
- larger than the displayed radius, in which case the drawn radius is the biggest radius that will fit.
MaKro 2022:
- 4 - Radius (new type has been added) VS:GetPolylineArcMaxRadius
- Corner vertex, which has no radius at all, returns value other than zero for radius, so always check vertex type.
- For an Arc type (3) vertex, the internally stored radius can be different to the one showed in the info palette. VS:ConvertToArcPolyline fixes this issue.
Example
VectorScript
PROCEDURE Example; VAR obj : HANDLE; vertexNum : INTEGER; ptX, ptY : REAL; vertexType : INTEGER; arcRadius : REAL; BEGIN obj := FSActLayer; FOR vertexNum := 1 TO GetVertNum(obj) DO BEGIN GetPolylineVertex(obj, vertexNum, ptX, ptY, vertexType, arcRadius); TextOrigin(ptX, ptY); CreateText(Concat('vNum: ', vertexNum, ' vType: ', vertexType, ' radius: ', arcRadius)); END; END; RUN(Example);
Python
def Example(): obj = vs.FSActLayer() for vertexNum in range( 1, vs.GetVertNum(obj) ): ptVt, vertexType, arcRadius = vs.GetPolylineVertex( obj, vertexNum ) vs.TextOrigin( ptVt[0], ptVt[1] ) vs.CreateText( vs.Concat('vNum: ', vertexNum, ' vType: ', vertexType, ' radius: ', arcRadius) ) Example()
Version
Availability: from VectorWorks 8.5
See Also
For polylines:
For polygons:
For polylines:
- [[VS:SetPolylineVertex| SetPolylineVertex]]
- [[VS:GetPolylineArcMaxRadius]]
For polygons:
- [[VS:GetPolyPt| GetPolyPt]]
- [[VS:SetPolyPt| SetPolyPt]]