Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2005-04-25 01:38:19 +0400
committerTon Roosendaal <ton@blender.org>2005-04-25 01:38:19 +0400
commit7f75cfdd29d2045896c738d1e60bc235586c26f5 (patch)
treebde2f950f19bc284221490642bf7c0072af9772f /source/blender/blenkernel/intern/exotic.c
parent9083ab1a14225a69310a7707798b2c123c8d9442 (diff)
Bug fix #2469
Apparently DXF allows layers to be read too... this went wrong in 2 ways; - object->lay was not equal to base->lay - if DXF has layer info, but not readable, it set object->lay to 1 instead of using 'current layer'.
Diffstat (limited to 'source/blender/blenkernel/intern/exotic.c')
-rw-r--r--source/blender/blenkernel/intern/exotic.c42
1 files changed, 25 insertions, 17 deletions
diff --git a/source/blender/blenkernel/intern/exotic.c b/source/blender/blenkernel/intern/exotic.c
index 082a02277d6..4405dc8bb98 100644
--- a/source/blender/blenkernel/intern/exotic.c
+++ b/source/blender/blenkernel/intern/exotic.c
@@ -3507,10 +3507,10 @@ static int dxf_get_layer_col(char *layer)
static int dxf_get_layer_num(char *layer)
{
- int ret = 1;
-
+ int ret = 0;
+
if (all_digits(layer) && atoi(layer)<(1<<20)) ret= atoi(layer);
- if (ret == 0) ret = 1;
+ if (ret == 0) ret = G.scene->lay;
return ret;
}
@@ -3687,22 +3687,24 @@ static void dxf_get_mesh(Mesh** m, Object** o, int noob)
Mesh *me = NULL;
Object *ob;
- if (!noob) {
- *o = add_object(OB_MESH);
- ob = *o;
+ if (!noob) {
+ *o = add_object(OB_MESH);
+ ob = *o;
- if (strlen(entname)) new_id(&G.main->object, (ID *)ob, entname);
- else if (strlen(layname)) new_id(&G.main->object, (ID *)ob,
- layname);
+ if (strlen(entname)) new_id(&G.main->object, (ID *)ob, entname);
+ else if (strlen(layname)) new_id(&G.main->object, (ID *)ob, layname);
- if (strlen(layname)) ob->lay= dxf_get_layer_num(layname);
- else ob->lay= G.scene->lay;
+ if (strlen(layname)) ob->lay= dxf_get_layer_num(layname);
+ else ob->lay= G.scene->lay;
+ // not nice i know... but add_object() sets active base, which needs layer setting too (ton)
+ G.scene->basact->lay= ob->lay;
- *m = ob->data;
- me= *m;
+ *m = ob->data;
+ me= *m;
- vcenter= ob->loc;
- } else {
+ vcenter= ob->loc;
+ }
+ else {
*o = NULL;
*m = add_mesh(); G.totmesh++;
@@ -4302,7 +4304,9 @@ static void dxf_read_polyline(int noob) {
if (strlen(layname)) ob->lay= dxf_get_layer_num(layname);
else ob->lay= G.scene->lay;
-
+ // not nice i know... but add_object() sets active base, which needs layer setting too (ton)
+ G.scene->basact->lay= ob->lay;
+
me= ob->data;
vcenter= ob->loc;
@@ -4407,6 +4411,8 @@ static void dxf_read_polyline(int noob) {
if (strlen(layname)) ob->lay= dxf_get_layer_num(layname);
else ob->lay= G.scene->lay;
+ // not nice i know... but add_object() sets active base, which needs layer setting too (ton)
+ G.scene->basact->lay= ob->lay;
me= ob->data;
@@ -4768,6 +4774,8 @@ static void dxf_read_3dface(int noob)
if (strlen(layname)) ob->lay= dxf_get_layer_num(layname);
else ob->lay= G.scene->lay;
+ // not nice i know... but add_object() sets active base, which needs layer setting too (ton)
+ G.scene->basact->lay= ob->lay;
me= ob->data;
@@ -5026,7 +5034,7 @@ static void dxf_read(char *filename)
if (strlen(layname)) ob->lay= dxf_get_layer_num(layname);
else ob->lay= G.scene->lay;
- /* aan de scene hangen */
+ /* link to scene */
base= MEM_callocN( sizeof(Base), "add_base");
BLI_addhead(&G.scene->base, base);