如果您有一个数据文件,该文件需要定期更新,或者被多个 Configurator 360 设计需要,则不必每个设计都上传一个副本,而是将数据文件上传为共享文件。在您的设计规则中,您可以使用标准的 .NET 或 Intent 函数读取共享文件的内容。共享文件可以随时更新,而不会更改或更新设计。
数据文件可以来自于任何源,包括数据库、Excel 或手动编辑的 CSV 或 XML 文件。
在 Configurator 360 的“管理员”界面中,选择“选项”选项卡
“共享的文件”选项卡。
单击“选择文件”按钮以选择并上传要共享的文件。根据需要,使用“新建文件夹”按钮创建子文件夹。这些文件将共享给所有目录管理员。
将 iLogicVb 文件复制到您的 Inventor 项目工作空间文件夹以外的文件夹(例如 C:\iLogicRules)中。这是一个用于外部 iLogic 规则的全局文件夹。
接下来,转至“工具”
“选项”
“iLogic 配置”命令以将 iLogic 指向此文件夹。此命令位于“选项”面板底部的下拉菜单中。
将 Intent 搜索路径中的三个 IKS 文件包括在内。建议的位置为 ivHostlib(例如,C:\Program Files\Autodesk\Inventor ETO 20xx\Library\Inventor\ivhostlib)。
该函数定义如下:
Function GetSharedDataFile(sharedFilePath As String) As String
sharedFilePath 是共享文件的路径(相对于根文件夹)。使用正斜杠或反斜杠作为路径中的目录分隔符。如果此文件位于根文件夹中,请提供“filename.ext”。执行完成后,该函数将返回此文件的完整 Windows 路径。
1. 从名为 C360_RefreshSharedData 的规则中调用此函数。
2. 在包含您的 C360 可见参数的文档中创建此规则。所有共享数据必须从此规则中进行检索。当加载您的设计时,Configurator 360 会运行此规则以确保它使用最新版的共享数据。
3. 使用任何文件读取函数访问此文件的内容。
对 GetSharedDataFile() 函数的调用是从特定包装器部分中进行的。请按照以下步骤进行操作
Design MySharedFileCollection : C360CommonFileCollection
Child MySharedFile As :C360SharedDataFile
SharedPath = "MyFile.txt"
End Child
End Design
在此设计中,每个子部分都含有一个共享文件。添加任何您需要的部分。系统会使用 SharedPath 参数作为 GetSharedDataFile() 函数的参数。
Dim localPath As String = MySharedFileCollection.MySharedFile.LocalPath
在 ETO Intent 中,您可以访问代码中任意位置的共享数据。iLogic 的上述限制均不适用于 ETO。
随时更新 Configurator 360 上的共享文件。第一次在 Configurator 360 建模会话中参考共享文件时,Configurator 360 会检查是否存在该文件的较新版本。新会话将使用所有文件的最新版本。如果您在运行会话时更新了文件,正在运行的会话不会检测较新版本。仅后续会话才会查看较新版本。
如果您打开了保存有使用一个或多个共享文件中的数据创建的 RFQ(报价申请)的模型,则该模型将继续参考最初生成该模型时会话中使用的原始(旧)版本。
Configurator 360 不会检测共享文件之间的相互依存性。为了简化更新,最好将所有从属信息(例如,来自同一数据库中的两个表)合并到一个文件。通过将它们合并到一个文件,可以避免潜在的问题。如果执行了该操作,单个 Configurator 360 会话则无法将某个文件的新版本与另一个文件的不兼容的较旧版本一起加载。如果将这两个表存储在了两个不同的文件中,则可能会发生错误。
请勿在同一设计中混合使用 ETO 和 iLogic 规则访问共享数据文件。如果您的 ETO 设计合并了包含 iLogic 规则的零件或子部件,则这些规则不应访问共享数据文件,而是要从 Intent 规则读取所有共享数据,并将所需的值传递给 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