Python Samples

This is the text of the samples shown in the Python API Feature of the Week video.

Service Objects

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 >>> dir(lx.service)
 : AudioAnim
 : ChannelUI
 : Command
 : Deformer
 : File
 : GUID
 : Host
 : IO
 : Image
 : ImageMonitor
 : ImageProcessing
 : Layer
 : Listener
 : Log
 : Mesh
 : Message
 : NotifySys
 : Packet
 : Persistence
 : Platform
 : PresetBrowser
 : Render
 : Scene
 : ScriptSys
 : Selection
 : Shader
 : StdDialog
 : Tableau
 : Thread
 : Undo
 : Value
 : __doc__
 : __name__
 : __package__
 >>> ims = lx.service.Image()
 >>> dir(ims)
 : Create
 : CreateCrop
 : Duplicate
 : Kelvin2RGB
 : Load
 : RGB2Kelvin
 : Resample
 : Save
 : ScriptQuery
 : __class__
 : __delattr__
 : __doc__
 : __format__
 : __getattribute__
 : __hash__
 : __init__
 : __new__
 : __reduce__
 : __reduce_ex__
 : __repr__
 : __setattr__
 : __sizeof__
 : __str__
 : __subclasshook__
 >>> ims.Kelvin2RGB.__doc__
 : vector rgbColor = Kelvin2RGB(float kelvin)
 >>> ims.Kelvin2RGB(273)
 : 1.0
 : 0.0
 : 0.246930614114
 >>> ims.RGB2Kelvin( (0,0,1) )
 : 39999.390625
 >>> ims.ScriptQuery()

 * ERROR: Unhandled exception "exceptions.NotImplementedError"; not implemented
 *  .. <string>: 1
 - error 80000001: Not Implemented

Imported Objects

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 >>> ims.Load.__doc__
 : Image object = Load(string filePath)
 >>> image = ims.Load('C:\lux\content\maps\mandril.jpg')
 >>> dir(image)
 : Format
 : GetLine
 : GetPixel
 : Size
 : __class__
 : __delattr__
 : __doc__
 : __format__
 : __getattribute__
 : __hash__
 : __init__
 : __new__
 : __reduce__
 : __reduce_ex__
 : __repr__
 : __setattr__
 : __sizeof__
 : __str__
 : __subclasshook__
 : set
 : test
 >>> image.Size()
 : 512
 : 512
 >>> image.Format()
 : 3
 >>> lx.symbol.iIMP_RGB24
 : 3
 >>> if image.Format() == lx.symbol.iIMP_RGB24: lx.out("RGB24")
 * RGB24

Storage Buffer Objects

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 >>> image.GetPixel.__doc__
 : GetPixel(integer x,integer y,integer type,data[] pixel)
 >>> pixel = lx.object.storage()
 >>> pixel.setType('f')
 >>> pixel.setSize(4)
 >>> image.GetPixel(128,128,lx.symbol.iIMP_RGBAFP,pixel)
 >>> pixel.get()
 : 0.376470625401
 : 0.419607877731
 : 0.352941185236
 : 1.0

Polymorphism

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 >>> iout = lx.object.ImageWrite(image)
 >>> dir(iout)
 : AddAttribute
 : Format
 : SetLine
 : SetPixel
 : Size
 : __class__
 : __delattr__
 : __doc__
 : __format__
 : __getattribute__
 : __hash__
 : __init__
 : __new__
 : __reduce__
 : __reduce_ex__
 : __repr__
 : __setattr__
 : __sizeof__
 : __str__
 : __subclasshook__
 : set
 : test
 >>> iout.SetPixel.__doc__
 : SetPixel(integer x,integer y,integer type,data[] pixel)
 >>> iout.SetPixel(0,0,lx.symbol.iIMP_RGBAFP,pixel)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 >>> attr = lx.object.Attributes()
 >>> attr.test()
 : False
 >>> attr.Count()

 * ERROR: Unhandled exception "exceptions.TypeError"; no interface
 *  .. <string>: 1
 - error 80000004: No COM Interface
 >>> attr.set(image)
 : True
 >>> attr.Count()
 : 0

Utilities

1
2
3
4
 >>> import lxu.select
 >>> itmsel = lxu.select.ItemSelection()
 >>> itmsel.current()
 : <lx.object.Item object at 0x00000000083CC180>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 >>> mesh = itmsel.current()[0]
 >>> dir(mesh)
 : ChannelAdd
 : ChannelCount
 : ChannelEvalType
 : ChannelGradient
 : ChannelLookup
 : ChannelName
 : ChannelPackage
 : ChannelStorageType
 : ChannelType
 : ChannelVectorMode
 : Context
 : GetTag
 : Ident
 : InvalidateName
 : IsReferenced
 : Name
 : PackageAdd
 : PackageRemove
 : PackageStartIndex
 : PackageTest
 : Parent
 : Reference
 : Root
 : SetIdent
 : SetName
 : SetParent
 : SetSource
 : SetTag
 : SetUniqueIndex
 : Source
 : SubByIndex
 : SubCount
 : TestType
 : TestTypes
 : Type
 : UniqueIndex
 : UniqueName
 : WasLoaded
 : __class__
 : __delattr__
 : __doc__
 : __format__
 : __getattribute__
 : __hash__
 : __init__
 : __new__
 : __reduce__
 : __reduce_ex__
 : __repr__
 : __setattr__
 : __sizeof__
 : __str__
 : __subclasshook__
 : set
 : test
 >>> mesh.UniqueName()
 : Mesh
 >>> scene = mesh.Context()

Exported Objects

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 >>> lx.eval('script.run "macro.scriptservice:19601440010:macro"')
 >>> scene.Channels.__doc__
 : ChannelRead object = Channels(string name,float time)
 >>> chan = scene.Channels(None,0.0)
 >>> dir(chan)
 : BakedSamples
 : Double
 : Envelope
 : Integer
 : IsAnimated
 : IsBaked
 : String
 : Time
 : ValueObj
 : __class__
 : __delattr__
 : __doc__
 : __format__
 : __getattribute__
 : __hash__
 : __init__
 : __new__
 : __reduce__
 : __reduce_ex__
 : __repr__
 : __setattr__
 : __sizeof__
 : __str__
 : __subclasshook__
 : set
 : test
 >>> chan.ValueObj.__doc__
 : Unknown object = ValueObj(object item,integer channel)
 >>> i = mesh.ChannelLookup(lx.symbol.sICHAN_MESH_MESH)
 >>> i
 : 34
 >>> mc = chan.ValueObj(mesh,i)
 >>> dir(mc)
 : __class__
 : __delattr__
 : __doc__
 : __format__
 : __getattribute__
 : __hash__
 : __init__
 : __new__
 : __reduce__
 : __reduce_ex__
 : __repr__
 : __setattr__
 : __sizeof__
 : __str__
 : __subclasshook__
 : set
 : test
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 >>> lx.object.Mesh(mc)

 * ERROR: Unhandled exception "exceptions.TypeError"; no interface
 *  .. <string>: 1
 - error 80000004: No COM Interface
 >>> mf = lx.object.MeshFilter(mc)
 >>> dir(mf)
 : Evaluate
 : Generate
 : Type
 : __class__
 : __delattr__
 : __doc__
 : __format__
 : __getattribute__
 : __hash__
 : __init__
 : __new__
 : __reduce__
 : __reduce_ex__
 : __repr__
 : __setattr__
 : __sizeof__
 : __str__
 : __subclasshook__
 : set
 : test
 >>> mf.Generate.__doc__
 : Mesh object = Generate()
 >>> ball = mf.Generate()
1
2
3
 >>> import tricount
 >>> tricount.Display(ball)
 * found 48 triangles and 240 non-triangles

tricount Module Source

1
2
 import lx
 import lxifc
1
2
3
4
5
 class TriangleCountVisitor(lxifc.Visitor):
     def __init__(self,poly):
         self.poly = poly
         self.n_tri = 0
         self.n_not = 0
1
2
3
4
5
     def vis_Evaluate(self):
         if self.poly.VertexCount() == 3:
             self.n_tri += 1
         else:
             self.n_not += 1
1
2
3
 def Display(mesh):
     poly = mesh.PolygonAccessor()
     vis = TriangleCountVisitor(poly)
1
     poly.Enumerate(lx.symbol.iMARK_ANY, vis, 0)
1
     lx.out("found {0} triangles and {1} non-triangles".format(vis.n_tri, vis.n_not))

Dummy Image Saver Source

1
2
 import lx
 import lxifc
1
2
3
4
 def LogOut(str):
     ls = lx.service.Log()
     log = ls.SubSystemLookup('scripts')
     log.AddEntry(ls.CreateEntryMessage(0, str))
1
2
3
4
5
 def WasteTime(n,monitor):
     mon = lx.object.Monitor(monitor)
     mon.Initialize(n)
     for i in range(n):
         mon.Increment(1)
1
2
3
4
5
6
 class SizeSaver(lxifc.Saver):
     def sav_Save(self,image,filename,monitor):
         img = lx.object.Image(image)
         w,h = img.Size()
         LogOut('saving ... ' + str (w * h))
         WasteTime(w * h, monitor)
1
2
3
4
5
6
 tags = {
     lx.symbol.sSRV_USERNAME: "Size Saver",
     lx.symbol.sSAV_OUTCLASS:  lx.symbol.a_IMAGE,
     lx.symbol.sSAV_DOSTYPE : "PSS"
 }
 lx.bless(SizeSaver, "pySizeSaver", tags)

Hello World Test

1
2
3
4
 >>> lx.eval('hello.someone')
 * Hello to no one!
 >>> lx.eval('hello.someone BetaTesters')
 * Hello to BetaTesters!

Hello World Command Source

1
2
3
 import lx
 import lxifc
 import lxu.command
1
2
3
4
5
 class HelloCmdArg(lxu.command.BasicCommand):
     def __init__(self):
         lxu.command.BasicCommand.__init__(self)
         self.dyna_Add('name', lx.symbol.sTYPE_STRING)
         self.basic_SetFlags(0, lx.symbol.fCMDARG_OPTIONAL)
1
2
3
     def basic_Execute(self, msg, flags):
         s = self.dyna_String(0, "no one")
         lx.out("Hello to " + s + "!")
1
 lx.bless(HelloCmdArg, "hello.someone")