В iLogic содержатся функции для правил, позволяющие читать данные из таблиц Microsoft® Excel и записывать в них данные. Чтобы перейти к функциям работы с ссылками на данные Excel, разверните узел Excel Data Links на вкладке "Система" в области "Фрагменты".
Там доступны два вида функций работы с ссылками на данные Excel:
Чтобы выполнять чтение и запись данных в файлы других форматов, необходимо добавить в правила пользовательский код VB.NET.
Используйте специальную функцию ThisBOM.Export, чтобы экспортировать спецификацию сборки в таблицу Microsoft® Excel и файлы других форматов.
Данные Microsoft® Excel можно внедрить в документ Autodesk Inventor, связать с этим документом или хранить их в виде внешнего файла. Для этих функций необходимо указать либо имя файла, либо спецификации связанного или внедренного файла Excel.
При указании имени файла можно задать относительный или абсолютный путь. Однако использование абсолютного пути усложнит отправку модели другому пользователю на другом компьютере. Если путь не указан, iLogic предполагает, то документ Excel находится в той же папке, что и текущий документ Inventor. Относительный путь интерпретируется относительно папки, содержащей документ Inventor.
iLogic также выполняет поиск файла в папке рабочего пространства проекта. Можно использовать относительный путь в папке рабочего пространства проекта.
Поддерживаются следующие расширения имен файлов: .xls, .xlsx, .xlsm и .xlsb.
Вместо имени файла можно также указать связанную или внедренную таблицу. Используйте синтаксис 3rd Party:Embedding# для внедренных электронных таблиц.
Используйте синтаксис 3rd Party:LinkedName.xls для связанных электронных таблиц. Укажите имя, отображаемое в дереве модели Autodesk Inventor в разделе Сторонние объекты.
Чтобы внедрить таблицу, используйте кнопку Связь в диалоговом окне "Параметры". Не изменяйте имя внедренной таблицы по умолчанию, присвоенное Autodesk Inventor (например, Embedding 1). Для функции GoExcel требуется исходное имя.
Чтобы связать файл, выберите вкладку "Управление" панель "Вставка" "Вставить объект" или используйте команду Связать в диалоговом окне "Параметры".
Выполняет поиск строки на основе одного или нескольких критериев значения столбца.
Синтаксис
GoExcel.FindRow("имя_файла", "имя_листа", "заголовок первого столбца", "оператор", искомое значение, "заголовок второго столбца", "оператор", искомое значение, "заголовок третьего столбца" и т. д.)
"имя_файла"
Задает файл данных.
"имя_листа"
Лист в документе Excel, содержащей таблицу, по которой будет выполняться поиск. В качестве листа можно указать любой существующий лист.
"заголовок первого столбца"
Заголовок первого столбца в таблице, по которой будет выполняться поиск. Обычно заголовки столбцов находится в первой строке и начинаются со столбца A.
"оператор"
Возможны следующие значения:
Найти строку, где значение в столбце меньше или равно указанному значению.
Найти строку, где значение в столбце больше или равно указанному значению.
Найти строку, где значение текстового или числового столбца совпадает с указанным значением.
искомое значение
Текстовое или числовое значение, которое можно задать явно, а так же с помощью параметра или локальной переменной.
"заголовок второго столбца"
Заголовок второго столбца в таблице, по которой будет выполняться поиск.
"оператор"
<= , >= или =
искомое значение
"заголовок третьего столбца"
Найти строку на основе нескольких критериев.
Возвращаемый результат
Номер строки (целое число), соответствующей критериям поиска. Значение "-1", если такую строку найти не удалось.
Возможные ошибки
Требования к таблице Excel
Примеры
В этих примерах значение переменной параметра i присваивается номеру строки в таблице. Dia равно 0,2, а Len больше или равно 4,1. В первом примере выполняется обращение к внешней таблице, а во втором — к внедренной таблице.
i = GoExcel.FindRow("mytable.xls", "Sheet1", "Dia", "=", 0.2, "len", ">=",4.1)
i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "Dia", "=", 0.2, "len",">=", 4.1)
В этих примерах строки 5, 6 и 7 соответствуют первому условию (Dia=0,2). Однако только строка 7 соответствует обоим критериям (Dia=0,2 и len>=4,1).
Считывается значение из строки, найденной с помощью функции GoExcel.FindRow.
Синтаксис
GoExcel.CurrentRowValue("имя столбца")
"имя столбца"
Имя заголовка столбца для значения ячейки, которое необходимо извлечь из текущей строки.
Возвращаемый результат
Значение ячейки из столбца в текущей строке, которая была ранее найдена с помощью функции GoExcel.FindRow.
Ошибки
Возвращает сообщение об ошибке, если столбец не найден.
Пример
i = GoExcel.FindRow("iLogic_SCHS.xls", "Sheet1", "thread_diameter", "=", Screw_Size, "screw-length", ">=", screw_length_required) thread_diameter = GoExcel.CurrentRowValue("thread_diameter") screw_length = GoExcel.CurrentRowValue("screw_length") head_diameter = GoExcel.CurrentRowValue("head_diameter") head_thickness = GoExcel.CurrentRowValue("head_thickness") socket_size = GoExcel.CurrentRowValue("socket_size") thread_pitch = GoExcel.CurrentRowValue("thread_pitch")
Читает или пишет значения в ячейки таблицы.
Синтаксис
GoExcel.CellValue("имя_файла", "имя_листа", "номер_ячейки")
"имя_файла"
См. раздел "Задание файла Excel".
"имя_листа"
Имя листа в документе Excel, содержащем требуемую ячейку. В качестве листа можно указать любой существующий лист.
"номер_ячейки"
Адрес ячейки, в которой следует читать или записывать значение (например, "A7"). Можно также задать именованный диапазон внутри диапазона таблицы.
Возвращаемый результат
Ошибки
Требования к формату таблицы Excel
Значения ячеек могут быть числовыми или текстовыми.
Примеры
Читать из внедренной таблицы:
head_rad = GoExcel.CellValue("3rd Party:Embedding 4", "Sheet1","A1")
Выполнить запись во внедренную таблицу:
GoExcel.CellValue("3rd Party:Embedding 4", "Sheet1", "A1")= head_rad
Читать из внешней таблицы:
head_rad = GoExcel.CellValue("Spreadsheet.xlsx", "Sheet1", "A5") message =GoExcel.CellValue("Spreadsheet.xlsx", "Sheet1", "B5")
Выполнить запись во внешнюю таблицу:
GoExcel.CellValue("Spreadsheet.xls", "Sheet1", "A6") = "Hello World" GoExcel.Save
Выполняется чтение или запись в ячейку с определенным адресом в таблицу после использования функции GoExcel.CellValue или GoExcel.Open. Эта функция использует ранее открытый файл и лист.
Синтаксис
GoExcel.CurrentCellValue("номер_ячейки")
GoExcel.CellValue("номер_ячейки") (без указания имен файла и листа)
"номер_ячейки"
Адрес ячейки или именованный диапазон значения ячейки, из которой следует выполнить чтение или которое следует записать в текущую таблицу.
Возвращаемый результат
Значение ячейки по заданному номеру ячейки.
Ошибки
Примеры
Читать последовательность ячеек из одной таблицы:
head_rad = GoExcel.CellValue("Spreadsheet.xlsx","Sheet1","A1") head_thick = GoExcel.CellValue("B1") pin_length = GoExcel.CellValue("C1") shaft_rad = GoExcel.CellValue("D1")
Записать в последовательность ячеек в документе электронной таблицы:
GoExcel.CellValue("Spreadsheet.xlsx","Sheet1","A1") = head_rad GoExcel.CellValue("B1") = head_thick GoExcel.CellValue("C1") = pin_length GoExcel.CellValue("D1") = shaft_rad GoExcel.Save
Используется аналогично функции CellValue. Вместо адреса ячейки укажите именованный диапазон, определенный в книге Excel. В качестве имени необходимо использовать имя внутри книги Excel, а диапазон должен быть ограничен одной ячейкой. Можно вызвать именованные диапазоны внутри диапазона книги Excel, используя стандартный синтаксис CellValue, указав вместо адреса ячейки имя.
Используйте GoExcel.CellValue или GoExcel.Open, чтобы открыть файл Excel до использования NamedRangeValue в правиле.
Синтаксис
GoExcel.NamedRangeValue("длина_штифта")
Открывает указанную таблицу Excel и может использоваться для активизации именованного листа. Затем можно использовать такие функции, как GoExcel.FindRow и GoExcel.CellValue, чтобы извлечь сведения из листа или изменить его.
Синтаксис
GoExcel.Open("имя_файла", "имя_листа")
"имя_файла"
См. раздел "Задание файла Excel".
"имя_листа"
Имя листа в документе Excel, который необходимо активизировать. В качестве листа можно указать любой существующий лист.
Возвращаемый результат
Нет
Ошибки
Не удалось найти файл Excel.
Примеры
Если имя листа не задано, предполагается, что он называется "Лист1".
GoExcel.Open("Spreadsheet.xls")
Также можно указать и другой лист.
GoExcel.Open("Spreadsheet.xls", "MyOtherSheet")
Сохраняет текущий документ Excel. Используйте эту функцию, если ячейки были изменены в результате применения функций GoExcel.CellValue или GoExcel.CurrentCellValue.
Возвращаемый результат
Нет
Ошибки
Нет
Пример
GoExcel.CellValue("Spreadsheet.xls", "Sheet1", "A1") = "Hello, World!" GoExcel.CellValue("A2") = 5.42 GoExcel.Save
Эта функция предназначена для выполнения двух задач:
Чтение из таблицы Excel
Чтение из вертикально ориентированного диапазона ячеек. Функция считывает значения, начиная с первой ячейки, и продолжает двигаться вниз до достижения второй ячейки, указанной для функции:
Multivalue.List("parameter") = GoExcel.CellValues("filename.xls", "Sheet1", "A1", "A10")
Если вместо адреса второй ячейки указана пустая строка (""), чтение начинается с ячейки с первым адресом и продолжается вниз до достижения первой пустой ячейки:
Multivalue.List("parameter") = GoExcel.CellValues("filename.xls", "Sheet1", "A1", "")
Чтение из горизонтально ориентированного диапазона ячеек:
Multivalue.List("parameter") = GoExcel.CellValues("filename.xls", "Sheet1", "A1", "J1")
Если на таблицу уже ранее была ссылка в правиле, то можно опустить имя файла и листа:
Multivalue.List("parameter") = GoExcel.CellValues("B2", "G2")
Запись в таблицу Excel
Запись в вертикально ориентированный диапазон ячеек. Функция записывает значения, начиная с первой ячейки, и продолжает двигаться вниз до достижения второй ячейки, указанной для функции:
GoExcel.CellValues("filename.xls", "Sheet1", "A2", "A10") = Multivalue.List("parameter")
Запись в вертикально ориентированный диапазон ячеек. Если вместо адреса второй ячейки указана пустая строка (""), iLogic использует столько ячеек, сколько окажется необходимым для записи всех значений списка:
GoExcel.CellValues("filename.xls", "Sheet1", "A2", "") = Multivalue.List("parameter")
Запись значений в горизонтально ориентированный диапазон ячеек:
GoExcel.CellValues("filename.xls", "Sheet1", "A1", "J1") = Multivalue.List("parameter")
Если на таблицу уже ранее была ссылка в правиле, то можно опустить имя файла и листа:
GoExcel.CellValues("B2", "G2") = Multivalue.List("parameter")
Закрывает текущую таблицу Excel.
Используется до функции GoExcel.FindRow для указания номера строки в таблице, в которой содержатся имена столбцов. Номер строки по умолчанию: 1. Измените это значение, если до строки с именами столбцов имеются дополнительные строки.
Пример
GoExcel.TitleRow = 2
Используется до функции GoExcel.FindRow для задания номера первой строки таблицы, содержащей данные. Номер строки по умолчанию: 2.
Синтаксис
GoExcel.FindRowStart = <строка>
<строка>
Строка, в которой начинаются данные.
Примеры
Значение по умолчанию "2" означает, что данные начинаются во второй строке, которая следует после одной строки заголовка:
GoExcel.FindRowStart = 2
Если для заголовка использовано две строки, добавьте к правилу следующий оператор перед оператором, содержащим GoExcel.FindRow:
GoExcel.FindRowStart = 3
Предоставляет доступ к правилам iLogic из операции смены источника.
Эта функция используется для замены текущей таблицы Excel, на которой основана модель, другой таблицей. После этого размеры модели задаются на основе значений, содержащихся в новой таблице.
Синтаксис
changeOK = GoExcel.ChangeSourceOfLinked(partialOldName, newName)
partialOldName
Часть имени заменяемой таблицы.
partialOldName может быть пустой строкой "", тогда команда относится к первому связанному файлу Excel. Часто у детали или сборки есть только один файл Excel.
newName
Полное имя новой таблицы, которое может быть абсолютным или относительным именем файла.
Пример
If size = "small" Then changeOK = GoExcel.ChangeSourceOfLinked("pipe"," smallpipe.xlsx") ElseIf size = "medium" Then changeOK = GoExcel.ChangeSourceOfLinked("pipe", "mediumpipe.xlsx") ElseIf size = "large" Then changeOK = GoExcel.ChangeSourceOfLinked("pipe", "largepipe.xlsx") End If
Используется в сочетании с функцией GoExcel.FindRow для поиска значения, принадлежащего заданному диапазону, а не точного значения. Значение допуска по умолчанию составляет 0,0000001 и не зависит от единиц измерения документа.
Синтаксис
GoExcel.Tolerance = <допуск>
Задайте более высокое значение допуска, чтобы расширить диапазон приемлемых значений.
Пример
Оператор поиска используется следующим образом:
GoExcel.Tolerance = 0.001 i = GoExcel.FindRow("Table1.xlsx", "Sheet1", "length", "=", 2.3)
Этот оператор аналогичен следующей операции поиска без допуска:
i = GoExcel.FindRow("Table1.xlsx", "Sheet1", "length", ">=", 2.299, "length","<=", 2.301)
Подавляет отображение диалоговых окон Excel с запросами.
Синтаксис
GoExcel.DisplayAlerts = истина
GoExcel.DisplayAlerts = ложь
Истина
Отображать запросы Microsoft® Excel (по умолчанию).
Ложь
Не отображать запросы Excel.
Предоставляет доступ к объекту приложения Excel. Используйте эту функцию только при достаточном опыте работы с интерфейсом Excel сом. До использования этой функции в правиле вызовите другую функцию GoExcel для инициализации приложения.
Синтаксис
excelApp = GoExcel.Application