Data in Non-Primitive Shape
Accessing Data of Non-Primitive Shape
Sometimes, you need to access data from a shape that is not built-in. Built-in shapes are called primitive shapes; ones that aren’t are called non-primitive. For example, you can define your own shapes using different curve connected lines.
A Non-Primitive Shape
In Aspose.Cells for Python via .NET, non-primitive shapes are assigned the type AutoShapeType.NOT_PRIMITIVE. You can check their type using the Shape.auto_shape_type property.
Access the shape data using the Shape.paths property. It returns all the connected paths that comprise the non-primitive shape. These paths are of the type ShapePath that holds a list of all the segments which in turn contain the points in each segment.
Shows an example of a non-primitive shape |
---|
![]() |
from aspose.cells import Workbook | |
from aspose.cells.drawing import AutoShapeType | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# The path to the documents directory. | |
dataDir = RunExamples.GetDataDir(".") | |
workbook = Workbook(dataDir + "NonPrimitiveShape.xlsx") | |
worksheet = workbook.worksheets[0] | |
# Accessing the user defined shape | |
shape = worksheet.shapes[0] | |
if shape.auto_shape_type == AutoShapeType.NOT_PRIMITIVE: | |
# Access shape's data | |
shapePathCollection = shape.paths | |
# Access information of indvidual path | |
for shapePath in shapePathCollection: | |
# Access path segment list | |
pathSegments = shapePath.path_segement_list | |
# Access individual path segment | |
for pathSegment in pathSegments: | |
# Gets the points in path segment | |
segmentPoints = pathSegment.points | |
for pathPoint in segmentPoints: | |
print("X: " + str(pathPoint.x) + ", Y: " + str(pathPoint.y)) |