3天学会MaxScript教程之(第一天:开始编写我们的第一个MaxScript)

【1】了解Max Script

这是Max内置的脚本语言,可以很方便用来完成一些程序化或者快速完成一些机械性的操作,比如导入一千个模型,并且按照项目的特定规定,分类分大小分种类导入到不同文件夹下,人来完成这件事情将是非常无聊乏味和低效的。所以使用脚本来批量完成会更有价值。

【2】开始搭建一个我们的编程环境

我习惯了c++的高亮和自动补全,如果叫我用max自带的那个editor来做我会觉得十分痛苦。所以我们需要一个比较好的开发环境

首先下载最新版的max2017 然后再下载微软的VsCode,安装一下语法高亮插件,配置好这两个东西之后就可以开始啦。

【3】从一个小例子创建一个物体开始

首先我们需要创建一个max脚本文件然后把它保存在一个方便找的地方比如桌面。创建的话就单击max左上角的script选项栏然后点击newscript就可以啦,然后用VSCode打开,然后开始编写。

先从创建我们的第一个box开始

效果如下所示

下面来一行一行解释代码的意思

第一行:声明一个mybox的变量 然后创建一个 box对象,它的长宽高分别是20 然后把这个创建好的box对象赋值给变量mybox

第二行:修改这个box的名字为BlueBox

第三行:将box的颜色改为蓝色

第四行:将box的位置设置为 x=0 y=10 z=10

第五行:设置box的缩放为xyz 1.5倍

第六行 给box加上一个修改器,twist,设置修改器twist的angle为30

至此我们就已经学会了如何新建一个脚本 然后创建一个几何图形,然后对它进行纺射变换,给集合体加修改器。

再来做几个例子:

【4】复杂点的程序化思想创建物体,流控制

用循环创建一组box吧

for语句的书写格式和c++有点差别,do为循环体。注意作用域。

尝试一些其他的循环语句

这个是一个while do循环体,也有do while循环。两个的区别就是先执行一次再判断和先判断再执行。

再复杂一点,在循环中加一个if判断

可以看到我在y=300的位置创建了一个box,但是这与y=300的球重叠了,我们再用else语句限制一下

总体逻辑还是非常简单的稍微学过编程的很容易理解。主要还是熟悉一下maxscript的语法。

【5】函数

把逻辑封装在函数里面可以方便调用,我们把上一个例子的逻辑封装一下。一个函数的格式和函数的调用方法从下面的代码能一下子看出来了吧。函数声明除了使用function关键字外,还可以用fn

ydistance:500是函数的参数。:500是初始化这个参数给个默认值。

我们在调用函数的时候可以覆盖那个初始值,如果调用的时候不给新值覆盖则会用默认值。

下面是我覆盖了函数默认参数的效果。覆盖写法和调用如下

使用fn声明函数

【6】完成一个简单的插件

打开3dmax->Scripting->visual maxscriptEditor

这是一个可视化max脚本UI编辑器。我们在面板里创建一个button然后点击这个按钮的events

点击eventhandlers

会弹出一个脚本编辑器面板,这回对这个button进行绑定。然后关闭editeventhandler,然后保存。用vscode打开我们保存的这个ms文件你会看到如下代码

rollout unnamedRollout "Untitled" width: 162 height: 300
(
     button 'btn1' "Button" pos: [ 21 , 29 ] width: 103 height: 52 align: #left
    on btn1 pressed  do
         box ()
)

效果如下

至此我们已经上手编写max脚本了。后面两天再深入提高!

  • 59
    点赞
  • 166
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 以下是一个简单的 HTML 和 JavaScript 实现: ```html <!DOCTYPE html> <html> <head> <title>Date Pickers</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> label { display: block; margin-bottom: 10px; } input[type="date"] { width: 200px; padding: 8px; border-radius: 4px; border: 1px solid #ccc; font-size: 16px; } </style> </head> <body> <h1>Date Pickers</h1> <label for="datepicker1">Select a date (today or later):</label> <input type="date" id="datepicker1"> <label for="datepicker2">Select a date (within 3 days of the first date):</label> <input type="date" id="datepicker2" disabled> <script> // Get today's date var today = new Date().toISOString().slice(0, 10); // Set the minimum date for the first datepicker to today document.getElementById("datepicker1").setAttribute("min", today); // Disable dates in the second datepicker that are more than 3 days after the first date document.getElementById("datepicker1").addEventListener("change", function() { var startDate = new Date(this.value); var endDate = new Date(startDate.getTime() + (3 * 24 * 60 * 60 * 1000)); // Add 3 days document.getElementById("datepicker2").setAttribute("disabled", false); document.getElementById("datepicker2").setAttribute("min", this.value); document.getElementById("datepicker2").setAttribute("max", endDate.toISOString().slice(0, 10)); }); </script> </body> </html> ``` 第一个日期选择器的最小日期设置为今,这是通过使用 `Date` 对象和 `toISOString()` 方法来获取的,然后将结果的字符串截断以获取日期部分。 第二个日期选择器在页面加载时被禁用,直到第一个选择器中选择了一个日期。一旦选择了一个日期,第二个选择器就被启用,并且其最小日期设置为第一个选择器中选择的日期,最大日期设置为第一个选择器中选择的日期加上3。 ### 回答2: 首先需要使用HTML创建两个日期选择器的元素,可以使用`<input>`元素类型为"date"。接下来,可以通过JS来实现两个日期选择器的要求。 对于第一个日期选择器,可以通过设置`min`属性来限制只能选择今以后的日期。可以使用`Date.now()`获取当前的时间,并利用`toISOString()`方法将时间转换为字符串格式,赋给`min`属性。 ```html <input type="date" id="datepicker1" min="" /> ``` ```js //第一个日期选择器 const datepicker1 = document.getElementById("datepicker1"); const today = new Date(); //获取当前时间 const tomorrow = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1); //获取明的日期 datepicker1.min = tomorrow.toISOString().split("T")[0]; //设置最小日期为明 ``` 对于第二个日期选择器,可以使用`setDate()`函数来设置日期,其中传入的参数是基于已选日期的时间增量。在第一个日期选择器选定日期后,通过监听`change`事件来获取选定日期,并修改第二个日期选择器的最小日期。 ```html <input type="date" id="datepicker2" min="" /> ``` ```js //第二个日期选择器 const datepicker2 = document.getElementById("datepicker2"); datepicker1.addEventListener('change', function() { const selectedDate = new Date(this.value); //获取选定的日期 const minDate = new Date(selectedDate.getFullYear(), selectedDate.getMonth(), selectedDate.getDate() + 1); //获取选定日期的后一 const maxDate = new Date(selectedDate.getFullYear(), selectedDate.getMonth(), selectedDate.getDate() + 4); //获取选定日期的后三 datepicker2.min = minDate.toISOString().split("T")[0]; //设置最小日期为选定日期的后一 datepicker2.max = maxDate.toISOString().split("T")[0]; //设置最大日期为选定日期的后三 }); ``` 这样,第一个日期选择器只能选择今以后的日期,而第二个日期选择器只能选择第一个日期选择器选定日期后的3内的日期。 ### 回答3: 要用HTML和JS实现两个日期选择器,满足以下要求: 1. 第一个日期选择器只能选择今以后的日期: - 首先,在HTML中创建一个日期输入框元素,并为其设置id属性,例如"datePicker1"。 - 在JS中,使用getElementById方法获取到该输入框元素,并添加事件监听器,在每次选择日期时触发函数。 - 在函数中,使用Date对象获取当前日期,并将其设置为最小可选日期。 - 这样,当用户打开日期选择器时,只能选择今以后的日期。 2. 第二个日期选择器只能选第一个日期以后3内的日期: - 在HTML中再次创建一个日期输入框元素,并为其设置id属性,例如"datePicker2"。 - 在JS中,使用getElementById方法获取到该输入框元素,并添加事件监听器。 - 在监听器函数中,获取第一个日期选择器的值,并将其转换为Date对象。 - 使用Date对象的setDate方法,将第一个日期后推3,并将此日期设置为最大可选日期。 - 这样,在第二个日期选择器中,只能选择第一个日期以后3内的日期。 示例代码如下: HTML部分: ``` <input type="date" id="datePicker1"> <input type="date" id="datePicker2"> ``` JS部分: ```javascript window.addEventListener('load', function() { var datePicker1 = document.getElementById('datePicker1'); var datePicker2 = document.getElementById('datePicker2'); datePicker1.addEventListener('change', function() { var minDate = new Date(datePicker1.value); datePicker2.min = minDate.toISOString().split('T')[0]; }); }); ``` 这样,就实现了两个日期选择器,满足第一个选择器只能选择今以后的日期,第二个选择器只能选第一个日期以后3内的日期的要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值