如何将 3dMax 网格从 maxscript 函数传递给 C# 函数?
How do I pass a 3dMax mesh from a maxscript funtion a C# function?
我有一个在 maxscript 脚本中创建的网格。
我想将它传递给我的 C# 代码,显然我无法获得正确的函数签名...
它使用 void 函数(代码被调用,我得到一个断点,字符串被传回 3dMax)
我加载我的 DLL,创建我的对象,并尝试将网格传递给函数,但我收到以下错误:
MAXScript MacroScript Error Exception:
-- Runtime error: No method found which matched argument list <<
我加载 DLL 的 maxscript 代码:
newMesh = mesh vertices:verts faces:faces
dotnet.loadassembly ( dllDir )
ThisTestObject = dotnetobject "_3dMaxExporter.Test" "test"
myText = ThisTestObject.TestFunc newMesh
C#代码:
public string TestFunc(Autodesk.Max.IMesh test)
{
return ("You can call me " + Name + "!");
}
知道我的签名需要什么类型吗?
UIntPtr
或 IntPtr
。 UIntPtr
如果你想通过句柄传递它(getHandleByAnim
MAXScript 端,GetAnimByHandle(UIntPtr handle)
.NET 端),IntPtr 如果你想通过它的地址传递它(refs.getAddr
MAXScript 端, MarshalNativeToManaged
Wrappers.CustomMarshalerMesh
.NET 端的方法)。
我有一个在 maxscript 脚本中创建的网格。
我想将它传递给我的 C# 代码,显然我无法获得正确的函数签名...
它使用 void 函数(代码被调用,我得到一个断点,字符串被传回 3dMax)
我加载我的 DLL,创建我的对象,并尝试将网格传递给函数,但我收到以下错误:
MAXScript MacroScript Error Exception: -- Runtime error: No method found which matched argument list <<
我加载 DLL 的 maxscript 代码:
newMesh = mesh vertices:verts faces:faces
dotnet.loadassembly ( dllDir )
ThisTestObject = dotnetobject "_3dMaxExporter.Test" "test"
myText = ThisTestObject.TestFunc newMesh
C#代码:
public string TestFunc(Autodesk.Max.IMesh test)
{
return ("You can call me " + Name + "!");
}
知道我的签名需要什么类型吗?
UIntPtr
或 IntPtr
。 UIntPtr
如果你想通过句柄传递它(getHandleByAnim
MAXScript 端,GetAnimByHandle(UIntPtr handle)
.NET 端),IntPtr 如果你想通过它的地址传递它(refs.getAddr
MAXScript 端, MarshalNativeToManaged
Wrappers.CustomMarshalerMesh
.NET 端的方法)。