-- adding help_browser.py to show help for installed scripts;
-- updated scripts to include basic doc info to be shown with above script:
    script authors can / will / should update with more info, of course;
-- updated some scripts to newer versions: disp_paint, fixfromarmature, hotkeys, etc.
This commit is contained in:
Willian Padovani Germano 2004-11-07 16:31:13 +00:00
parent 23e8b98228
commit c702b237d5
59 changed files with 2475 additions and 368 deletions

@ -6,6 +6,28 @@ Blender: 234
Group: 'Mesh'
Tooltip: 'Create fixed copies of deformed meshes'
"""
__author__ = "Martin Poirier"
__url__ = ("blender", "elysiun")
__version__ = "1.5 09/21/04"
__bpydoc__ = """\
This script creates "raw" copies of deformed meshes.
Usage:
Select the mesh(es) and run this script. A fixed copy of each selected mesh
will be created, with the word "_deformed" appended to its name.
Meshes in Blender can be deformed by armatures, lattices, curve objects and subdivision, but this will only change its appearance on screen and rendered
images -- the actual mesh data is still simpler, with vertices in an original
"rest" position and less vertices than the subdivided version.
Use this script if you want a "real" version of the deformed mesh, so you can
directly manipulate or export its data.
"""
# $Id$
#
# --------------------------------------------------------------------------

@ -4,9 +4,40 @@
Name: 'Axis Orientation Copy'
Blender: 233
Group: 'Object'
Tip: 'Copy the axis orientation of the active object to all selected mesh object'
Tip: 'Copy the axis orientation of the active object to all selected mesh objects'
"""
__author__ = "A Vanpoucke (xand)"
__url__ = ("blender", "elysiun",
"French Blender support forum, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender")
__version__ = "1.1 11/05/04"
__bpydoc__ = """\
This script copies the axis orientation -- X, Y and Z rotations -- of the
active object to all selected meshes.
It's useful to align the orientations of all meshes of a structure, a human
skeleton, for example.
Usage:
Select all mesh objects that need to have their orientations changed
(reminder: keep SHIFT pressed after the first, to add each new one to the
selection), then select the object whose orientation will be copied from and
finally run this script to update the angles.
Notes:<br>
Before copying the orientation to each object, the script stores its
transformation matrix. Then the angles are copied and after that the object's
vertices are transformed "back" so that they still have the same positions as
before. In other words, the rotations are updated, but you won't notice that
just from looking at the objects.<br>
Checking their X, Y and Z rotation values with "Transform Properties" in
the 3D View's Object menu shows the angles are now the same of the active
object.
"""
# $Id$
#
#----------------------------------------------
@ -53,17 +84,23 @@ def applyTransform(mesh,mat):
oblist =Object.GetSelected()
lenob=len(oblist)
if lenob<2:
Draw.PupMenu("Select at least 2 objects")
else :
source=oblist[0]
nsource=source.name
texte="Copy axis orientation from : " + nsource + " ?%t|OK"
result=Draw.PupMenu(texte)
error = 0
for o in oblist[1:]:
if o.getType() != "Mesh":
Draw.PupMenu("ERROR%t|Selected objects must be meshes")
error = 1
if not error:
if lenob<2:
Draw.PupMenu("ERROR%t|You must select at least 2 objects")
else :
source=oblist[0]
nsource=source.name
texte="Copy axis orientation from: " + nsource + " ?%t|OK"
result=Draw.PupMenu(texte)
for cible in oblist[1:]:
if cible.getType()=='Mesh':
for cible in oblist[1:]:
if source.rot!=cible.rot:
rotcible=cible.mat.toEuler().toMatrix()
rotsource=source.mat.toEuler().toMatrix()

@ -6,9 +6,38 @@ Blender: 234
Group: 'Export'
Submenu: 'Export to DX8 file format' export
Submenu: 'How to use this exporter?' help
Tip: 'Export to DirectX8 text file format format.'
Tip: 'Export to DirectX8 text file format'
"""
__author__ = "Arben (Ben) Omari"
__url__ = ("blender", "elysiun", "Author's site, http://www.omariben.too.it")
__version__ = "1.0"
__bpydoc__ = """\
This script exports a Blender mesh with armature to DirectX 8's text file
format.
Usage:
1) There should be only one mesh and one armature in the scene;
2) Before parenting set:<br>
a) Armature and mesh must have the same origin location
(in the 3d View press N (menu Object->"Transform Properties") for both and set
same LocX, LocY and LocZ);<br>
b) Armature and mesh must have the same rotation
(select them and press Ctrl + A);
3) Set the number of the animation frames to export;
4) Read warnings (if any) in console.
Notes:<br>
Check author's site or the elYsiun forum for a new beta version of the
DX exporter.
"""
# $Id$
#
# DirectX8Exporter.py version 1.0

@ -6,9 +6,34 @@ Blender: 234
Group: 'Export'
Submenu: 'Only mesh data...' mesh
Submenu: 'Animation(not armature yet)...' anim
Tip: 'Export to DirectX text file format format.'
Tip: 'Export to DirectX text file format'
"""
__author__ = "Arben (Ben) Omari"
__url__ = ("blender", "elysiun", "Author's site, http://www.omariben.too.it")
__version__ = "1.0"
__bpydoc__ = """\
This script exports Blender uv-textured meshes with animation frame keys to
DirectX 7's text file format.
Usage:
Run the script and check console for possible warning messages.
Supported:<br>
UV-textured meshes with animation frame (location, rotation) keys.
Known issues:<br>
Some DX format viewers don't support Material names with dots
('.') in them.
Notes:<br>
Check author's site or the elYsiun forum for a new beta version of the
DX exporter.
"""
# $Id$
#
# DirectX.py version 1.0

@ -1,10 +1,40 @@
#!BPY
""" Registration info for Blender menus: <- these words are ignored
Name: 'UVpainter'
Blender: 232
Group: 'UV'
Tip: 'Use vertex paint color value to fill uvmapping.'
Tip: 'Use vertex paint color value to fill uvmapping'
"""
__author__ = "Jean-Michel Soler (jms)"
__url__ = ("blender", "elysiun",
"Script's homepage, http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_uvpainting.htm",
"Communicate problems and errors, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender")
__version__ = "0.5 05/2004"
__bpydoc__ = """\
This script "paints" uv-mappings with the model's vertex colors.
Usage:
With this script you can export uv-maps filled with vertex colors to TARGA
(.tga) images. To use it the mesh must have proper uv coordinates assigned
in UV Face Select Mode. And to fill the projected faces with color, the mesh
can also have material(s) and vertex colors painted on it.
The script has a GUI with a preview of the results and options like drawing
lines or not, defining size, etc. You can paint vertex colors in the mesh and
see the uv-map updated in the script's window.
Notes:<br>
Material's rgb color is also used to fill the uv-map;<br>
If there are no vertex colors or texture faces in the mesh and you press
the "Make" VColors button in the edit mesh buttons win, the current light setup
is saved as vertex colors for the model;<br>
Check the script's homepage for example images.
"""
# $Id$
#
#----------------------------------------------
@ -13,7 +43,6 @@ Tip: 'Use vertex paint color value to fill uvmapping.'
# this script is released under GPL licence
# for the Blender 2.33 scripts distribution
#----------------------------------------------
#----------------------------------------------
# Official page :
# http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_uvpainting.htm
# Communicate problems and errors on:
@ -26,7 +55,30 @@ Tip: 'Use vertex paint color value to fill uvmapping.'
#---------------------------------------------
# ce script est proposé sous licence GPL pour etre associe
# a la distribution de Blender 2.33 et suivant
#----------------------------------------------
# --------------------------------------------------------------------------
# this script is released under GPL licence
# for the Blender 2.33 scripts package
# --------------------------------------------------------------------------
# ***** BEGIN GPL LICENSE BLOCK *****
#
# Script copyright (C) 2003, 2004: Jean-Michel Soler
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# ***** END GPL LICENCE BLOCK *****
# --------------------------------------------------------------------------
import Blender
from Blender.Draw import *

@ -10,6 +10,37 @@ Submenu: 'Configure +' config
Tip: 'Export to AC3D (.ac) format.'
"""
__author__ = "Willian P. Germano"
__url__ = ("blender", "elysiun", "AC3D's homepage, http://www.ac3d.org",
"PLib 3d gaming lib, http://plib.sf.net")
__version__ = "2.34 09/20/04"
__bpydoc__ = """\
This script exports Blender meshes to AC3D's .ac file format.
AC3D is a simple and affordable commercial 3d modeller also built with OpenGL.
The .ac file format is an easy to parse text format well supported,
for example, by the PLib 3d gaming library (AC3D v3.x).
Supported:<br>
UV-textured meshes with hierarchy (grouping) information.
Missing:<br>
Support for AC3D 4's crease tag (simple, will be added soon).
Known issues:<br>
Models textured with more than one image do not work -- for the
moment you can separate them in Blender such that each mesh only has one
image assigned (also see notes below);<br>
The exporter is slow for large meshes -- faster code was written for the
TuxKart (http://tuxkart.sf.net) game exporter and will be integrated on a
future version of this exporter.
Notes:<br>
There is a version of this script by <fix this> that accepts meshes with
more than one texture image assigned, check TuxKart's wiki.
"""
# $Id$
#
# --------------------------------------------------------------------------

@ -7,6 +7,33 @@ Group: 'Import'
Tip: 'Import an AC3D (.ac) file.'
"""
__author__ = "Willian P. Germano"
__url__ = ("blender", "elysiun", "AC3D's homepage, http://www.ac3d.org",
"PLib 3d gaming lib, http://plib.sf.net")
__version__ = "2.34 07/26/04"
__bpydoc__ = """\
This script imports AC3D models into Blender.
AC3D is a simple and affordable commercial 3d modeller also built with OpenGL.
The .ac file format is an easy to parse text format well supported,
for example, by the PLib 3d gaming library (AC3D v3.x).
Supported:<br>
UV-textured meshes with hierarchy (grouping) information.
Missing:<br>
Support for AC3D 4's crease tag (simple, will be added soon).
Known issues:<br>
None.
Notes:<br>
Check script's source code for options that can be tweaked (using Blender
empties to emulate AC3D's grouping info and setting a default folder for
textures, for the case of wrong paths in the .ac file(s).
"""
# $Id$
#
# --------------------------------------------------------------------------

@ -4,7 +4,23 @@
Name: 'Batch Object Name Edit'
Blender: 232
Group: 'Object'
Tooltip: 'Apply the chosen rule to rename all selected objects at once.'
Tooltip: 'Apply the chosen rule to rename all selected objects at once'
"""
__author__ = "Campbell Barton"
__url__ = ("blender", "elysiun")
__version__ = "1.0"
__bpydoc__ = """\
"Batch Object Name Edit" allows you to change multiple names of Blender
objects at once. It provides options to define if you want to: replace text
in the current names, truncate their beginnings or endings or prepend / append
strings to them.
Usage:
Select the objects to be renamed and run this script from the Object->Scripts
menu of the 3d View.
"""
# $Id$

@ -7,6 +7,30 @@ Group: 'Mesh'
Tip: 'Bevel selected vertices'
"""
__author__ = "Loic Berthe"
__url__ = ("blender", "elysiun")
__version__ = "1.0"
__bpydoc__ = """\
This script implements vertex bevelling in Blender.
Usage:
Select the mesh you want to work on, enter Edit Mode and select the vertices
to bevel. Then run this script from the 3d View's Mesh->Scripts menu.
You can control the thickness of the bevel with the slider -- redefine the
end points for bigger or smaller ranges. The thickness can be changed even
after applying the bevel, as many times as needed.
For an extra smoothing after or instead of direct bevel, set the level of
recursiveness and use the "Recursive" button.
Notes:<br>
You can undo and redo your steps just like with normal mesh operations in
Blender.
"""
# $Id$
#
######################################################################

@ -6,6 +6,46 @@ Blender: 234
Group: 'Export'
Tip: 'Export armature/bone data to the Cal3D library.'
"""
__author__ = ["Jean-Baptiste Lamy (Jiba)", "Chris Montijin", "Damien McGinnes"]
__url__ = ("blender", "elysiun", "Cal3D, http://cal3d.sf.net")
__version__ = "0.7"
__bpydoc__ = """\
This script exports armature / bone data to the well known open source Cal3D
library.
Usage:
Simply run the script to export available armatures.
Supported:<br>
Cal3D versions 0.7 -> 0.9.
Known issues:<br>
Material color is not supported yet;<br>
Cal3D springs (for clothes and hair) are not supported yet;<br>
Cal3d has a bug in that a cycle that doesn't have a root bone channel
will segfault cal3d. Until cal3d supports this, add a keyframe for the
root bone;<br>
When you finish an animation and run the script you can get an error
(something with KeyError). Just save your work and reload the model. This is
usually caused by deleted items hanging around;<br>
If a vertex is assigned to one or more bones, but has for each bone a
weight of zero, there used to be a subdivision by zero error somewhere. As a
workaround, if sum is 0.0 then sum becomes 1.0. It's recommended that you give
weights to all bones to avoid problems.
Notes:<br>
Objects/bones/actions whose names start by "_" are not exported so call IK
and null bones _LegIK, for example;<br>
All your armature's exported bones must be connected to another bone
(except for the root bone). Contrary to Blender, Cal3D doesn't support
"floating" bones.<br>
Actions that start with '@' will be exported as actions, others will be
exported as cycles.
"""
# $Id$
#
# Copyright (C) 2003 Jean-Baptiste LAMY -- jiba@tuxfamily.org

@ -7,6 +7,23 @@ Group: 'Export'
Tip: 'Export a (.bvh) motion capture file'
"""
__author__ = "Campbell Barton"
__url__ = ("blender", "elysiun")
__version__ = "1.0 03/30/04"
__bpydoc__ = """\
This script exports animation data to BVH motion capture file format.
Supported:<br>
Missing:<br>
Known issues:<br>
Notes:<br>
"""
# $Id$
#
#===============================================#

@ -7,6 +7,23 @@ Group: 'Import'
Tip: 'Import a (.bvh) motion capture file'
"""
__author__ = "Campbell Barton"
__url__ = ("blender", "elysiun")
__version__ = "1.0 03/25/04"
__bpydoc__ = """\
This script imports BVH motion capture data to Blender.
Supported:<br>
Missing:<br>
Known issues:<br>
Notes:<br>
"""
# $Id$
#
#===============================================#

@ -7,6 +7,28 @@ Group: 'Mesh'
Tooltip: 'Clean unused data from all selected meshes'
"""
__author__ = "Campbell Barton"
__url__ = ("blender", "elysiun")
__version__ = "1.0 04/25/04"
__bpydoc__ = """\
This script cleans specific data from all selected meshes.
Usage:
Select the meshes to be cleaned and run this script. A pop-up will ask
you what you want to remove:
- Free standing vertices;<br>
- Edges that are not part of any face;<br>
- Edges below a threshold length;<br>
- Faces below a threshold area;<br>
- All of the above.
After choosing one of the above alternatives, if your choice requires a
threshold value you'll be prompted with a number pop-up to set it.
"""
# $Id$
#
# --------------------------------------------------------------------------

@ -1,29 +1,57 @@
#!BPY
""" Registration info for Blender menus: <- these words are ignored
Name: 'Dispaint'
Blender: 234
Name: 'dispaint'
Blender: 233
Group: 'Mesh'
Tip: 'Use vertex paint color value to modify shape displacing vertices along normal'
Tip: 'use vertex paint color value to modify shape displacing vertices along normal'
"""
__author__ = "Jean-Michel Soler (jms)"
__url__ = ("blender", "elysiun",
"Script's homepage, http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_displacementpainting.htm",
"Communicate problems and errors, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender")
__version__ = "233i"
__bpydoc__ = """\
This script displaces mesh vertices according to vertex color values.
Usage:
Select the mesh, enter Edit Mode and run this script to open its GUI. Options
include setting mode, orientation, size and number of repetitions of the
displacement. You can enter Vertex Paint mode and alternate applying
displacements and painting parts of the mesh.
Orientation includes vertex normals, local coordinates and noise (you may need
to resize the scripts window to view the noise menu below the "Last Error:"
line. This menu lets you define noise type from the many options available in
Blender.
Notes:<br>
The "Create" button will make at any time a copy of the active mesh in its
current state, so you can keep it and continue working on the copy;<br>
One of the great possible uses of this script is to "raise" terrain from a
subdivided plane, for example, with good control of the process by setting
options, defining orientation and alternating vertex painting with
displacements.
"""
# $Id$
#
#----------------------------------------------
# jm soler, displacement paint 03/2002 - > 05/2004: disp_paintf
# Terrain Noise added suugered by Jimmy Haze
#----------------------------------------------
# Page officielle :
# http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_displacementpainting.htm
# http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_displacementpainting.htm
# Communiquer les problemes et erreurs sur:
# http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender
# --------------------------------------------------------------------------
# http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender
#---------------------------------------------
# ce script est proposé sous licence GPL pour etre associe
# a la distribution de Blender 2.33
# --------------------------------------------------------------------------
#----------------------------------------------
# this script is released under GPL licence
# for the Blender 2.33 scripts package
# --------------------------------------------------------------------------
#----------------------------------------------
# ***** BEGIN GPL LICENSE BLOCK *****
#
# Copyright (C) 2003, 2004: Jean-Michel Soler
@ -46,6 +74,7 @@ Tip: 'Use vertex paint color value to modify shape displacing vertices along nor
# --------------------------------------------------------------------------
# 09/07/04 : Noise functions based on a piece of script by Jimmy Haze.
# --------------------------------------------------------------------------
import Blender
from Blender import *
from Blender.Draw import *
@ -74,6 +103,31 @@ NEWName=''
ERROR=0
TextERROR=''
E_EXIT = 1
E_MODE = 2
E_ORIENT = 3
E_NSIZE = 4
E_REPEAT = 5
E_ACTION = 16
E_CREATE = 17
E_DOCMAT = 24
E_MATVAL = [32,33,34,35,36,37,38,39,40,41,42,43,44]
E_AXESEL = 45
E_AXESELX = 46
E_AXESELY = 47
E_AXESELZ = 48
E_NOISEME = 49
E_NOISEH = 50
E_NOISELAC = 51
E_NOISEOCT = 52
E_NOISEOFF = 53
E_NOISEBAS = 54
E_NOISEVAL=[E_NOISEH,E_NOISELAC,E_NOISEOCT,E_NOISEOFF,E_NOISEBAS]
E_NOISEDIM = 55
def copy_transform(ozero,Obis):
Obis.setSize(ozero.getSize());
Obis.setEuler(ozero.getEuler());
@ -81,7 +135,7 @@ def copy_transform(ozero,Obis):
return Obis
def traite_face(f):
global vindexm, ng, NOISE
global vindexm, ng, NOISE, NOISEDIM
global H,lacunarity,octaves,offset,basis
if ORIENTMenu.val==1:
@ -111,10 +165,10 @@ def traite_face(f):
for z in range(len(f.v)):
c=0.0
if vindex[f.v[z].index]!=0:
nx=f.v[z].co[0]/4
ny=f.v[z].co[1]/4
nz=f.v[z].co[2]/4
nn = ng + noise((nx,ny,nz),NOISE)
nx=f.v[z].co[0]/NOISEDIM
ny=f.v[z].co[1]/NOISEDIM
nz=f.v[z].co[2]/NOISEDIM
nn = ng * noise((nx,ny,nz),NOISE)
c=float(f.col[z].r+f.col[z].b+f.col[z].g)/maxcol*nn/vindex[f.v[z].index]
else:
c=0
@ -126,10 +180,10 @@ def traite_face(f):
for z in range(len(f.v)):
c=0.0
if vindex[f.v[z].index]!=0:
nx=f.v[z].co[0]/4
ny=f.v[z].co[1]/4
nz=f.v[z].co[2]/4
nn = ng + cellNoise((nx,ny,nz))
nx=f.v[z].co[0]/NOISEDIM
ny=f.v[z].co[1]/NOISEDIM
nz=f.v[z].co[2]/NOISEDIM
nn = ng * cellNoise((nx,ny,nz))
c=float(f.col[z].r+f.col[z].b+f.col[z].g)/maxcol*nn/vindex[f.v[z].index]
else:
c=0
@ -141,10 +195,10 @@ def traite_face(f):
for z in range(len(f.v)):
c=0.0
if vindex[f.v[z].index]!=0:
nx=f.v[z].co[0]/4
ny=f.v[z].co[1]/4
nz=f.v[z].co[2]/4
nn = ng + heteroTerrain((nx,ny,nz),H,lacunarity,octaves,offset,basis)
nx=f.v[z].co[0]/NOISEDIM
ny=f.v[z].co[1]/NOISEDIM
nz=f.v[z].co[2]/NOISEDIM
nn = ng * heteroTerrain((nx,ny,nz),H,lacunarity,octaves,offset,basis)
c=float(f.col[z].r+f.col[z].b+f.col[z].g)/maxcol*nn/vindex[f.v[z].index]
else:
c=0
@ -154,68 +208,60 @@ def traite_face(f):
def paint():
global MODEMenu, vindex,ng, mat, ORIName, NEWName
global MODEMenu, vindex,ng, mat, ORIName, NEWName
global ERROR, TextERROR
Me=Object.GetSelected()
if Me!=[]:
if Me[0].getType()=='Mesh':
vindex=[]
ORIName=Me[0].getData().name
me1=NMesh.GetRaw(Me[0].getData().name)
try:
o=Object.Get('newMESH')
me=o.getData()
me=me1
me=NMesh.GetRaw(Me[0].getData().name)
try:
for m in me.verts:
vindex.append(0)
for f in me.faces:
for v in f.v:
if MODEMenu.val!=2:
if MODEMenu.val==1:
vindex[v.index]+=1
else:
if v.sel==1:
vindex[v.index]+=1
else:
#print mat
if f.mat in mat:
vindex[v.index]+=1
for f in me.faces:
if MODEMenu.val==2:
if f.mat in mat:
traite_face(f)
else:
traite_face(f)
Me[0].link(me)
Me[0].makeDisplayList()
except:
o=Object.New('Mesh','newMESH')
sc.link(o)
me=me1
ERROR=2
TextERROR='No color on this Object.'
def NEWMEcreation(obj):
if obj.getType()=='Mesh':
nomdelobjet="";
objnumber=-1; namelist=[]
OBJ=Object.Get()
name='new.002'
for m in me.verts:
vindex.append(0)
for ozero in OBJ:
if ozero.getType()=='Mesh':
namelist.append(ozero.getData().name)
for f in me.faces:
for v in f.v:
if MODEMenu.val!=2:
if MODEMenu.val==1:
vindex[v.index]+=1
else:
if v.sel==1:
vindex[v.index]+=1
else:
#print mat
if f.mat in mat:
vindex[v.index]+=1
for f in me.faces:
if MODEMenu.val==2:
if f.mat in mat:
traite_face(f)
else:
traite_face(f)
Me[0].link(me)
#o=copy_transform(Me[0],o)
def NEWMEcreation(name):
nomdelobjet=""; objnumber=-1; namelist=[]
obj=Object.Get()
for ozero in obj:
if ozero.getType()=='Mesh':
namelist.append(ozero.getData().name)
if ozero.getData().name==name:
objnumber=obj.index(ozero)
if objnumber!=-1:
ozero=obj[objnumber]
ozero=obj
nomdelobjet=ozero.getName()
Mesh=Blender.NMesh.GetRawFromObject(nomdelobjet)
name=obj.getData().name
n=0; name2=name[:];ok=0
while ok==0:
@ -224,6 +270,7 @@ def NEWMEcreation(name):
ok=0;name2=name[0:name.find('.')+1]+'%s'%(n+1)
else: ok=1
n+=1
Mesh.name=name2
Obis = Blender.NMesh.PutRaw(Mesh,name2)
copy_transform(ozero,Obis)
@ -265,12 +312,26 @@ octaves=5.0
offset=1.0
basis=3
NOISEDIM=4
NOISEDIMbout=Create(NOISEDIM)
HBout=Create(H)
lacunarityBout=Create(lacunarity)
octavesBout=Create(octaves)
offsetBout=Create(offset)
basisBout=Create(basis)
noiseTYPE={0:'BLENDER',
1:'STDPERLIN',
2:'STDPERLIN',
3:'NEWPERLIN',
4:'VORONOI_F1',
5:'VORONOI_F2',
6:'VORONOI_F3',
7:'VORONOI_F2F1',
8:'VORONOI_CRACKLE',
9:'CELLNOISE'}
TMATList= [0,[],[]]
for t in range(16):
@ -291,8 +352,9 @@ glRct=glRectf
def draw():
global MODEMenu, NSIZE, TDOCMat,TMATList, TAXEList
global mat, ORIName, NEWName, ORIENTMenu
global NRepeat, ERROR, TextERROR , NOISE, NOISEMenu
global NRepeat, ERROR, TextERROR , NOISE, NOISEMenu, NOISEDIMbout,NOISEDIM
global HBout,lacunarityBout,octavesBout,offsetBout,basisBout
global noiseTYPE
size=Buffer(GL_FLOAT, 4)
glGetFloatv(GL_SCISSOR_BOX, size)
@ -307,7 +369,7 @@ def draw():
glColor3f(1.0,1.0,1.0)
glRasterPos2f(20, size[3]-15)
Text("Script Python de displacement painting")
Text("Script Python de displacement paintingt")
glRasterPos2f(20, size[3]-28)
Text("Jean-michel Soler, juillet 2004")
@ -316,20 +378,20 @@ def draw():
n0=70
n1=55
Button("Create" ,17 ,5 ,size[3]-n0+16 ,60 ,20)
Button("Action" ,16 ,5 ,size[3]-n0-4 ,60 ,20)
Button("Exit" ,1 ,5 ,size[3]-n0-24 ,60 ,20)
Button("Create" ,E_CREATE ,5 ,size[3]-n0+16 ,60 ,20)
Button("Action" ,E_ACTION ,5 ,size[3]-n0-4 ,60 ,20)
Button("Exit" ,E_EXIT ,5 ,size[3]-n0-24 ,60 ,20)
NRepeat=Number("repeat" ,5 ,5 ,size[3]-n0-50 ,75 ,20, NRepeat.val,1,10)
NRepeat=Number("repeat" ,E_REPEAT ,5 ,size[3]-n0-50 ,75 ,20, NRepeat.val,1,10)
glColor3f(0.0,0.0,0.0)
glRasterPos2f(80 ,size[3]-n0+24)
Text("MODE")
MODEMenu= Menu(MOname, 2 ,80 ,size[3]-n0 ,100,20, MODEMenu.val, "MODE menu.")
MODEMenu= Menu(MOname, E_MODE ,80 ,size[3]-n0 ,100,20, MODEMenu.val, "MODE menu.")
if MODEMenu.val==2:
TDOCMat=Toggle("Doc Mat" ,24 ,180 ,size[3]-n0 ,60 ,20,TDOCMat.val)
TDOCMat=Toggle("Doc Mat" ,E_DOCMAT ,180 ,size[3]-n0 ,60 ,20,TDOCMat.val)
if TDOCMat.val==1:
#print TMATList
for t in range(TMATList[0]):
@ -341,9 +403,10 @@ def draw():
80+t*40+40,
size[3]-n0-60+40)
TMATList[2][t]=Toggle("%s"%t , 32+t ,80+t*40+5 ,size[3]-n0-50 ,30 , 20,TMATList[2][t].val)
glColor3f(1.0,0.3,0.0)
glRasterPos2f(80+40+5 ,size[3]-n0-80)
if ERROR==1:
if ERROR>1:
Text('Last error : '+TextERROR)
else:
Text('Last error : ')
@ -351,54 +414,57 @@ def draw():
glColor3f(0.0,0.0,0.0)
glRasterPos2f(240 ,size[3]-n0+24)
Text("ORIENTATION")
ORIENTMenu= Menu(ORname, 3 ,240 ,size[3]-n0 ,100,20, ORIENTMenu.val, "ORIENT menu.")
ORIENTMenu= Menu(ORname, E_ORIENT ,240 ,size[3]-n0 ,100,20, ORIENTMenu.val, "ORIENT menu.")
if ORIENTMenu.val==2 :
for t in range(3):
TAXEList[1][t]=Toggle("%s"%TAXEList[0][t],
40+t,
E_AXESEL+t,
240+100+t*30 , size[3]-n0 ,30 , 20,
TAXEList[1][t].val)
if ORIENTMenu.val==3 :
glRasterPos2f(20 ,size[3]-n0-90+24)
glRasterPos2f(240 ,size[3]-n0-90-4)
Text("NOISE")
NOISEMenu= Menu(NOname, 45 , 240 ,size[3]-n0-110 ,110,20, NOISEMenu.val, "NOISE menu.")
if NOISEMenu.val==11:
HBout= Slider("H", 46 ,110 ,size[3]-n0-190 ,125,20, HBout.val, -2.0,+2.0,0,)
lacunarityBout=Slider("lacunarity",47 ,110 ,size[3]-n0-110 ,125,20, lacunarityBout.val, -4.0,+4.0,0,)
octavesBout=Slider("octave", 48 ,110 ,size[3]-n0-130 ,125,20, octavesBout.val, -10.0,+10.0,0,)
offsetBout=Slider("offset", 49 ,110 ,size[3]-n0-150 ,125,20, offsetBout.val, -5.0,+5.0,0,)
basisBout=Slider("noise", 50 ,110 ,size[3]-n0-170 ,125,20, basisBout.val, 0,9,0,)
NOISEMenu= Menu(NOname, E_NOISEME , 240 ,size[3]-n0-118 ,110,20, NOISEMenu.val, "NOISE menu.")
NOISEDIMbout=Number(" Dim: " ,E_NOISEDIM , 240 ,size[3]-n0-138 ,110,20, NOISEDIMbout.val, 1,100)
NSIZE= Slider("Disp Size", 4 ,80 ,size[3]-n0-20 ,260,20, NSIZE.val, -4.0,+4.0,0,"SIZE.")
if NOISEMenu.val==11:
basisBout=Slider(noiseTYPE[basisBout.val],
E_NOISEBAS ,40 ,size[3]-n0-118 ,175,20, basisBout.val, 0,9,)
HBout= Slider("H", E_NOISEH ,40 ,size[3]-n0-138 ,175,20, HBout.val, -2.0,+2.0,0,)
lacunarityBout=Slider("lacunarity", E_NOISELAC ,40 ,size[3]-n0-158 ,175,20, lacunarityBout.val, -4.0,+4.0,0,)
octavesBout=Slider("octave", E_NOISEOCT ,40 ,size[3]-n0-178 ,175,20, octavesBout.val, -10.0,+10.0,0,)
offsetBout=Slider("offset", E_NOISEOFF ,40 ,size[3]-n0-198 ,175,20, offsetBout.val, -5.0,+5.0,0,)
NSIZE= Slider("Disp Size", E_NSIZE ,80 ,size[3]-n0-20 ,260,20, NSIZE.val, -4.0,+4.0,0,"SIZE.")
def event(evt, val):
if ((evt== QKEY or evt== ESCKEY) and not val): Exit()
if (evt== QKEY and not val): Exit()
def bevent(evt):
global MODEMenu, NSIZE, ng, TMATList
global mat, ORIENTMenu, NRepeat, TAXEList
global ERROR,TextERROR, NOISE, NOISEMenu
global ERROR,TextERROR, NOISE, NOISEMenu, NOISEDIMbout,NOISEDIM
global HBout,lacunarityBout,octavesBout,offsetBout,basisBout
global H,lacunarity,octaves,offset,basis
if (evt== 1):
if (evt== E_EXIT):
Exit()
elif (evt== 16):
elif (evt== E_ACTION):
for n in range(NRepeat.val):
paint()
elif (evt== 4):
elif (evt== E_NSIZE):
ng=NSIZE.val
elif (evt== 24) or (evt in [32,33,34,35,36,37,38,39,40,41,42,43,44]):
elif (evt== E_DOCMAT) or (evt in E_MATVAL):
Me=Object.GetSelected()
if Me!=[]:
if Me[0].getType()=='Mesh':
@ -414,21 +480,29 @@ def bevent(evt):
else:
ERROR=1
TextERROR='No Selected Object.'
elif (evt== 17):
NEWMEcreation('new.002')
elif (evt== 45):
elif (evt== E_CREATE):
NEWMEcreation(Blender.Object.GetSelected()[0])
Blender.Draw.Redraw()
ERROR=1
TextERROR='No Selected Object.'
elif (evt== E_NOISEME):
NOISE=NOISEMenu.val-1
elif (evt in [46,47,48,49, 50]):
elif (evt in E_NOISEVAL):
H=HBout.val
lacunarity=lacunarityBout.val
octaves=octavesBout.val
offset=offsetBout.val
basis=basisBout.val
Blender.Redraw()
elif (evt== E_NOISEDIM):
NOISEDIM=NOISEDIMbout.val
Blender.Draw.Redraw()
Window.EditMode(0)
Register(draw, event, bevent)

@ -7,6 +7,24 @@ Group: 'Misc'
Tip: 'Browse BPython (scripting API) modules doc strings.'
"""
__author__ = "Daniel Dunbar"
__url__ = ("blender", "elysiun")
__version__ = "1.0"
__bpydoc__ = """\
The "Doc Browser" lets users navigate the documentation strings of part of
the Blender Python API.
It doesn't give access yet to object method functions and variables, only to
module functions, but still it is a handy reference. Specially for quick
access, for example to Blender.BGL: the module that wraps OpenGL calls.
Notes:<br>
Everyone interested in the bpython api is also invited to read "The Blender
Python API Reference" doc, available online ("Python Scripting Reference"
entry in Blender's Help menu).
"""
# $Id$
#
# --------------------------------------------------------------------------

@ -4,7 +4,21 @@
Name: 'Fix From Armature'
Blender: 232
Group: 'Mesh'
Tip: 'Fix armature deformation.'
Tip: 'Fix armature deformation'
"""
__author__ = "Jean-Michel Soler (jms)"
__url__ = ("blender", "elysiun",
"Script's homepage, http://jmsoler.free.fr/util/blenderfile/py/fixfromarmature.py",
"Communicate problems and errors, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender")
__version__ = "10/2004"
__bpydoc__ = """\
This script creates a copy of the active mesh with armature deformation fixed.
Usage:
Select the mesh and run this script. A fixed copy of it will be created.
"""
# $Id$
@ -21,19 +35,43 @@ Tip: 'Fix armature deformation.'
# http://jmsoler.free.fr/util/blenderfile/py/fixfromarmature.py
# Communiquer les problemes et erreurs sur:
# http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender
#---------------------------------------------
#---------------------------------------------
# ce script est proposé sous licence GPL pour etre associe
# a la distribution de Blender 2.33 et suivant
# --------------------------------------------------------------------------
# this script is released under GPL licence
# for the Blender 2.33 scripts package
# --------------------------------------------------------------------------
# ***** BEGIN GPL LICENSE BLOCK *****
#
# Script copyright (C) 2003, 2004: Jean-Michel Soler
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# ***** END GPL LICENCE BLOCK *****
# --------------------------------------------------------------------------
import Blender
try:
Ozero=Blender.Object.GetSelected()[0]
nomdelobjet=Ozero.getName()
Mesh=Blender.NMesh.GetRawFromObject(nomdelobjet)
Obis = Blender.Object.New ('Mesh')
Obis.link(Mesh)
Obis.setSize(Ozero.getSize())
Obis.setEuler(Ozero.getEuler())
Obis.setLocation(Ozero.getMatrix()[3][0:3])
scene = Blender.Scene.getCurrent()
scene.link (Obis)
Ozero=Blender.Object.GetSelected()[0]
nomdelobjet=Ozero.getName()
Mesh=Blender.NMesh.GetRawFromObject(nomdelobjet)
Obis = Blender.Object.New ('Mesh')
Obis.link(Mesh)
Obis.setMatrix(Ozero.getMatrix())
scene = Blender.Scene.getCurrent()
scene.link (Obis)
except:
Blender.Draw.PupMenu("Error|Not a mesh or no object selected")
Blender.Draw.PupMenu("Error%t|Not a mesh or no object selected")

@ -0,0 +1,753 @@
#!BPY
"""
Name: 'Scripts Help Browser'
Blender: 234
Group: 'Help'
Tooltip: 'Show help information about a chosen installed script.'
"""
__author__ = "Willian P. Germano"
__version__ = "0.1 11/02/04"
__email__ = ('scripts', 'Author, wgermano:ig*com*br')
__url__ = ('blender', 'elysiun')
__bpydoc__ ="""\
This script shows help information for scripts registered in the menus.
Usage:
- Start Screen:
To read any script's "user manual" select a script from one of the
available category menus. If the script has help information in the format
expected by this Help Browser, it will be displayed in the Script Help
Screen. Otherwise you'll be offered the possibility of loading the chosen
script's source file in Blender's Text Editor. The programmer(s) may have
written useful comments there for users.
Hotkeys:<br>
ESC or Q: [Q]uit
- Script Help Screen:
This screen shows the user manual page for the chosen script. If the text
doesn't fit completely on the screen, you can scroll it up or down with
arrow keys or a mouse wheel. There may be link and email buttons that if
clicked should open your default web browser and email client programs for
further information or support.
Hotkeys:<br>
ESC: back to Start Screen<br>
Q: [Q]uit<br>
S: view script's [S]ource code in Text Editor<br>
UP, DOWN Arrows and mouse wheel: scroll text up / down
"""
# $Id$
#
# --------------------------------------------------------------------------
# sysinfo.py version 0.1 Jun 09, 2004
# --------------------------------------------------------------------------
# ***** BEGIN GPL LICENSE BLOCK *****
#
# Copyright (C) 2004: Willian P. Germano, wgermano _at_ ig.com.br
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# ***** END GPL LICENCE BLOCK *****
# --------------------------------------------------------------------------
import Blender
from Blender import sys as bsys, Draw, Window
WEBBROWSER = True
try:
import webbrowser
except:
WEBBROWSER = False
DEFAULT_EMAILS = {
'scripts': ['Bf-scripts-dev', 'bf-scripts-dev@blender.org']
}
DEFAULT_LINKS = {
'blender': ["blender.org\'s Python forum", "http://www.blender.org/modules.php?op=modload&name=phpBB2&file=viewforum&f=9"],
'elysiun': ["elYsiun\'s Python and Plugins forum", "http://www.elysiun.com/forum/viewforum.php?f=5"]
}
PADDING = 15
COLUMNS = 1
TEXT_WRAP = 100
WIN_W = WIN_H = 200
SCROLL_DOWN = 0
def screen_was_resized():
global WIN_W, WIN_H
w, h = Window.GetAreaSize()
if WIN_W != w or WIN_H != h:
WIN_W = w
WIN_H = h
return True
return False
def fit_on_screen():
global TEXT_WRAP, PADDING, WIN_W, WIN_H, COLUMNS
COLUMNS = 1
WIN_W, WIN_H = Window.GetAreaSize()
TEXT_WRAP = int((WIN_W - PADDING) / 6)
if TEXT_WRAP < 40:
TEXT_WRAP = 40
elif TEXT_WRAP > 100:
if TEXT_WRAP > 110:
COLUMNS = 2
TEXT_WRAP /= 2
else: TEXT_WRAP = 100
def cut_point(text, length):
"Returns position of the last space found before 'length' chars"
l = length
c = text[l]
while c != ' ':
l -= 1
if l == 0: return length # no space found
c = text[l]
return l
def text_wrap(text, length = None):
global TEXT_WRAP
wrapped = []
lines = text.split('<br>')
llen = len(lines)
if llen > 1:
if lines[-1] == '': llen -= 1
for i in range(llen - 1):
lines[i] = lines[i].rstrip() + '<br>'
lines[llen-1] = lines[llen-1].rstrip()
if not length: length = TEXT_WRAP
for l in lines:
while len(l) > length:
cpt = cut_point(l, length)
line, l = l[:cpt], l[cpt + 1:]
wrapped.append(line)
wrapped.append(l)
return wrapped
def load_script_text(script):
global PATHS, SCRIPT_INFO
if script.userdir:
path = PATHS['uscripts']
else:
path = PATHS['scripts']
fname = bsys.join(path, script.fname)
source = Blender.Text.Load(fname)
if source:
Draw.PupMenu("File loaded%%t|Please check the file \"%s\" in the Text Editor window" % source.name)
# for theme colors:
def float_colors(cols):
return map(lambda x: x / 255.0, cols)
# globals
SCRIPT_INFO = None
PATHS = {
'home': Blender.Get('homedir'),
'scripts': Blender.Get('scriptsdir'),
'uscripts': Blender.Get('uscriptsdir')
}
BPYMENUS_FILE = bsys.join(PATHS['home'], 'Bpymenus')
f = file(BPYMENUS_FILE, 'r')
lines = f.readlines()
f.close()
AllGroups = []
class Script:
def __init__(self, data):
self.name = data[0]
self.version = data[1]
self.fname = data[2]
self.userdir = data[3]
self.tip = data[4]
# End of class Script
class Group:
def __init__(self, name):
self.name = name
self.scripts = []
def add_script(self, script):
self.scripts.append(script)
def get_name(self):
return self.name
def get_scripts(self):
return self.scripts
# End of class Group
class BPy_Info:
def __init__(self, script, dict):
self.script = script
self.d = dict
self.header = []
self.len_header = 0
self.content = []
self.len_content = 0
self.spaces = 0
self.fix_urls()
self.make_header()
self.wrap_lines()
def make_header(self):
sc = self.script
d = self.d
header = self.header
title = "Script: %s" % sc.name
version = "Version: %s for Blender %1.2f or newer" % (d['__version__'],
sc.version / 100.0)
if len(d['__author__']) == 1:
asuffix = ':'
else: asuffix = 's:'
authors = "%s%s %s" % ("Author", asuffix, ", ".join(d['__author__']))
header.append(title)
header.append(version)
header.append(authors)
self.len_header = len(header)
def fix_urls(self):
emails = self.d['__email__']
fixed = []
for a in emails:
if a in DEFAULT_EMAILS.keys():
fixed.append(DEFAULT_EMAILS[a])
else:
a = a.replace('*','.').replace(':','@')
ltmp = a.split(',')
if len(ltmp) != 2:
ltmp = [ltmp[0], ltmp[0]]
fixed.append(ltmp)
self.d['__email__'] = fixed
links = self.d['__url__']
fixed = []
for a in links:
if a in DEFAULT_LINKS.keys():
fixed.append(DEFAULT_LINKS[a])
else:
ltmp = a.split(',')
if len(ltmp) != 2:
ltmp = [ltmp[0], ltmp[0]]
fixed.append([ltmp[0].strip(), ltmp[1].strip()])
self.d['__url__'] = fixed
def wrap_lines(self, reset = 0):
lines = self.d['__bpydoc__'].split('\n')
self.content = []
newlines = []
newline = []
if reset:
self.len_content = 0
self.spaces = 0
for l in lines:
if l == '' and newline:
newlines.append(newline)
newline = []
newlines.append('')
else: newline.append(l)
if newline: newlines.append(newline)
for lst in newlines:
wrapped = text_wrap(" ".join(lst))
for l in wrapped:
self.content.append(l)
if l: self.len_content += 1
else: self.spaces += 1
if not self.content[-1]:
self.len_content -= 1
# End of class BPy_Info
def parse_pyobj_close(closetag, lines, i):
i += 1
l = lines[i]
while l.find(closetag) < 0:
i += 1
l = "%s%s" % (l, lines[i])
return [l, i]
def parse_pyobj(var, lines, i):
"Bad code, was in a hurry for release"
l = lines[i].replace(var, '').replace('=','',1).strip()
i0 = i - 1
if l[0] == '"':
if l[1:3] == '""': # """
if l.find('"""', 3) < 0: # multiline
l2, i = parse_pyobj_close('"""', lines, i)
if l[-1] == '\\': l = l[:-1]
l = "%s%s" % (l, l2)
elif l[-1] == '"' and l[-2] != '\\': # single line: "..."
pass
else:
l = "ERROR"
elif l[0] == "'":
if l[-1] == '\\':
l2, i = parse_pyobj_close("'", lines, i)
l = "%s%s" % (l, l2)
elif l[-1] == "'" and l[-2] != '\\': # single line: '...'
pass
else:
l = "ERROR"
elif l[0] == '(':
if l[-1] != ')':
l2, i = parse_pyobj_close(')', lines, i)
l = "%s%s" % (l, l2)
elif l[0] == '[':
if l[-1] != ']':
l2, i = parse_pyobj_close(']', lines, i)
l = "%s%s" % (l, l2)
return [l, i - i0]
# helper functions:
def parse_help_info(script):
global PATHS, SCRIPT_INFO
if script.userdir:
path = PATHS['uscripts']
else:
path = PATHS['scripts']
fname = bsys.join(path, script.fname)
if not bsys.exists(fname):
Draw.PupMenu('IO Error|Couldn\'t find script %s' % fname)
return None
f = file(fname, 'r')
lines = f.readlines()
f.close()
# fix line endings:
if lines[0].find('\r'):
unixlines = []
for l in lines:
unixlines.append(l.replace('\r',''))
lines = unixlines
llen = len(lines)
has_doc = 0
doc_data = {
'__author__': '',
'__version__': '',
'__url__': '',
'__email__': '',
'__bpydoc__': '',
'__doc__': ''
}
i = 0
while i < llen:
l = lines[i]
incr = 1
for k in doc_data.keys():
if l.find(k, 0, 20) == 0:
value, incr = parse_pyobj(k, lines, i)
exec("doc_data['%s'] = %s" % (k, value))
has_doc = 1
break
i += incr
# fix these to seqs, simplifies coding elsewhere
for w in ['__author__', '__url__', '__email__']:
val = doc_data[w]
if val and type(val) == str:
doc_data[w] = [doc_data[w]]
if not doc_data['__bpydoc__']:
if doc_data['__doc__']:
doc_data['__bpydoc__'] = doc_data['__doc__']
if has_doc: # any data, maybe should confirm at least doc/bpydoc
info = BPy_Info(script, doc_data)
SCRIPT_INFO = info
return True
else:
return False
def parse_script_line(l):
try:
pieces = l.split("'")
name = pieces[1].replace('...','')
version, fname, userdir = pieces[2].strip().split()
tip = pieces[3]
except:
return None
return [name, int(version), fname, int(userdir), tip]
def parse_bpymenus(lines):
global AllGroups
llen = len(lines)
for i in range(llen):
l = lines[i].strip()
if not l: continue
if l[-1] == '{':
group = Group(l[:-2])
AllGroups.append(group)
i += 1
l = lines[i].strip()
while l != '}':
if l[0] != '|':
data = parse_script_line(l)
if data:
script = Script(data)
group.add_script(script)
i += 1
l = lines[i].strip()
AllGroups.reverse()
def create_group_menus():
global AllGroups
menus = []
for group in AllGroups:
name = group.get_name()
menu = []
scripts = group.get_scripts()
for s in scripts: menu.append(s.name)
menu = "|".join(menu)
menu = "%s%%t|%s" % (name, menu)
menus.append([name, menu])
return menus
# Collecting data:
fit_on_screen()
parse_bpymenus(lines)
GROUP_MENUS = create_group_menus()
# GUI:
from Blender import BGL
from Blender.Window import Theme
# globals:
START_SCREEN = 0
SCRIPT_SCREEN = 1
SCREEN = START_SCREEN
# gui buttons:
len_gmenus = len(GROUP_MENUS)
BUT_GMENU = range(len_gmenus)
for i in range(len_gmenus):
BUT_GMENU[i] = Draw.Create(0)
# events:
BEVT_LINK = None # range(len(SCRIPT_INFO.links))
BEVT_EMAIL = None # range(len(SCRIPT_INFO.emails))
BEVT_GMENU = range(100, len_gmenus + 100)
BEVT_VIEWSOURCE = 1
BEVT_EXIT = 2
BEVT_BACK = 3
# gui callbacks:
def gui(): # drawing the screen
global SCREEN, START_SCREEN, SCRIPT_SCREEN
global SCRIPT_INFO, AllGroups, GROUP_MENUS
global BEVT_EMAIL, BEVT_LINK
global BEVT_VIEWSOURCE, BEVT_EXIT, BEVT_BACK, BEVT_GMENU, BUT_GMENU
global PADDING, WIN_W, WIN_H, SCROLL_DOWN, COLUMNS
theme = Theme.Get()[0]
tui = theme.get('ui')
ttxt = theme.get('text')
COL_BG = float_colors(ttxt.back)
COL_TXT = ttxt.text
COL_TXTHI = ttxt.text_hi
BGL.glClearColor(COL_BG[0],COL_BG[1],COL_BG[2],COL_BG[3])
BGL.glClear(BGL.GL_COLOR_BUFFER_BIT)
BGL.glColor3ub(COL_TXT[0],COL_TXT[1], COL_TXT[2])
resize = screen_was_resized()
if resize: fit_on_screen()
if SCREEN == START_SCREEN:
x = PADDING
bw = 70
bh = 25
hincr = 50
butcolumns = (WIN_W - 2*x)/ bw
if butcolumns < 2: butcolumns = 2
elif butcolumns > 7: butcolumns = 7
len_gm = len(GROUP_MENUS)
butlines = len_gm / butcolumns
if len_gm % butcolumns: butlines += 1
h = hincr * butlines + 20
y = h + bh
BGL.glColor3ub(COL_TXTHI[0],COL_TXTHI[1], COL_TXTHI[2])
BGL.glRasterPos2i(x, y)
Draw.Text('Scripts Help Browser')
y -= bh
BGL.glColor3ub(COL_TXT[0],COL_TXT[1], COL_TXT[2])
i = 0
j = 0
for group_menu in GROUP_MENUS:
BGL.glRasterPos2i(x, y)
Draw.Text(group_menu[0]+':')
BUT_GMENU[j] = Draw.Menu(group_menu[1], BEVT_GMENU[j],
x, y-bh-5, bw, bh, 0,
'Choose a script to read its help information')
if i == butcolumns - 1:
x = PADDING
i = 0
y -= hincr
else:
i += 1
x += bw + 3
j += 1
x = PADDING
y = 10
BGL.glRasterPos2i(x, y)
Draw.Text('Select script for its help. Press Q or ESC to leave.')
elif SCREEN == SCRIPT_SCREEN:
if SCRIPT_INFO:
if resize:
SCRIPT_INFO.wrap_lines(1)
SCROLL_DOWN = 0
h = 18 * SCRIPT_INFO.len_content + 12 * SCRIPT_INFO.spaces
x = PADDING
y = WIN_H
bw = 38
bh = 16
BGL.glColor3ub(COL_TXTHI[0],COL_TXTHI[1], COL_TXTHI[2])
for line in SCRIPT_INFO.header:
y -= 18
BGL.glRasterPos2i(x, y)
size = Draw.Text(line)
for line in text_wrap('Tooltip: %s' % SCRIPT_INFO.script.tip):
y -= 18
BGL.glRasterPos2i(x, y)
size = Draw.Text(line)
i = 0
y -= 28
for data in SCRIPT_INFO.d['__url__']:
Draw.PushButton('link %d' % (i + 1), BEVT_LINK[i],
x + i*bw, y, bw, bh, data[0])
i += 1
y -= bh + 1
i = 0
for data in SCRIPT_INFO.d['__email__']:
Draw.PushButton('email', BEVT_EMAIL[i], x + i*bw, y, bw, bh, data[0])
i += 1
y -= 18
y0 = y
BGL.glColor3ub(COL_TXT[0],COL_TXT[1], COL_TXT[2])
for line in SCRIPT_INFO.content[SCROLL_DOWN:]:
if line:
line = line.replace('<br>', '')
BGL.glRasterPos2i(x, y)
Draw.Text(line)
y -= 18
else: y -= 12
if y < PADDING + 20: # reached end, either stop or go to 2nd column
if COLUMNS == 1: break
elif x == PADDING: # make sure we're still in column 1
x = 6*TEXT_WRAP + PADDING / 2
y = y0
x = PADDING
Draw.PushButton('source', BEVT_VIEWSOURCE, x, 17, 45, bh,
'View this script\'s source code in the Text Editor (hotkey: S)')
Draw.PushButton('exit', BEVT_EXIT, x + 45, 17, 45, bh,
'Exit from Scripts Help Browser (hotkey: Q)')
Draw.PushButton('back', BEVT_BACK, x + 2*45, 17, 45, bh,
'Back to scripts selection screen (hotkey: ESC)')
BGL.glColor3ub(COL_TXTHI[0],COL_TXTHI[1], COL_TXTHI[2])
BGL.glRasterPos2i(x, 5)
Draw.Text('use the arrow keys or the mouse wheel to scroll text', 'small')
def fit_scroll():
global SCROLL_DOWN
if not SCRIPT_INFO:
SCROLL_DOWN = 0
return
max = SCRIPT_INFO.len_content + SCRIPT_INFO.spaces - 1
if SCROLL_DOWN > max: SCROLL_DOWN = max
if SCROLL_DOWN < 0: SCROLL_DOWN = 0
def event(evt, val): # input events
global SCREEN, START_SCREEN, SCRIPT_SCREEN
global SCROLL_DOWN
if not val: return
if evt == Draw.ESCKEY:
if SCREEN == START_SCREEN: Draw.Exit()
else:
SCREEN = START_SCREEN
SCROLL_DOWN = 0
Draw.Redraw()
return
elif evt == Draw.QKEY:
Draw.Exit()
return
elif evt in [Draw.DOWNARROWKEY, Draw.WHEELDOWNMOUSE] and SCREEN == SCRIPT_SCREEN:
SCROLL_DOWN += 1
fit_scroll()
Draw.Redraw()
return
elif evt in [Draw.UPARROWKEY, Draw.WHEELUPMOUSE] and SCREEN == SCRIPT_SCREEN:
SCROLL_DOWN -= 1
fit_scroll()
Draw.Redraw()
return
elif evt == Draw.SKEY:
if SCREEN == SCRIPT_SCREEN and SCRIPT_INFO:
load_script_text(SCRIPT_INFO.script)
return
def button_event(evt): # gui button events
global SCREEN, START_SCREEN, SCRIPT_SCREEN
global BEVT_LINK, BEVT_EMAIL, BEVT_GMENU, BUT_GMENU, SCRIPT_INFO
global SCROLL_DOWN
if evt >= 100: # group menus
for i in range(len(BUT_GMENU)):
if evt == BEVT_GMENU[i]:
group = AllGroups[i]
index = BUT_GMENU[i].val - 1
if index < 0: return # user didn't pick a menu entry
script = group.get_scripts()[BUT_GMENU[i].val - 1]
if parse_help_info(script):
SCREEN = SCRIPT_SCREEN
BEVT_LINK = range(20, len(SCRIPT_INFO.d['__url__']) + 20)
BEVT_EMAIL = range(50, len(SCRIPT_INFO.d['__email__']) + 50)
Draw.Redraw()
else:
res = Draw.PupMenu("No help available%t|View Source|Cancel")
if res == 1:
load_script_text(script)
elif evt >= 20:
if not WEBBROWSER:
Draw.PupMenu('Missing standard Python module%t|You need module "webbrowser" to access the web')
return
if evt >= 50: # script screen email buttons
email = SCRIPT_INFO.d['__email__'][evt - 50][1]
webbrowser.open("mailto:%s" % email)
else: # >= 20: script screen link buttons
link = SCRIPT_INFO.d['__url__'][evt - 20][1]
webbrowser.open(link)
elif evt == BEVT_VIEWSOURCE:
if SCREEN == SCRIPT_SCREEN: load_script_text(SCRIPT_INFO.script)
elif evt == BEVT_EXIT:
Draw.Exit()
return
elif evt == BEVT_BACK:
if SCREEN == SCRIPT_SCREEN:
SCREEN = START_SCREEN
SCRIPT_INFO = None
SCROLL_DOWN = 0
Draw.Redraw()
Draw.Register(gui, event, button_event)

@ -6,6 +6,16 @@ Group: 'Help'
Tooltip: 'Help for new users'
"""
__author__ = "Matt Ebb"
__url__ = ("blender", "elysiun")
__version__ = "1.0"
__bpydoc__ = """\
This script opens the user's default web browser at www.blender3d.org's
"Getting Started" page.
"""
# $Id$
#
# --------------------------------------------------------------------------
# Getting Started Help Menu Item
# --------------------------------------------------------------------------
@ -30,4 +40,4 @@ Tooltip: 'Help for new users'
import Blender, webbrowser
version = str(Blender.Get('version'))
webbrowser.open('http://www.blender3d.org/Help/?pg=GettingStarted&ver=' + version)
webbrowser.open('http://www.blender3d.org/Help/?pg=GettingStarted&ver=' + version)

@ -6,6 +6,14 @@ Group: 'Help'
Tooltip: 'The Blender reference manual'
"""
__author__ = "Matt Ebb"
__url__ = ("blender", "elysiun")
__version__ = "1.0"
__bpydoc__ = """\
This script opens the user's default web browser at www.blender3d.org's
"Blender Manual" page.
"""
# --------------------------------------------------------------------------
# Manual Help Menu Item
# --------------------------------------------------------------------------
@ -30,4 +38,4 @@ Tooltip: 'The Blender reference manual'
import Blender, webbrowser
version = str(Blender.Get('version'))
webbrowser.open('http://www.blender3d.org/Help/?pg=Manual&ver=' + version)
webbrowser.open('http://www.blender3d.org/Help/?pg=Manual&ver=' + version)

@ -6,6 +6,15 @@ Group: 'Help'
Tooltip: 'Documentation for using the Blender Python API'
"""
__author__ = "Matt Ebb"
__url__ = ("blender", "elysiun")
__version__ = "1.0"
__bpydoc__ = """\
This script opens the user's default web browser at www.blender3d.org's
"Blender Python API Reference" page.
"""
# --------------------------------------------------------------------------
# Python Scripting Reference Help Menu Item
# --------------------------------------------------------------------------
@ -30,4 +39,4 @@ Tooltip: 'Documentation for using the Blender Python API'
import Blender, webbrowser
version = str(Blender.Get('version'))
webbrowser.open('http://www.blender3d.org/Help/?pg=PyReference&ver=' + version)
webbrowser.open('http://www.blender3d.org/Help/?pg=PyReference&ver=' + version)

@ -6,6 +6,14 @@ Group: 'Help'
Tooltip: 'Information about the changes in this version of Blender'
"""
__author__ = "Matt Ebb"
__url__ = ("blender", "elysiun")
__version__ = "1.0"
__bpydoc__ = """\
This script opens the user's default web browser at www.blender3d.org's
"Release Notes" page.
"""
# --------------------------------------------------------------------------
# Release Notes Help Menu Item
# --------------------------------------------------------------------------
@ -30,4 +38,4 @@ Tooltip: 'Information about the changes in this version of Blender'
import Blender, webbrowser
version = str(Blender.Get('version'))
webbrowser.open('http://www.blender3d.org/Help/?pg=ReleaseNotes&ver=' + version)
webbrowser.open('http://www.blender3d.org/Help/?pg=ReleaseNotes&ver=' + version)

@ -7,6 +7,14 @@ Group: 'Help'
Tooltip: 'Tutorials for learning to use Blender'
"""
__author__ = "Matt Ebb"
__url__ = ("blender", "elysiun")
__version__ = "1.0"
__bpydoc__ = """\
This script opens the user's default web browser at www.blender3d.org's
"Blender Tutorials" page.
"""
# --------------------------------------------------------------------------
# Tutorials Help Menu Item
# --------------------------------------------------------------------------
@ -31,4 +39,4 @@ Tooltip: 'Tutorials for learning to use Blender'
import Blender, webbrowser
version = str(Blender.Get('version'))
webbrowser.open('http://www.blender3d.org/Help/?pg=Tutorials&ver=' + version)
webbrowser.open('http://www.blender3d.org/Help/?pg=Tutorials&ver=' + version)

@ -7,6 +7,15 @@ Group: 'HelpWebsites'
Tooltip: 'The official Blender website'
"""
__author__ = "Matt Ebb"
__url__ = ("blender", "elysiun")
__version__ = "1.0"
__bpydoc__ = """\
This script opens the user's default web browser at Blender's main site,
www.blender3d.org.
"""
# --------------------------------------------------------------------------
# Blender Website Help Menu -> Websites Item
# --------------------------------------------------------------------------
@ -30,4 +39,4 @@ Tooltip: 'The official Blender website'
# --------------------------------------------------------------------------
import Blender, webbrowser
webbrowser.open('http://www.blender3d.org/')
webbrowser.open('http://www.blender3d.org/')

@ -7,6 +7,14 @@ Group: 'HelpWebsites'
Tooltip: 'Get involved with Blender development'
"""
__author__ = "Matt Ebb"
__url__ = ("blender", "elysiun")
__version__ = "1.0"
__bpydoc__ = """\
This script opens the user's default web browser at www.blender.org, the
Blender development portal.
"""
# --------------------------------------------------------------------------
# Blender Website Help Menu -> Websites Item
# --------------------------------------------------------------------------
@ -30,4 +38,4 @@ Tooltip: 'Get involved with Blender development'
# --------------------------------------------------------------------------
import webbrowser
webbrowser.open('http://www.blender.org')
webbrowser.open('http://www.blender.org')

@ -7,6 +7,14 @@ Group: 'HelpWebsites'
Tooltip: 'Buy official Blender resources and merchandise online'
"""
__author__ = "Matt Ebb"
__url__ = ("blender", "elysiun")
__version__ = "1.0"
__bpydoc__ = """\
This script opens the user's default web browser at www.blender3d.org's
"E-Shop" section.
"""
# --------------------------------------------------------------------------
# Blender Website Help Menu -> Websites Item
# --------------------------------------------------------------------------
@ -30,4 +38,4 @@ Tooltip: 'Buy official Blender resources and merchandise online'
# --------------------------------------------------------------------------
import Blender, webbrowser
webbrowser.open('http://www.blender3d.org/e-shop')
webbrowser.open('http://www.blender3d.org/e-shop')

@ -7,6 +7,14 @@ Group: 'HelpWebsites'
Tooltip: 'Get involved with other Blender users'
"""
__author__ = "Matt Ebb"
__url__ = ("blender", "elysiun")
__version__ = "1.0"
__bpydoc__ = """\
This script opens the user's default web browser at www.blender3d.org's
"User Community" page.
"""
# --------------------------------------------------------------------------
# Blender Website Help Menu -> Websites Item
# --------------------------------------------------------------------------
@ -30,4 +38,4 @@ Tooltip: 'Get involved with other Blender users'
# --------------------------------------------------------------------------
import webbrowser
webbrowser.open('http://www.blender3d.org/Community')
webbrowser.open('http://www.blender3d.org/Community')

@ -1,15 +1,33 @@
#!BPY
""" Registration info for Blender menus:
Name: 'Hotkey Reference'
Name: 'HotKey and MouseAction Reference'
Blender: 232
Group: 'Help'
Tip: 'All the hotkeys'
Tip: 'All the hotkeys/short keys'
"""
__author__ = "Jean-Michel Soler (jms)"
__url__ = ("blender", "elysiun",
"Script's homepage, http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_hotkeyscript.htm",
"Communicate problems and errors, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender")
__version__ = "10/2004"
__bpydoc__ = """\
This script is a reference about all hotkeys and mouse actions in Blender.
Usage:
Open the script from the Help menu and select group of keys to browse.
Notes:<br>
Additional entries in the database (c) 2004 by Bart.
"""
# $Id$
#------------------------
# Hotkeys script
# jm soler (2003)
# jm soler (2003-->10/2004)
# -----------------------
# Page officielle :
# http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_hotkeyscript.htm
@ -24,7 +42,8 @@ Tip: 'All the hotkeys'
# --------------------------------------------------------------------------
# ***** BEGIN GPL LICENSE BLOCK *****
#
# Copyright (C) 2003, 2004: Jean-Michel Soler
# Script copyright (C) 2003, 2004: Jean-Michel Soler
# Additionnal entries in the original data base (c) 2004 by Bart (bart@neeneenee.de)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -50,205 +69,294 @@ from Blender.BGL import *
hotkeys={
'Specials 1 ':[
[',', 'Set Bounding Box rotation scaling pivot'],
['.', 'Set 3D cursor as rotation scaling pivot'] ,
['~', 'Display all layers'] ,
['Shift-~', 'Display all/previous layers'] ,
['TAB', 'Enter/exit edit mode'] ,
['Ctrl-,', 'Set Median Point rotation scaling pivot'],
['.', 'Set 3D cursor as rotation scaling pivot'],
['Ctrl-.', 'Set Individual Object Centers as rotation scaling pivot'] ,
['~', 'Display all layers (German keys: ö)'],
['Shift-~', 'Display all/previous layers (German keys: Shift-ö)'],
['Space', 'Popup menu'],
['Space', '3D View: camera selected + fly mode, accept'],
['TAB', 'Enter/exit Edit Mode'],
['TAB', 'Edit Mode and Numerical Edit (see N key) : move to next input value'],
['TAB', 'Sequencer: Edit meta strip'] ,
['CTRL-TAB', 'Enter/exit pose mode']
['TAB', 'Sequencer: Edit meta strip'],
['TAB', 'IPO: Edit selected'],
['Ctrl-TAB', 'Enter/exit Pose Mode'],
['Shift-TAB', 'Enter Object Mode'],
['Ctrl-Open menu/', ''],
['Ctrl-Load Image', 'Opens a thumbnail browser instead of file browser for images']
],
'Specials 2 ':[
'Mouse ':[
['Actions:', ''],
['LMB', '3D View: Set 3D Cursor'],
['LMB', '3D View: camera selected + fly mode, move forward'],
['LMB drag', 'Border select circle: add to selection'],
['LMB hold down', 'Popup menu'],
['LMB hold down drag', 'Gesture'],
['Ctrl-LMB', 'IPO: Add key'],
['MMB', 'Rotate'],
['Ctrl-MMB', 'Zoom view'],
['Shift-MMB', 'Move view'],
['RMB', 'Select'],
['RMB drag', 'Border select circle: subtract from selection'],
['RMB hold down', 'Popup menu'],
['Alt+Ctrl-RMB', 'Edit Mode: Select edge'],
['Alt+Ctrl-RMB', 'UV Image Editor: Select face'],
['Shift-RMB', 'Add/subtract to/from selection'],
['Wheel', 'Zoom view'],
['Transformations:', ''],
['Drag+Ctrl', 'Step adjustment'],
['Drag+Ctrl+Shift', 'Small step adjustment'],
['Drag+Shift', 'Fine adjustment'],
['LMB', 'Confirm transformation'],
['MMB', 'Toggle optional transform feature'],
['RMB', 'Abort transformation']
],
'F-Keys ':[
['F1', 'Open File'],
['F2', 'Save File'],
['F3', 'Save image'],
['F4', 'Logic window (may change)'],
['F5', 'Material window'],
['F6', 'Texture window'],
['F7', 'Object window'],
['F8', 'World window'],
['F9', 'Edit Mode window'],
['F4', 'Logic Window (may change)'],
['F5', 'Material Window'],
['F6', 'Texture Window'],
['F7', 'Object Window'],
['F8', 'World Window'],
['F9', 'Edit Mode Window'],
['F10', 'Render Window'],
['F11', 'Recall the last rendered image'],
['F12', 'Render current Scene'],
['Ctrl-Shift-F12', 'NLA Editor'],
['Shift-F1', 'Library Data Select'],
['Shift-F4', 'Data Select '],
['Shift-F5', '3D window'],
['Shift-F6', 'IPO window'],
['Shift-F8', 'Video Sequencer window'],
['Shift-F9', 'OOP window'],
['Shift-F10', 'Image Window']
] ,
['Shift-F2', 'Export DXF'],
['Shift-F4', 'Object manager Data Select '],
['Shift-F5', '3D Window'],
['Shift-F6', 'IPO Window'],
['Shift-F7', 'Buttons Window'],
['Shift-F8', 'Video Sequencer Window'],
['Shift-F9', 'OOP Window'],
['Shift-F10', 'UV Image Editor'],
['Shift-F11', 'Text Editor'],
['Shift-F12', 'Action Editor']
],
'Numbers ':[
['1..2..0-=', 'Show layer 1..2..12'] ,
['ALT-1..2..0', 'Show layer 11..12..20'] ,
['SHIFT-1..2..0-=', 'Toggle layer 1..2..12'] ,
['SHIFT-ALT-...', 'Toggle layer 11..12..20'] ],
'Numbers ':[
['1..2..0-=', 'Show layer 1..2..12'],
['Alt-1..2..0', 'Show layer 11..12..20'],
['Shift-1..2..0-=', 'Toggle layer 1..2..12'],
['Shift-ALT-...', 'Toggle layer 11..12..20']
],
'Numpad ':[
['Numpad DEL', 'Zoom on object'] ,
['Numpad /', 'Local view on object (hide others)'] ,
['Numpad *', "Rotate view to object's local axes"] ,
['Numpad +', 'Zoom in (works everywhere)'] ,
['Numpad +', 'Proportional vertex edit mode: Increase range of influence'] ,
['Numpad -', 'Zoom out (works everywhere)'] ,
['Numpad -', 'Proportional vertex edit mode: Decrease range of influence'] ,
['Numpad INS', 'Set Camera view'] ,
['CTRL-Numpad INS', 'Set active object as camera'] ,
['ALT-Numbad INS', 'Restore old camera'] ,
['Numpad 1', 'Front view'] ,
['CTRL-Numpad 1', 'Back view'] ,
['Numpad 3', 'Right-Side view'] ,
['CTRL-Numpad 3', 'Left-Side view'] ,
['Numpad 7', 'Top view'] ,
['CTRL-Numpad 7', 'Bottom view '] ,
['Numpad 5', 'Toggle orthogonal // perspective view'] ,
['Numpad 9', 'Redraw view'] ,
['Numpad 2', 'Rotate view left'] ,
['Numpad 6', 'Rotate view right'] ,
['Numpad 8', 'Rotate view up'] ,
['Numpad 2', 'Rotate view down'] ],
'Numpad ':[
['Numpad DEL', 'Zoom on object'],
['Numpad /', 'Local view on object (hide others)'],
['Numpad *', 'Rotate view to objects local axes'],
['Numpad +', 'Zoom in (works everywhere)'],
['Numpad +', 'Proportional vertex Edit Mode: Increase range of influence'],
['Ctrl-Numpad +', 'Edit Mode: Select More vertices'],
['Numpad -', 'Zoom out (works everywhere)'],
['Numpad -', 'Proportional vertex Edit Mode: Decrease range of influence'],
['Ctrl-Numpad +', 'Edit Mode: Select Less vertices'],
['Numpad INS', 'Set Camera view'],
['Ctrl-Numpad INS', 'Set active object as camera'],
['Alt-Numbad INS', 'Restore old camera'],
['Numpad 1', 'Front view'],
['Ctrl-Numpad 1', 'Back view'],
['Numpad 3', 'Right view'],
['Ctrl-Numpad 3', 'Left view'],
['Numpad 7', 'Top view'],
['Ctrl-Numpad 7', 'Bottom view '],
['Numpad 5', 'Toggle orthogonal/perspective view'],
['Numpad 9', 'Redraw view'],
['Numpad 4', 'Rotate view left'],
['Numpad 6', 'Rotate view right'],
['Numpad 8', 'Rotate view up'],
['Numpad 2', 'Rotate view down']
],
'Arrows ':[
['PgUp', 'IPO: Select next keyframe'] ,
['CTRL-PgUp', 'IPO: Select and jump to next keyframe'] ,
['PgDn', 'IPO: Select previous keyframe'] ,
['CTRL-PgDn', 'IPO: Select and jump to previous keyframe'] ,
['LEFT', 'One frame backwards'] ,
['RIGHT', 'One frame forwards'] ,
['DOWN', '10 frames backwards'] ,
['UP', '10 frames forwards'] ],
['Home/Pos1', 'View all'],
['PgUp', 'IPO: Select next keyframe'],
['Ctrl-PgUp', 'IPO: Select and jump to next keyframe'],
['PgDn', 'IPO: Select previous keyframe'],
['Ctrl-PgDn', 'IPO: Select and jump to previous keyframe'],
['Left', 'One frame backwards'],
['Right', 'One frame forwards'],
['Down', '10 frames backwards'],
['Up', '10 frames forwards'],
['Alt-Down', 'Blender in Window mode'],
['Alt-Up', 'Blender in Fullscreen mode'],
['Ctrl-Left', 'Previous screen'],
['Ctrl-Right', 'Next screen'],
['Ctrl-Down', 'Maximize window toggle'],
['Ctrl-Up', 'Maximize window toggle'],
['Shift-Arrow', 'Toggle first frame/ last frame']
],
'Letters ':[ {"A":[
['A', 'Select all / Deselect all'] ,
['ALT-A', 'Animate current window'] ,
['CTRL-A', "Apply object's size/rotation to object data"] ,
['SHIFT-A', 'Sequencer: ADD menu'] ,
['SHIFT-ALT-A', 'Animate all windows'] ,
['SHIFT-CTRL-A', 'Apply lattice / Make dupliverts real']] ,
['A', 'Select all/Deselect all'],
['Alt-A', 'Play animation in current window'],
['Ctrl-A', 'Apply objects size/rotation to object data'],
['Ctrl-A', 'Text Editor: Select all'],
['Shift-A', 'Sequencer: Add menu'],
['Shift-A', '3D-View: Add menu'],
['Shift-ALT-A', 'Play animation in all windows'],
['Shift-CTRL-A', 'Apply lattice / Make dupliverts real']
],
"B":[
['B', 'Border select'] ,
['BB', 'Circle select'] ,
['SHIFT-B', 'Set render border'] ],
['B', 'Border select'],
['BB', 'Circle select'],
['Alt+B', 'Edit Mode: Select Vertex Loop'],
['Shift-B', 'Set render border (in active camera view)']
],
"C":[
['C', 'Center view on cursor'] ,
['C', 'Sequencer: Change images'] ,
['C', 'IPO: Snap current frame to selected key'] ,
['ALT-C', 'Convert menu'] ,
['CTRL-C', 'Copy menu (Copy properties of active to selected objects)'] ,
['SHIFT-C', 'Center and zoom view on selected objects']] ,
['C', 'Center view on cursor'],
['C', 'UV Image Editor: Active Face Select toggle'],
['C', 'Sequencer: Change images'],
['C', 'IPO: Snap current frame to selected key'],
['Alt-C', 'Object Mode: Convert menu'],
['Alt-C', 'Text Editor: Copy selection to clipboard'],
['Ctrl-C', 'Copy menu (Copy properties of active to selected objects)'],
['Ctrl-C', 'UV Image Editor: Stick UVs to mesh vertex'],
['Shift-C', 'Center and zoom view on selected objects'],
['Shift-C', 'UV Image Editor: Stick local UVs to mesh vertex']
],
"D":[
['D', 'Set 3d draw mode'] ,
['ALT-D', 'Create new instance of object'] ,
['CTRL-D', 'Display alpha of image texture as wire'] ,
['SHIFT-D', 'Create full copy of object'] ],
['D', 'Set 3d draw mode'],
['Alt-D', 'Object Mode: Create new instance of object'],
['Ctrl-D', 'Display alpha of image texture as wire'],
['Shift-D', 'Create full copy of object']
],
"E":[
['E', 'Extrude'],
['EX', 'Extrude along X axis'],
['EY', 'Extrude along Y axis'],
['EZ', 'Extrude along Z axis'],
['ALT-E', 'Edit mode: exit edit mode'],] ,
['E', 'Edit Mode: Extrude'],
['E', 'UV Image Editor: LSCM Unwrap'],
['ER', 'Edit Mode: Extrude Rotate'],
['ES', 'Edit Mode: Extrude Scale'],
['ESX', 'Edit Mode: Extrude Scale X axis'],
['ESY', 'Edit Mode: Extrude Scale Y axis'],
['ESZ', 'Edit Mode: Extrude Scale Z axis'],
['EX', 'Edit Mode: Extrude along X axis'],
['EY', 'Edit Mode: Extrude along Y axis'],
['EZ', 'Edit Mode: Extrude along Z axis'],
['Alt-E', 'Edit Mode: exit Edit Mode'],
['Ctrl-E', 'Edit Mode: Edge Specials menu'],
['Shift-E', 'Edit Mode: SubSurf Edge Sharpness']
],
"F":[
['F', 'Edit mode: Make edge/face'] ,
['F', 'Sequencer: Set Filter Y'] ,
['F', 'Faceselect mode'] ,
['ALT-F', 'Beautify fill'] ,
['CTRL-F', 'Sort faces in Z direction'] ,
['CTRL-F', 'Edit mode: Flip triangle edges'] ,
['SHIFT-F', 'Edit mode: Fill with triangles']] ,
['F', 'Edit mode: Make edge/face'],
['F', 'Sequencer: Set Filter Y'],
['F', 'Object Mode: UV/Face Select mode'],
['Alt-F', 'Edit Mode: Beautify fill'],
['Ctrl-F', 'Object Mode: Sort faces in Z direction'],
['Ctrl-F', 'Edit Mode: Flip triangle edges'],
['Shift-F', 'Edit Mode: Fill with triangles'],
['Shift-F', 'Object Mode: active camera in fly mode (use LMB, RMB, Alt, Ctrl and Space too)']
],
"G":[
['G', 'Grab (move)'] ,
['ALT-G', 'Clear location'] ,
['SHIFT-ALT-G', 'Remove selected objects from group'] ,
['CTRL-G', 'Add selected objects to group'] ,
['SHIFT-G', 'Group menu'] ],
['G', 'Grab (move)'],
['Alt-G', 'Clear location'],
['Shift-ALT-G', 'Remove selected objects from group'],
['Ctrl-G', 'Add selected objects to group'],
['Shift-G', 'Selected Group menu']
],
"H":[
['H', 'Hide selected vertices/faces'] ,
['H', 'Curves: Set handle type'] ,
['ALT-H', 'Reveal vertices'] ,
['CTRL-H', 'Curves: Automatic handle calculation'] ,
['SHIFT-H', 'Hide deselected vertices'] ,
['SHIFT-H', 'Curves: Set handle type']] ,
['H', 'Hide selected vertices/faces'],
['H', 'Curves: Set handle type'],
['Alt-H', 'Show Hidden vertices/faces'],
['Ctrl-H', 'Curves: Automatic handle calculation'],
['Shift-H', 'Hide deselected vertices/faces'],
['Shift-H', 'Curves: Set handle type']
],
"I":[
['I', 'Keyframe menu'] ],
['I', 'Keyframe menu']
],
"J":[
['J', 'Mesh: Join all adjacent triangles to quads'] ,
['J', 'Swap render page of render window'] ,
['CTRL-J', 'Join selected objects'] ,
['CTRL-J', 'Nurbs: Add segment'] ,
['CTRL-J', 'IPO: Join keyframes menu'],
['ALT-J', 'Edit Mode: convert quads to triangles']
['J', 'IPO: Join menu'],
['J', 'Mesh: Join all adjacent triangles to quads'],
['J', 'Render Window: Swap render buffer'],
['Ctrl-J', 'Join selected objects'],
['Ctrl-J', 'Nurbs: Add segment'],
['Ctrl-J', 'IPO: Join keyframes menu'],
['Alt-J', 'Edit Mode: convert quads to triangles']
],
"K":[
['K', '3d window: Show keyframe positions'] ,
['K', 'IPO: Show keyframe positions'] ,
['K', 'Nurbs: Print knots'] ,
['CTRL-K', 'Make skeleton from armature'] ,
['SHIFT-K', 'Show and select all keyframes for object'] ,
['SHIFT-K', 'Edit: Knife Mode select'],
['SHIFT-K', 'Faceselect: Clear vertexcolours'],
] ,
['K', '3d Window: Show keyframe positions'],
['K', 'Edit Mode: Loop/Cut menu'],
['K', 'IPO: Show keyframe positions'],
['K', 'Nurbs: Print knots'],
['Ctrl-K', 'Make skeleton from armature'],
['Shift-K', 'Show and select all keyframes for object'],
['Shift-K', 'Edit Mode: Knife Mode select'],
['Shift-K', 'UV Face Select: Clear vertex colours'],
['Shift-K', 'Vertex Paint: Fill with vertex colours']
],
"L":[
['L', 'Make local menu'] ,
['L', 'Edit mode: Select linked vertices (near mouse pointer)'] ,
['L', 'OOPS window: Select linked objects'] ,
['CTRL-L', 'Make links menu'] ,
['SHIFT-L', 'Select links menu'] ],
['L', 'Make local menu'],
['L', 'Edit mode: Select linked vertices (near mouse pointer)'],
['L', 'OOPS window: Select linked objects'],
['L', 'UV Face Select: Select linked faces'],
['Ctrl-L', 'Make links menu'],
['Shift-L', 'Select links menu']
],
"M":[
['M', 'Move object to different layer'] ,
['M', 'Move object to different layer'],
['M', 'Sequencer: Make meta strip (group) from selected strips'],
['ALT-M', 'Edit Mode: Merge vertices'] ],
['M', 'Edit Mode: Mirros Axis menu'],
['Alt-M', 'Edit Mode: Merge vertices menu'],
['Ctrl-M', 'Object Mode: Mirros Axis menu']
],
"N":[
['N', 'Numeric input menu (Size/Rot/Loc)'] ,
['N', 'Transform Properties panel'] ,
['N', 'OOPS window: Rename object/linked objects'] ,
['CTRL-N', 'Armature: Recalculate bone roll angles'] ,
['CTRL-N', 'Recalculate normals to outside'] ,
['CTRL-ALT-N', 'Recalculate normals to inside'] ],
['Ctrl-N', 'Armature: Recalculate bone roll angles'] ,
['Ctrl-N', 'Edit Mode: Recalculate normals to outside'] ,
['Ctrl-ALT-N', 'Edit Mode: Recalculate normals to inside'] ],
"O":[
['O', 'Edit mode: Toggle proportional vertex editing'] ,
['ALT-O', 'Clear object origin'] ,
['CTRL-O', 'Revert current file to last saved'] ,
['SHIFT-O', 'Proportional vertex edit mode: Toggle smooth/steep falloff'] ],
['O', 'Edit Mode/UV Image Editor: Toggle proportional vertex editing'],
['Alt-O', 'Clear object origin'],
['Ctrl-O', 'Revert current file to last saved'],
['Shift-O', 'Proportional vertex Edit Mode: Toggle smooth/steep falloff']
],
"P":[
['P', 'Start realtime engine'] ,
['P', 'Edit mode: Seperate vertices to new object'] ,
['ALT-P', 'Clear parent relationship'] ,
['CTRL-P', 'Make active object parent of selected object'] ,
['CTRL-SHIFT-P', 'Make active object parent of selected object without inverse'] ,
['CTRL-P', 'Edit mode: Make active vertex parent of selected object'] ],
['P', 'Object Mode: Start realtime engine'],
['P', 'Edit mode: Seperate vertices to new object'],
['P', 'UV Image Editor: Pin UVs'],
['Alt-P', 'Clear parent relationship'],
['Alt-P', 'UV Image Editor: Unpin UVs'],
['Ctrl-P', 'Make active object parent of selected object'],
['Ctrl-SHIFT-P', 'Make active object parent of selected object without inverse'],
['Ctrl-P', 'Edit mode: Make active vertex parent of selected object']
],
"Q":[['Q', 'Quit'] ],
"R":[
['R', 'Rotate'] ,
['R', 'IPO: Record mouse movement as IPO curve'] ,
['RX', 'Rotate around X axis'] ,
['RXX', "Rotate around object's local X axis"] ,
['RY', 'Rotate around Y axis'] ,
['RYY', "Rotate around object's local Y axis"] ,
['RZ', 'Rotate around Z axis'] ,
['RZZ', "Rotate around object's local Z axis"] ,
['ALT-R', 'Clear object rotation'] ,
['SHIFT-R', 'Nurbs: Select row'],
['CTRL-R', 'Edit Mode: Knife, cut selected edges, accept left mouse/ cancel right mouse'],
['SHIT-R', 'Edit Mode: loop Selection']],
['R', 'Rotate'],
['R', 'IPO: Record mouse movement as IPO curve'],
['R', 'UV Face Select: Rotate menu uv coords or vertex colour'],
['RX', 'Rotate around X axis'],
['RXX', "Rotate around object's local X axis"],
['RY', 'Rotate around Y axis'],
['RYY', "Rotate around object's local Y axis"],
['RZ', 'Rotate around Z axis'],
['RZZ', "Rotate around object's local Z axis"],
['Alt-R', 'Clear object rotation'],
['Ctrl-R', 'Edit Mode: Knife, cut selected edges, accept left mouse/ cancel right mouse'],
['Shift-R', 'Edit Mode: select Face Loop'],
['Shift-R', 'Nurbs: Select row'] ],
"S":[
['S', 'Scale'] ,
@ -258,58 +366,69 @@ hotkeys={
['SXX', 'Flip around X axis and show axis'] ,
['SYY', 'Flip around Y axis and show axis'] ,
['SZZ', 'Flip around Z axis and show axis'] ,
['ALT-S', 'Edit mode: Shrink/fatten (Scale along vertex normals)'] ,
['ALT-S', 'Clear object size'] ,
['CTRL-S', 'Edit mode: Shear'] ,
['SHIFT-S', 'Cursor/Grid snap menu'] ],
['Alt-S', 'Edit mode: Shrink/fatten (Scale along vertex normals)'] ,
['Alt-S', 'Clear object size'] ,
['Ctrl-S', 'Edit mode: Shear'] ,
['Shift-S', 'Cursor/Grid snap menu'] ],
"T":[
['T', 'Sequencer: Touch and print selected movies'] ,
['T', 'Adjust texture space'] ,
['T', 'Edit mode: Flip 3d curve'] ,
['T', 'IPO: Change IPO type'] ,
['ALT-T', 'Clear tracking of object'] ,
['CTRL-T', 'Make selected object track active object'] ,
['CTRL-T', 'Mesh: Convert to triangles'] ,
['CTRL-ALT-T', 'Blenchmark'] ],
['Alt-T', 'Clear tracking of object'] ,
['Ctrl-T', 'Make selected object track active object'] ,
['Ctrl-T', 'Edit Mode: Convert to triangles'] ,
['Ctrl-ALT-T', 'Benchmark'] ],
"U":[
['U', 'Make single user menu'] ,
['U', 'Edit mode: Reload object data from before entering edit mode'] ,
['U', 'Faceselect mode: Automatic UV calculation menu'] ,
['U', '3D View: Global undo'] ,
['U', 'Edit Mode: Reload object data from before entering Edit Mode'] ,
['U', 'UV Face Select: Automatic UV calculation menu'] ,
['U', 'Vertex-/Weightpaint mode: Undo'] ,
['CTRL-U', 'Save current state as user default'],
['SHIFT-U', 'EditMode : Redo Menu'],
['ALT-U', 'Edit Mode: Undo Menu']
],
['Ctrl-U', 'Save current state as user default'],
['Shift-U', 'Edit Mode: Redo Menu'],
['Alt-U', 'Edit Mode: Undo Menu'] ],
"V":[
['V', 'Curves/Nurbs: Vector handle'] ,
['V', 'Vertexpaint mode'] ,
['ALT-V', "Scale object to match image texture's aspect ratio"] ,
['SHIFT-V', 'Edit mode: Align view to selected vertices'] ],
['V', 'Curves/Nurbs: Vector handle'],
['V', 'Vertexpaint mode'],
['V', 'UV Image Editor: Stitch UVs'],
['Alt-V', "Scale object to match image texture's aspect ratio"],
['Shift-V', 'Edit mode: Align view to selected vertices'],
['Shift-V', 'UV Image Editor: Limited Stitch UVs popup'],
],
"W":[
['W', 'Boolean operations menu'] ,
['W', 'Edit mode: Specials menu'] ,
['CTRL-W', 'Save current file'] ,
['CTRL-W', 'Nurbs: Switch direction'] ,
['SHIFT-W', 'Warp/bend selected vertices around cursor'] ] ,
['W', 'Object Mode: Boolean operations menu'],
['W', 'Edit mode: Specials menu'],
['W', 'UV Image Editor: Weld/Align'],
['WX', 'UV Image Editor: Weld/Align X axis'],
['WY', 'UV Image Editor: Weld/Align Y axis'],
['Ctrl-W', 'Save current file'] ,
['Ctrl-W', 'Nurbs: Switch direction'] ,
['Shift-W', 'Warp/bend selected vertices around cursor'] ],
"X":[
['X', 'Delete menu'] ,
['CTRL-X', 'Restore default state (Erase all)'] ],
['Ctrl-X', 'Restore default state (Erase all)'] ],
"Y":[
['Y', 'Mesh: Split selected vertices/faces from the rest'] ],
"Z":[
['Z', 'Render Window: 200% zoom from mouse position'],
['Z', 'Switch 3d draw type : solide/ wireframe (see also D)'],
['Alt-Z', 'Switch 3d draw type : solid / textured (see also D)'],
['Ctrl-Z', 'Switch 3d draw type : shaded (see also D)'],
['Shift-Z', 'Switch 3d draw type : shaded / wireframe (see also D)'],
]}]}
up=128
down=129
UP=0
for k in hotkeys.keys():
hotkeys[k].append(Create(0))
@ -343,7 +462,7 @@ def trace_rectangle3(r,c,c1):
glCl3(c1[0],c1[1],c1[2])
def draw():
global r,c,c1,hotkeys, hot, hotL
global r,c,c1,hotkeys, hot, hotL, up, down, UP
size=Buffer(GL_FLOAT, 4)
glGetFloatv(GL_SCISSOR_BOX, size)
@ -351,76 +470,113 @@ def draw():
for s in [0,1,2,3]: size[s]=int(size[s])
c=[0.9,0.95,0.95,0.0]
c1=[0.95,0.95,0.9,0.0]
c=[0.75,0.75,0.75,0]
c1=[0.6,0.6,0.6,0]
r=[0,size[3],size[2],0]
trace_rectangle4(r,c)
c=[0.7,0.7,0.9,0.0]
c=[0.64,0.64,0.64,0]
c1=[0.95,0.95,0.9,0.0]
r=[0,size[3],size[2],size[3]-20]
r=[0,size[3],size[2],size[3]-40]
trace_rectangle4(r,c)
c1=[0.7,0.7,0.9,0.0]
c=[0.2,0.2,0.4,0.0]
c2=[0.87,0.87,0.95,0.0]
c2=[0.71,0.71,0.71,0.0]
r=[0,size[3]-20,size[2],size[3]-44]
trace_rectangle4(r,c)
glColor3f(1, 1, 1)
glRasterPos2f(42, size[3]-25)
glColor3f(0.1, 0.1, 0.15)
glRasterPos2f(10, size[3]-16)
Text("HotKey")
Text("HotKey and MouseAction Reference")
l=0
listed=0
Llisted=0
size[3]=size[3]-18
for k in hot:
hotkeys[k][-1]=Toggle(k, hot.index(k)+10, 4+(20*26)/6*hot.index(k), size[3]-(40), len(k)*8, 20, hotkeys[k][-1].val )
#hotkeys[k][-1]=Toggle(k, hot.index(k)+10, 4+(20*26)/6*hot.index(k), size[3]-(42), len(k)*8, 20, hotkeys[k][-1].val )
hotkeys[k][-1]=Toggle(k, hot.index(k)+10, 78*hot.index(k), size[3]-(47), 78, 24, hotkeys[k][-1].val )
l+=len(k)
if hotkeys[k][-1].val==1.0:
listed=hot.index(k)
#print listed
l=0
size[3]=size[3]-4
if hot[listed]!='Letters ':
for n in hotkeys[hot[listed]][:-1]:
size[3]=size[3]-8
SCROLL=size[3]/21
END=-1
if SCROLL < len(hotkeys[hot[listed]][:-1]):
Button('/\\',up,4,size[3]+8,20,14,'Scroll up')
Button('\\/',down,4,size[3]-8,20,14,'Scroll down')
if (SCROLL+UP)<len(hotkeys[hot[listed]][:-1]):
END=(UP+SCROLL)
else:
END=-1
UP=len(hotkeys[hot[listed]][:-1])-SCROLL
else :
UP=0
for n in hotkeys[hot[listed]][:-1][UP:END]:
if l%2==0:
r=[4,size[3]-(18*l+66),
8+(21*26), size[3]-(46+18*l)]
r=[0,size[3]-(21*l+66),
size[2], size[3]-(21*l+43)]
trace_rectangle4(r,c2)
glColor3f(0.1, 0.1, 0.15)
glRasterPos2f(4+8, size[3]-(58+18*l))
glColor3f(0,0,0)
glRasterPos2f(4+8, size[3]-(58+21*l))
Text(n[0])
glRasterPos2f(4+8*15, size[3]-(58+18*l))
glRasterPos2f(4+8*15, size[3]-(58+21*l))
Text(' : '+n[1])
l+=1
else:
for k in hotL:
pos=hotL.index(k)
hotkeys['Letters '][0][k][-1]=Toggle(k,pos+20,4+hotL.index(k)*21, size[3]-(52+18), 20, 20, hotkeys['Letters '][0][k][-1].val )
hotkeys['Letters '][0][k][-1]=Toggle(k,pos+20,hotL.index(k)*21, size[3]-(52+18), 21, 18, hotkeys['Letters '][0][k][-1].val )
if hotkeys['Letters '][0][k][-1].val==1.0:
Llisted=pos
for n in hotkeys['Letters '][0][hotL[Llisted]][:-1]:
size[3]=size[3]-8
SCROLL=(size[3]-88)/21
END=-1
if SCROLL < len(hotkeys['Letters '][0][hotL[Llisted]]):
Button('/\\',up,4,size[3]+8,20,14,'Scroll up')
Button('\\/',down,4,size[3]-8,20,14,'Scroll down')
if (UP+SCROLL)<len(hotkeys['Letters '][0][hotL[Llisted]]):
END=(UP+SCROLL)
else:
END=-1
UP=len(hotkeys['Letters '][0][hotL[Llisted]])-SCROLL
else :
UP=0
for n in hotkeys['Letters '][0][hotL[Llisted]][UP:END]:
if l%2==0:
r=[4,size[3]-(18*l+92),
8+(21*26), size[3]-(74+18*l)]
r=[4,size[3]-(21*l+92),
size[2], size[3]-(69+21*l+1)]
trace_rectangle4(r,c2)
glColor3f(0.1, 0.1, 0.15)
glRasterPos2f(4+8, size[3]-(88+18*l))
glRasterPos2f(4+8, (size[3]-(88+21*l))+3)
Text(n[0])
glRasterPos2f(4+8*15, size[3]-(88+18*l))
glRasterPos2f(4+8*15, (size[3]-(88+21*l))+3)
Text(' : '+n[1])
l+=1
def event(evt, val):
global hotkeys
if ((evt== QKEY or evt== ESCKEY) and not val): Exit()
global hotkeys, UP
if ((evt== QKEY or evt== ESCKEY) and not val):
Exit()
def bevent(evt):
global hotkeysmhot, hotL
global hotkeysmhot, hotL, up,down,UP
if (evt== 1):
Exit()
@ -428,14 +584,22 @@ def bevent(evt):
for k in hot:
if hot.index(k)+10!=evt:
hotkeys[k][-1].val=0
UP=0
Blender.Window.Redraw()
elif (evt in range(20,46,1)):
for k in hotL:
if hotL.index(k)+20!=evt:
hotkeys['Letters '][0][k][-1].val=0
UP=0
Blender.Window.Redraw()
elif (evt==up):
UP+=1
Blender.Window.Redraw()
elif (evt==down):
if UP>0: UP-=1
Blender.Window.Redraw()
Register(draw, event, bevent)

@ -7,6 +7,70 @@ Group: 'Wizards'
Tip: 'Set of object aligning, modifying tools'
"""
__author__ = "Carlos López (klopez)"
__url__ = ("elysiun", "Author's web page, http://klopes.tk",
"Script's homepage, http://www.iespana.es/klopes/enchufes-guiri.htm",
"Thread on elYsiun with links to English and Spanish webpage and pdf docs,\
http://www.elysiun.com/forum/viewtopic.php?t=25736")
__version__ = "3.1"
__bpydoc__ = """\
This Wizard script contains customizable tools to align and modify mesh
objects.
Edited freely from a post by the author to elYsiun (last link button above):
These tools are initially oriented as a help for the general design of objects
in 2D and 3D (architecture, industrial...), and this is the paradigm the
program will be developed around.
The utilities in the program are separated in 4 areas, accessible through the
top menu in the GUI:
- Alignment:<br>
+ fitting an object between two others;<br>
+ setting to an object the absolute size of another one;<br>
+ aligning selected objects, according to several criteria: location,
rotation, scale (scale can be changed either additive or multiplicatively);<br>
+ location separation can be referenced either by centers, baricenters,
origins or limits.
- Object creation:<br>
+ circunference passing through 3 points;<br>
+ arc passing through 3 points;<br>
+ arc based on angles and radius (interactive).
- Mesh modification (affects vertices, faces and edges):<br>
+ edges subdivision in any number of parts;<br>
+ projection onto an arbitrary plane, in an arbitrary direction;<br>
+ transformation of position, rotation, scale values (new matrix) of an
object, though it looks unaffected.
- 3D objects modifications (affects transform matrices):<br>
+ translating / rotating / scaling randomly the selected objects;<br>
+ moving selected objects closer or away from the active one, setting them at
a fixed distance or translating by a fixed or proportional value.
Notes:<br>
All numeric / vectorial values used during the program can be copied and
pasted with the help of a buffer, which can contain: a position vector, an
Euler list or a scaling vector and can store: numbers entered by user, values
acquired from objects (matrices averages, distances, differences of position or
rotation angles between two objects). Buffer contents can also be pasted to
the console window as text.
Usage:
Open the script from the "Scripts->Wizards" menu of the Scripts window, then
one choose from the available languages. The script has a GUI where specific
tools can be selected and configured before being applied.
Notes:<br>
Kloputils has many useful tools. To get a better idea of what it can do,
besides reading the tooltips for each button, users can check its online
documentation.
"""
# $Id$
#
##################################################

@ -3,10 +3,34 @@
"""
Name: 'Blender Knife Tool'
Blender: 232
Group: 'Mesh'
Group: 'Object'
Tooltip: 'Cut selected mesh(es) along an active plane w/o creating doubles'
"""
__author__ = ["Stefano <S68> Selleri", "Wim Van Hoydonck"]
__url__ = ("blender", "elysiun")
__version__ = "0.0.8a 03/31/04"
__bpydoc__ = """\
"Blender Knife Tool" uses the active mesh plane to cut all selected meshes.
Usage:
Create, resize and position a "cutting plane", which will be used to cut
the mesh(es), then:
- select mesh(es) to be cut;<br>
- select cutting plane (it will be the active object);<br>
- run this script from 3d View's "Object->Scripts" menu.
Options:
- edit object: knife creates new vertices in the selected mesh(es);<br>
- create new object: knife duplicates objects and creates new vertices in the
new objects;<br>
- create two new objects: knife creates two new separate objects.
"""
# $Id$
#
###################################################################

@ -7,6 +7,19 @@ Group: 'Export'
Tooltip: 'Export selected meshes to LightWave File Format (.lwo)'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script exports meshes to LightWave file format.
Usage:
Select meshes to be exported and run this script from "File->Export" menu.
"""
# $Id$
#
# +---------------------------------------------------------+

@ -7,6 +7,20 @@ Group: 'Import'
Tooltip: 'Import LightWave Object File Format (.lwo)'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script imports LightWave files to Blender.
Usage:
Execute this script from the "File->Import" menu and choose a LightWave file to
open.
"""
# $Id$
#
# +---------------------------------------------------------+

@ -7,6 +7,20 @@ Group: 'Export'
Tooltip: 'Export selected mesh to Nendo File Format (*.ndo)'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script exports meshes to Nendo file format.
Usage:
Select meshes to be exported and run this script from "File->Export" menu.
"""
# $Id$
#
# +---------------------------------------------------------+

@ -7,6 +7,21 @@ Group: 'Import'
Tooltip: 'Import Nendo Object File Format (.ndo)'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script imports Nendo files to Blender.
Usage:
Execute this script from the "File->Import" menu and choose a Nendo file to
open.
"""
# $Id$
#
# +---------------------------------------------------------+

@ -7,6 +7,26 @@ Group: 'Object'
Tip: 'Copy data from active object to other selected ones.'
"""
__author__ = "Jean-Michel Soler (jms)"
__url__ = ("blender", "elysiun",
"Script's homepage, http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_lampdatacopier.htm",
"Communicate problems and errors, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender")
__version__ = "0.1.1"
__bpydoc__ = """\
Use "Data Copier" to copy attributes from the active object to other selected ones of
its same type.
This script is still in an early version but is already useful for copying
attributes for some types of objects like lamps and cameras.
Usage:
Select the objects that will be updated, select the object whose data will
be copied (they must all be of the same type, of course), then run this script.
Toggle the buttons representing the attributes to be copied and press "Copy".
"""
# ----------------------------------------------------------
# Object DATA copier 0.1.1
# (c) 2004 jean-michel soler

@ -7,6 +7,19 @@ Group: 'Export'
Tooltip: 'Save a Wavefront OBJ File'
"""
__author__ = "Campbell Barton"
__url__ = ["blender", "elysiun"]
__version__ = "0.9"
__bpydoc__ = """\
This script is an exporter to OBJ file format.
Usage:
Run this script from "File->Export" menu to export all meshes.
"""
# --------------------------------------------------------------------------
# OBJ Export v0.9 by Campbell Barton (AKA Ideasman)
# --------------------------------------------------------------------------

@ -7,6 +7,18 @@ Group: 'Import'
Tooltip: 'Load a Wavefront OBJ File'
"""
__author__ = "Campbell Barton"
__url__ = ["blender", "elysiun"]
__version__ = "0.9"
__bpydoc__ = """\
This script imports OBJ files to Blender.
Usage:
Run this script from "File->Import" menu and then load the desired OBJ file.
"""
# $Id$
#
# --------------------------------------------------------------------------

@ -7,6 +7,19 @@ Group: 'Export'
Tooltip: 'Export selected mesh to Object File Format (*.off)'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script exports meshes to Object File Format.
Usage:
Select meshes to be exported and run this script from "File->Export" menu.
"""
# +---------------------------------------------------------+
# | Copyright (c) 2002 Anthony D'Agostino |
# | http://www.redrival.com/scorpius |

@ -7,6 +7,21 @@ Group: 'Import'
Tooltip: 'Import Object File Format (*.off)'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script imports Object File Format files to Blender.
Usage:
Execute this script from the "File->Import" menu and choose an OFF file to
open.
"""
# +---------------------------------------------------------+
# | Copyright (c) 2002 Anthony D'Agostino |
# | http://www.redrival.com/scorpius |

@ -12,6 +12,35 @@ Submenu: 'Postscript (.eps/.ps) PS-Adobe-2.0' EPS
Tip: 'Import a path from any of a set of formats (still experimental)'
"""
__author__ = "Jean-Michel Soler (jms)"
__url__ = ("blender", "elysiun",
"AI importer's homepage, http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_import_ai.htm",
"Communicate problems and errors, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender")
__version__ = "0.1.1"
__bpydoc__ = """\
Paths Import imports paths from a selection of different formats:
- Gimp 1.0 -> 1.2.5;<br>
- Gimp 2.0;<br>
- AI PS-Adobe 2.0;<br>
- Inkscape (svg);<br>
- Postscript (ps/eps)
Usage:
Run the script from "File->Import", select the desired format from the
pop-up menu and select the file to open.
Notes:<br>
Mac AI files have different line endings. The author wrote a version of
the importer that supports them, check forum or site links above.
"""
#----------------------------------------------
# (c) jm soler juillet 2004, released under Blender Artistic Licence
# for the Blender 2.34 Python Scripts Bundle.
#----------------------------------------------
import Blender
argv=__script__['arg']

@ -7,6 +7,20 @@ Group: 'Export'
Tooltip: 'Export selected mesh (with vertex colors) to Radiosity File Format (.radio)'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script exports meshes to Radiosity file format.
Usage:
Select meshes to be exported and run this script from "File->Export" menu.
"""
# $Id$
#
# +---------------------------------------------------------+

@ -7,6 +7,21 @@ Group: 'Import'
Tooltip: 'Import Radiosity File Format (.radio) with vertex colors'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script imports Radiosity files to Blender.
Usage:
Execute this script from the "File->Import" menu and choose a Radiosity file to
open.
"""
# $Id$
#
# +---------------------------------------------------------+

@ -7,6 +7,20 @@ Group: 'Export'
Tooltip: 'Export selected mesh to Raw Triangle Format (.raw)'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script exports meshes to Raw Triangle file format.
Usage:
Select meshes to be exported and run this script from "File->Export" menu.
"""
# $Id$
#
# +---------------------------------------------------------+

@ -7,6 +7,21 @@ Group: 'Import'
Tooltip: 'Import Raw Triangle File Format (.raw)'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script imports Raw Triangle File format files to Blender.
Usage:
Execute this script from the "File->Import" menu and choose a Raw file to
open.
"""
# $Id$
#
# +---------------------------------------------------------+

@ -7,6 +7,22 @@ Group: 'Object'
Tip: 'GUI to select and rename objects.'
"""
__author__ = "Jean-Michel Soler (jms)"
__url__ = ("blender", "elysiun",
"Script's homepage, http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_renameobjectgui.htm",
"Communicate problems and errors, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender")
__version__ = "233"
__bpydoc__ = """\
This script offers a GUI to rename selected objects according to a given
rule.
Usage:
Open it from the 3d View's "Object->Scripts" menu and select the objects to
rename and the rule from the buttons in its GUI.
"""
# ----------------------------------------------------------
# Name OBJECT changer
# (c) 2004 jean-michel soler

@ -7,6 +7,25 @@ Group: 'Mesh'
Tip: 'Copy deform data (not surf. subdiv) of active obj to rvk of the 2nd selected obj'
"""
__author__ = "Jean-Michel Soler (jms)"
__url__ = ("blender", "elysiun",
"Script's homepage, http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_rvk1versrvk2.htm",
"Communicate problems and errors, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender")
__version__ = "2004/05"
__bpydoc__ = """\
"RVK1 to RVK2" copies deform data (except surface subdivision) of the active
object to the RVK (relative vertex key) of the other selected object.
Usage:
Select the object that will receive the rvk info, then select the deformed
object, enter Edit Mode and run this script from the "Mesh->Scripts" menu of
the 3d View. If the active object has subsurf turned on and nonzero subdiv
level, the script will ask if it should change that. Before copying data to
the rvk it will also ask whether it should replace or add a new vertex group.
"""
# $Id$
#
#----------------------------------------------
@ -104,7 +123,7 @@ def rvk2rvk():
Blender.Redraw()
except:
Draw.PupMenu('Error| You need to select two meshes.')
Draw.PupMenu('Error%t|You need to select two meshes.')
Blender.Window.EditMode(0)

@ -3,10 +3,39 @@
"""
Name: 'Save Current Theme'
Blender: 234
Group: 'Help'
Group: 'Export'
Tooltip: 'Save current theme as a bpython script'
"""
__author__ = "Willian P. Germano"
__url__ = ("blender", "elysiun")
__version__ = "1.0 11/05/04"
__bpydoc__ = """\
This script saves the current Theme in Blender as a Blender Python script.
Usage:
Use Blender's Theme tab in the User Preferences window to create and name your
theme, then run this script from the File->Export menu to save it.
It is saved as a bpython script, meaning that you can simply run it to change
the current theme. By default it is currently saved under the
"Misc" group, available only from the Scripts window "Scripts->Misc" menu.
To appear in the menu, a theme saved with this script must be put in your
Blender's scripts dir, that's what happens by default when you save one by
yourself. If you don't know where this dir is, running
import Blender<br>print Blender.Get("scriptsdir")
on the Text Editor window (use menu or ALT+P to run it) will write the path on
the console.
Remember to edit your exported theme's source file to put your name and
some information on it before sharing it with others.
"""
# $Id$
#
# --------------------------------------------------------------------------
@ -29,6 +58,7 @@ theme = Theme.Get()[0] # get current theme
# default filename: theme's name + '_theme.py' in user's scripts dir:
default_fname = Blender.Get("scriptsdir")
default_fname = Blender.sys.join(default_fname, theme.name + '_theme.py')
default_fname = default_fname.replace(' ','_')
def write_theme(filename):
"Write the current theme as a bpython script"
@ -39,11 +69,22 @@ def write_theme(filename):
fout.write("""#!BPY
\"\"\"
Name: '%s'
Blender: 234
Group: 'Theme'
Tooltip: 'Change current theme'
# \"\"\"
# Name: '%s'
# Blender: 234
# Group: 'Theme'
# Tooltip: 'Change current theme'
# \"\"\"
__%s__ = "????"
__%s__ = "1.0"
__%s__ = [""]
__%s__ = \"\"\"\\
You can edit this section to write something about your script that can
be read then with the Scripts Help Browser script in Blender.
Remember to also set author, version and possibly url(s) above. You can also
define an __email__ tag, check some bundled script's source for examples.
\"\"\"
# This script was automatically generated by the save_theme.py bpython script.
@ -55,7 +96,7 @@ import Blender
from Blender.Window import Theme
theme = Theme.New('%s')
""" % (theme.name, theme.name))
""" % (theme.name, "author", "version", "url", "bpydoc", theme.name))
for tsp in theme.get(): #
command = "\n%s = theme.get('%s')" % (tsp, tsp)

@ -7,6 +7,38 @@ Group: 'UV'
Tooltip: 'Select faces if attributes match the active'
"""
__author__ = "Campbell Barton"
__url__ = ["blender", "elysiun"]
__version__ = "1.0"
__bpydoc__ = """\
This script selects faces matching a given attribute of the currently
active face.
Usage:
Enter "UV Face Select" mode and make the desired face active. Then run this
script and choose the selection rule: by same (or similar for some itens):
- material;<br>
- texture image;<br>
- mode;<br>
- vertex colors;<br>
- uv coordinates;<br>
- area;<br>
- proportions;<br>
- normal vector;<br>
- co-planar.
Another menu will ask if the script should add, subtract, overwrite or
overwrite inverse of current current selection. For some choices like vcolors,
area, etc., a pop-up will ask for a maximum threshold value.
Notes:<br>
Again, to select / deselect faces, enter "UV Face Select" mode. This is not
the same as selecting faces in edit mode (new feature in Blender 2.35).
"""
# $Id$
#
#===============================================#

@ -11,6 +11,22 @@ Submenu: 'Loft-segment - even method' B2
Tooltip: 'Select 2 or more vert loops, then run this script'
"""
__author__ = "Campbell Barton"
__url__ = ["blender", "elysiun"]
__version__ = "1.0 2004/04/25"
__bpydoc__ = """\
With this script vertex loops can be skinned: faces are created to connect the
selected loops of vertices.
Usage:
In mesh Edit mode select the vertices of the loops (closed paths / curves of
vertices: circles, for example) that should be skinned, then run this script.
A pop-up will provide further options, if the results of a method are not adequate try one of the others.
"""
# $Id$
#
# --------------------------------------------------------------------------

@ -7,6 +7,20 @@ Group: 'Import'
Tooltip: 'Import Pro Engineer (.slp) File Format'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script imports Pro Engineer files to Blender.
Usage:
Execute this script from the "File->Import" menu and choose an SLP file to
open.
"""
# $Id$
#
# +---------------------------------------------------------+

@ -1,4 +1,5 @@
#!BPY
"""
Name: 'System Information...'
Blender: 234
@ -6,10 +7,24 @@ Group: 'HelpSystem'
Tooltip: 'Information about your Blender environment, useful to diagnose problems.'
"""
__author__ = "Willian P. Germano"
__url__ = ("blender", "elysiun")
__version__ = "1.0"
__bpydoc__ = """\
This script creates a text in Blender's Text Editor with information
about your OS, video card, OpenGL driver, Blender and Python versions and
more.
If you are experiencing trouble running Blender or its scripts in general,
this information can be useful for online searches (like checking if there
are known issues related to your video card) or to get help from other users
or the program's developers.
"""
# $Id$
#
# --------------------------------------------------------------------------
# sysinfo.py version 0.1 Jun 09, 2004
# sysinfo.py version 1.0 Jun 09, 2004
# --------------------------------------------------------------------------
# ***** BEGIN GPL LICENSE BLOCK *****
#
@ -85,13 +100,12 @@ for p in sys.path:
output.write(p + '\n')
output.write("\n- Default folder for registered scripts:\n\n")
scriptsdir = Blender.Get("datadir")
if scriptsdir:
scriptsdir = scriptsdir.replace("/bpydata","/scripts")
output.write(scriptsdir)
else:
scriptsdir = Blender.Get("scriptsdir")
if not scriptsdir:
output.write("<WARNING> -- not found")
warnings += 1
else:
output.write(scriptsdir)
missing_mods = [] # missing basic modules
@ -143,7 +157,7 @@ if (warnings):
output.write("\n(*) Found %d warning" % warnings)
if (warnings > 1): output.write("s") # (blush)
output.write(", documented in the text above.")
else: output.write("\n==\nNo problems were found.")
else: output.write("\n==\nNo problems were found (scroll up for details).")
Blender.Window.WaitCursor(0)
exitmsg = "Done!|Please check the text %s in the Text Editor window" % output.name

@ -7,6 +7,31 @@ Group: 'UV'
Tooltip: 'Procedural to uvmapped texture baker'
"""
__author__ = "Jean-Michel Soler (jms)"
__url__ = ("blender", "elysiun",
"Script online, http://jmsoler.free.fr/util/blenderfile/py/text2uvbaker.py",
"Communicate problems and errors, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender")
__version__ = "0.2.2 2004/08/01"
__bpydoc__ = """\
This script "bakes" Blender procedural materials (including textures): it saves
them as 2d uv-mapped images.
This script saves an uv texture layout of the chosen mesh, that can be used as
an uv map for it. It is a way to export procedurals from Blender as normal
image textures that can be edited with a 2d image manipulation program or used
with the mesh in games and other 3d applications.
Usage:
a) Enter face mode and define uv coordinates for your mesh;<br>
b) Define its materials and textures and set "Map Input" coordinates to UV;
c) Run this script and check the console.
Notes:<br>
This script was based on a suggestion by Martin (Theeth) Poirier;<br>
"""
#---------------------------------------------
# Last release : 0.2.2 , 2004/08/01 , 22h13
#---------------------------------------------

@ -7,6 +7,20 @@ Group: 'Export'
Tooltip: 'Export selected meshes to TrueSpace File Format (.cob)'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script exports meshes to TrueSpace file format.
Usage:
Select meshes to be exported and run this script from "File->Export" menu.
"""
# $Id$
#
# +---------------------------------------------------------+

@ -7,6 +7,20 @@ Group: 'Import'
Tooltip: 'Import TrueSpace Object File Format (.cob)'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script imports TrueSpace files to Blender.
Usage:
Execute this script from the "File->Import" menu and choose a TrueSpace file to
open.
"""
# $Id$
#
# +---------------------------------------------------------+

@ -6,6 +6,29 @@ Group: 'Mesh'
Tip: 'Unweld all faces from a selected and common vertex. Made vertex bevelling'
"""
__author__ = "Jean-Michel Soler (jms)"
__url__ = ("blender", "elysiun",
"Script's homepage, http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_faces2vertex.htm#exemple",
"Communicate problems and errors, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender")
__version__ = "0.4.4 beta"
__bpydoc__ = """\
This script unwelds faces from a selected vertex.
There's also experimental support for static or dynamic (move mouse in the
Scripts window) vertex bevel.
Usage:
Select a vertex, then run this script. Its options are:
- unbind points;<br>
- with noise;<br>
- middle face;<br>
- static bevel vertex;<br>
- moving bevel vertex;
"""
# $Id$
#
# ------------------------------------------

@ -7,6 +7,29 @@ Group: 'UV'
Tooltip: 'Export the UV face layout of the selected object to a .TGA file'
"""
__author__ = "Martin (Theeth) Poirier"
__url__ = ("blender", "elysiun")
__version__ = "1.3a"
__bpydoc__ = """\
This script exports the UV face layout of the selected mesh object to
a TGA image file. Then you can, for example, paint details in this image using
an external 2d paint program of your choice and bring it back to be used as a
texture for the mesh.
Usage:
Open this script from UV/Image Editor's "UVs" menu, make sure there is a mesh
selected, define size and wire size parameters and push "Export" button.
There are more options to configure, like setting export path, if image should
use object's name and more.
Notes:<br>
Jean-Michel Soler (jms) wrote TGA functions used by this script.
"""
# $Id$
#
# --------------------------------------------------------------------------

@ -7,6 +7,20 @@ Group: 'Export'
Tooltip: 'Export selected mesh to VideoScape File Format (.obj)'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script exports meshes (including vertex colors) to VideoScape File Format.
Usage:
Select meshes to be exported and run this script from "File->Export" menu.
"""
# $Id$
#
# +---------------------------------------------------------+

@ -7,6 +7,21 @@ Group: 'Export'
Tooltip: 'Export selected mesh to Wings3D File Format (.wings)'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius",
"Wings 3D, http://www.wings3d.com")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script exports meshes to Wings 3D file format.
Usage:
Select meshes to be exported and run this script from "File->Export" menu.
"""
# $Id$
#
# +---------------------------------------------------------+

@ -7,6 +7,21 @@ Group: 'Import'
Tooltip: 'Import Wings3D File Format (.wings)'
"""
__author__ = "Anthony D'Agostino (Scorpius)"
__url__ = ("blender", "elysiun",
"Author's homepage, http://www.redrival.com/scorpius",
"Wings 3D, http://www.wings3d.com")
__version__ = "Part of IOSuite 0.5"
__bpydoc__ = """\
This script imports Wings 3d files to Blender.
Usage:
Execute this script from the "File->Import" menu and choose a Wings file to
open.
"""
# $Id$
#
# +---------------------------------------------------------+

@ -8,6 +8,32 @@ Submenu: 'Selected Objects...' selected
Tooltip: 'Export to VRML2 (.wrl) file.'
"""
__author__ = ("Rick Kimball", "Ken Miller", "Steve Matthews")
__url__ = ["blender", "elysiun",
"Author's (Rick) homepage, http://kimballsoftware.com/blender",
"Show your VRML world at vrmlworld.net, http://vrmlworld.net"]
__version__ = "2004/01/19"
__bpydoc__ = """\
This script exports to VRML 2.0 format.
Usage:
Run this script from "File->Export" menu. A pop-up will ask whether you
want to export only selected or all relevant objects.
Known issues:<br>
Doesn't handle multiple materials (don't use material indices);<br>
Doesn't handle multiple UV textures on a single mesh (create a mesh
for each texture);<br>
Material colors need work;<br>
Spotlight softness needs work;<br>
Can't get the texture array associated with material * not the UV ones;<br>
Can't set smoothing, crease angle and mesh smoothing * setting not
accessible.
"""
# $Id$
#
#------------------------------------------------------------------------