0009 用VisualStudio设计Max工具

2023-10-10 13:20

本文主要是介绍0009 用VisualStudio设计Max工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这次分享个独家专利^)^:在Visual Studio中设计3dsMax脚本工具界面。

某次做原型设计时,需求改来改去,实在懒得搞GUI;虽然也尝试在Axure RP里画原型,但还是Visual Studio更顺手,也更容易测试一些交互,就直接在VS里做了。后来突发奇想,想实验一把能否直接用到Max里去,结果没想到成功了,效果还挺好。发现了新大陆,记录一下。

 

开始:

在VS里新建Windows Form项目:

 

根据自己的需要进行设计:

 

使用VS一个好处是控件很丰富,简直应有尽有,有些控件在Max里就没有那么简单能用起来了,比如表格类,标签页等;

 

另外就是完全可以独立于3dsMax先测试一下:

 

由于最终要在Max中注册相应的控件事件(如按钮点击),VS里得把相应的控件都公开出来。修改起来很简单,选中多个控制在属性那边改或者直接在代码里改private为public:

 

当工具界面觉得ok后,修改项目属性,输出类型改为类库:

 

将原本可以独立运行的exe编译成dll:

 

到Max里写一点脚本:首先是热重载DLL,意味着可以一边在VS那边修改GUI,编译; 一边在Max里重新加载最新的DLL,不需要反复重启Max:

 

一旦DLL被载入,就可以实例化GUI窗口了,使用show查看一下我们公开的控件是否可以看到;

实例化通过dotNetObject Namespace.ClassName进行:

 

定义自己的函数,并注册按钮点击事件,注意设置控件生命周期,避免被Max垃圾回收干扰:

 

最后Show出窗口来测试一下gWin.Show(),想要作为对话框使用时就用gWin.ShowDialog():

 

是不是挺完美?还差一点点,这个窗口现在不是Max的子窗口,最小化Max的时候,它不会跟随最小化,再修改指定一下父窗口:

 

已经接近完美,but

One more thing...

 

发现没,这样设计GUI感觉倒是有快有好,VS也超级牛,让人爽到不行。但是跟Max明显不融合啊,最明显的是界面颜色,前景、背景;

 

可不可以来点FreeStyle?

 

要做到完美也是可以的,只要请出colorMan, 然后转为dotNet的颜色,在窗口Load事件中指定前景色、背景色就搞定了,有些控件可能需要指定style之类...细节可以再发掘。

 

Max2014中效果:

 

Max2019中效果:

 

总之,使用Visual Studio加C#写Windows Form这种方案还真是又快又好。

简单概括一下就是:

1. VS里通过WindowsFrom设计UI, 公开需要在Max那边处理的控件;

2. 编译成DLL后加载进3dsMax里,在Max里注册控件相应事件;

3. 指定父窗口以及调整与外观上的一些细节;

 

Git项目地址:

https://github.com/WendyAndAndy/MaxDev.git

这篇关于0009 用VisualStudio设计Max工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/180718

相关文章

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子