In order to write Blender python scripts we need to understand something about how the data is structured in blender.
The top level data is contained in 'objects'. Each object contains the following information:
- id
- type: OB_EMPTY, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL, OB_LAMP, OB_CAMERA , OB_WAVE , OB_LATTICE or OB_ARMATURE.
- partype: PAROBJECT, PARCURVE, PARKEY, PARSKEL, PARVERT, PARVERT, PARBONE or PARSLOW
- par1, par2, par3 : can be vertex numbers
- parsubstr: String describing subobject info
- parent
- track
- proxy: data linked from other Blender files
- proxy_group
- proxy_from
- Ipo: InterPOlation system
- path
- bb: bounding box
- action
- pose
- data
- constraintChannels
- effect
- network
- disp
- defbase
- modifiers: list of ModifierData structures
- mat[] Material
- loc[3]
- orig[3]
- size[3]
- rot[3]
- quat[4]
- obmat[4][4]
- parentinv[4][4]
- imat[4][4]
- lay: copy of Base
- flag: copy of Base
- colbits: when zero, from obdata
- transflag: transformation OB_OFFS_LOCAL, OB_QUAT, OB_NEG_SCALE, OB_DUPLI, OB_DUPLIFRAMES, OB_DUPLIVERTS, OB_DUPLIROT, OB_DUPLINOSPEED, OB_POWERTRACK, OB_DUPLIGROUP, OB_DUPLIFACES, OB_DUPLIFACES_SCALE
- ipoflag: ipo settings: OB_DRAWKEY, OB_DRAWKEYSEL, OB_OFFS_OB, OB_OFFS_MAT, OB_OFFS_VKEY, OB_OFFS_PATH, OB_OFFS_PARENT, OB_OFFS_PARTICLE, OB_ACTION_OB, OB_ACTION_KEY or OB_DISABLE_PATH
- trackflag: OB_POSX, OB_POSY, OB_POSZ, OB_NEGX, OB_NEGY, OB_NEGZ
- upflag
- nlaflag: defines NLA override: OB_NLA_OVERRIDE or OB_NLA_COLLAPSED
- protectflag: bits to lock transform: OB_LOCK_LOCX, OB_LOCK_LOCY, OB_LOCK_LOCZ, OB_LOCK_LOC, OB_LOCK_ROTX, OB_LOCK_ROTY, OB_LOCK_ROTZ, OB_LOCK_SCALEX, OB_LOCK_SCALEY, OB_LOCK_SCALEZ
- ipowin: blocktype last ipowindow
- scaflag: OB_SHOWSENS, OB_SHOWACT, OB_ADDSENS, OB_ADDCONT, OB_ADDACT or OB_SHOWCONT
- scavisflag: OB_VIS_SENS, OB_VIS_CONT, OB_VIS_ACT
- boundtype
- dupon
- dupoff
- dupsta
- dupend;
- sf
- ctime




