View Full Version : dotNet + MXS
Pjanssen 05-06-2011, 08:10 PM I know how to do it in C#, but I need to do it in Max using MaxScript. Just like one of the posters said, IEnumerable doesn't have a .ToArray() extension. So it's not as simple as that.
I think it does, although maybe not in pre 3.5 frameworks. So I think you should be able to call ToArray on the IEnumerable and then maxscript will convert the resulting .net array into a maxscript array automatically.
|
|
JHaywood
05-06-2011, 11:54 PM
I think it does, although maybe not in pre 3.5 frameworks. So I think you should be able to call ToArray on the IEnumerable and then maxscript will convert the resulting .net array into a maxscript array automatically.
I really don't think it does. I'm using Max 2012, and up to date with the latest dotNet framework.
Try executing the following...
var = dotNetClass "System.Collections.Generic.IEnumerable`1[System.Int32]"
var.ToArray()
This error is returned...
-- Unknown property: "toArray" in dotNetClass:System.Collections.Generic.IEnumerable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
But this works just fine...
var = dotNetObject "System.Collections.Generic.List`1[System.Int32]"
var.Add 1
var.ToArray()
Plus, even if it does have a .ToArray() extension and I'm just not seeing it, that would take care of IEnumerable to array, but not MXS array to IEnumerable.
denisT
05-07-2011, 12:14 AM
do you want to do it nice and elegant or just do it?
JHaywood
05-07-2011, 12:55 AM
do you want to do it nice and elegant or just do it?
I'll have to do it a lot, so nice and elegant would be good, but really, I just want to do it. :)
denisT
05-07-2011, 01:07 AM
I'll have to do it a lot, so nice and elegant would be good, but really, I just want to do it. :)
It's like reverse Bible.
ArrayList implements IList. IList implements ICollection. ICollection implements IEnumerable...
Want is the reason to cast ArrayList to IEnumerable?
biddle
05-07-2011, 04:07 AM
Something that inherits from IEnumerable just provides an iterator, there is no 'Count' property. Without a 'count' you cannot convert to a fixed size collection/array. You simply don't have enough information to set the size of the destination array.
You may be able to write some C# to convert/cast your specific IEnumerable derived type to something that is fixed size if it also inherits something like ICollection, then use a ToArray() method (or perhaps the CopyTo() that ICollection provides)
If all you know is that your input is derived from an IEnumerable, you might be best to brute force it and iterate over all the elements in maxscript to build up your mxs array:
fn IEnumerableToMXSArray yourEnumerable = (
ret = #()
iter = yourEnumerable.getEnumerator()
while iter.MoveNext() do
(
-- Careful this loop may never terminate!
-- Consider an IEnumerable that generates all positive integers
-- or consecutive digits of Pi...
append ret iter.Current
)
ret
)
var = dotNetObject "System.Collections.Generic.List`1[System.Int32]"
for i = 1 to 10 do var.add i
IEnumerableToMXSArray var
I usually try to do my 'work' inside the while loop and don't bother to build up an array.
denisT
05-07-2011, 04:29 AM
i would do it with c#. IEnumerable is not really supported by mxs, why i have to stay with the script?
Gaspounet
05-12-2011, 01:14 PM
Hello !
I'm a dotNet beginner, and i'm trying to learn all that stuff when I have time... I just recently succeeded in creating a treeView... yay :P...
Well, that's not the point ^^
I'm experiencing a pair of issues with my treeView, and I wandered if there was a solution or if it's a "normal problem" with dotNet. Because I didn't find a thing about these yet.
The first problem, is that I can't keep my selected node highlighted when I click on another button of my rollout or when I click outside of the rollout... is there a way to always show what node is selected ?
The second one, is that since I integrated the treeView, when I run my rollout script or when I click on the treeView, all 3dsMax shortcuts are disabled and it only beeps when I press a key. And well... it's a bit annoying ^^'. I must click back on my viewport if I want to use any shortcut. It doesn't even work when I only click on 3dsMax interface.
Papigiulio
06-16-2011, 02:57 AM
Does anyone know how to get layerinformation (name) into a dotnet list column?
I am using Paul Neales dotnet list script and I want to add a column that displays the layername of the objects in a scene.
Using the following snippet:
li.subitems.add (try((LayerManager.getLayerFromName x.name) as string)catch("--")) --Add layername
But the column just fills up with undefined.
This is the populatelist snippet:
fn populateList theLv=
(
rows=#() --Empty array to collect rows of data
layerNames = for x = 0 to (layerManager.count-1) collect (LayerManager.getLayer x).name
for x in objects do --Loop through all the objects in the scene.
(
li=dotNetObject "System.Windows.Forms.ListViewItem" x.name --Create a listViewItem object and name it.
li.subitems.add (try((LayerManager.getLayerFromName x.name) as string)catch("--")) --Add layername
-- li.subitems.add ((TotalArray) as string) --Add total polycount data
li.Tag = dotnetMXSValue x
append rows li --Added the listViewItem to the rows array
)
theLv.items.addRange rows --Add the array of rows to the listView control.
)
floopyb
07-07-2011, 07:08 AM
is there a way to always show what node is selected ?
try adding this on open/initializing:
myTreeView.HideSelection = false
Im not sure how to change the very light grey colour though... would like to know!
floopyb
07-07-2011, 11:16 PM
The second one, is that since I integrated the treeView, when I run my rollout script or when I click on the treeView, all 3dsMax shortcuts are disabled and it only beeps when I press a key. And well... it's a bit annoying ^^'. I must click back on my viewport if I want to use any shortcut. It doesn't even work when I only click on 3dsMax interface.
have a look here for the answer to that from DenisT
http://forums.cgsociety.org/showpost.php?p=6234202&postcount=417
Loucher
08-02-2011, 08:25 PM
hello, im trying to use backgroundworkers for multithreaded world generating but it allways ends with application error on random part of code :sad:
better description of my problem:
this is my small project on which im trying to learn maxscript. with only input - textures, heightmap and few other parameters it will generate terrain like in Minecraft:
http://img856.imageshack.us/img856/8720/56585526.jpg
the main problem is that it will took about 1h to generate region 250x250 blocks, so i have decided to slice terrain to smaller chunks and generate each chunk via own thread on multiple cpu cores.
this is example of my code with one bgworker: pastebin (http://pastebin.com/m7EEKxb2)
everything works fine when i call functions in listener, but when bgworker call same function it allways ends by application error on random time and random line
for example:
<loop x, y> do(
local box_instance = instance $Grass
box_instance.pos = [ BlockSize*x, -BlockSize*y, BlockSize*(GetHeight x y) ]
)
it will create 50instances and 51st instance is app error on line "local box_instance = instance $Grass" because $Grass is undefined :surprised
as i mentioned im new to maxscript so i have no clue how to make this work
thank you for every idea
denisT
09-10-2011, 01:28 PM
does anyone know how to create LookAndFeel in max 2012
treeList = dotnetobject "DevExpress.XtraTreeList.TreeList"
a = dotnetobject "DevExpress.LookAndFeel.UserLookAndFeel" treeList
works fine in 2010 and gives the error in 2012:
-- Runtime error: dotNet runtime exception: MethodInfo must be a runtime MethodInfo object.
Parameter name: method
thanks
Gravey
09-11-2011, 08:01 AM
does anyone know how to create LookAndFeel in max 2012
treeList = dotnetobject "DevExpress.XtraTreeList.TreeList"
a = dotnetobject "DevExpress.LookAndFeel.UserLookAndFeel" treeList
works fine in 2010 and gives the error in 2012:
-- Runtime error: dotNet runtime exception: MethodInfo must be a runtime MethodInfo object.
Parameter name: method
thanksi don't have 2012 to test but maybe try the CreateInstance method of the Activator class?
denisT
09-12-2011, 02:14 PM
i don't have 2012 to test but maybe try the CreateInstance method of the Activator class?
the same error:
(dotnetclass "Activator").CreateInstance (dotnetclass "DevExpress.LookAndFeel.UserLookAndFeel") #(dotnetobject "DevExpress.XtraTreeList.TreeList")
-- Runtime error: dotNet runtime exception: MethodInfo must be a runtime MethodInfo object.
Parameter name: method
it works for 2010 and doesn't work for 2012... could anyone try it for 2011 please?
Gravey
09-12-2011, 02:46 PM
it works for 2010 and doesn't work for 2012... could anyone try it for 2011 please?2011 works fine
biddle
09-13-2011, 08:47 PM
I don't have 2012 to experiment with, but you could try different flavours of the constructor:
(
treeList = dotnetobject "DevExpress.XtraTreeList.TreeList"
a = dotnetobject "DevExpress.LookAndFeel.UserLookAndFeel" treelist
b = dotnetobject "DevExpress.LookAndFeel.UserLookAndFeel" treelist.LookandFeel
c = dotnetobject "DevExpress.LookAndFeel.UserLookAndFeel" (treelist.get_LookandFeel())
format "'treelist.lookandfeel' is a %\n" (treelist.lookandfeel.tostring())
format "'a' is a %\n" (a.tostring())
format "'b' is a %\n" (a.tostring())
format "'c' is a %\n" (a.tostring())
)
These all run in for me in 2011, but I don't know that what I get back for a,b, & c are useful to you.
My output is:
'treelist.lookandfeel' is a DevExpress.LookAndFeel.Helpers.ControlUserLookAndFeel
'a' is a DevExpress.LookAndFeel.UserLookAndFeel
'b' is a DevExpress.LookAndFeel.UserLookAndFeel
'c' is a DevExpress.LookAndFeel.UserLookAndFeel
denisT
09-13-2011, 09:11 PM
all of these don't work in 2012 anymore.
the problem is that max 2012 creates TreeList with undefined LookAndFeel :(
Remember that dotNetObject calls the constructor of the class with the parameters given if any.
dotNetClass returns the class object itself, which can be usefull if you have static methods on it.
you also have dotNetMethod which allows you to put a method desc into a maxscript variable.
at least that what I found out for 3dsmax 2012.
Not sure if its the same for earlier versions.
I used a background thread as well and ManagedServices.dll to run the majority of the plugin in a .Net assembly, and communicate with 3dsmax by sending maxscript commands.
In my own plugin http://forums.cgsociety.org/showthread.php?p=7118556#post7118556
MikeOwen
10-20-2011, 06:51 PM
Hi,
ref: http://forums.cgsociety.org/showpost.php?p=6868022&postcount=483
With reference DenisT's reply on how to reload in 3dsMax a recently re-compiled dll without having to restart that session of 3dsMax, I'm still a little confused if this is possible? Here's some sample code. Perhaps someone could explain if this is possible and what I'm doing wrong?
try(destroyDialog theRollout)catch()
(
Testdll = "C:/Testdll.dll"
local assembly = (dotNetClass "System.Reflection.Assembly").Load ((dotNetClass "System.IO.File").ReadAllBytes Testdll)
myClass = assembly.CreateInstance "TestNamespace.TreeView"
rollout theRollout "Test" width:600 height:600
(
dotNetControl myClass "TestNamespace.TreeView" pos:[0,50] width:500 height:500
on theRollout open do
(
myClass.PopulateTreeView()
)
)
createDialog theRollout
)
Thanks,
Mike
denisT
10-20-2011, 07:04 PM
Hi,
ref: http://forums.cgsociety.org/showpost.php?p=6868022&postcount=483
With reference DenisT's reply on how to reload in 3dsMax a recently re-compiled dll without having to restart that session of 3dsMax, I'm still a little confused if this is possible? Here's some sample code. Perhaps someone could explain if this is possible and what I'm doing wrong?
try(destroyDialog theRollout)catch()
(
Testdll = "C:/Testdll.dll"
local assembly = (dotNetClass "System.Reflection.Assembly").Load ((dotNetClass "System.IO.File").ReadAllBytes Testdll)
myClass = assembly.CreateInstance "TestNamespace.TreeView"
rollout theRollout "Test" width:600 height:600
(
dotNetControl myClass "TestNamespace.TreeView" pos:[0,50] width:500 height:500
on theRollout open do
(
myClass.PopulateTreeView()
)
)
createDialog theRollout
)
Thanks,
Mike
you are doing everything right. the problem is that you are using TreeView from your class to create dotnetcontrol. Max always uses object from first loaded assembly to create dotnetcontrol.you are recompiling and reloading the assembly, but max still using the first one
if you will use dotnetobject instead of dotnetcontrol, you will see the difference.
MikeOwen
10-21-2011, 04:41 PM
Hi,
Sorry, I'm still unable to make it work :-(
try(destroyDialog theRollout)catch()
(
Testdll = "C:/Testdll.dll"
local assembly = (dotNetClass "System.Reflection.Assembly").Load ((dotNetClass "System.IO.File").ReadAllBytes Testdll)
local myClass = assembly.CreateInstance "TestNamespace.TreeView"
rollout theRollout "Test" width:600 height:600
(
local maxForm = dotNetObject "MaxCustomControls.MaxForm"
local myClass = dotNetObject "TestNamespace.TreeView"
on theRollout open do
(
maxForm.controls.add myClass
myClass.PopulateTreeView()
)
)
createDialog theRollout
)
I was hoping to create a 3dsMax rollout, embed a custom .NET TreeView and still keep the ability to re-compile the custom dll and NOT have to restart 3dsMax every time I re-build.
Am I missing something?
Mike
denisT
10-21-2011, 05:02 PM
Hi,
Sorry, I'm still unable to make it work :-(
try(destroyDialog theRollout)catch()
(
Testdll = "C:/Testdll.dll"
local assembly = (dotNetClass "System.Reflection.Assembly").Load ((dotNetClass "System.IO.File").ReadAllBytes Testdll)
local myClass = assembly.CreateInstance "TestNamespace.TreeView"
rollout theRollout "Test" width:600 height:600
(
local maxForm = dotNetObject "MaxCustomControls.MaxForm"
local myClass = dotNetObject "TestNamespace.TreeView"
on theRollout open do
(
maxForm.controls.add myClass
myClass.PopulateTreeView()
)
)
createDialog theRollout
)
I was hoping to create a 3dsMAx rollout, embed a custom .NET TreeView and still keep the ability to re-compile the custom dll and NOT have to restart 3dsMax every time I re-build.
Am I missing something?
Mike
it should be something like:
try(maxForm.close()) catch()
(
Testdll = "C:/Testdll.dll"
assembly = (dotNetClass "System.Reflection.Assembly").Load ((dotNetClass "System.IO.File").ReadAllBytes Testdll)
global maxForm = dotNetObject "MaxCustomControls.MaxForm"
myTreeView = assembly.CreateInstance "TestNamespace.TreeView"
maxForm.controls.add myTreeView
myTreeView.PopulateTreeView()
maxForm.ShowModeless()
)
MikeOwen
10-21-2011, 05:14 PM
Thanks Denis. I'm happy with getting it working in a .NET form and your code is perfect, BUT I was trying to get this functionality of dynamically re-loading the custom dll, so that the DotNetObject could be placed inside of a standard 3dsMax "rollout" UI. The issue seems to be that we rely on the "DotNetControl" wrapper to allow integration into the 3dsMax UI.
I was wondering if there is anyway around this issue, so I can have the best of both worlds..A dynamically re-loading dll which provides my custom Treeview AND the standard functionality of a 3dsMax "rollout" for UI design?
Is this possible? or am I committed to using MaxForm if I need to avoid using DotNetControl, so that I can "re-load" my assembly?
Hope this makes sense!
Thanks,
Mike
denisT
10-21-2011, 05:32 PM
I was wondering if there is anyway around this issue, so I can have the best of both worlds..A dynamically re-loading dll which provides my custom Treeview AND the standard functionality of a 3dsMax "rollout" for UI design?
in this case it has to be:
try(destroydialog dialog) catch()
rollout dialog "My TreeView" width:200 height:200
(
Testdll = "C:/Testdll.dll"
assembly = (dotNetClass "System.Reflection.Assembly").Load ((dotNetClass "System.IO.File").ReadAllBytes Testdll)
dotnetcontrol panel "MaxCustomControls.MaxUserControl" width:190 height:190 pos:[5,5]
on dialog open do
(
myTreeView = assembly.CreateInstance "TestNamespace.TreeView"
myTreeView.Dock = myTreeView.Dock.Fill
panel.controls.add myTreeView
)
)
createdialog dilaog
creating a dotnet object you can specify what assembly you want to use (just loaded in your case).
MAX loads dotnet control using first loaded assembly, and there is no way to change this behavior.
denisT
10-25-2011, 10:28 PM
did anyone has a luck to get "ManagedServices.MaxSpinner" works or shows?
Kickflipkid687
10-25-2011, 11:35 PM
it should be something like:
try(maxForm.close()) catch()
(
Testdll = "C:/Testdll.dll"
assembly = (dotNetClass "System.Reflection.Assembly").Load ((dotNetClass "System.IO.File").ReadAllBytes Testdll)
global maxForm = dotNetObject "MaxCustomControls.MaxForm"
myTreeView = assembly.CreateInstance "TestNamespace.TreeView"
maxForm.controls.add myTreeView
myTreeView.PopulateTreeView()
maxForm.ShowModeless()
)
I've not had success with this either. Am I able to load in the DLLs with this method, and for examaple, say
Testdll = ((pathConfig.GetDir #MaxData)+"Scripts\\turboTools\\FreeImageNET.dll")
dllMain = ((pathConfig.GetDir #MaxData)+"Scripts\\turboTools\\turboTools.BitmapUsage.dll")
assembly = (dotNetClass "System.Reflection.Assembly").Load ((dotNetClass "System.IO.File").ReadAllBytes Testdll)
mainLoad = (dotNetClass "System.Reflection.Assembly").Load ((dotNetClass "System.IO.File").ReadAllBytes dllMain)
test = mainLoad.CreateInstance (dotnetobject "turboTools.BitmapUsage.form1")
test.show()
LoneRobot
10-26-2011, 08:57 AM
did anyone has a luck to get "ManagedServices.MaxSpinner" works or shows?
Hi Denis, I asked about this class on the Area SDK blog when they released the managed services dll. I was trying to find out how to develop classes using managedservices/dll without having to restart max each time (effectively bypassing the build error you get in VS)
but he did answer the question about maxspinner -
http://area.autodesk.com/blogs/chris/net_features_in_2010/comments
denisT
10-26-2011, 06:04 PM
but he did answer the question about maxspinner -
http://area.autodesk.com/blogs/chris/net_features_in_2010/comments
i can't say that has cleared the picture... thanks anyway. at least i know that i'm not the only one who puzzled.
LoneRobot
10-26-2011, 08:35 PM
ha, yes. Answered enough to say to me "don't pursue this any longer"
MiranDMC
10-28-2011, 08:31 PM
Hi guys!
Does anybode figured out solution how to use dotnet for drawing in viewports?
I guess the way is create dialog that will flow viewport's position and size.
bingheyuren
11-11-2011, 05:58 AM
Hi,all.
Does anyboday meet dotnet cant read txt file with chinese character question ~?
Here is my maxscirpt:
Txtfile="c:\\123.txt" ---pls put 123.txt to your c:\ then can test this maxsciprt.
if ((dotNetclass "System.IO.File").Exists Txtfile)
then (
encodingClass = dotNetClass "System.Text.Encoding"
encoding = encodingClass.GetEncoding "GBK"
file =dotnetobject "System.IO.StreamReader" Txtfile encoding
runfile = file.ReadLine()
file.Close()
)
else(messagebox "need Txtfile";return())
print runfile
It's empty when I print out the runfile, becuase some chinese character in the txtfile.
Ok, Let me upload the 123.txt , anybody can help me to test it.
http://www.ouliu.net/j/4dced54031fb9af656977210bd69445d.jpg
Track
11-12-2011, 12:27 AM
Hi,all.
Does anyboday meet dotnet cant read txt file with chinese character question ~?
encodingClass.Default
Use Default property.
TimHawker
12-13-2011, 11:02 PM
the same error:
(dotnetclass "Activator").CreateInstance (dotnetclass "DevExpress.LookAndFeel.UserLookAndFeel") #(dotnetobject "DevExpress.XtraTreeList.TreeList")
-- Runtime error: dotNet runtime exception: MethodInfo must be a runtime MethodInfo object.
Parameter name: method
Has anybody been able to figure out how to fix this?
Shame that the default UI for the devexpress tools is so ugly...
denisT
12-15-2011, 12:18 AM
Has anybody been able to figure out how to fix this?
Shame that the default UI for the devexpress tools is so ugly...
it was not bad at the time of design. but it became very quickly... how to say... outmoded.
my point is that a tool has to be in the latest fashion... and it's not a matter of discussion is the current fashion nice or ugly.
TimHawker
12-15-2011, 07:06 AM
Yeah the fact that I said it's ugly is just my opinion, but the user should still be able to customise the appearance. At the very least the default appearance should be set to mimic the 3ds max UI for some consistency. I was trying to get the lookAndFeel property to work last night but was unable to do so. Not sure what else I can try to get this working.
I still think the default devExpress UI design is ugly ;)
denisT
12-15-2011, 07:23 AM
I still think the default devExpress UI design is ugly ;)
well, stop playing up... :)
MerlinEl
02-08-2012, 10:25 AM
Hi everyone :D
This can be usefull ;)
http://www.dreamincode.net/forums/topic/67275-the-wonders-of-systemdrawinggraphics/
irendeir
03-30-2012, 09:50 PM
Why error? - Runtime error: dotNet runtime exception: Non-static method requires a target. line - serializationJson.ReadObject memStream
Code:
clearlistener()
jsonData = "{\"action\":\"read\",\"type\":\"sequence\",\"data\":[]}"
dotnet.loadAssembly "C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\System.Runtime.Serialization.dll"
ascii_encoder = dotNetObject "System.Text.ASCIIEncoding"
encodedPostParams = ascii_encoder.GetBytes ( jsonData as string )
memStream = dotNetObject "System.IO.MemoryStream" encodedPostParams
serializationJson = dotNetClass "System.Runtime.Serialization.Json.DataContractJsonSerializer"
serializationJson.ReadObject memStream
cgBartosz
03-30-2012, 09:55 PM
I think you have to create an object instance, like this:
serializationJson = dotNetObject "System.Runtime.Serialization.Json.DataContractJsonSerializer"
instead of trying to access its static method:
serializationJson = dotNetClass "System.Runtime.Serialization.Json.DataContractJsonSerializer"
irendeir
03-30-2012, 10:09 PM
I think you have to create an object instance, like this:
serializationJson = dotNetObject "System.Runtime.Serialization.Json.DataContractJsonSerializer"
instead of trying to access its static method:
serializationJson = dotNetClass "System.Runtime.Serialization.Json.DataContractJsonSerializer" Don't help
-- Runtime error: No constructor found which matched argument list: System.Runtime.Serialization.Json.DataContractJsonSerializer
-- Unknown property: "ReadObject" in undefined
The class you are trying to instantiate does not have a constructor which accepts 0 arguments:
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.datacontractjsonserializer.aspx
maxscriptlaborer
04-03-2012, 11:28 AM
Don't help
-- Runtime error: No constructor found which matched argument list: System.Runtime.Serialization.Json.DataContractJsonSerializer
-- Unknown property: "ReadObject" in undefined
try:
serializationJson = dotNetObject "System.Runtime.Serialization.Json.DataContractJsonSerializer" (dotnetclass "System.string")
irendeir
04-05-2012, 12:31 PM
Thanks, maxscriptlaborer! But now I transfer my program to Python because it is more flexible and I have a little the next question:
I need rotate in XForm gizmo. But I can not do that, tell me what the problem is and how to rotate it? Thank you for your attention.
from Py3dsMax import mxs
for obj in mxs.objects:
XForm = mxs.pyhelper.namify('XForm') # set flag
obj.modifiers[XForm].gizmo.rotation += mxs.quat(0.707107, 0, 0, 0.707107) # rotate 90"
irendeir
04-05-2012, 02:21 PM
I solved the problem though not completely in Python. I would like to make it completely in Python.
mxs.addModifier(obj, mxs.XForm())
XForm = mxs.pyhelper.namify('XForm') # set flag
mxs.execute('max modify mode')
mxs.modPanel.setCurrentObject(obj.modifiers[XForm])
mxs.execute('mod_obj = modPanel.getCurrentObject();gizmo_rotation = mod_obj.gizmo.rotation;mod_obj.gizmo.rotation += quat 0.707107 0 0 0.707107') # rotate 90"
wallworm
04-28-2012, 01:05 PM
I'm a little late to the .NET revolution. And I couldn't read 37 pages... so maybe this was already answered.
What I want to know is the best practice of building .NET UIs/Forms for MAXScript tools. Right now I've been scrounging around learning tidbits here and there. But I'm only finding examples of plopping .NET components into a MAXScript by typing out all the code manually.
What I'm getting at is that I'd like to build a UI for a tool where all the components are in .NET and I'm simply not familiar with the method of doing an entire MAXScript tool in .NET. Visuallzing the components is impossible with the MAXScript editor. I'm assuming you do this in Visual Studio... but I still have no clue where to begin in starting/managing a .NET > MAXScript process.
What is the best resource for getting someone with almost no .NET experience using Visual Studio to build MAXScript UIs? (In my mind, I'm hoping it is as simple as building components in an IDE like Flex/Flashbuilder for flash projects.) I need a mental bootstrap here.
JHaywood
05-02-2012, 06:47 PM
I have some information on my (not updated in a really long time) blog that may be useful to you...
http://apps.jhaywood.com/Blog/
And I'd look at LoneRobot's site for even more useful info...
http://www.lonerobot.com
Hope that helps.
LoneRobot
05-02-2012, 11:13 PM
Hey James, Thanks for the mention - I just wanted to point out the address is www.lonerobot.net. You'll find loads of examples of integrating custom dotnet tools in 3dsmax.
vBulletin v3.0.5, Copyright ©2000-2012, Jelsoft Enterprises Ltd.