今天教大家如何将max插件开发与C#结合起来,以弹出框为例。

这种开发方式的三大优点

1.开发过程中不需要关闭MAX
2.可以引用三方组件
3.开发过程可以调试

1.新建类库,命名:TestPlugin

2.右键属性,修改项目输出路径

我的路径为:E:\Program Files\Autodesk\3ds Max Design 2015\plugins\TestPlugin

3.新建MAX脚本

4.编写一些基础代码

global m_hand = undefinedrollout form "演示插件"
(button btnTest "测试按钮" pos:[60,60] width:180 height:25/*窗体打开事件*/on form open  do(local assembly = dotNetClass "System.Reflection.Assembly"local rootpath = getdir #maxrootlocal maxcorepath =  rootpath + "\\plugins\\TestPlugin\\TestPlugin.dll"local ass = assembly.Load ((dotnetClass "System.IO.File").ReadAllBytes maxcorepath)local types = ass.ExportedTypesfor type in types do(if type.name == "Hand" do(m_hand = (dotNetClass "System.Activator").CreateInstance typebreak))if m_hand == undefined do messagebox "核心组件初始化失败!  ")on btnTest pressed do(m_hand.ShowMSG 0)
)createdialog form 300 300

5.运行(Ctrl+E),点击测试按钮

6.添加Hand类,代码实现如下

    public class Hand{public static string Startup { get; private set; }#region 加载依赖static Hand(){AppDomain domain = AppDomain.CurrentDomain;Hand.Startup = Path.Combine(domain.BaseDirectory, "plugins", "TestPlugin");domain.AssemblyResolve += CurrentDomain_AssemblyResolve;}static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args){string strName = args.Name.Substring(0, args.Name.IndexOf(",")) + ".dll";if (!File.Exists(Path.Combine(Hand.Startup, strName))) return null;return Assembly.LoadFrom(Path.Combine(Hand.Startup, strName));}#endregionpublic void ShowMSG(int val){MessageBox.Show("C# ShowMSG");}}

7.运行(Ctrl+E),点击测试按钮

8.可以在类库设计UI,添加Form

修改ShowMSG的实现

        public void ShowMSG(int val){TestForm tf = new TestForm();tf.ShowDialog();}

8.运行(Ctrl+E),点击测试按钮

引用其他三方类库,当然也是没有问题的,这里就不做演示了,有兴趣的可以自己引用,然后在ShowMSG中调用试试。

10.调试
在vs的调试菜单下,找到“附加到进程”,搜索MAX引用程序,点击附加即可。

11.附加完毕之后,在需要调试的地方加断点,然后在MAX中运行插件,点击相应功能,vs就会进入调试,停在断点处。
12.至于如何直接使用MAXScript开发脚本,不做详细解释(因为我也是野路子)。

不知到以上方法是否对大家有所帮助,这是我之前研究的时候走的另外一条路,虽然遇到了诸多坎坷,最终还是搞定了。早期发过另外一篇文章,当时写的也比较加单,但也是MAX二开的另外一条路径。
https://blog.csdn.net/yang_sen_/article/details/56279936
这篇文章的思路源于欧特克的所有产品的框架,做过Revit二次开发的同仁或许理解的更深一点,这里就不做详细说明了。

喜欢我博客的朋友可以关注一下,有问题需要帮忙解决的也可以整理好发我邮箱,有时间就会去解答(前提是会的情况下^.^)。
邮箱:ys0309@126.com

MAX之不关闭MAX脚本开发相关推荐

  1. Autojs脚本开发实战第一课 基础入门

    Autojs脚本开发课程 课件代码下载地址:https://mp.csdn.net/mp_download/manage/download/UpDetailed Autojs概述 1.Autojs是什 ...

  2. 脚本自启动oracle,自动启动和关闭Oracle 脚本

    配置完ASM实例后,每次启动oracle数据库服务器的时候要先启动ASM实例,然后启动数据库实例:关闭的时候,需要先关闭oracle数据库实例,然后关闭ASM实例:敲起命来来麻烦的很,因而改进了原来的 ...

  3. Selenium+C#自动化脚本开发学习

    Selenium+C#自动化脚本开发知识学习 1:Selenium中对浏览器的操作 首先生成一个Web对象 IWebDriver driver = new FirefoxDriver(); //打开指 ...

  4. illustrator插件-拼版功能开发-阵列复制-js脚本开发-ai插件

    文章目录 1.算法程序 2.作者答疑 1.算法程序   illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是拼版,开发一个阵列复制功能,以下功能仅用于学习交流, ...

  5. Polyworks脚本开发学习笔记(十一)-玩转获取参数(GET)与设置参数

    Polyworks脚本开发学习笔记(十一)-玩转获取参数(GET)与设置参数 Polyworks采用了脚本语言作为二次开发的工具,因此语言格式上非常规范和统一.其中一个重要的特点就是,几乎所有的对象都 ...

  6. Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理

    Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理 Polyworks的工作任务存储分为工作区和项目两级,通过WORKSPACE命令获取工作任务信息,实现更好的任务管理. 下 ...

  7. 软件测试 自动化测试 Web自动化测试01 selenium 定位元素方法 元素操作 自动化脚本开发

    文章目录 1 自动化测试概述 1.1 测试的目的 1.2 自动化测试的优点 1.3 自动化测试的缺点 1.4 自动化测试工具 1.5 自动化测试流程 2 selenium基础 2.1 selenium ...

  8. vim配置文件收集(作为c/c++和脚本开发的环境)

    vim配置文件收集(作为c/c++和脚本开发的环境) - StamHe的专栏 - 博客频道 - CSDN.NET vim配置文件收集(作为c/c++和脚本开发的环境) 分类: Linux系统配置 20 ...

  9. Loadrunner脚本开发简单几种方式

    1.通过录制方式 成功后: lr_start_transaction("1_lgin");web_submit_data("login.php", " ...

最新文章

  1. 嵌入式课程安排 嵌入式培训课程大纲参考
  2. 基于python物流管理系统毕业设计-Python程序设计实验报告一 :熟悉IDLE和在线编程平台...
  3. 如何真正理解用户标签体系?
  4. FileCoin (1) 初步介绍
  5. 大厂没有方法论(上)
  6. Day 3 in India
  7. 11.SolrJ索引操作
  8. Python+Selenium练习篇之7-利用name定位元素
  9. 解决tex中参考文献出现[S.l.: s.n.]、[S.l.]、 [s.n.]问题
  10. VRRP实现AC双机备份原理详解与配置实例
  11. ubuntu14.04 caffe安装前先要将gcc版本降到4.7.x
  12. oracle物理块坏了重启,Oracle 物理结果损坏处理
  13. 利用C++的stringstream对各种数据类型转换
  14. 【C/C++】使用PDFLIB创建一个带中文的pdf文件
  15. C 语言 运算符 全网最全整理
  16. 华为s8600手机驱动_深度丨国产OLED驱动芯片玩家的机遇与困难
  17. Visual Studio 2019 VSIX插件
  18. Java基础——环境变量配置、注释、关键字、标识符
  19. 阿里一面:SQL 优化有哪些技巧?
  20. 作者:吴力波(1974-),女,复旦大学大数据学院教授、副院长、博士生导师...

热门文章

  1. matlab中bp创建多层神经网络,三层 BP 神经网络 matlab 实现
  2. 栋的周评 | 第五回合(定期更新、动态、架构、云技术、算法、后端、前端、收听/收看、英文、书籍、影视、好歌、新奇)
  3. jmeter UDV
  4. playbook使用
  5. 《算法和数据结构》算法篇
  6. 工信部:1-2月我国软件业务收入9074亿元 同比增13.6%
  7. openwrt网络唤醒计算机,OpenWrt实现WOL(Wake-on-LAN)网络唤醒
  8. 创业报告——在科技园和大学创业基地揭牌仪式上
  9. 越狱开发之配置MobileSubstrate Dylib模板
  10. 六级考研单词之路-七