previous commit for retopo converted the strokes into a curve first, better to use the grease pencil data directly. renamed coordinates --> co, matching mesh verts

This commit is contained in:
Campbell Barton 2009-11-30 02:34:49 +00:00
parent 3f37f32e17
commit 9b0a3ee9ce
2 changed files with 27 additions and 29 deletions

@ -156,20 +156,20 @@ class Spline:
hub.links.append(hub_prev)
hub_prev.links.append(hub)
hub_prev = hub
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]
def get_splines(gp):
for l in gp.layers:
if l.active: # XXX - should be layers.active
break
def get_points(spline):
points = spline.points
if len(spline.bezier_points):
points = spline.bezier_points
return [point.co.copy().resize3D() for point in points]
def get_splines(data):
return [Spline(get_points(spline)) for spline in data.splines]
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
@ -203,9 +203,8 @@ def xsect_spline(sp_a, sp_b, _hubs):
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):
@ -265,22 +264,21 @@ def calculate(scene, obj):
def main():
# first convert gpencil
# *** evil!
scene = bpy.context.scene
bpy.ops.gpencil.convert(type='PATH')
scene = bpy.context.scene
obj = bpy.context.object
if not obj:
raise Exception("no active object")
obj_new = calculate(scene, obj)
gp = None
# obj.selected = False
scene.objects.unlink(obj)
if obj:
gp = obj.grease_pencil
if not gp:
gp = scene.grease_pencil
if not gp:
raise Exception("no active grease pencil")
obj_new = calculate(gp)
scene.objects.active = obj_new
obj_new.selected = True

@ -77,7 +77,7 @@ static void rna_def_gpencil_stroke_point(BlenderRNA *brna)
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", "");