Table of Contents
cdPython script examplesUsing variable handlesCertain Zeolite operations return variable handles, like a ZVAR. To associate a proxy object with the variable represented by this handle, you can use the Attach method. The example below creates a Zeolite list that has a single string item, which the user can edit through it's user interface. import zeolite args = zeolite.CzList() handle = args.CreateItem(zeolite.VarID_string, 'name') # Create a CzStr object and attach it to the handle mapname_str = zeolite.CzStr() mapname_str.Attach(handle) mapname_str.SetText('Hello World') args.EditUI('parameters') print mapname_str.GetText() Because all Zeolite variables such as ZMAP and ZFORMAT are types of ZVAR, we need to 'cast' these derived type handles appropriately. Attach for example, requires a ZVAR. cdPython provides the following methods to cast these type handles: foo = zeolite.zmap_to_zvar(bar) # converts ZMAP to ZVAR foo = zeolite.zlist_to_zvar(bar) # converts ZLIST to ZVAR foo = zeolite.zformat_to_zvar(bar) # converts ZFORMAT to ZVAR foo = zeolite.zfunc_to_zvar(bar) # converts ZFUNC to ZVAR foo = zeolite.zvar_to_zmap(bar) # converts ZVAR to ZMAP, potentially unsafe foo = zeolite.zvar_to_zlist(bar) # converts ZVAR to ZLIST, potentially unsafe foo = zeolite.zvar_to_zfunc(bar) # converts ZVAR to ZFUNC, potentially unsafe foo = zeolite.zvar_to_zformat(bar) # converts ZVAR to ZFORMAT, potentially unsafe The example below saves the height field as a gray scale bmp file: import zeolite string = zeolite.CzStr() string.Create(None) string.EditUI("Enter filename") hmap = zeolite.CzMap() hf = zeolite.cvar.theAPI.project_GetMap("HF") # Attach requires a ZVAR handle hmap.Attach(zeolite.zmap_to_zvar(hf)) format = zeolite.CzFormat() format.GetByExt("HF", 0, "bmp") filename = string.GetText() + ".bmp" # SaveFile requires a ZFORMAT handle hmap.SaveFile(filename, zeolite.zvar_to_zformat(format.GetZVAR()), True, True) Using the core Zeolite API instanceSometimes, there may be a method you are unable to access through the Zeolite helper objects (CzStr, CzMap, CzFormat etc etc). In this case you can call a method on the core API instance, which is a member of the Zeolite cvar attribute. The example below logs an error to the L3DT event log, use the ReportError method: import zeolite zeolite.cvar.theAPI.ReportError('Some kind of error...') Using pointers to atomic C typesBecause Python doesn't use pointers, and the Zeolite API requires a pointer to a C type in some cases, notably the CzVar:SetValue method, some additional type wrappers have been included into the Zeolite Python module to handle this. Here are the wrapper classes: zeolite.intp zeolite.shortp zeoite.boolp zeolite.floatp zeolite.doublep Here's an example of using the intp class (all of the wrapper classes above have identical methods): minheight = zeolite.intp() # create an intp minheight.assign(50) # set the value of the int to 50 minheight_var = zeolite.CzVar(args.CreateItem(zeolite.VarID_int, 'min height')) minheight_var.SetValue(zeolite.VarID_int, minheight.cast()) # minheight.cast() returns a pointer to the integer integer_value = minheight.value() # retrieve the value of the integer Using an extension functionThe following example opens the 3D rendering window in the Sapphire plugin by calling an extension function that it exports. import zeolite f = zeolite.CzFunc() f.GetFunc("Sapphire.ShowWnd") f.Execute() The steps were:
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Share Alike 3.0 Unported
|