MicroCity笔记MicroCity笔记
笔记
  • Microcity Desktop 文档
  • Microcity Web 文档
  • 其它

    • 仿真框架(港口)说明文档
    • 模型/库资源
  • GitHub

    • MicroCity Desktop 仓库
    • MicroCity Web 仓库
    • MicroCity Web 在线环境
  • Gitee

    • MicroCity Desktop 仓库
    • MicroCity Web 仓库
  • zhhuu.top (自建修改)

    • MicroCity Web (fork) 仓库
    • MicroCity Web (fork) 在线环境
  • 简体中文
  • English
笔记
  • Microcity Desktop 文档
  • Microcity Web 文档
  • 其它

    • 仿真框架(港口)说明文档
    • 模型/库资源
  • GitHub

    • MicroCity Desktop 仓库
    • MicroCity Web 仓库
    • MicroCity Web 在线环境
  • Gitee

    • MicroCity Desktop 仓库
    • MicroCity Web 仓库
  • zhhuu.top (自建修改)

    • MicroCity Web (fork) 仓库
    • MicroCity Web (fork) 在线环境
  • 简体中文
  • English
  • MicroCity Web文档

    • 目录
    • 1.简介

      • 1.1 MicroCity 的功能
    • 2.入门指南

      • 2.1 滚动立方体
      • 2.2 搜索国家
    • 3.用户界面

      • 3.1 用户界面概览
      • 3.2 编辑脚本
      • 3.3 运行脚本
      • 3.4 浏览场景
    • 4.脚本接口

      • 4.1 SI 概述
      • 4.2 操作系统
      • 4.3 场景和对象
      • 4.4 离散事件仿真
      • 4.5 混合整数规划
    • 附录

      • Lua参考手册
      • 从空间数据到物流模型

4.2 操作系统

这部分功能涉及控制一些基本特性,有些由浏览器提供,其他则源自Lua调试。

浏览器

浏览器提供JavaScript运行环境、存储和网络通信功能。

os.execute (javascript)

访问底层JavaScript引擎的接口。此函数将等待 eval() 给定的JavaScript,并将结果作为字符串返回。

动态执行JavaScript可以极大地扩展MicroCity Web的功能。请注意,Lua引擎在web worker中运行,因此访问DOM需要执行辅助函数RemoteCall。以下是一个简单的示例:

os.execute("RemoteCall('alert', 'hello!')")

一个更复杂的示例是使用Python的fastapi创建应用程序,并在MicroCity Web中调用:
1. 首先安装fastapi:pip install fastapi uvicorn
2. 然后创建 main.py:

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
app.add_middleware(
  CORSMiddleware,
  allow_origins=['\*'],
  allow_credentials=True,
  allow_methods=['\*'],
  allow_headers=['\*'],
)
@app.get("/msg")
async def read_msg():
  return {"msg": "Hello from FastAPI"}

3. 执行 main.py:uvicorn main:app --reload
4. 最后在MicroCity Web中运行以下脚本:

print(os.execute("(async () => (await (await fetch('http://127.0.0.1:8000/msg')).json()).msg)()"))

或

print(os.execute("fetch('http://127.0.0.1:8000/msg').then(res => res.json()).then(data => data.msg)"))

os.sleep (ms)

将睡眠ms毫秒。

os.getready ()

如果单击暂停将暂停执行,如果单击停止将返回false。

这对控制长时间运行脚本很有用。用户可以暂停它,然后在控制台运行一些命令或停止它。

os.upload ([url])

访问url链接中的文件或提示用户选择要上传到虚拟磁盘的本地文件。

此功能用于使脚本访问外部文件变得更便捷。用户可以先上传文件,然后启动程序。

os.download ([fpath])

从fpath路径或提示用户选择要从虚拟磁盘下载的文件。

大型语言模型

这些函数可以触发远程REST API进行对话完成和嵌入。API可以进行自定义。

os.chatcmpl (user [, system])

给定一个系统消息(提示)和由对话组成的用户消息,模型将返回一个响应。

os.embedding (input)

创建代表输入文本的嵌入向量(具有1024个浮点数的数组)。

调试

调试库保留了 Lua 的原始功能并进行了修改。用户可以在脚本中或控制台上执行它们。

debug.debug ([b])

进入调试模式(无参数或 b 为 true)或退出调试模式(b 为 false)。

debug.pause ()

在调试模式下暂停执行。

debug.cont ()

在调试模式下继续执行。

debug.step ()

在调试模式下逐步执行。

debug.stepi ()

在调试模式下逐步执行进入。

debug.stepo ()

在调试模式下逐步执行退出。

debug.watch ([name])

将具有名称(字符串)的变量添加到监视列表,或清除监视列表(没有名称)。

本文使用ChatGPT翻译,如有遗漏请反馈。

Last Updated:
Contributors: huuhghhgyg
Prev
4.1 SI 概述
Next
4.3 场景和对象