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

相关文章

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

Python使用Turtle实现精确计时工具

《Python使用Turtle实现精确计时工具》这篇文章主要为大家详细介绍了Python如何使用Turtle实现精确计时工具,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录功能特点使用方法程序架构设计代码详解窗口和画笔创建时间和状态显示更新计时器控制逻辑计时器重置功能事件

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径

MySQL Workbench工具导出导入数据库方式

《MySQLWorkbench工具导出导入数据库方式》:本文主要介绍MySQLWorkbench工具导出导入数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录mysql Workbench工具导出导入数据库第一步 www.chinasem.cn数据库导出第二步

Spring Validation中9个数据校验工具使用指南

《SpringValidation中9个数据校验工具使用指南》SpringValidation作为Spring生态系统的重要组成部分,提供了一套强大而灵活的数据校验机制,本文给大家介绍了Spring... 目录1. Bean Validation基础注解常用注解示例在控制器中应用2. 自定义约束验证器定义自

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定

使用Java编写一个字符脱敏工具类

《使用Java编写一个字符脱敏工具类》这篇文章主要为大家详细介绍了如何使用Java编写一个字符脱敏工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、字符脱敏工具类2、测试工具类3、测试结果1、字符脱敏工具类import lombok.extern.slf4j.Slf4j

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获