hub.links.append(hub_prev)
hub_prev.links.append(hub)
hub_prev = hub
-
-
-
-def get_points(spline):
- points = spline.points
- if len(spline.bezier_points):
- points = spline.bezier_points
+def get_points(stroke):
+ from Mathutils import Vector
+ # TODO - why isnt point.co a Vector?
+ return [Vector(tuple(point.co)) for point in stroke.points]
- return [point.co.copy().resize3D() for point in points]
-
-
-def get_splines(data):
- return [Spline(get_points(spline)) for spline in data.splines]
+def get_splines(gp):
+ for l in gp.layers:
+ if l.active: # XXX - should be layers.active
+ break
+
+ frame = l.active_frame
+
+ return [Spline(get_points(stroke)) for stroke in frame.strokes]
def xsect_spline(sp_a, sp_b, _hubs):
from Mathutils import LineIntersect
pt_a_prev = pt_a
-def calculate(scene, obj):
- data = obj.data
- splines = get_splines(data)
+def calculate(gp):
+ splines = get_splines(gp)
_hubs = {}
for i, sp in enumerate(splines):
def main():
- # first convert gpencil
- # *** evil!
scene = bpy.context.scene
+ obj = bpy.context.object
- bpy.ops.gpencil.convert(type='PATH')
-
+ gp = None
- scene = bpy.context.scene
- obj = bpy.context.object
- if not obj:
- raise Exception("no active object")
+ if obj:
+ gp = obj.grease_pencil
- obj_new = calculate(scene, obj)
+ if not gp:
+ gp = scene.grease_pencil
+
+ if not gp:
+ raise Exception("no active grease pencil")
- # obj.selected = False
- scene.objects.unlink(obj)
+ obj_new = calculate(gp)
scene.objects.active = obj_new
obj_new.selected = True
RNA_def_struct_sdna(srna, "bGPDspoint");
RNA_def_struct_ui_text(srna, "Grease Pencil Stroke Point", "Data point for freehand stroke curve.");
- prop= RNA_def_property(srna, "coordinates", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "x");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Coordinates", "");