Maxscript入门教程:Print与Format命令

本文对Maxscript中的“Print”和“Format”命令之间的差异进行了一些小小的研究,得出的结论主要的差异是它们的结果中的引号“”。

“Print”很简单,直接使用,在调试时非常有用。为了工作,它只需要一个字符串(这是两个引号“”之间的一个正常句子)或变量,例如:

print "I love maxscript"
"I love maxscript"
Print $.pos -- this will print the position of the selected object
[10,10,0]

如果你想在$.pos和string等值之间混合,你必须在值后面使用(as string)命令将位置转换为字符串,如下所示:

print ("objPos="+ $.pos as string)
Result:
"objPos=[10,10,0]"

如果您想打印一个对话框,其中每行都包含一个句子,那么我们必须在每行后面添加(\n):

print "How are you today?\n I'm fine, thanx\n"
Result:
"How are you today?I'm fine, thanx
"

到目前为止,一切都很好,但print命令有一些局限性,例如,当你想写入外部文件(*.ms或*.txt)时,你会遇到这种情况(我将在教程的最后提供一个关于写入外部文件的完整示例,现在只关注print命令)。假设你想向ms文件写入以下代码:

print ("mergemaxfile @\"" + @"D:\temp\test.max" + "\"")
the result would be:
"mergemaxfile @"D:\temp\test.max ""

这是无用的,你不能执行这一行,因为它是一个字符串

我们要这行,但不要引号“”。

或者在另一种情况下,您希望将对象数据(如名称、位置和旋转)导出到txt文件:

objName = $.name as string
objPos = $.pos as string
objRot = $.rotation as string
print ("name:" + objName + " pos:" + objPos + " rot:" + objRot )
Result:
"name:Point01 pos:[5,5,5] rot:(quat 0 0 0 1)"

再次引用。

那么如何摆脱它们呢。这很简单,只需使用“格式”命令即可。我们可以将它与一个简单的字符串一起使用:

format "How are you today?\n I'm fine, thanx\n"
Result:
How are you today?I'm fine, thanx

与打印命令的结果相同,但没有引号。

如果我们想打印像$.pos这样的值,或者让它有点复杂,并引入字符串和值的混合,那么我们必须使用一种叫做字符串格式参数的东西。不要被这个名称吓倒,它是我们要打印的值之前的一个小字符串,可以使Format命令正常工作。

检查以下内容:

format "%" ( $.pos) -- Just make sure only one object selected in the scene
[10,10,0]
format "object position= %" ( $.pos)
object position=[10,10,0]
format "name:% pos:% rot:%" $.name $.pos $.rotation
name:Box001 pos:[10,10,0] rot:(quat 0 0 0 1)

简单地说,它打印第一个块(字符串),同时用下一个块中的变量或值替换每个%符号。它这样做的顺序是,第一个%将被$.name(在第三个代码中)取代,如图所示:

如果您希望每个结果都在一条单独的线上,那么在每个类似的后面使用:

format "name:%\n pos:%\n rot:%\n " $.name $.pos $.rotation
Result:
name:Box001pos:[10,10 ,0]rot:(quat 0 0 0 1)

还有一件事,假设您希望结果带有引号“”,让我们在上面的例子中将其添加到对象的名称中。我们可以通过在名称前后添加“”来实现这一点,因为名称由%表示,所以它将是“%”:

format "name:\"%\"\n pos:%\n rot:%\n " $.name $.pos $.rotation
Result:
name:"Box001"pos:[10,10 ,0]rot:(quat 0 0 0 1)

最后,让我们使用maxscript创建一个ms文件,并使用Print和Format在其中写入,看看区别:

-- Print example first make sure the directory exist before proceeding
Printfile=@"D:\temp\Print.ms" -- the file we are creating print.ms
Outfile = createfile Printfile -- createfile command will create the file for us
print ("Box()") to:Outfile -- write to the file using print method
close Outfile -- you have to close it before continuing or else you won't be able to edit it later
Result:
now open the created file and you will find a string inside it:
"Box()"
-- Format example just replace print by format "%"
Formatfile=@"D:\temp\Format.ms" 
Outfile = createfile Formatfile
format "%" ("Box()") to:Outfile 
close OutfileResult:
now open the created file and you will find a command that will create a box
Box()to take it one step further you can test it using:
filein Formatfile -- this will open the script and run it and you should see a box

感谢大家的耐心阅读,下期再见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/268365.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[学习笔记]在CentOS7中用Docker方式安装Jenkins

文章目录 原理:创建Docker网桥网络安装DinD创建镜像构建镜像运行容器 原理: Docker in Docker (以下简称 DinD)可以在 Container 中直接运行一个 Docker Daemon ,然后使用 Container 中的 Docker CLI 工具操作容器。其…

最详细的Selenium+Pytest自动化测试框架实战

前言 selenium自动化 pytest测试框架 本章你需要 一定的python基础——至少明白类与对象,封装继承 一定的selenium基础——本篇不讲selenium, 测试框架简介 测试框架有什么优点呢: 代码复用率高,如果不使用框架的话&#xff…

【模拟】LeetCode-48. 旋转图像

旋转图像。 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],[4,5,6]…

武汉凯迪正大—门尼粘度试验机

武汉凯迪正大KY-6004型门尼粘度仪用于胶料粘度和硫化指数的测定。试样在一定的温度和压力下,转子以一定的旋转力矩对试样加以一定的剪切力,仪器测出橡胶的反剪切力矩,是再生胶、橡胶、电线电缆行业常用的仪器之一。 武汉凯迪正大KY-6004型门…

科技与艺术相结合,虚拟人裸眼3D动画亮相城市商圈

随着元宇宙概念的火爆,虚拟制作技术的快速发展,虚拟人可以将虚拟世界与现实世界相结合,为用户带来沉浸式体验。如虚拟人壬子希以裸眼3D动画的形式亮相城市商圈,助力文旅以科技与艺术相结合的形式,展现城市文化与科技成…

【SpringBoot】入门精简

目录 一、初识 SpringBoot 1.1 介绍 1.2 项目创建 1.3 目录结构 1.4 修改配置 二、SpringBoot 集成 2.1 集成 Mybatis框架 2.2 集成 Pagehepler分页插件 2.3 集成 Druid数据库连接池 2.4 集成 Log日志管理 一、初识 SpringBoot 1.1 介绍 Spring Boot是一个用于简化Sp…

软件开发流程分析

软件开发流程分析 相关概念1 原型设计2 产品设计3 交互设计4 代码实现详细步骤 相关概念 前端:自研API,调用第三放API 后端:自研API,第三方API 数据库:Mysql,数据采集,数据迁移 服务器&#xf…

nuitka Unknown property box-shadow,transition,transform

nuitka 打包后,控制台的错误解决方法 nuitka --standalone --show-memory --show-progress --nofollow-imports --follow-import-toneed --output-dirout --windows-icon-from-ico./static/test.ico mainUI2.py 由于Qt样式表不是CSS,QSS基于CSS2.1&…

绘图示例---QT手动调用绘图事件,按钮控制图片

效果: 点击 “移动” 图片向右移动20,点击 “西理win嘛” 图片每秒向右移动20 QQ录屏20231212164128 下面时代码详解: 注意使用UI和代码实现按钮的不同 UI: ui->pushButton->setGeometry(windowWidth-105, windowHeight-25, 100, 20);…

windows下docker环境安装

开启硬件虚拟化技术 win10中开启 Hyper-V Win10 下是否开启硬件虚拟化技术,在控制面板,启用 window 功能,找到 Hyper-V 选项,点勾选确认。如图: Windows 11 家庭中文版新增 Hyper-V选项 注意以下的解决方案来自win1…

[MySQL]SQL优化之sql语句优化

🌈键盘敲烂,年薪30万🌈 目录 一、索引优化 回顾: 📕索引分类: 📕索引失效: 📕设计原则: 📕SQL性能分析 二、SQL优化 语句优化 &#x1f4d…

激活企业知识力量,我有才知识付费平台:开启专属知识付费新纪元

在当今信息爆炸的时代,知识管理已经成为了每个人必须面对的问题。然而,市面上的知识付费平台大多数都是通用的,无法满足个性化需求。 因此,我有才提供了一款专属定制的适合个人的知识付费平台。核心产品能力如下: 一…