欧拉的软件管理
本页显示了欧拉的所有可用软件控制功能 AnyMath .
|
使用欧拉软件控制功能 AnyMath ,按照指定的方式安装硬件支持包 文章. 安装后,运行:
接下来,您需要创建一个会话对象:
所有方法都采用第一个参数 状态代码不会发送出去:如果发生错误,该方法将抛出异常及其描述。 |
-
主要。工程师。EULER_API.[医[医][医][医][医]] -
主要。工程师。EULER_API.[医[医][医][医]]
主要。工程师。EULER_API.关闭项目-Method
EULER_API.closeProject(session) -> Nothing
关闭当前打开的项目。 释放项目资源,但会话保持活动状态。
发生错误时会引发异常。
例子
关闭项目:
EULER_API.closeProject(session)
println("Проект закрыт")
主要。工程师。EULER_API。关闭,关闭-Method
EULER_API.closeSession(session) -> Nothing
以欧拉结束会话。 释放所有资源,关闭求解器。 调用此函数后,对象 会议 无效。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。
例子
会话终止:
EULER_API.closeSession(session)
println("Сеанс завершен")
主要。工程师。EULER_API.创造,创造-Method
EULER_API.createSession(euler_path::String="") -> session
使用欧拉求解器创建会话。 初始化求解器核心。
申报表 会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession} --传递给所有其他方法的会话对象。
论点
-
euler_path::字符串:EULER可执行文件的路径。 默认情况下euler_path=""--自动检测。
例子
创建会话:
session = EULER_API.createSession()
主要。工程师。EULER_API。getcurrent时间-Method
EULER_API.getCurrentTime(session) -> Float64
返回当前模型时间(以秒为单位)。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。
例子
当前模型时间:
t=EULER_API。getCurrentTime(会话)
println("模型时间:$t s")
主要。工程师。EULER_API.最后一个项目-Method
EULER_API.getLastProject(session)->字符串
返回到.最新欧拉项目的elr文件。 它对于在重新启动后恢复状态非常有用。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。
主要。工程师。EULER_API.[医]支数-Method
EULER_API.getRigidBodyCount(session) -> Int
返回当前项目中的实体数。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。
主要。工程师。EULER_API.[医][医][医][医][医]-Method
EULER_API.getRigidBodyPos(session, index=0) -> Vector{Float64}
返回12个元素的数组:质心(X,Y,Z)的坐标和3×3方向矩阵(9个元素,以列展开)。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。 -
索引:Int64:固体的指数;指数的计数从0. 默认情况下0.
主要。工程师。EULER_API.n.getSensorUnits,getSensorUnits-Method
EULER_API.getSensorUnits(session,name)->字符串
返回一个字符串,其中包含SI系统中传感器的测量单位,例如, "N", "m", "m/s".
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。 -
名称::字符串:传感器的名称。
例子
传感器读数(仅在研究模式下可用):
EULER_API.setCalcRegime(会话)
sensor_val=EULER_API。getSensorValue(会话,"X")
sensor_units=EULER_API。getSensorUnits(会话,"X")
println("传感器X=$sensor_val$sensor_units")
主要。工程师。EULER_API.getSensorValue,getSensorValue-Method
EULER_API.getSensorValue(session, name) -> Float64
以SI为单位按名称返回传感器的当前值。 值对应于最后计算的点。
发生错误时会引发异常。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。 -
名称::字符串:传感器的名称(例如,"fx_sensor","X","Y").
例子
传感器读数(仅在研究模式下可用):
EULER_API.setCalcRegime(session)
sensor_val = EULER_API.getSensorValue(session, "X")
sensor_units = EULER_API.getSensorUnits(session, "X")
println("Датчик X = $sensor_val $sensor_units")
主要。工程师。EULER_API.[医]商业-Method
EULER_API.getUserCommands(session) -> String
返回包含可用用户命令名称的字符串。 命令之间用符号分隔 ";". 打开项目后可在任何模式下使用。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。
例子
获取可用命令列表:
commands = EULER_API.getUserCommands(session)
println("Доступные команды: $commands")
主要。工程师。EULER_API.getVersion的-Method
EULER_API.getVersion(session) -> String
以字符串形式返回欧拉求解器的版本(例如, "13.05.43").
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。
例子
解算器版本:
ver = EULER_API.getVersion(session)
println("Версия ЭЙЛЕР: $ver")
#
主要。工程师。EULER_API.日志点-Method
EULER_API.journalLoadPoint(session, index) -> Nothing
将日志点按索引加载到当前上下文中。 下载后 获取值或值 它将返回该点的传感器值,而不是上次计算的值。
发生错误时会引发异常。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。 -
索引:Int64:点索引(索引计数从0).
主要。工程师。EULER_API.期刊价值-Method
EULER_API.journalSensorValues(session, name) -> Vector{Float64}
按时间顺序返回计算日志中所有点的传感器值数组。
发生错误时会引发异常。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。 -
名称::字符串:传感器的名称。
#
主要。工程师。EULER_API.新闻大小-Method
EULER_API.journalSize(session) -> Int
返回计算日志中保存的点数。 意义 0 对应于一个空的杂志。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。
例子
使用计算日志:
n_points = EULER_API.journalSize(session)
println("Точек в журнале: $n_points")
if n_points > 0
t_last = EULER_API.journalTime(session, n_points - 1)
println("Время последней точки: $t_last с")
end
x_vals = EULER_API.journalSensorValues(session, "X")
println("Значений датчика X: $(length(x_vals))")
主要。工程师。EULER_API.新闻时间-Method
EULER_API.journalTime(session, index) -> Float64
按索引返回日志点的模型时间(以秒为单位)。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。 -
索引:Int64:点索引(索引计数从0).
主要。工程师。EULER_API.开放项目-Method
EULER_API.openProject(session, path) -> String
打开欧拉项目(该。elr文件)。 打开后,命令,传感器和参数可用。 以字符串形式返回上载项目的路径;如果发生错误,将引发异常。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。 -
路径::字符串:完整的路径。elr文件。
例子
项目开幕:
project = raw"C:\Users\Public\Engee\sample_project.elr"
EULER_API.openProject(session, project)
println("Проект открыт: $project")
主要。工程师。EULER_API.[医][医][医][医]-Method
EULER_API.runAnyCommand(session, command, step=1) -> Nothing
运行自定义命令*,没有时间限制*。 该计算在命令自然完成之前执行。 仅在研究模式下可用。
发生错误时会引发异常。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。 -
命令::String:球队的名字。 -
步骤::Int64:输出步骤。 默认情况下1.
主要。工程师。EULER_API.n.跑动,跑动-Method
EULER_API.runCommand(session, command, calc_time=10.0, step=1.0) -> Nothing
运行具有时间限制的自定义命令。 计算将在到达时停止 钙时间 模型时间的秒数或命令结束时,以先到者为准。 仅在研究模式下可用(n.集,集).
发生错误时会引发异常。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。 -
命令::字符串:球队名称(从列表中[医]商业). -
calc_时间::Float64:模型时间的最大计算持续时间(以秒为单位)。 默认情况下10.0. -
步骤::Float64:此命令的输出步骤。 默认情况下1.0(积分器的每个步骤)。
主要。工程师。EULER_API.保存项目-Method
EULER_API.saveProject(session) -> Nothing
保存当前项目。 更改将写入原始更改。的elr文件。
发生错误时会引发异常。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。
主要。工程师。EULER_API.储蓄者-Method
EULER_API.saveResults(session, path) -> Nothing
将计算结果保存到.epp(欧拉项目包)文件。
发生错误时会引发异常。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。 -
路径::字符串:路径保存。epp文件。
#
主要。工程师。EULER_API.n.集,集-Method
EULER_API.setCalcRegime(session) -> Nothing
使项目进入研究(计算)模式。 命令可以在此模式下运行(n.跑动,跑动, [医][医][医][医])和传感器读数。 更改标量不可用。
发生错误时会引发异常。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。
主要。工程师。EULER_API.[医]集-Method
EULER_API.setEditRegime(session) -> Nothing
将项目切换到编辑模式。 在这种模式下,您可以通过以下方式更改参数(标量 [医]集. 计算启动不可用。
发生错误时会引发异常。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。
主要。工程师。EULER_API.n.输出,输出-Method
EULER_API.setOutputParam(session, step_out=1, time_out=0.0, before_event=false, after_event=false) -> Nothing
调整用于在计算日志中显示结果的参数。
发生错误时会引发异常。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。 -
step_out::Int64:输出步骤。 每个第n个计算点进入日志。 默认情况下1. -
time_out::Float64:输出频率根据模型时间以秒为单位。 默认情况下0.0(禁用,仅使用step_out). -
before_event::Bool:是否在事件发生前保存一个点。 默认情况下错误--不要保存。 -
after_event::Bool:事件后是否保存点。 默认情况下错误--不要保存。
主要。工程师。EULER_API.[医]集-Method
EULER_API.setScalar(session, name, value) -> Nothing
按名称设置标量参数的值。 仅在编辑模式下可用([医]集).
发生错误时会引发异常。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。 -
名称::字符串:标量的名称(例如,"外汇","弥撒"). -
价值:Float64:一个新的标量值。
例子
更改标量参数(仅在编辑模式下可用):
EULER_API.setEditRegime(会话)
EULER_API.setScalar(会议,"质量",2.0)
println("标量质量=2.0")
主要。工程师。EULER_API.startCalc-Method
EULER_API.startCalc(session) -> Nothing
将模型时间重置为 0.0 (起始位置)并初始化计算。 它在第一个命令之前被调用一次。 n.跑动,跑动 或 [医][医][医][医].
发生错误时会引发异常。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。
例子
限时命令启动(仅在研究模式下可用):
EULER_API.setCalcRegime(session)
EULER_API.startCalc(session)
EULER_API.setOutputParam(session, 10, 0.0)
EULER_API.runCommand(session, "RK4_coarse", 15.0)
println("Расчет запущен (с ограничением 15 с)")
运行没有时间限制的命令(该命令运行到自然完成为止。):
EULER_API.startCalc(session)
EULER_API.runAnyCommand(session, "RK4_coarse")
println("Расчет запущен (без ограничения времени)")
主要。工程师。EULER_API.权宜之计-Method
EULER_API.stopCalc(session) -> Nothing
停止当前计算。 它可以在启动后随时调用。 n.跑动,跑动 或 [医][医][医][医]. 停止的时刻可以通过 getcurrent时间.
发生错误时会引发异常。
论点
-
会话::元组{Main.EngeeDeviceManager.EULER_API.EulerSession}:会话对象。
例子
停止计算:
EULER_API.stopCalc(session)
stop_time=EULER_API。getCurrentTime(会话)
println("计算停止。 停止时间:$stop_time with")
操作模式
打开后,项目处于编辑模式—您可以打开/关闭项目,通过以下方式更改参数(标量 [医]集. 在此模式下无法启动计算。 要运行模型,请切换到研究模式(n.集,集),之后就可以运行命令(n.跑动,跑动, [医][医][医][医])和在计算过程中读取传感器(getSensorValue,getSensorValue, 期刊价值),但更改标量将被阻止。 模式之间的切换是通过 [医]集 和 n.集,集.
示例:模拟投掷一个重量为1公斤,直径为20厘米的球,并显示轨迹
安装后 硬件支持包完成:
using Main.EngeeDeviceManager
using Main.EngeeDeviceManager.EULER_API
using Main.EngeeDeviceManager.UTILS_API
创建会话:
session = EULER_API.createSession()
ver = EULER_API.getVersion(session)
println("Версия ЭЙЛЕР: $ver")
Версия ЭЙЛЕР: Solver 13.05.43.beta Pro (Windows x64)
上传测试项目:
engee.package.getdemos("Engee-Device-Manager")
"/user/Engee-Device-Manager-demos"
首先,我们将复制测试文件。演示文件夹中的elr文件 AnyMath 至
用户的计算机通过模块 Utils的:
# Создаем объект Utils для файловых операций
utils = UTILS_API.Utils()
# Определяем пути к демонстрационному проект ЭЙЛЕР в Engee и директории, куда будет скопирован проект
euler_local_project_path = "/user/Engee-Device-Manager-demos/example_euler/sample_project.elr"
host_project_dir = raw"C:\Users\Public\Engee"
# Создаем тестовую директорию и загружаем проект на хост
UTILS_API.createFolder(utils, host_project_dir, "")
UTILS_API.uploadFile(utils, euler_local_project_path, host_project_dir)
println("Проект загружен в $host_project_dir")
Проект загружен в C:\Users\Public\Engee
打开项目并启动计算:
# Открываем проект
project_path = joinpath(host_project_dir, "sample_project.elr")
EULER_API.openProject(session, project_path)
println("Проект открыт: $project_path")
# Получаем список доступных команд
cmds = EULER_API.getUserCommands(session)
println("Доступные команды: $cmds")
# Переключаем в режим исследования проекта
EULER_API.setCalcRegime(session)
println("Режим исследования проекта")
# Настраиваем вывод каждого 10-го шага
EULER_API.setOutputParam(session, 10, 0.0)
# Запускаем расчет на 15 секунд
EULER_API.runCommand(session, "RK4_coarse", 15.0)
println("Расчет запущен")
Проект открыт: C:\Users\Public\Engee/sample_project.elr
Доступные команды: RK4_fine;RK4_coarse;
Режим исследования проекта
Расчет запущен
取得成果:
# Получаем все точки из журнала расчета
x_vals = EULER_API.journalSensorValues(session, "X")
y_vals = EULER_API.journalSensorValues(session, "Y")
n_points = length(x_vals)
println("Получено $n_points точек")
# Выводим первые и последние точки
println("Первая точка: X=$(round(x_vals[1], digits=2)) м, Y=$(round(y_vals[1], digits=2)) м")
if n_points > 1
println("Последняя точка: X=$(round(x_vals[end], digits=2)) м, Y=$(round(y_vals[end], digits=2)) м")
end
Получено 1447 точек
Первая точка: X=0.0 м, Y=0.0 м
Последняя точка: X=1019.72 м, Y=-0.0 м
轨迹的可视化:
using Plots
# Получаем время каждой точки (значения датчик "t")
t_vals = EULER_API.journalSensorValues(session, "t")
# График высоты от времени
plot(t_vals, y_vals,
xlabel = "Время, с",
ylabel = "Высота Y, м",
title = "Траектория броска шара
D = 20 см
m = 1 кг",
legend = false,
linewidth = 2,
color = :blue,
size = (600, 400)
)
hline!([0.0], color = :orange, linewidth = 1, linestyle = :dash, label = "Земля")

完成工作:
EULER_API.closeSession(session)
println("Сеанс завершен")
会议结束了