[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23058] branches/blender2.5/blender: Curve /Surface Editing
Campbell Barton
ideasman42 at gmail.com
Tue Sep 8 09:35:07 CEST 2009
Revision: 23058
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23058
Author: campbellbarton
Date: 2009-09-08 09:35:07 +0200 (Tue, 08 Sep 2009)
Log Message:
-----------
Curve/Surface Editing
- rename "Nurb" to "Spline" in RNA, eg. bpy.data.curves[0].splines[2].type == 'NURBS'
from a user perspective spline is a more generic term while Nurb is misleading when used for beziers and poly lines.
- added curve.active_spline property so the python UI can display the last selected curve.
- set the active spline when entering editmode (uses first selected spline)
- added back Hide Handles as a curve property (removed the global flag), access from the view panel in editmode.
- added hide normal option for curve, normal size access for curve and mesh display.
- changing orderU/V, endpoints, cyclic, bezierU/V now work in editmode and calls update functions.
- entering editmode was crashing with text objects
- curve.switch_direction() crashed (own fault from last commit)
- Tkey for tilt was overridden by Toolbar, made Tilt Ctrl+T.
- OBJECT_OT_mode_set check for compatible modes before running - so curves dont try go into paint mode with V key for eg.
Modified Paths:
--------------
branches/blender2.5/blender/release/ui/buttons_data_curve.py
branches/blender2.5/blender/release/ui/space_view3d.py
branches/blender2.5/blender/release/ui/space_view3d_toolbar.py
branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h
branches/blender2.5/blender/source/blender/editors/curve/curve_ops.c
branches/blender2.5/blender/source/blender/editors/curve/editcurve.c
branches/blender2.5/blender/source/blender/editors/include/ED_anim_api.h
branches/blender2.5/blender/source/blender/editors/object/object_edit.c
branches/blender2.5/blender/source/blender/editors/space_info/info_stats.c
branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c
branches/blender2.5/blender/source/blender/editors/transform/transform_conversions.c
branches/blender2.5/blender/source/blender/editors/transform/transform_manipulator.c
branches/blender2.5/blender/source/blender/makesdna/DNA_curve_types.h
branches/blender2.5/blender/source/blender/makesrna/intern/rna_curve.c
branches/blender2.5/blender/source/blender/makesrna/intern/rna_scene.c
Modified: branches/blender2.5/blender/release/ui/buttons_data_curve.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_curve.py 2009-09-08 03:29:28 UTC (rev 23057)
+++ branches/blender2.5/blender/release/ui/buttons_data_curve.py 2009-09-08 07:35:07 UTC (rev 23058)
@@ -15,6 +15,14 @@
'''
def poll(self, context):
return (context.object and context.object.type == 'CURVE' and context.curve)
+
+class DataButtonsPanelActive(DataButtonsPanel):
+ '''
+ Same as above but for curves only
+ '''
+ def poll(self, context):
+ curve = context.curve
+ return (curve and curve.active_spline)
class DATA_PT_context_curve(DataButtonsPanel):
__show_header__ = False
@@ -46,11 +54,11 @@
space = context.space_data
is_surf = (ob.type == 'SURFACE')
- row = layout.row()
- row.itemR(curve, "curve_2d")
- row.itemR(curve, "use_twist_correction")
+ if not is_surf:
+ row = layout.row()
+ row.itemR(curve, "curve_2d")
+ row.itemR(curve, "use_twist_correction")
-
split = layout.split()
col = split.column()
@@ -132,64 +140,71 @@
col.itemR(curve, "use_stretch")
col.itemR(curve, "use_time_offset", text="Offset Children")
-class DATA_PT_current_curve(DataButtonsPanel):
- __label__ = "Current Curve"
+class DATA_PT_active_spline(DataButtonsPanelActive):
+ __label__ = "Active Spline"
def draw(self, context):
layout = self.layout
ob = context.object
- currentcurve = context.curve.curves[0] # XXX
+ curve = context.curve
+ act_spline = curve.active_spline
is_surf = (ob.type == 'SURFACE')
split = layout.split()
col = split.column()
col.itemL(text="Cyclic:")
- if currentcurve.type == 'NURBS':
+ if act_spline.type == 'NURBS':
col.itemL(text="Bezier:")
col.itemL(text="Endpoint:")
col.itemL(text="Order:")
col.itemL(text="Resolution:")
-
col = split.column()
- col.itemR(currentcurve, "cyclic_u", text="U")
+ col.itemR(act_spline, "cyclic_u", text="U")
- if currentcurve.type == 'NURBS':
+ if act_spline.type == 'NURBS':
sub = col.column()
- sub.active = (not currentcurve.cyclic_u)
- sub.itemR(currentcurve, "bezier_u", text="U")
- sub.itemR(currentcurve, "endpoint_u", text="U")
+ sub.active = (not act_spline.cyclic_u)
+ sub.itemR(act_spline, "bezier_u", text="U")
+ sub.itemR(act_spline, "endpoint_u", text="U")
sub = col.column()
- sub.itemR(currentcurve, "order_u", text="U")
- col.itemR(currentcurve, "resolution_u", text="U")
+ sub.itemR(act_spline, "order_u", text="U")
+ col.itemR(act_spline, "resolution_u", text="U")
if is_surf:
col = split.column()
- col.itemR(currentcurve, "cyclic_v", text="V")
+ col.itemR(act_spline, "cyclic_v", text="V")
# its a surface, assume its a nurb.
sub = col.column()
- sub.active = (not currentcurve.cyclic_v)
- sub.itemR(currentcurve, "bezier_v", text="V")
- sub.itemR(currentcurve, "endpoint_v", text="V")
+ sub.active = (not act_spline.cyclic_v)
+ sub.itemR(act_spline, "bezier_v", text="V")
+ sub.itemR(act_spline, "endpoint_v", text="V")
sub = col.column()
- sub.itemR(currentcurve, "resolution_v", text="V")
- sub.itemR(currentcurve, "order_v", text="V")
+ sub.itemR(act_spline, "order_v", text="V")
+ sub.itemR(act_spline, "resolution_v", text="V")
+
+ if not is_surf:
+ split = layout.split()
+ col = split.column()
+ col.active = (not curve.curve_2d)
+
+ col.itemL(text="Interpolation:")
+ col.itemR(act_spline, "tilt_interpolation", text="Tilt")
+ col.itemR(act_spline, "radius_interpolation", text="Radius")
+
split = layout.split()
col = split.column()
- col.itemL(text="Interpolation:")
- col.itemR(currentcurve, "tilt_interpolation", text="Tilt")
- col.itemR(currentcurve, "radius_interpolation", text="Radius")
- col.itemR(currentcurve, "smooth")
+ col.itemR(act_spline, "smooth")
bpy.types.register(DATA_PT_context_curve)
bpy.types.register(DATA_PT_shape_curve)
bpy.types.register(DATA_PT_geometry_curve)
bpy.types.register(DATA_PT_pathanim)
-bpy.types.register(DATA_PT_current_curve)
+bpy.types.register(DATA_PT_active_spline)
Modified: branches/blender2.5/blender/release/ui/space_view3d.py
===================================================================
--- branches/blender2.5/blender/release/ui/space_view3d.py 2009-09-08 03:29:28 UTC (rev 23057)
+++ branches/blender2.5/blender/release/ui/space_view3d.py 2009-09-08 07:35:07 UTC (rev 23058)
@@ -1209,12 +1209,35 @@
col.itemL(text="Normals:")
col.itemR(mesh, "draw_normals", text="Face")
col.itemR(mesh, "draw_vertex_normals", text="Vertex")
+ col.itemR(context.scene.tool_settings, "normal_size", text="Normal Size")
col.itemS()
col.itemL(text="Numerics:")
col.itemR(mesh, "draw_edge_lenght")
col.itemR(mesh, "draw_edge_angle")
col.itemR(mesh, "draw_face_area")
+
+
+class VIEW3D_PT_3dview_curvedisplay(bpy.types.Panel):
+ __space_type__ = 'VIEW_3D'
+ __region_type__ = 'UI'
+ __label__ = "Curve Display"
+
+ def poll(self, context):
+ editmesh = context.mode == 'EDIT_CURVE'
+ return (editmesh)
+
+ def draw(self, context):
+ layout = self.layout
+
+ curve = context.active_object.data
+
+ col = layout.column()
+ col.itemL(text="Overlays:")
+ col.itemR(curve, "draw_handles", text="Handles")
+ col.itemR(curve, "draw_normals", text="Normals")
+ col.itemR(context.scene.tool_settings, "normal_size", text="Normal Size")
+
class VIEW3D_PT_background_image(bpy.types.Panel):
__space_type__ = 'VIEW_3D'
@@ -1326,4 +1349,5 @@
bpy.types.register(VIEW3D_PT_3dview_properties) # Panels
bpy.types.register(VIEW3D_PT_3dview_display)
bpy.types.register(VIEW3D_PT_3dview_meshdisplay)
+bpy.types.register(VIEW3D_PT_3dview_curvedisplay)
bpy.types.register(VIEW3D_PT_background_image)
Modified: branches/blender2.5/blender/release/ui/space_view3d_toolbar.py
===================================================================
--- branches/blender2.5/blender/release/ui/space_view3d_toolbar.py 2009-09-08 03:29:28 UTC (rev 23057)
+++ branches/blender2.5/blender/release/ui/space_view3d_toolbar.py 2009-09-08 07:35:07 UTC (rev 23058)
@@ -107,6 +107,7 @@
col.itemO("curve.delete")
col.itemO("curve.cyclic_toggle")
col.itemO("curve.switch_direction")
+ col.itemO("curve.spline_type_set")
layout.itemL(text="Modeling:")
Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h 2009-09-08 03:29:28 UTC (rev 23057)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h 2009-09-08 07:35:07 UTC (rev 23058)
@@ -119,7 +119,6 @@
#define G_GREASEPENCIL (1 << 17)
/* #define G_AUTOMATKEYS (1 << 30) also removed */
-#define G_HIDDENHANDLES (1 << 31) /* used for curves only */
/* G.fileflags */
Modified: branches/blender2.5/blender/source/blender/editors/curve/curve_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/curve/curve_ops.c 2009-09-08 03:29:28 UTC (rev 23057)
+++ branches/blender2.5/blender/source/blender/editors/curve/curve_ops.c 2009-09-08 07:35:07 UTC (rev 23058)
@@ -233,7 +233,7 @@
WM_keymap_add_item(keymap, "CURVE_OT_delete", DELKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "CURVE_OT_tilt_clear", TKEY, KM_PRESS, KM_ALT, 0);
- RNA_enum_set(WM_keymap_add_item(keymap, "TFM_OT_transform", TKEY, KM_PRESS, 0, 0)->ptr, "mode", TFM_TILT);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TFM_OT_transform", TKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", TFM_TILT);
RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_handle_type_set", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", 1);
RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_handle_type_set", HKEY, KM_PRESS, 0, 0)->ptr, "type", 3);
RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_handle_type_set", VKEY, KM_PRESS, 0, 0)->ptr, "type", 2);
Modified: branches/blender2.5/blender/source/blender/editors/curve/editcurve.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/curve/editcurve.c 2009-09-08 03:29:28 UTC (rev 23057)
+++ branches/blender2.5/blender/source/blender/editors/curve/editcurve.c 2009-09-08 07:35:07 UTC (rev 23058)
@@ -86,9 +86,6 @@
/* still need to eradicate a few :( */
#define callocstructN(x,y,name) (x*)MEM_callocN((y)* sizeof(x),name)
-/* for curve objects in editmode that can have hidden handles */
-#define BEZSELECTED_HIDDENHANDLES(bezt) ((G.f & G_HIDDENHANDLES) ? (bezt)->f2 & SELECT : BEZSELECTED(bezt))
-
float nurbcircle[8][2]= {
{0.0, -1.0}, {-1.0, -1.0}, {-1.0, 0.0}, {-1.0, 1.0},
{0.0, 1.0}, { 1.0, 1.0}, { 1.0, 0.0}, { 1.0, -1.0}
@@ -213,7 +210,7 @@
return 0;
}
-int isNurbsel_count(Nurb *nu)
+int isNurbsel_count(Curve *cu, Nurb *nu)
{
BezTriple *bezt;
BPoint *bp;
@@ -223,7 +220,7 @@
bezt= nu->bezt;
a= nu->pntsu;
while(a--) {
- if (BEZSELECTED_HIDDENHANDLES(bezt)) sel++;
+ if (BEZSELECTED_HIDDENHANDLES(cu, bezt)) sel++;
bezt++;
}
}
@@ -269,6 +266,8 @@
if(obedit==NULL) return;
+ set_actNurb(obedit, NULL);
+
if (ELEM(obedit->type, OB_CURVE, OB_SURF)) {
Curve *cu= obedit->data;
Nurb *nu, *newnu;
@@ -314,11 +313,13 @@
void make_editNurb(Object *obedit)
{
ListBase *editnurb= curve_get_editcurve(obedit);
- Nurb *nu, *newnu;
+ Nurb *nu, *newnu, *nu_act= NULL;
KeyBlock *actkey;
if(obedit==NULL) return;
+ set_actNurb(obedit, NULL);
+
if (ELEM(obedit->type, OB_CURVE, OB_SURF)) {
Curve *cu= obedit->data;
@@ -334,6 +335,12 @@
newnu= duplicateNurb(nu);
test2DNurb(newnu); // after join, or any other creation of curve
BLI_addtail(editnurb, newnu);
+
+ if (nu_act == NULL && isNurbsel(nu)) {
+ nu_act= newnu;
+ set_actNurb(obedit, newnu);
+ }
+
nu= nu->next;
}
@@ -343,8 +350,6 @@
key_to_curve(actkey, cu, editnurb);
}
}
-
- set_actNurb(obedit, NULL);
}
void free_editNurb(Object *obedit)
@@ -1609,6 +1614,7 @@
static int hide_exec(bContext *C, wmOperator *op)
{
Object *obedit= CTX_data_edit_object(C);
+ Curve *cu= obedit->data;
ListBase *editnurb= curve_get_editcurve(obedit);
Nurb *nu;
BPoint *bp;
@@ -1621,11 +1627,11 @@
a= nu->pntsu;
sel= 0;
while(a--) {
- if(invert == 0 && BEZSELECTED_HIDDENHANDLES(bezt)) {
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list