1036
if(G.obedit->lay & G.vd->lay);
1036
if(!G.vd || !(G.obedit->lay & G.vd->lay))
1039
BIF_undo_push("Deselect all");
1042
1040
for(nu= editNurb.first; nu; nu= nu->next) {
1043
1041
if((nu->type & 7)==CU_BEZIER) {
2456
2454
float cent[3],bmat[3][3], rotmat[3][3], scalemat1[3][3], scalemat2[3][3];
2457
2455
float persmat[3][3], persinv[3][3];
2460
if(G.obedit==0 || G.obedit->type!=OB_SURF) return;
2458
if(G.vd==0 || G.obedit==0 || G.obedit->type!=OB_SURF) return;
2461
2459
if( (G.vd->lay & G.obedit->lay)==0 ) return;
2463
2461
Mat3CpyMat4(persmat, G.vd->viewmat);
2464
2462
Mat3Inv(persinv, persmat);
2466
/* imat and centre and size */
2464
/* imat and center and size */
2467
2465
Mat3CpyMat4(bmat, G.obedit->obmat);
2468
2466
Mat3Inv(imat, bmat);
2563
2561
BPoint *bp, *newbp = NULL;
2564
2562
float *curs, mat[3][3],imat[3][3], temp[3];
2566
if(G.obedit==0) return;
2564
if(G.obedit==0 || G.vd == 0) return;
2567
2565
if( (G.vd->lay & G.obedit->lay)==0 ) return;
2569
2567
Mat3CpyMat4(mat, G.obedit->obmat);
3355
3353
short event, cut = 0;
3357
3355
if(G.obedit==0 ) return;
3358
if( (G.vd->lay & G.obedit->lay)==0 ) return;
3356
if(G.vd==0 || (G.vd->lay & G.obedit->lay)==0 ) return;
3360
3358
if(G.obedit->type==OB_SURF) event= pupmenu("Erase %t|Selected%x0|All%x2");
3361
3359
else event= pupmenu("Erase %t|Selected%x0|Segment%x1|All%x2");
3658
if(ob->type!=type) return 0;
3656
if (object_data_is_libdata(ob)) {
3661
if(!G.vd || ob->type!=type) return 0;
3659
3662
if(ob->lay & G.vd->lay); else return 0;
3660
3663
tempbase.first= tempbase.last= 0;
3737
3740
BezTriple *bezt;
3739
3742
float *curs, cent[3],vec[3],imat[3][3],mat[3][3];
3740
float fac,cmat[3][3];
3743
float fac,cmat[3][3], grid;
3743
/* imat and centre and size */
3746
if (G.vd) grid = G.vd->grid;
3749
/* imat and center and size */
3746
3752
Mat3CpyMat4(mat, G.obedit->obmat);
3749
3755
cent[0]-= G.obedit->obmat[3][0];
3750
3756
cent[1]-= G.obedit->obmat[3][1];
3751
3757
cent[2]-= G.obedit->obmat[3][2];
3753
Mat3CpyMat4(imat, G.vd->viewmat);
3754
Mat3MulVecfl(imat, cent);
3755
Mat3MulMat3(cmat, imat, mat);
3756
Mat3Inv(imat, cmat);
3760
Mat3CpyMat4(imat, G.vd->viewmat);
3761
Mat3MulVecfl(imat, cent);
3762
Mat3MulMat3(cmat, imat, mat);
3763
Mat3Inv(imat, cmat);
3757
3765
setflagsNurb(0);
3786
3794
for(a=0;a<3;a++) {
3787
3795
VECCOPY(bezt->vec[a], cent);
3789
bezt->vec[1][0]+= -G.vd->grid;
3790
bezt->vec[0][0]+= -1.5*G.vd->grid;
3791
bezt->vec[0][1]+= -0.5*G.vd->grid;
3792
bezt->vec[2][0]+= -0.5*G.vd->grid;
3793
bezt->vec[2][1]+= 0.5*G.vd->grid;
3797
bezt->vec[1][0]+= -grid;
3798
bezt->vec[0][0]+= -1.5*grid;
3799
bezt->vec[0][1]+= -0.5*grid;
3800
bezt->vec[2][0]+= -0.5*grid;
3801
bezt->vec[2][1]+= 0.5*grid;
3794
3802
for(a=0;a<3;a++) Mat3MulVecfl(imat, bezt->vec[a]);
3824
bp->vec[0]+= -1.5*G.vd->grid;
3826
bp->vec[0]+= -G.vd->grid;
3827
bp->vec[1]+= G.vd->grid;
3829
bp->vec[0]+= G.vd->grid;
3830
bp->vec[1]+= G.vd->grid;
3832
bp->vec[0]+= 1.5*G.vd->grid;
3833
bp->vec[0]+= -1.5*grid;
3841
bp->vec[0]+= 1.5*grid;
3835
3844
for(a=0;a<4;a++, bp++) Mat3MulVecfl(imat,bp->vec);
3861
bp->vec[0]+= -2.0*G.vd->grid;
3870
bp->vec[0]+= -2.0*grid;
3863
bp->vec[0]+= -G.vd->grid;
3865
bp->vec[0]+= G.vd->grid;
3867
bp->vec[0]+= 2.0*G.vd->grid;
3876
bp->vec[0]+= 2.0*grid;
3870
3879
for(a=0;a<5;a++, bp++) Mat3MulVecfl(imat,bp->vec);
3892
3901
bezt->h1= bezt->h2= HD_AUTO;
3893
3902
bezt->f1= bezt->f2= bezt->f3= 1;
3894
bezt->vec[1][0]+= -G.vd->grid;
3903
bezt->vec[1][0]+= -grid;
3895
3904
for(a=0;a<3;a++) Mat3MulVecfl(imat,bezt->vec[a]);
3896
3905
bezt->radius = bezt->weight = 1.0;
3902
3911
bezt->h1= bezt->h2= HD_AUTO;
3903
3912
bezt->f1= bezt->f2= bezt->f3= 1;
3904
bezt->vec[1][1]+= G.vd->grid;
3905
for(a=0;a<3;a++) Mat3MulVecfl(imat,bezt->vec[a]);
3906
bezt->radius = bezt->weight = 1.0;
3910
VECCOPY(bezt->vec[a], cent);
3912
bezt->h1= bezt->h2= HD_AUTO;
3913
bezt->f1= bezt->f2= bezt->f3= 1;
3914
bezt->vec[1][0]+= G.vd->grid;
3915
for(a=0;a<3;a++) Mat3MulVecfl(imat,bezt->vec[a]);
3916
bezt->radius = bezt->weight = 1.0;
3920
VECCOPY(bezt->vec[a], cent);
3922
bezt->h1= bezt->h2= HD_AUTO;
3923
bezt->f1= bezt->f2= bezt->f3= 1;
3924
bezt->vec[1][1]+= -G.vd->grid;
3913
bezt->vec[1][1]+= grid;
3914
for(a=0;a<3;a++) Mat3MulVecfl(imat,bezt->vec[a]);
3915
bezt->radius = bezt->weight = 1.0;
3919
VECCOPY(bezt->vec[a], cent);
3921
bezt->h1= bezt->h2= HD_AUTO;
3922
bezt->f1= bezt->f2= bezt->f3= 1;
3923
bezt->vec[1][0]+= grid;
3924
for(a=0;a<3;a++) Mat3MulVecfl(imat,bezt->vec[a]);
3925
bezt->radius = bezt->weight = 1.0;
3929
VECCOPY(bezt->vec[a], cent);
3931
bezt->h1= bezt->h2= HD_AUTO;
3932
bezt->f1= bezt->f2= bezt->f3= 1;
3933
bezt->vec[1][1]+= -grid;
3925
3934
for(a=0;a<3;a++) Mat3MulVecfl(imat,bezt->vec[a]);
3926
3935
bezt->radius = bezt->weight = 1.0;
3940
3949
VECCOPY(bp->vec, cent);
3942
3951
if(xzproj==0) {
3943
bp->vec[0]+= nurbcircle[a][0]*G.vd->grid;
3944
bp->vec[1]+= nurbcircle[a][1]*G.vd->grid;
3952
bp->vec[0]+= nurbcircle[a][0]*grid;
3953
bp->vec[1]+= nurbcircle[a][1]*grid;
3947
bp->vec[0]+= 0.25*nurbcircle[a][0]*G.vd->grid-.75*G.vd->grid;
3948
bp->vec[2]+= 0.25*nurbcircle[a][1]*G.vd->grid;
3956
bp->vec[0]+= 0.25*nurbcircle[a][0]*grid-.75*grid;
3957
bp->vec[2]+= 0.25*nurbcircle[a][1]*grid;
3950
3959
if(a & 1) bp->vec[3]= 0.25*sqrt(2.0);
3951
3960
else bp->vec[3]= 1.0;
3980
3989
VECCOPY(bp->vec, cent);
3982
3991
fac= (float)a -1.5;
3983
bp->vec[0]+= fac*G.vd->grid;
3992
bp->vec[0]+= fac*grid;
3984
3993
fac= (float)b -1.5;
3985
bp->vec[1]+= fac*G.vd->grid;
3994
bp->vec[1]+= fac*grid;
3986
3995
if(a==1 || a==2) if(b==1 || b==2) {
3987
bp->vec[2]+= G.vd->grid;
3989
3998
Mat3MulVecfl(imat,bp->vec);
3990
3999
bp->vec[3]= 1.0;
4047
4056
for(a=0; a<5; a++) {
4049
4058
VECCOPY(bp->vec, cent);
4050
bp->vec[0]+= nurbcircle[a][0]*G.vd->grid;
4051
bp->vec[2]+= nurbcircle[a][1]*G.vd->grid;
4059
bp->vec[0]+= nurbcircle[a][0]*grid;
4060
bp->vec[2]+= nurbcircle[a][1]*grid;
4052
4061
if(a & 1) bp->vec[3]= 0.5*sqrt(2.0);
4053
4062
else bp->vec[3]= 1.0;
4054
4063
Mat3MulVecfl(imat,bp->vec);
4149
4158
int type, newname= 0;
4151
4161
if(G.scene->id.lib) return;
4153
4163
/* this function also comes from an info window */
4154
4164
if ELEM(curarea->spacetype, SPACE_VIEW3D, SPACE_INFO); else return;
4157
4166
if(stype>=10 && stype<20) type= CU_2D+1;
4158
4167
else if(stype>=20 && stype<30) type= CU_2D+2;