Thanks again,

I'll dig into the documentation and see if I can come up with a solution.

As for "generics", since I have no idea what these are and I know MAXScript quite well, I assume they really don't exist in this language.

MXS is a very simple, focused, language that only works within 3ds Max. It wasn't intented for such broad use as Python for example.

Cheers,

- Lukas

Dino Viehland wrote:
There's documentation on the hosting APIs over here:

http://dlr.codeplex.com/Wiki/View.aspx?title=Docs%20and%20specs

But basically you want to do:

scope = engine.CreateScope()
scope.SetVariable("my_object_model", new MyObjectModel())
engine.Execute("print my_object_model.SomeCall()", scope)

As a workaround for Execute you can call ExecuteAndWrap which
doesn't have a generic overload.  You'll just need to call
.Unwrap() on the resulting value to get the real object back.

A quick search seems to indicate that MaxScript 9 doesn't
support generics.  I have no clue what the latest version is
though so I'm not sure how relevant that was (it was from 2006).

-----Original Message-----
From: [email protected] [mailto:users-
[email protected]] On Behalf Of Lukas Dubeda
Sent: Thursday, August 13, 2009 10:42 AM
To: Discussion of IronPython
Subject: Re: [IronPython] Using IronPython as an assembly in dotNET

Hey, thanks Dino,

some interesting points. However, I'm not a programmer, I'm more of a
"scripter" so all I'm familiar with is Python and MAXScript (native 3ds
Max scripting language).

I have no idea how to access the generic/non-generic engine, further
more, I have no idea what the difference is.

As for scope, I can do that, the problem is, I have no idea how exactly
to do that. Is there a documentation on this subject somewhere?

Thanks a lot for the tips, I appretiate it.

- Lukas

Dino Viehland wrote:
What language are you doing this from?

ScriptEngine.Execute has an overload which is generic and an overload
which is not generic.  The generic version will get the result and
convert it to the provided generic type.  It looks like for some
reason
you end up trying to call the generic version here.  Does the
language
have support for generics?  If so you could do:

engine.Execute<object>(...) (C# syntax)

which would be the same as the non-generic version.

For communication I'd suggest injecting a class into the ScriptScope
You execute the code in.  Then the Python code can call back on it or
subscribe to events on it.


-----Original Message-----
From: [email protected] [mailto:users-
[email protected]] On Behalf Of Lukas Dubeda
Sent: Thursday, August 13, 2009 10:15 AM
To: [email protected]
Subject: [IronPython] Using IronPython as an assembly in dotNET

Hi there everyone,

I have a problem I can't seem to figure out.

I want to use IronPython as an assembly via dotNET, I managed to
load
it
as an assembly and access various constructors, classes etc...

However, I have a problem with executing Python code from the host
application. I'm using 3ds Max to load up the assembly via dotNET.
The
code looks like this:

Assembly = dotNetClass "System.Reflection.Assembly" -- loading the
assembly class
Assembly.LoadFrom "C:\IronPython-2.0.1\IronPython.dll" -- loading
IronPython

ironPythonHosting = dotNetClass "IronPython.Hosting.Python" --
loading
the hosting class
pythonEngine = ironPythonHosting.CreateEngine() -- creating an
engine
Now, when I execute:

pythonEngine.ExecuteFile("C:\\tst.py")

it runs smoothly and executes the tst.py and whatever Python code
that's
inside.

Now, I want to execute the code directly, not via a saved file. I
tried
this:

pythonEngine.Execute("print 'TEST'")

but it throws me an error:

-- Error occurred in anonymous codeblock; filename: ; position: 344
-- Runtime error: dotNet runtime exception: Late bound operations
cannot
be performed on types or methods for which ContainsGenericParameters
is
true.

Also, if I execute the Python code inside a file, is there a way to
get
the result/feedback from the code back to the host application? Via
dotNET or IronPython? Or anyhow? So that I can write more complex
tools
that'd communicate with Pyhon code from within 3ds Max.

Thanks a lot in advance, cheers,

- Lukas Dubeda
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

__________ Information from ESET NOD32 Antivirus, version of virus
signature database 4332 (20090813) __________
The message was checked by ESET NOD32 Antivirus.

http://www.eset.com




_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

__________ Information from ESET NOD32 Antivirus, version of virus signature 
database 4332 (20090813) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com




_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to