Código:
#.Bpy.
Registration información for Blender menús:
Name: matemats.
Blender: 232.
Group: addmesh.
Tip: represents math functions.
_versión__=1.240.
Import Blender.
From Blender import nmesh,BGL.
From Blender. Draw import *.
From math import *.
Def f(t):
Return (eval(exprx), eval(expry), eval(exprz)).
Ext0=create (0.0).
Ext1=create (1.0).
N=create (100).
Salto=create (0.01).
Nom=create (function).
Funx=create (t).
Funy=create (t*t).
Funz=create (0.0).
Fentrytyp=create (1).
Buf=create (1).
Def creacurva (nombre,ex0,ex1, n, salto):
Me=nmesh. New(nombre) ttry:
Print f(ex0) texcept:
Blender. Draw. Pupmenu (revisa el texto) return tv0=nmesh. Vert(f(ex0)[0], f(ex0)[1], f(ex0)[2]) tme, vértices, append(v0) tfor i in range (n):
T=(i+1)*salto+ex0 v1=nmesh. Vert(f(t)[0], f(t)[1], f(t)[2]) me, addedge (v0, 1) me, vértices, append(v1) v0 = v1 tnmesh. Putraw(me, nombre).
Def texbuf():
Menutext, i=,0 tfor TX in Blender. Text. Get():
I+=1 menutext+=|+tx.name+%x+str(i) treturn menutext.
Def draw():
Global ext0,ext1,n,salto,nom,funx,funy,funz,fentrytyp,buf tglobal exprx, expry, exprz tbgl.glclearcolor(0.5, 0.5, 0.6, 1) tbgl.glcolor3f(1,1,1) tbgl.glclear(BGL. Gl_color_bufer_bit) tfentrytyp=menú(entry type%t|expression%x1|text buffer%x2|file%x3 98,216,142,87,18,fentrytyp, val) text0=number(inf =,2,13,79,100,18,ext0.val,-10000,10000,extremo inf, del.
Intervalo) text1=number(sup =,2,112,79,100,18,ext1.val,-10000,10000,extremo sup, del.
Intervalo) TN=number(# segmts,2,10,55,205,18,n.val,1,200001,número de segmentos) tsalto=number(segmts.
Lenght=,3,10,37,205,18,salto, val.000001, abs(ext1.val-ext0.val),separación entre.
Vértices) tnom=string(obj name:, 98,10,165,205,18,nom, val,50) tif fentrytyp, val==1:
Funx = string(x(t)=,98,10,142,205,18,funx.val,100,expresion en t) funy = string(y(t)=,98,10,122,205,18,funy.val,100,expresion en t) funz = string(z(t)=,98,10,102,205,18,funz.val,100,expresion en t) exprx, expry, exprz = funx.val, funy.val, funz.val telif fentrytyp, val==2:
Buf=menú(select buffer%t+texbuf(),98,10,102,205,18,vaya, val) exprx = \n.join(blender. Text. Get()[vaya, val-1].aslines()) expry = \n.join(blender. Text. Get()[vaya, val-1].aslines()) exprz = \n.join(blender. Text. Get()[vaya, val-1].aslines()) tbutton(draw,10,10,5,170,2 tbutton(exit,99,185,7,30,22).
Def event(evt, al):
If evt==esckey: exit().
Def bevent(evt):
If evt==10:
Creacurva (nom, val,ext0.val,ext1.val,n.val,salto, val) tif evt==2:
Salto, val=(ext1.val-ext0.val)/n.val ext1.val=max(ext1.val,ext0.val) ext0.val=min(ext1.val,ext0.val) tif evt==3:
N.val=(ext1.val-ext0.val)/salto, val tif evt==99:
Exit() tblender. Redraw().
Register(draw, event, bevent)