【问题标题】:Editing file name when using export-view in Netlogo在 Netlogo 中使用导出视图时编辑文件名
【发布时间】:2020-03-22 05:47:37
【问题描述】:

我想使用 export-view 来保存我的模型的图像。我在界面中制作了一个按钮,用于从 Netlogo 导出图像(JPG、PNG 或 PDF)。

这是我当前在导出视图按钮中的代码

file-open user-new-file
export-view (word "view1.jpg")
set view-number view-number + 1

目前,file-open 命令有助于在保存前显示弹出输入窗口。存在“FILE-OPEN 预期输入为字符串但得到 TRUE/FALSE 错误”的运行时错误。我仍然可以保存文件,但这个弹出窗口时不时出现

首先尝试我可以连续保存文件。现在,它每次只保存一个名为 view1 的文件。新代码有问题吗?

【问题讨论】:

  • (1) 请在添加前检查标签的用途。 (2) 您的意思是交互式编辑文件名,还是希望用户输入文件名或其他内容?
  • 注意到第一项,抱歉我对堆栈溢出很陌生。我的想法是有一个弹出输入窗口,我可以在其中更改文件名,然后再保存。

标签: view save export netlogo


【解决方案1】:

查看 NetLogo 字典中的 user-new-file 原语。这允许您获取用户输入,然后您可以使用 word 原语以与您现在相同的方式进行保存。

完整代码的简短版本是:

to testme1
  export-view user-new-file
end

为了全面了解发生了什么,这里有一个更长的版本:

to testme2
  let fn user-new-file
  print fn
  set fn word fn ".png"
  print fn
  if file-exists? fn [file-delete fn]
  file-open fn
  export-view fn
  file-close
end

所以实际发生的是user-new-file 为用户输入的任何内容返回一个字符串。您可以直接将该字符串与export-view 一起使用,或者您可以稍微操作一下然后使用它。我不完全清楚您为什么会收到该特定错误,但您拥有的代码正在创建/打开一个名称与您尝试导出到的名称不同的文件。

例如,在我的 testme2 代码中,我在假设用户没有键入此内容的情况下附加了“png”扩展名。在实际应用程序中,您可以查看最后 3 个字符并仅在需要时添加扩展名。我的较长代码还会删除该名称的任何现有文件 - 我认为 png 视图不需要这样做,因为我认为 NetLogo 只会覆盖,但导出到 csv 会在末尾添加行。

【讨论】:

  • 嗨 JenB,我将“filename-user-new-file”应用于我的模型。确实会出现一个“弹出”窗口。它确实保存了一个文件,但我仍然无法更改文件名。所以我决定把你的建议和查尔斯的建议结合起来。
  • 我刚刚遇到“FILE-OPEN 预期输入为字符串,但 TRUE/FALSE 为 false”的运行时错误。我仍然可以保存文件,但此弹出窗口时不时弹出
  • 查看我修改后的答案
  • 您好 JenB,感谢您的修订。你的回答与我的问题相符。而且,较长的版本更适合我。
【解决方案2】:

JenB 的答案可能正是您想要的。但是为了涵盖您的原始文件名所建议的另一种可能性,您可能希望对多个导出文件进行编号,可能每隔几个滴答声或发生有趣的事情时导出一次,或者只要按下export-view 按钮就可以导出。在这种情况下,如果你定义一个全局变量比如view-number,你就可以使用代码

export-view (word "view" view-number ".jpg")
set view-number view-number + 1

这将为您提供连续的文件“view0.jpg”、“view1.jpg”、“view2.jpg”...view-number 初始化为 0,但如果您愿意,可以从其他数字开始。

【讨论】:

  • 您好 Charles,您的回答有助于完成代码。我可以点击我的导出视图按钮,它会连续保存它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 2019-06-09
  • 2020-02-23
  • 1970-01-01
相关资源
最近更新 更多