一、前言

之前用maxscript写了一些功能,小文件情况下还好,文件越大时间越久,大文件 5G以上的max文件时,卡死,慢死。

因为3dmax有.net/c++的二次开发,接下来打算边学习边整理资料。

最终目的,自动模型简化。

之前处理Revit的模型还好,一个模型一个模型的,命名也有规律。

后来处理SmartPlant3D模型,通过navisworks把vue转换成fbx文件,结果到3dmax里面一看,全混杂在一起了,删除个螺丝都要自己去把面选中再删。数量好超级多.....

不行,得想办法写工具自动处理。

二、学习资料

找3dmax sdk资料,b站上有很多各种教程,max sdk的就一个,官方的 2012年的:https://www.bilibili.com/video/BV1dJ411t7iq?p=2

官网地址:https://www.autodesk.com/developer-network/platform-technologies/3ds-max,下面有这个视频的下载版本,10个视频,一个视频1小时,英文没字幕,wmv格式,不大,讲ppt加演示。ppt,源码都有能下载的。

10个视频够我啃一周的了.....

Unit01: 介绍,ADN(Autodesk Develop Network),自定义UI,MaxScript,MaxSDK

Unit02:3dsmax Plugin Wizard

后面的看了几个视频,感觉和上课一样,看着看着睡着了,主要时我想先过一遍,后续再练习。

对了,视频没字幕,英语不行,看着好累。最后上传视频到Youtube上,它会自动生成字幕的,基本准确的,不是马上生成的,上传后过段时间后生成的。

看到第8个,没练习,只是有点概念,关键是它讲了很多的概念内容.......

三、Wizard

我的VS是2019,readme.txt里面没有,搜索了一下,需要改成VsWizard.VsWizardEngine.16.0,有个文章写的很详细:http://creativescratchpad.blogspot.com/2019/07/3ds-Max-SDK-Introduction.html

我最早碰到的问题是c++里面找不到,后来发现可以用搜索找到,也可以直接 所有语言&所有平台&所有项目类型 言里面找

然后是设置3dmax地址,要到userDefaults.js里设置

改成

可以查询

不设置的话,就是原始的

而不是教程里那样的

--------------------------------------------------------------------------

后来安装了vs2017,找不到vcprojects文件夹,不如说找到了一个。

按readme.txt,应该是 C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\VCProjects

我的电脑上有个 D:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\VCProjects,拷贝进去没有效果。

而且我这次是安装在c盘的,这个怀疑是以前安装在d盘时留下的。

最后拷贝到C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCProjects 可以了

vs2017当然是Wizard=VsWizard.VsWizardEngine.15.0,这个没问题。

-------------------------------------------------------------------------------------------------------

还要设置3dsmaxPluginWizard文件夹为可写的。

有个视频写的很详细:https://www.youtube.com/watch?v=Wt_v3LL6ug4&list=PLLkzsiaXzCpa9pYxDQVyCfdUB70E79RJ3&index=2&t=1s

四、生成问题

1.对路径xxx的访问被拒绝

要用管理员方式打开vs

2.cannot open include file 'afxres.h'

c++和windows sdk安装问题。

用vs2019打开视频练习项目,在项目旁边还是有Visual Studio2017的内容。

这些项目原本应该时vs2010创建的。

生成出现这个问题,具体怎么解决的其实也不知道,折腾来折腾去,把vs2019和vs2017还有一些c++组件都安装了,windowsSDK也是安装了几个。

反正最后就是用vs2017打开项目。

 

3.无法打开文件“bmm.lib”

参考:https://forums.cgsociety.org/t/sdk-plugin-type/1685238/2

这个链接路径倒是好设置,关键是要修改当前配置为Release和x64,这个折腾了我半天。

使用wizard生成的项目主要就是要切换一些Release。

而视频练习项目则需要修改项目内容,如下

4.打开视频练习源码文件

主要是需要替换项目文件的内容:

$(ADSK_3DSMAX_SDK_2013) -> $(ADSK_3DSMAX_SDK_2020)

$(ADSK_3DSMAX_SDK_2016) -> $(ADSK_3DSMAX_SDK_2020)

$(ADSK_3DSMAX_SDK_2020)\maxsdk -> $(ADSK_3DSMAX_SDK_2020)  环境变量中已经有maxsdk了

x64\lib -> lib\x64\Release 我的完整路径是 C:\Program Files\Autodesk\3ds Max 2020 SDK\maxsdk\lib\x64\Release

$(ADSK_3DSMAX_x86_2013) -> $(ADSK_3DSMAX_x64_2020)

$(ADSK_3DSMAX_x64_2013) -> $(ADSK_3DSMAX_x64_2020)

$(ADSK_3DSMAX_x64_2020)\plugins< -> $(ADSK_3DSMAX_x64_2020)\plugins\<

x64\$(Configuration)\ -> $(ProjectDir)\obj\$(MaxPlatform)\$(MaxConfiguration)\

我的环境变量:

这个改好了bmm.lib问题就没了,然后出现下面的问题。

-------------------------

发现启动3dsmax调试还要修改一下,上面都改掉了调试里面的路径还是没改。

5.RunMUIRCT.exe

"C:\Program Files\Autodesk\3ds Max 2020 SDK\maxsdk\tools\RunMUIRCT.exe" -o "C:\Program Files\Autodesk\3ds Max 2020\plugins\\" -f exercise04.dlu -t "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\x64\ReleaseUnicode\\" 

 

"$([System.IO.Path]::GetFullPath('$(MaxSdkDir)/tools/RunMUIRCT.exe'))" -o "$([System.IO.Path]::GetFullPath('$(TargetDir)'))\" -f $(TargetFileName) -t "$([System.IO.Path]::GetFullPath('$(IntDir)'))\" 

用wizard生成的项目里面也有这个,生成没有问题的。

发现两则的IntDir是不一样的,修改项目文件

x64\$(Configuration)\ -> $(ProjectDir)\obj\$(MaxPlatform)\$(MaxConfiguration)\

可以了,生成成功了。

6.无法创建目录C:\Program Files\Autodesk\3ds Max 2020 SDK\maxsdk\\obj\x64\Release\maxProject6

查了一下,这个是临时目录,不知道为什么创建到3dsmax的sdk路径里面去了。

解决方法就是和上面的一样,设置C:\Program Files\Autodesk\3ds Max 2020 SDK\maxsdk\obj的权限为可写的。

生成不成功时就看一下现在是不是管理员方式启动的

上面问题处理好了,基本就生成成功了,生成后plugins文件夹中就有插件文件了,运行vs,会自动启动3dsmax。

加断点,能够进去,有时候不能进去....

 

 

Logo

前往低代码交流专区

更多推荐