在设计中共享文件

如果您有一个数据文件,该文件需要定期更新,或者被多个 Configurator 360 设计需要,则不必每个设计都上传一个副本,而是将数据文件上传为共享文件。在您的设计规则中,您可以使用标准的 .NET 或 Intent 函数读取共享文件的内容。共享文件可以随时更新,而不会更改或更新设计。

数据文件可以来自于任何源,包括数据库、Excel 或手动编辑的 CSV 或 XML 文件。

共享文件的步骤

  1. 在 Configurator 360 的“管理员”界面中,选择“选项”选项卡 “共享的文件”选项卡。

  2. 单击“选择文件”按钮以选择并上传要共享的文件。根据需要,使用“新建文件夹”按钮创建子文件夹。这些文件将共享给所有目录管理员。

注: 如果您有多个目录管理员,则会与所有管理员共享此文件夹。如果您在此数据文件夹中创建了子文件夹,则需要在本地文件夹中创建相应的子文件夹,如下一节中所述。

在 iLogic 和 ETO 规则中使用共享文件

  1. 将数据文件放置在名为 C:\C360_A360\ 的本地文件夹中。
    注: 若要使用其他文件夹,请创建一个名为 C:\C360_A360\LocalFolderPath.txt 的文件。在此文本文件中,添加一行,该行包含您选择使用的文件夹的完整路径。
  2. 安装辅助函数。Autodesk 针对 iLogic 和 ETO 规则提供了在本地计算机上运行的 GetSharedDataFile 函数版本。对于 ETO,安装两个 Intent 设计文件。若要访问这些文件,请参见 Autodesk Configurator 360 样例

    对于 iLogic

    将 iLogicVb 文件复制到您的 Inventor 项目工作空间文件夹以外的文件夹(例如 C:\iLogicRules)中。这是一个用于外部 iLogic 规则的全局文件夹。

    接下来,转至“工具”“选项”“iLogic 配置”命令以将 iLogic 指向此文件夹。此命令位于“选项”面板底部的下拉菜单中。

    注: 请勿将此文件包含在您要上传到 Configurator 360 的数据中。

    对于 ETO

    将 Intent 搜索路径中的三个 IKS 文件包括在内。建议的位置为 ivHostlib(例如,C:\Program Files\Autodesk\Inventor ETO 20xx\Library\Inventor\ivhostlib)。

  3. GetSharedDataFile() 函数支持您访问共享文件。

    该函数定义如下:

    Function GetSharedDataFile(sharedFilePath As String) As String

    sharedFilePath 是共享文件的路径(相对于根文件夹)。使用正斜杠或反斜杠作为路径中的目录分隔符。如果此文件位于根文件夹中,请提供“filename.ext”。执行完成后,该函数将返回此文件的完整 Windows 路径。

    在 iLogic 中

    1. 从名为 C360_RefreshSharedData 的规则中调用此函数。

    2. 在包含您的 C360 可见参数的文档中创建此规则。所有共享数据必须从此规则中进行检索。当加载您的设计时,Configurator 360 会运行此规则以确保它使用最新版的共享数据。

    3. 使用任何文件读取函数访问此文件的内容。

    4. 选择以下方法之一继续操作:
    • 立即将从此文件中读取的所有数据存储在永久 Inventor 数据结构中。例如,参数、特性、属性。这些数据不仅存储在内存中,而且随 Inventor 文件一起保存。这种方法方便可靠,但有时在效率上不如以下方法。
    • 将从此文件中读取的部分或全部数据存储在 iLogic SharedVariables(或其他非永久性内存)中,以便将来供其他规则使用。通常在其他以后的规则中参考这些 SharedVariables。接收新数据时,从 C360_RefreshSharedData 运行这些其他规则。这种方法可以最大程度地减少耗时的文件操作,但由于会忽略从 C360_RefreshSharedData 中调用这些其他规则,因此很容易出错。

    在 ETO Intent 中

    对 GetSharedDataFile() 函数的调用是从特定包装器部分中进行的。请按照以下步骤进行操作

    1. 在项目中创建设计。从 C360CommonFileCollection 设计衍生得到该设计。示例如下:
      Design MySharedFileCollection : C360CommonFileCollection
         Child MySharedFile As :C360SharedDataFile
           SharedPath = "MyFile.txt"
         End Child
      End Design
      

      在此设计中,每个子部分都含有一个共享文件。添加任何您需要的部分。系统会使用 SharedPath 参数作为 GetSharedDataFile() 函数的参数。

    2. 在您的根设计中,添加用于实现 MySharedFileCollection 设计的子部分。
    3. 若要获取共享文件的完整 Windows 路径,请读取 C360SharedDataFile 子部分上 LocalPath 规则的值。示例如下:
      Dim localPath As String = MySharedFileCollection.MySharedFile.LocalPath

      在 ETO Intent 中,您可以访问代码中任意位置的共享数据。iLogic 的上述限制均不适用于 ETO。

  4. 在本地测试后,按如上所述将共享数据文件上传到 Configurator 360。
  5. 将您的设计上传到 Configurator 360。
    注: 在上传尝试访问您的数据文件的任何设计之前,上传这些共享数据文件。

文件版本

随时更新 Configurator 360 上的共享文件。第一次在 Configurator 360 建模会话中参考共享文件时,Configurator 360 会检查是否存在该文件的较新版本。新会话将使用所有文件的最新版本。如果您在运行会话时更新了文件,正在运行的会话不会检测较新版本。仅后续会话才会查看较新版本。

如果您打开了保存有使用一个或多个共享文件中的数据创建的 RFQ(报价申请)的模型,则该模型将继续参考最初生成该模型时会话中使用的原始(旧)版本。

Configurator 360 不会检测共享文件之间的相互依存性。为了简化更新,最好将所有从属信息(例如,来自同一数据库中的两个表)合并到一个文件。通过将它们合并到一个文件,可以避免潜在的问题。如果执行了该操作,单个 Configurator 360 会话则无法将某个文件的新版本与另一个文件的不兼容的较旧版本一起加载。如果将这两个表存储在了两个不同的文件中,则可能会发生错误。

限制

请勿在同一设计中混合使用 ETO 和 iLogic 规则访问共享数据文件。如果您的 ETO 设计合并了包含 iLogic 规则的零件或子部件,则这些规则不应访问共享数据文件,而是要从 Intent 规则读取所有共享数据,并将所需的值传递给 iLogic 零部件。

样例 iLogic 规则

从 iLogic 中的 C360_RefreshSharedData 规则读取一个或多个共享文件。

以下是 C360_RefreshSharedData 规则的一个简单示例:

AddVbFile 语句提供 GetSharedDataFile 函数。

AddVbFile "C360SharedFilesAccess.iLogicVb"

Dim localPath As String = GetSharedDataFile("WidthFactor.txt")
Dim fileContents As String = IO.File.ReadAllText(localPath)

Dim widthFactorX As Double
If Double.TryParse(fileContents, widthFactorX) Then
 Parameter("WidthFactor") = widthFactorX
End If

此规则读取在单一行中包含一个数字值的文本文件。此规则将该值赋给名为 WidthFactor 的参数。然后,可以在其他规则中使用此参数以在两个参数之间建立关系:

Width = Length * WidthFactor