File: path_example_1.py

package info (click to toggle)
opencamlib 2023.01.11-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 29,800 kB
  • sloc: cpp: 8,722; python: 5,530; sh: 604; javascript: 310; makefile: 209
file content (50 lines) | stat: -rw-r--r-- 2,184 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from opencamlib import ocl

# This example shows how to aggregate lines and arcs into path objects and then
# how to retrieve such data.
print(ocl.version())

paths = []

# use Point(x,y) which sets z=0
path_id_1 = ocl.Path()
path_id_1.append(ocl.Line(ocl.Point(6,-9), ocl.Point(10.79422863,0.69615242)))
path_id_1.append(ocl.Line(ocl.Point(10.79422863,0.69615242), ocl.Point(4.79422863,9.69615242)))
path_id_1.append(ocl.Line(ocl.Point(4.79422863,9.69615242), ocl.Point(-6,9)))
path_id_1.append(ocl.Line(ocl.Point(-6,9), ocl.Point(-10.7942286,-0.69615242)))
path_id_1.append(ocl.Line(ocl.Point(-10.7942286,-0.69615242), ocl.Point(-4.79422863,-9.69615242)))
path_id_1.append(ocl.Line(ocl.Point(-4.79422863,-9.69615242), ocl.Point(6,-9)))
paths.append(path_id_1)

path_id_2 = ocl.Path()
path_id_2.append(ocl.Line(ocl.Point(15,-14,0), ocl.Point(19.62435565,5.99038106,0)))
path_id_2.append(ocl.Line(ocl.Point(19.62435565,5.99038106,0), ocl.Point(4.62435565,19.99038106,0)))
path_id_2.append(ocl.Line(ocl.Point(4.62435565,19.99038106,0), ocl.Point(-15,14,0)))
path_id_2.append(ocl.Line(ocl.Point(-15,14,0), ocl.Point(-19.6243556,-5.99038106,0)))
path_id_2.append(ocl.Line(ocl.Point(-19.6243556,-5.99038106,0), ocl.Point(-4.62435565,-19.9903811,0)))
path_id_2.append(ocl.Line(ocl.Point(-4.62435565,-19.9903811,0), ocl.Point(15,-14,0)))
paths.append(path_id_2)

path_id_3 = ocl.Path()
path_id_3.append(ocl.Line(ocl.Point(-27,2,0), ocl.Point(-18,18,0)))
path_id_3.append(ocl.Arc(ocl.Point(-18,18,0),ocl.Point(-10.00000001,21.99999996,0),ocl.Point(-11.0434783,14.08695652,0),True))
path_id_3.append(ocl.Line(ocl.Point(-10,22,0), ocl.Point(10,23,0)))
paths.append(path_id_3)

for path in paths:
	# Retrieve a list of type/span pairs.  The type indicates whether it's a line or an arc
	spans = path.getTypeSpanPairs()
	print('\n\nSpan')

	for span in spans:
		span_type = span[0]
		span_element = span[1]

		if (span_type == ocl.ArcSpanType):
			arc = span_element
			print('Arc(start=' + str(arc.p1) + ', centre=' + str(arc.c) + ' end=' + str(arc.p2) + ')')

		if (span_type == ocl.LineSpanType):
			line = span_element
			print('Line(start=' + str(line.p1) + ', end=' + str(line.p2) + ')')