3ds Max 2014的Maxscript中使用正则表达式
2015-05-20 10:13
281 查看
Maxscript里创建一个函数
--Function:Regex
--@param expression - 正则表达式字符串
--@return 返回.NET下的正则表达式对象
fn Regex expression=(rgx = dotNetObject "System.Text.RegularExpressions.Regex" expression;return rgx)
--使用方法举例
R1 = Regex "^(LG){0,1}([YnNnTtLl]||YP)(\d{1,})\S{0,}_(\d{1,})$"
bResult = R1.isMatch("LGY01_001")
返回的结果是bResult=true
实现非常简单,就是借用.NET里的Regex类对象,利用Maxscript对于.NET命名空间的映射Reflection,创建一个.NET下的正则表达式对象。返回的正则表达式对象的方法和属性访问和.NET下的用法相同。
心路历程:
手头项目中需要编写3ds Max的脚本插件检查Max建模场景中的某些类型的物体名称是否符合某一种命名规则,并且需要标记出不符合命名规则的物体。
虽然之前曾经使用过Python中的Re模块来做命名检查这件事,但是由于插件还需要对VRay插件的参数做访问和设定,Chaos Group的官方目前没有给VRay编写Python的sdk,因此如果需要完整的用Python写完这个插件,必须要给Maxscript里对于Vray的访问语句做很多Eval的包装,并且插件的UI需要使用PySide来创建,并没有Visual Maxscript的界面设计的功能,所以最后决定还是直接使用maxscript来创建界面并且完成整个插件。
但是Maxscript归根结底不支持正则表达式的,如果使用C++的SDK可以通过引入外部的正则表达式模块,但是这一过程对于很多对于我这类C++编程不熟悉的童鞋来说太过于麻烦,所以我继续翻阅Maxscript的文档,发觉了它有对于.NET的Reflection,即.NET框架下能够使用的命名空间,能够访问到了类,能够创建的类对象,在Maxscript里也能够做到,因此我又查找了.NET(4.0)下是否有正则表达式相关的类和函数,一查果然有!
Autodesk 3Ds Max的插件系统还是比较强大的,C++, .NET 还有Python 这三种编程方式与 Maxscript 都可以互相访问,甚至可以达到三种语言混编的可能,对于功能的扩展无疑增加的更多的可能。
--Function:Regex
--@param expression - 正则表达式字符串
--@return 返回.NET下的正则表达式对象
fn Regex expression=(rgx = dotNetObject "System.Text.RegularExpressions.Regex" expression;return rgx)
--使用方法举例
R1 = Regex "^(LG){0,1}([YnNnTtLl]||YP)(\d{1,})\S{0,}_(\d{1,})$"
bResult = R1.isMatch("LGY01_001")
返回的结果是bResult=true
实现非常简单,就是借用.NET里的Regex类对象,利用Maxscript对于.NET命名空间的映射Reflection,创建一个.NET下的正则表达式对象。返回的正则表达式对象的方法和属性访问和.NET下的用法相同。
心路历程:
手头项目中需要编写3ds Max的脚本插件检查Max建模场景中的某些类型的物体名称是否符合某一种命名规则,并且需要标记出不符合命名规则的物体。
虽然之前曾经使用过Python中的Re模块来做命名检查这件事,但是由于插件还需要对VRay插件的参数做访问和设定,Chaos Group的官方目前没有给VRay编写Python的sdk,因此如果需要完整的用Python写完这个插件,必须要给Maxscript里对于Vray的访问语句做很多Eval的包装,并且插件的UI需要使用PySide来创建,并没有Visual Maxscript的界面设计的功能,所以最后决定还是直接使用maxscript来创建界面并且完成整个插件。
但是Maxscript归根结底不支持正则表达式的,如果使用C++的SDK可以通过引入外部的正则表达式模块,但是这一过程对于很多对于我这类C++编程不熟悉的童鞋来说太过于麻烦,所以我继续翻阅Maxscript的文档,发觉了它有对于.NET的Reflection,即.NET框架下能够使用的命名空间,能够访问到了类,能够创建的类对象,在Maxscript里也能够做到,因此我又查找了.NET(4.0)下是否有正则表达式相关的类和函数,一查果然有!
Autodesk 3Ds Max的插件系统还是比较强大的,C++, .NET 还有Python 这三种编程方式与 Maxscript 都可以互相访问,甚至可以达到三种语言混编的可能,对于功能的扩展无疑增加的更多的可能。
相关文章推荐
- java 使用正则表达式过滤HTML中标签
- VS 2005/2008 开发工具中 使用正则表达式查找替换的使用说明
- Code54 使用正则表达式验证字符串的值
- JS中使用正则表达式g模式和非g模式的区别
- 使用正则表达式小心换行和回车
- PHP正则表达式preg_match的具体使用规则介绍
- PHP正则表达式的几则使用技巧
- Java正则表达式判断手机号码【2014版】
- Oracle正则表达式-初级使用
- 正则表达式使用详解--带例子
- mysql中如何使用正则表达式查询
- java之正则表达式的使用1
- Java中正则表达式使用方法详解
- Python 正则表达式 RE模块的使用方法
- php正则表达式使用的详细介绍
- Jquery使用正则表达式验证文本框的值为非零正整数
- 邮箱正则表达式及验证使用
- 正则表达式简明使用手册
- javascript使用正则表达式格式化货币,金额
- 使用正则表达式删除一个字符串中特定两个字符之间的所有字符