如何在blender教程中使用树苗产生器插件?

AE插件集合
拍子号5843940&帖子374&积分763&威望29 &爱拍豆&在线时间230 小时&
AE插件集合
学习视频特效的同学速度进来看看吧!!!
第1章 55MM
1.1 55mm Color Grad(颜色渐变)
1.2 55mm Defocus (散焦)
1.3 55mm Faux Flim(模仿胶片效果)
1.4 55mm Fluorescent (荧光)
1.5 55mm Fog(雾)
1.6 55mm Infra-red (在红色下面)
1.7 55mm Mist(薄雾)
1.8 55mm ND Grad(渐变)
1.9 55mm Night Vision(夜视)
1.10 55mm Selective Soft Focus(选择性的软焦点)
1.11 55mm Skin Smoother(外表面平整)
1.12 55mm Tint(偏色)
1.13 55mm Warm/Cool(暖色/冷色)
第2章 AEFlame(火焰)
第3章 Boris
3.1 Boris Fire(火焰效果)
3.2 Boris FX 3
3.2.1 Boris Artist's Poster(艺术海报)
3.2.2 Boris Blur (模糊)
3.2.3 Boris Directional Blur (方向模糊)
3.2.4 Boris Gaussian Blur (高斯模糊)
3.2.5 Boris Unsharp Mask (锐利的遮罩)
3.2.6 Boris Brightness-Contrast (亮度-对比度)
3.2.7 Boris Color Balance (颜色平衡)
3.2.8 Boris Color Correction (颜色修正)
3.2.9 Boris Composite (合成)
3.2.10 Boris Correct Selected Color (修改选择的颜色)
3.2.11 Boris Hue-Sat-Lightness (色调-饱和度-亮度)
3.2.12 Boris Invert Solarize (反转曝光)
3.2.13 Boris Levels Gamma (标准的伽马值)
3.2.14 Boris MultiTone Mix (多通道混合)
3.2.15 Boris Posterize (多色调分色)
3.2.16 Boris RGB Blend (RGB混和)
3.2.17 Boris Tint-Tritone (以三种颜色替换)
3.2.18 Boris Bulge (凸出)
3.2.19 Boris Displacement Map (置换贴图)
3.2.20 Boris Fast Flipper (自动翻转)
3.2.21 Boris Polar Displacement (两极置换)
3.2.22 Boris Ripple (波纹)
3.2.23 Boris Vector Displacement (矢量置换)
3.2.24 Boris Wave (波浪)
3.2.25 Boris Alpha Process (Alpha通道处理)
3.2.26 Boris Chroma Key (色度抠像)
3.2.27 Boris Composite Choker (令人窒息的合成)
3.2.28 Boris Linear Color Key (线性颜色抠像)
3.2.29 Boris Linear Luma Key (线性亮度抠像)
3.2.30 Boris Make Alpha Key (制作新的Alpha通道)
3.2.31 Boris Matte Choker (令人窒息的剪影)
3.2.32 Boris Matte Cleanup(清除剪影)
3.2.33 Boris Two Way Key(两种路线的抠像)
3.2.34 Boris Alpha Spotlight(以Apha通道的方式设定聚光灯)
3.2.35 Boris Edge Lighting(边缘亮光)
3.2.36 Boris Light Sweep(扫光)
3.2.37 Boris Reverse Spotlight(相反的聚光灯)
3.2.38 Boris Spotlight(聚光灯)
3.2.39 Boris 2D Particles(二维粒子)
3.2.40 Boris 3D Image Shatter(模拟三维图像破碎效果)
3.2.41 Boris Cube(模拟三维立方体)
3.2.42 Boris Cylinder(模拟三维圆柱体)
3.2.43 Boris DVE(模拟三维效果)
3.2.44 Boris Page Turn(翻页)
3.2.45 Boris Sphere(模拟三维球形)
3.2.46 Boris Clouds(流动的云)
3.2.47 Boris Noise Map(噪点地图)
3.2.48 Boris Alpha Pixel Noise(通道像素噪点)
3.2.49 Boris RGB Edges(RGB边缘)
3.2.50 Boris RGB Pixel Noise(RGB像素噪声)
3.2.51 Boris Scatterize(模拟毛玻璃的效果)
3.2.52 Boris Spray Paint Noise(喷漆噪点)
3.2.53 Boris Flat 3D Text(扁平的三维字体[不支持中文])
3.2.54 Boris 3D Text(三维字体[不支持中文])
3.3 Boris Continuum
3.3.1 BC 3D Text(三维文字)
3.3.2 BC Boost Blend(推进混合)
3.3.3 BC Burnt Film(燃烧的电影)
3.3.4 BC Clouds(流动的云)
3.3.5 BC Comet(彗星)
3.3.6 BC Composite(合成)
3.3.7 BC DVE(模拟三维效果)
3.3.8 BC Fire(火)
3.3.9 BC Jitter(频谱曲线抖动)
3.3.10 BC Looper(循环)
3.3.11 BC Particle System(粒子系统)
3.3.12 BC Posterize Time(相片时间)
3.3.13 BC Rain(下雨)
3.3.14 BC Sequencer(音序器)
3.3.15 BC Snow(下雪)
3.3.16 BC Sparks(火花)
3.3.17 BC Stars(星星)
3.3.18 BC Super Blend(超级混合)
3.3.19 BC Temporal Blur(时间模糊)
3.3.20 BC Trails(轨迹)
3.3.21 BC Velocity Remap(速度测试图)
3.3.22 BC Z Space I(Z空间1)
3.3.23 BC Z Space I I(Z空间2)
第4章 Colormap(颜色地图)
第5章 Composite Wizard
5.1 CW Composite Color Matcher(复合颜色匹配器)
5.2 CW Deluxe Edge Finder(华丽的边缘查找器)
5.3 CW Deluxe Edge Finder EZ(华丽的边缘查找器EZ)
5.4 CW Denoiser(放射状处理)
5.5 CW Edge Blur(边缘模糊)
5.6 CW Edge Blur EZ(边缘模糊EZ)
5.7 CW Matte Feather(剪影羽化)
5.8 CW Matte Feather EZ(剪影羽化EZ)
5.9 CW Matte Feather Sharp(剪影羽化锐利)
5.10 CW Miracle Alpha Cleaner(通道清洁)
5.11 CW Re-Matter(重置剪影)
5.12 CW Smooth Screen(光滑屏幕)
5.13 CW Spill Killer(溢出杀手)
5.14 CW Spill Killer EZ(溢出杀手EZ)
5.15 CW Super Blur(超级模糊)
5.16 CW Super Compound Blur(超级混合模糊)
5.17 CW Super Rack Focus(超级变焦)
5.18 CW Wire/Rig Zapper(线框/钻探器)
5.19 CW Zone HLS(环绕HLS)
第7章 Coycore
7.1 Cult Effects 1.5
7.1.1 CE 3D Glasses (三维眼睛)
7.1.2 CE Basic Fill(基本填充)
7.1.3 CE Cell Pattern(蜂房图案)
7.1.4 CE Change Color HLS(改变选择的颜色)
7.1.5 CE Channeling(渠道)
7.1.6 CE Checker(棋盘格)
7.1.7 CE Circle(圆形)
7.1.8 CE Color Composite(颜色合成)
7.1.9 CE Color Link(颜色链接)
7.1.10 CE Color Picker(颜色拾取)
7.1.11 CE Color Solid(颜色固化)
7.1.12 CE ColorsQuad(颜色四方格)
7.1.13 CE Difference(差异)
7.1.14 CE FireUp(火上)
7.1.15 CE Grid(网格)
7.1.16 CE Lightning(闪电)
7.1.17 CE Magnify(夸大效果)
7.1.18 CE Noise Alpha(噪点通道)
7.1.19 CE Noise HLS(噪点HLS)
7.1.20 CE Noise HLS Auto(噪点HLS自动)
7.1.21 CE Noise Turbulent(骚乱的噪波)
7.1.22 CE Noise Turbulent II(骚乱的噪波2)
7.1.23 CE Optics Compensation(光学补偿)
7.1.24 CE Paint(绘画)
7.1.25 CE Radial Shadow(放射状的投影)
7.1.26 CE Roughen Edges(让边缘变粗糙)
7.1.27 CE Turbulent Displace(汹涌的置换)
7.2 Cult Effects Xtras
7.2.1 CE Set Channel(设置通道)
7.2.2 CE View Channel(显示通道)
第8章 Digieffects
8.1 DigiEffect Aurorix V2.0
8.1.1 3D Lighting 2(光线彩色浮雕)
8.1.2 AgedFilm 2(老电影的效果)
8.1.3 Bulgix 2(类似于凸出的效果)
8.1.4 Chaotic Noise 2(混乱的噪波)
8.1.5 Chaotic Rainbow 2(混乱的五彩缤纷)
8.1.6 Color SpotLights 2(彩色聚光灯)
8.1.7 Earthquake 2(震动)
8.1.8 Electrofield 2(电磁感应)
8.1.9 Flitter 2(碎屑)
8.1.10 Fractal Noise 2(彩色不规则噪波2)
8.1.11 Infinity Warp 2(无限扭曲)
8.1.12 Infinity Zone 2(无限环绕)
8.1.13 Interferix 2(专用干扰图1)
8.1.14 Interpheroid 2(专用干扰图2)
8.1.15 Interpheron 2(专用干扰图2)
8.1.16 LightZoom 2(强光的纵深效果)
8.1.17 Noise Blender 2(噪点搅拌机)
8.1.18 SoapFilm 2(皂膜)
8.1.19 SpotLights 2(聚光灯)
8.1.20 Strange Nebulae 2(奇异的星云)
8.1.21 Tilos 2(阵列)
8.1.22 Turbulent Flow 2(湍流)
8.1.23 VideoLook 2(电视干扰信号)
8.1.24 Warpoid 2(拉伸效果)
8.1.25 Whirlix 2(旋转扭曲效果)
8.1.26 WoodMaker 2(木纹)
8.2 DigiEffect Berzerk V1.5
8.2.1 Blizzard(风雪)
8.2.2 BumpMaker(制作凹凸贴图)
8.2.3 Contourist(轮廓线)
8.2.4 Crystallizer(结晶器)
8.2.5 CycloWarp(螺旋)
8.2.6 Edgex(边缘锐化)
8.2.7 FogBank(浓雾)
8.2.8 GravityWell(重力旋涡)
8.2.9 Laser(激光器)
8.2.10 Newsprint(新闻用纸)
8.2.11 NightBloom(夜间华)
8.2.12 OilPaint(油画)
8.2.13 Pearls(珍珠)
8.2.14 Perspectron(特殊的扭曲)
8.2.15 Ripploid(荡起的波纹)
8.2.16 Spintron(怪异的扭曲)
8.2.18 StarField(飞舞的星星)
8.2.19 StillNoise(静态噪点)
8.2.20 VanGoughist(美术笔触)
8.3 Cine Look Filmres V1.1
8.3.1 DE CineLook(胶片调色)
8.3.2 DE FilmDamage(胶片处理)
8.4 Cinemotion
8.4.1 DE Adaptive Noise(适应的噪点)
8.4.2 DE Banding Reducer(条带还原)
8.4.3 DE Film Motion(**电影)
8.4.4 DE Grain Reducer(颗粒还原)
8.4.5 DE Interlace Aliasing Reducer(交错产生器)
8.4.6 DE Letterbox(宽银幕产生器)
8.4.7 DE Selective HSB Noise(选择HSB噪点)
8.4.8 DE Selective HSB Posterize(选择HSB多色调分色)
8.4.9 DE Selective RGB Noise(选择RGB噪点)
8.4.10 DE Selective RGB Posterize(选择RGB多色调分色)
8.5 Delerium
8.5.1 DE Bubbles(泡沫)
8.5.2 DE Camera Shake(摄像机抖动)
8.5.3 DE Channel Delay(通道延迟)
8.5.4 DE COP Blur(优化模糊)
8.5.5 DE Electrical Arcs(闪电)
8.5.6 DE Fairy Dust(仙女的灰尘)
8.5.7 DE Film Flash(影片闪烁)
8.5.8 DE Fire(火)
8.5.9 DE FireWorks(火焰发射器)
8.5.10 DE Flicker and Strobe(闪光灯)
8.5.11 DE Flow Motion(流动)
8.5.12 DE Fog Factory(雾工厂)
8.5.13 DE Framing Gradients(画面渐变)
8.5.14 DE Glower(炽热体)
8.5.15 DE Grayscaler(灰度处理)
8.5.16 DE HLS Displace(HLS置换)
8.5.17 DE Hyper Harmonizer(绚丽的彩带)
8.5.18 DE Lens Flares(镜头光斑)
8.5.19 DE Loose Sprockets(任意按链锯齿移动)
8.5.20 DE Multigradient(多极渐变)
8.5.21 DE Muzzle Flash(枪火)
8.5.22 DE Nexus(连接点)
8.5.23 DE Puffy Clouds(膨胀的云)
8.5.24 DE Rain Fall(下雨)
8.5.25 DE Retinal Bloom(网状张开)
8.5.26 DE Schematic Grids(示意**格)
8.5.27 DE Show Channels(显示通道)
8.5.28 DE Sketchist(变脏)
8.5.29 DE Smoke(升起的烟)
8.5.30 DE Snow Storm(暴风雪)
8.5.31 DE Solarize(过度曝光)
8.5.32 DE Sparks(焰火)
8.5.33 DE Specular Lighting(镜面高光)
8.5.34 DE Thermograph(热录像仪)
8.5.35 DE Turbulent Noise(紊乱的噪波)
8.5.36 DE Video Malfunction(电视故障)
8.5.37 DE Visual Harmonizer(原子曲线)
8.5.38 DE Wave Displace(波浪置换)
第9章 Digital Anarchy Elements
9.1 Screen Text(屏幕文字)
9.2 Text Grid(文字网格)
9.3 Text Matrix(超级文字)
第10章 Digital Film Tools
10.1 CS Color Correct(颜色修正)
10.2 CS Composite(合成)
10.3 CS Defocus(散焦)
10.4 CS Fast Blur(快速模糊)
10.5 CS Frame Averager(画面中和器)
10.6 CS Grain(增加颗粒)
10.7 CS Holdout Composite(持续合成)
10.8 CS Light Composite(灯光合成)
10.9 CS Math Composite(数学合成)
10.10 CS Matte Generator(无光发生器)
10.11 CS Matte Repair(剪影修理)
10.12 CS Non-Additive Mix(非附加混合)
10.13 CS Paste Color(粘贴颜色)
10.14 CS Selective Color Correct(选择颜色修正)
10.15 CS Selective Soft Focus(选择软焦点)
第11章 eFX Pro
第12章 Evolution
12.1 Card Dance (卡片跳舞)
12.2 Card Wipe (卡片翻转)
12.3 Caustics(焦散)
12.4 Foam (气泡)
12.5 Multiplane(多图层变换)
12.6 Radio Shape(模拟无线电波的形状)
12.7 Radio Star(模拟星形无线电波)
12.8 Wave World(波浪世界)
第13章 Eye Candy
13.1 Antimatter(反物质)
13.2 Carve(倒角)
13.3 Chrome(铬合金)
13.4 Cutout(挖剪图像)
13.5 Fire(火焰)
13.6 Fur(毛发)
13.7 Glass(玻璃)
13.8 Glow(辉光)
13.9 HSB Noise(HSB躁点)
13.10 Inner Bevel(向内倒角)
13.11 Jiggle(摇动)
13.12 Motion Trail(拖尾)
13.13 Outer Bevel(向外倒角)
13.14 Perspective Shadow(透视投影)
13.15 Smoke(烟)
13.16 Squint(重影)
13.17 Star(星形)
13.18 Swirl(旋涡)
13.19 Weave(编织)
第14章 FilmFX
14.1 Color Timing(颜色调整)
14.2 Film Stock(库存胶片)
第15章 Final Effects Complete Complete
15.1 Final Effects(简称Fe)
15.1.1 FE Ball Action(球状**)
15.1.2 FE Bubbles(泡沫)
15.1.3 FE Color Offset(颜色位移)
15.1.4 FE Composite(合成)
15.1.5 FE Flo Motion(失真**)
15.1.6 FE Griddler(矿筛)
15.1.7 FE Image Wipe(图像擦除)
15.1.8 FE Kaleida(发音体)
15.1.9 FE Lens(透镜)
15.1.10 FE Light Burst 2.5(灯光爆裂)
15.1.11 FE Light Sweep(扫光)
15.1.12 FE Page Turn(翻页)
15.1.13 FE Particle Systems(粒子系统)
15.1.14 FE Particle Systems II(粒子系统2)
15.1.15 FE Particle Systems LE(粒子系统LE)
15.1.16 FE Pixel Polly(像素剥离)
15.1.17 FE Radial ScaleWipe(反射状的缩放擦拭)
15.1.18 FE Rain(下雨)
15.1.19 FE Scale Wipe(缩放擦除)
15.1.20 FE Scatterize(分散)
15.1.21 FE Slant(倾斜)
15.1.22 FE Slant Matte(倾斜剪影)
15.1.23 FE Snow(下雪)
15.1.24 FE Sphere(球体)
15.1.25 FE Star Burst(星爆式)
15.1.26 FE Threshold(阀值)
15.1.27 FE Threshold RGB(RGB阀值)
15.1.28 FE Tiler(瓦盖)
15.1.29 FE Twister(缠绕)
15.2 Next Effect(简称Ne)
15.2.1 FE Advanced 3D(高级三维)
15.2.2 FE Bend It(弯曲)
15.2.3 FE Cylinder(圆柱体)
15.2.4 FE Drizzle(毛毛雨)
15.2.5 FE Force Motion Blur(强大的**模糊)
15.2.6 FE Hair(毛发)
15.2.7 FE Light Rays(体积光)
15.2.8 FE Mr. Smoothie(圆滑)
15.2.9 FE Power Pin(透视点)
15.2.10 FE RepeTile(放射状模糊)
15.2.11 FE Simple Wire Removal(擦除金属丝)
15.2.12 FE Wide Time(放慢)
15.3 Studio Effects(简称Se)
15.3.1 FE Alpha Map(Alpha贴图)
15.3.2 FE Bender(弯曲)
15.3.3 FE Blobbylize(滴状斑点)
15.3.4 FE Burn Film(燃烧的胶片)
15.3.5 FE Glass(玻璃)
15.3.6 FE Glass Wipe(擦拭玻璃)
15.3.7 FE Glue Gun(喷胶枪)
15.3.8 FE Grid Wipe(删格擦拭)
15.3.9 FE Jaws(狭口)
15.3.10 FE Light Wipe(扫光)
15.3.11 FE Mr. Mercury(水银先生)
15.3.12 FE Particle World(粒子世界)
15.3.13 FE Ripple Pulse(涟漪发生器)
15.3.14 FE Smear(涂污)
15.3.15 FE Split(切开)
15.3.16 FE Spotlight(聚光灯)
15.3.17 FE Time Blend(时间混合)
15.3.18 FE Time Blend FX(时间混合FX)
15.3.19 FE Toner(调色剂)
第16章 Forge FreeForm
第17章 HollyWood FX
17.1 Hollywood FX 4.03 Gold(好莱坞金版)
17.2 Hollywood FX Silver 4.0(好莱坞银版)
附送AE插件下载地址:AE插件下载都在这里呢
一键转帖到:
拍子号207442&帖子9848&积分6155&威望379 &爱拍豆&在线时间2003 小时&
拍子号2885307&帖子19490&积分7648&威望332 &爱拍豆&在线时间2836 小时&
好多。。 谢谢楼主
三个星期以后,28日登陆爱拍,久违了。
拍子号335707&帖子1747&积分914&威望101 &爱拍豆&在线时间336 小时&
拍子号2213135&帖子521&积分195&威望0 &爱拍豆&在线时间138 小时&
拍子号7438217&帖子3&积分2&威望0 &爱拍豆&在线时间2 小时&
完全看不懂啊
拍子号4043755&帖子1857&积分1413&威望94 &爱拍豆&在线时间781 小时&
拍子号3728859&帖子14019&积分6566&威望494 &爱拍豆&在线时间1262 小时&
我的天啊,真的是太牛X 了,AE的东西我最喜欢&&抱起走咯 嘻嘻
& && &ー守护我可爱的自由乐园つ
拍子号3728859&帖子14019&积分6566&威望494 &爱拍豆&在线时间1262 小时&
再认真的看了一下,差不多我都有了 不用下了&&谢谢分享
& && &ー守护我可爱的自由乐园つ
拍子号3846129&帖子1167&积分844&威望4 &爱拍豆&在线时间515 小时&
仔细的说~~~很大
拍子号2242844&帖子10&积分11&威望1 &爱拍豆&在线时间7 小时&
拍子号5093307&帖子15&积分12&威望0 &爱拍豆&在线时间10 小时&
拍子号7915185&帖子4&积分3&威望0 &爱拍豆&在线时间3 小时&
拍子号7953631&帖子4&积分8&威望0 &爱拍豆&在线时间8 小时&
看不懂呃~~~教下
拍子号7967825&帖子3&积分1&威望0 &爱拍豆&在线时间1 小时&
楼主看来收藏了许多&&拿出来分享真是好哎
拍子号7967825&帖子3&积分1&威望0 &爱拍豆&在线时间1 小时&
可惜进不去 我刚刚说的太早了
拍子号3766781&帖子38&积分66&威望0 &爱拍豆&在线时间61 小时&
不明真相。。。
拍子号7140848&帖子16506&积分4969&威望180 &爱拍豆&在线时间1554 小时&
这么多看不过来了
拍子号7807272&帖子1&积分1&威望0 &爱拍豆&在线时间1 小时&
确实看不懂
[通过 QQ、MSN 分享给朋友]
网站备案/许可证号:粤ICP备号&&&&&&网络文化经营许可证:粤网文[8号页面导航:
→ 正文内容 Gnumeric下用Python操作表格
在Gnumeric下使用Python脚本操作表格的教程
这篇文章主要介绍了在Gnumeric下使用Python脚本操作表格的教程,本文来自于IBM官方网站,需要的朋友可以参考下
关于Gnumeric
Gnumeric是linux平台下的一款功能强大且易于使用的电子表格软件,与其他常用电子表格软件如Excel等在风格上非常一致。Gnumeric当前的稳定版是1.2.13,对中文的支持已经比较成熟。据官方信息,Gnumeric除实现了MS Excel所有的函数外,还实现了60多个Excel中不存在的函数和基本的金融方面函数,并已经具备了高级统计分析、可扩展的随机数产生器、线性或非线性求解的计算能力。更令人惊喜的是,现在Gnumeric已经集成了Python强大的脚本编程能力,Python用户可以为Gnumeric实现更为复杂的计算功能。
何谓Python
Python是一种解释性的,面向对象的,具有动态语义的程序设计语言。Python代码具有优秀的可读性,具有模块和包的概念,支持各种主流平台,并具有很好的跨平台能力。Python已广泛用于文本处理、互联网编程、数据库编程、系统管理等领域 。同时Python又是一种成功的嵌入语言,包装C/C++的代码非常方便,越来越多的重量级应用程序开始支持Python脚本编程,OpenOffice, GIMP, Blender等。
任何一个C函数调用或访问一个Python对象都必须遵循这样一个框架:
1. C函数把调用参数转换成Python语言数据类型
2. 利用转换后的参数调用Python函数
3. 返回值转换成C语言类型,并返回给C函数
类似的,从Python函数调用C函数也遵循相似的步骤:
1. Python函数把参数转换成C语言类型
2. 用转换后的参数调用C函数
3. 返回值转换成Python语言类型后返回给Python函数
因此Python函数和C函数相互调用的关键是数据的相互转换问题,这些转换需要相当好的C和Python解释语言开发功底,好在Gnumeric的Python插件已经自动为我们做了数据类型的转换,我们只需关注算法的实现就可以了。
Gnumeric和Python的交互也遵循类似的过程,首先Gnumeric自动转换参数类型,继而调用Python函数,最后再把返回值转换成合适的类型返回给Gnumeric。下面是Gnumeric和Python的常见数据类型对应表:
对于单元格(Cell),Gnumeric把单元格中的数据直接转换相应的数据类型,传递被调用Python函数,如整数(Integer)、浮点数(Float)、字符串(String);然而对于单元格区域(Range),Gnumeric采取迂回的策略,只是传递一个单元格区域的引用(RangeRef)给被调用Python函数,而Python这时就需要通过Gnumeric接口才能访问和操作单元格区域中的数据。因此,Gnumeric为Python提供了Gnumeric模块,,包括Gnumeric的全部函数和工作薄工作表对象,这里简略地列出了Gnumeric模块中的函数和对象(具体细节请读者参考Gnumeric的py-gnumeric.c源文件位于plugins/python-loader目录)。
通过上面的介绍,我们初步了解了跨语言调用的框架,在此基础上再来分析一下Gnumeric软件包自带的Python插件范例(通常位于/usr/lib/gnumeric/&VERSION&/plugins/py-func/)。该范例由plugin.xml、py_func.py两个文件构成,plugin.xml是XML形式的配置文件,供Gnumeric来读取python函数的相关信息;py_func.py包含Python函数的定义和函数原型字典。
首先分析的是py_func.py文件。该文件定义了三个函数:func_printf,func_capwords,func_bitand,功能分别是格式化输出,单词首字母大写,按位求和。我们来比较一下这三个函数:
以func_bitand函数为例,函数接受两个整数,返回值也为整数,C与Python的类型转换是Gnumeric自动完成的,func_bitand只注重算法的实现,具体计算是通过调用Gnumeric的按位求和函数(bitand)完成的;值得一提的是''@''开头的文档字符串是提供给Gnumeric的文档接口,分别提供函数的功能、接口、实例以及引用方面的信息,格式也是固定的,每个域(包括换行符)用单引号括起来并后接"\"。
代码 1 func_bitand函数定义
from Gnumeric import *
def func_bitand(num1, num2):
'@FUNCTION=PY_BITAND\n'\
'@SYNTAX=PY_BITAND (num)\n'\
'@DESCRIPTION=The BITAND function returns bitwise'\
'and-ing of its arguments.'\
'@EXAMPLES=\n'\
'PY_BITAND(6, 2) equals 2)'\
'@SEEALSO=BITAND'
gnm_bitand=functions['bitand'] # Gnumeric的按位求和函数
return gnm_bitand(num1, num2)
py_func.py文件尾处还有一个起特殊作用的字典,向Gnumeric提供Python函数原型信息,姑且称之为函数原型字典。函数原型字典的命名是非常严格的,必须以"_functions"为后缀,"_"前面前面的名字必须与plugin.xml文件保持一致,这样Gnumeric才能发现插件中的各种函数信息,否则Gnumeric就会出现许多函数信息方面的错误,导致插件函数无法使用。函数原型用字典中"key:value"对来表示(代码2), 如func_bitand,key就是在Gnumeric被映射的函数名py_bitand,value是由参数类型、参数名称、函数名称组成的元组。
代码 2 test_functions函数原型字典
test_functions = {
'py_printf': func_printf,
'py_capwords': ('s', 'sentence', func_capwords),
'py_bitand':
('ff', 'num1, num2', func_bitand)
在函数原型字典中,参数类型是用特殊的字符来表示的,例如func_bitand的两个浮点数参数表示为"ff"。常见参数类型的字符串表示总结如下:
另外一个结构简单的XML文件plugins.xml (1) ,是开发者向Gnumeric提供的配置信息。information标签中的name和description标签提供了该插件的名字和描述信息,而且这些信息的国际化也很简单,只需要在有语言标记的相应标签中填写国际化信息即可。loader标签中attribute标签的value属性、service标签中id属性、function标签中的name属性是最重要的,分别对应于Python脚本文件名、脚本中的函数原型字典名(不包括后缀)、函数原型函数的key。对于本例,属性值为py_func,test,py_printf,py_capwords,py_bitand,则对应于插件分别为py_func.py和test_functions,py_printf,py_capwords,py_bitand。这些对应关系一定要一致,否则Gnumeric就会向你抱怨了。
代码 3 py-func.py的plugin.xml配置文件
&?xml version="1.0" encoding="UTF-8"?&
&plugin id="Gnumeric_PyFunc"&
&information&
&name&Python functions&/name&
&description&Sample Python plugin providing
some (useless) functions.
&/description&
&require_explicit_enabling/&
&/information&
&loader type="Gnumeric_PythonLoader:python"&
&attribute value="py_func" name="module_name"/&
&services&
&service type="function_group" id="test"&
&category&Python&/category&
&category xml:lang="zh_CN"&
&/category&
&functions&
&function name="py_printf"/&
&function name="py_capwords"/&
&function name="py_bitand"/&
&/functions&
&/service&
&/services&
根据上面的分析,我们看到用Python编写Gnumeric函数,需要三个步骤:
1. 创建Python函数源文件,如py_func.py。
2. 根据创建的函数构建函数原型字典,如test_functions。
3. 创建plugin.xml配置文件,配置文件名、函数分类、名字、原型字典等相关信息。
为了演示具体的Gnumeric中Python函数创建的过程,笔者编写了一个根据自动标记成绩等级的小函数,由plugin.xml和exam.py两个文件构成。
首先创建脚本文件exam.py,整个文件只有mark和cstr两个函数:mark函数的参数和返回值都是字符串,功能是根据其大小返回成绩的等级;cstr用来把字符串转换成utf-8编码,使Gnumeric能显示中文 (2) 。mark函数中的注释是提供给Gnumeric的函数信息,读者开发时只需要按着模板简单的修改就可以了。
代码 4 exam.py文件
# -*- coding: GB2312 -*-
def mark(score):
'@FUNCTION=MARK_SCORE\n'\
'@SYNTAX=mark_score(score)\n'\
'@DESCRIPTION= determine the level for a score\n'\
'@EXAMPLES= To determine a score in A1: \n'\
mark_score(a1)\n'\
'@SEEALSO='
level='N/A'
if score & 0:
level = cstr('非法分数')
elif score & 60:
level = cstr('未及格')
elif score & 80:
level = cstr('及格')
elif score & 90:
level = cstr('良')
elif score &= 100:
level = cstr('优秀')
level = cstr('非法分数')
return level
def cstr(str):
""" translate a chinese string into utf-8 string for GTK+
return unicode(str,'gbk').encode('utf8')
exam_functions = {
'mark_score' : ('f','score',mark)
下一步就是就是注册函数,exam.py文件尾处的exam_functions函数原型字典向Gnumeric揭示了mark函数的原型信息,字典的键'mark_score'是mark在Gnumeric的名字映射,f表示参数类型为整数,score为参数名。plugin.xml (3) 是根据模板简单的改写的,主要注意的就是上面提到的几个属性,必须和插件对应,否则插件是无效的;另外一些属性,如category也加入了中文信息,以方便使用。
代码 5 exam.py的plugin.xml配置文件
&?xml version="1.0" encoding="UTF-8"?&
&plugin id="Gnumeric_PyFunc"&
&information&
&name&Exam functions&/name&
&description& Determine rank for exam score &/description&
&require_explicit_enabling/&
&/information&
&loader type="Gnumeric_PythonLoader:python"&
&attribute value="exam" name="module_name"/&
&services&
&service type="function_group" id=
&category&
Exam&/category&
&category xml:lang="zh_CN"&Exam&/category&
&functions&
&function name=
"mark_score"/&
&/functions&
&/service&
&/services&
OK!现在启动Gnumeric (4) ,按图示在A列输入一列成绩,然后在B1单元格内输入公式:'=mark_score(A1)', 然后利用鼠标拖动复制公式的功能,把公式复制到对应的B列,就会发现所有标志在B列中已经自动生成了。
插图1 成绩分类
如果只是对单元格数据简单计算的话,那么Python在Gnumeric中充其量是好玩的玩具罢了,但Python插件的功能远不只这些,Python可以控制读写单元格区域(Range)的数据,访问Gnumeric的全部函数,控制工作表的创建等,把这些功能有机地组合起来就能完成复杂的任务了。本节对全班成绩做进一步的处理,利用RPy (5) 的summary函数对所有的分数进行简单的统计,计算最值、均值、中位数和两个四分位数,并把所得计算结果打印到新的工作表中。
要想统计全班成绩,首要的任务就是从Gnumeric获取数据。对于大批量的数据,Gnumeric是用单元格区域(Range)来表示的,然而在调用过程中传递给Python的是单元格区域引用(RangeRef),所以需要对单元格区域引用(RangeRef)做相应的转换以便提取批量数据。不幸的是,Gnumeric的API正处于发展阶段,没有直接的转换方法。为此,笔者利用了Gnumeric自身的函数构建了一个PyGnmRange类。PyGnmRange对象以单元格区域引用(RangeRef)为初始化参数,为该单元格区域中的构建所有单元格的索引,即"_table"属性,同时提供几个方法来方便地访问,这样我们就可以配合Gnumeric模块中的Sheet对象操纵单元格数据了。
代码 6 类PyGnmRange的定义
class PyGnmRange:
def __init__(self, gnm_range_ref):
get_cols = Gnumeric.functions['column']
get_rows = Gnumeric.functions['row']
get_col_num = Gnumeric.functions['columns']
get_row_num = Gnumeric.functions['rows']
cols = get_cols(gnm_range_ref)
rows = get_rows(gnm_range_ref)
# column first table
self._table = []
self._col_num = get_col_num(gnm_range_ref)
self._row_num = get_row_num(gnm_range_ref)
for i in range(self._col_num):
for j in range(self._row_num):
self._table.append((cols[i][j]-1, rows[i][j]-1))
def col_num(self):
return self._col_num
def row_num(self):
return self._row_num
def get_col(self,col):
start = (col-1) * self._row_num
end = col * self._row_num
return self._table[start:end]
def get_row(self,row):
indexes = [(i*self._row_num)+(row-1) for i in range(self._col_num)]
return [self._table[i] for i in indexes]
def __iter__(self):
return iter(self._table)
另外PyGnmRange类定义需要注意两点:
1. 单元格下标采取了列优先的表示方法,从零开始计数,例如B3表示为(1,2),这样同时也是为了与Gnumeric规范保持一致,便于操纵单元格数据。
2. 类初始化函数使用了四个Gnumeric的函数,分别为column、columns、row、rows,其功能如下:
有了前面的准备,我们就可以具体实现summary函数了。summary函数通过gnm_scores参数获得当前的单元格区域引用,并利用该参数创建PyGnmRange对象,计算所有单元格的下标;又通过Gnumeric模块的workbooks和sheets函数,取得工作表1的对象;从而结合工作表对象和单元格下标来操作单元格数据。而真正的计算R语言完成的,RPy模块则是联接Python和R语言的桥梁 (6) 。最后,summary函数取得R语言计算的结果并通过Gnumeric模块将其打印到一个新建的工作表里。
代码 7 exam.py 中summary函数定义
&?xml version="1.0" encoding="UTF-8"?&
&plugin id="Gnumeric_PyFunc"&
&information&
&name&Exam functions&/name&
&description&Sample Python plugin providing some (useless) functions.&/description&
&require_explicit_enabling/&
&/information&
&loader type="Gnumeric_PythonLoader:python"&
&attribute value="exam" name="module_name"/&
&services&
&service type="function_group" id="exam"&
&category&Exam&/category&
&category xml:lang="zh_CN"&Exam&/category&
&functions&
&function name="mark_score"/&
&function name="summerize_scores"/&
&/functions&
&/service&
&/services&
函数编写完之后就是函数注册了,函数原型字典只有一行,唯一需要注意的是,单元格区域引用数据类型需要用"r"来表示。plugin.xml文件也只需要加入下面一行:
代码 8 summay函数的plugin.xml配置文件
&?xml version="1.0" encoding="UTF-8"?&
&plugin id="Gnumeric_PyFunc"&
&information&
&name&Exam functions&/name&
&description&Sample Python plugin providing some (useless) functions.&/description&
&require_explicit_enabling/&
&/information&
&loader type="Gnumeric_PythonLoader:python"&
&attribute value="exam" name="module_name"/&
&services&
&service type="function_group" id="exam"&
&category&Exam&/category&
&category xml:lang="zh_CN"&Exam&/category&
&functions&
&function name="mark_score"/&
&function name="summerize_scores"/&
&/functions&
&/service&
&/services&
下面的两张是插件函数的运行效果图,输入数据是随机生成的80个100以内的浮点数,函数插在B1单元格内,由于该函数的目的是生成简单的报表而不是返回值,所以运行结束后B1单元格内依然空白,而所有的数据全部打印在新建的工作表4内(图2和图3)。
插图2 全班成绩和函数的输入
插图3 全班成绩统计报告
Gnumeric插件部署及其简单,用户只需要在自己主目录下新建.gnumeric目录,放入插件函数即可,例如exam.py和plugin.xml就是位于 &HOME&/.gnumeric/&version& (7) /plugins/exam/,重新启动Gnumeric插件就生效了 (8) 。
Gnumeric的Python开发过程需要注意一下几个问题:
1. Gumeric的Python插件还处于积极地开发过程中,一些代码很可能在将来的版本中会发生很大的变化;插件提供的Gnumeric模块接口还不是完整,比如缺乏获得活动工作表的函数,编写Python函数时需要仔细地处理。
2. Python函数配置虽然及其简单,但是调试起来不是很方便,经常会出现Gnumeric不能正确获取Python信息的情况,这时候的原因是多方面的,例如plugin.xml文件的名字与脚本文件不一致,函数原型字典命名不规范,函数文档字符串格式错误,脚本文件语法错误等。
尽管这样,对于熟悉Python的编程人员来说,这些并不影响编写Gnumeric函数的趣味,只需小心仔细地处理,这些都不是很难的事。希望本文能起到抛砖引玉的作用,有兴趣的读者可以在此基础上参考Gnumeric源代码中的开发者文档和Python插件的源代码,会发现许多有价值的信息,编写更有价值的应用了。
您可能感兴趣的文章:
上一篇:下一篇:下面没有链接了
最 近 更 新
热 点 排 行
12345678910

我要回帖

更多关于 blender 的文章

 

随机推荐