Bugfix for reading DXF files, custom data layer wasn't always

added properly.
This commit is contained in:
2007-02-07 10:56:44 +00:00
parent 15750c82cd
commit cc93c03cbb

View File

@@ -4183,32 +4183,7 @@ static void dxf_read_polyline(int noob) {
dxf_close_2dpoly();
if (p2dmhold==NULL) {
if (noob) {
ob= NULL;
me= add_mesh(); G.totmesh++;
((ID *)me)->us=0;
if (strlen(entname)) new_id(&G.main->mesh, (ID *)me, entname);
else if (strlen(layname)) new_id(&G.main->mesh, (ID *)me, layname);
vcenter= zerovec;
} else {
ob= add_object(OB_MESH);
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;
// 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;
}
me->totvert=0;
me->totface=0;
me->mvert=NULL;
me->mface=NULL;
dxf_get_mesh(&me, &ob, noob);
strcpy(oldplay, layname);
@@ -4284,34 +4259,8 @@ static void dxf_read_polyline(int noob) {
lwasp2d=1;
}
else if (flag&64) {
if (noob) {
ob= NULL;
me= add_mesh(); G.totmesh++;
((ID *)me)->us=0;
if (strlen(entname)) new_id(&G.main->mesh, (ID *)me, entname);
else if (strlen(layname)) new_id(&G.main->mesh, (ID *)me, layname);
vcenter= zerovec;
} else {
ob= add_object(OB_MESH);
if (strlen(entname)) new_id(&G.main->object, (ID *)ob, entname);
else if (strlen(layname)) new_id(&G.main->object, (ID *)ob, layname);
dxf_get_mesh(&me, &ob, 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;
}
me->totvert=0;
me->totface=0;
me->mvert=NULL;
me->mface=NULL;
if(ob) VECCOPY(ob->loc, cent);
dxf_add_mat (ob, me, color, layname);
@@ -4631,33 +4580,7 @@ static void dxf_read_3dface(int noob)
}
if (f3dmhold==NULL) {
if (noob) {
ob= NULL;
me= add_mesh(); G.totmesh++;
((ID *)me)->us=0;
if (strlen(entname)) new_id(&G.main->mesh, (ID *)me, entname);
else if (strlen(layname)) new_id(&G.main->mesh, (ID *)me, layname);
vcenter= zerovec;
} else {
ob= add_object(OB_MESH);
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;
// 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;
}
me->totvert=0;
me->totface=0;
me->mvert=NULL;
me->mface=NULL;
dxf_get_mesh(&me, &ob, noob);
strcpy(oldflay, layname);