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
todo:image_alt_text
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))