В iLogic содержатся функции для правил, позволяющие читать данные из таблиц Microsoft® Excel и записывать в них данные. Для доступа к функциям, отвечающим за связь с данными Excel, в диалоговом окне редактирования правил iLogic на вкладке "Система" в области "Фрагменты" разверните узел "Ссылки на данные Excel".
Там доступны два вида функций работы с ссылками на данные Excel:
Чтобы выполнять чтение и запись данных в файлы других форматов, необходимо добавить в правила пользовательский код VB.NET.
Используйте специальную функцию ThisBOM.Export, чтобы экспортировать спецификацию сборки в таблицу Microsoft® Excel и файлы других форматов.
Данные Microsoft® Excel можно встроить в документ Inventor, связать с этим документом или хранить их в виде внешнего файла. Для этих функций необходимо указать либо имя файла, либо спецификации связанного или внедренного файла Excel.
При указании имени файла можно задать относительный или абсолютный путь. Однако использование абсолютного пути усложнит отправку модели другому пользователю на другом компьютере. Если путь не указан, iLogic предполагает, то документ Excel находится в той же папке, что и текущий документ Inventor. Относительный путь интерпретируется относительно папки, содержащей документ Inventor.
iLogic также выполняет поиск файла в папке рабочего пространства проекта. Можно использовать относительный путь в папке рабочего пространства проекта.
Поддерживаются следующие расширения имен файлов: .xls, .xlsx, .xlsm и .xlsb.
Вместо имени файла можно также указать связанную или внедренную таблицу. Для работы с внедренными электронными таблицами используется синтаксис 3rd Party:Embedding#.
Для работы со связанными электронными таблицами используется синтаксис 3rd Party:LinkedName.xls. В разделе Сторонние объекты укажите имя, отображаемое в дереве модели Inventor.
Чтобы внедрить таблицу, используйте кнопку Связь в диалоговом окне «Параметры». Не изменяйте имя внедренной таблицы по умолчанию, присвоенное программой Inventor (например, Embedding 1). Для функции GoExcel требуется исходное имя.
: в синтаксисе 3rd Party:Name.Чтобы связать файл, выберите вкладку «Управление»
панель «Вставить»
«Вставить объект» или нажмите Связь в диалоговом окне «Параметры».
Выполняет поиск строки на основе одного или нескольких критериев значения столбца.
Синтаксис
GoExcel.FindRow("filename", "sheetname", "first column title", "operator", value to look for, "second column title", "operator", value to look for, "third column title",...)
”filename”
Задает файл данных.
”sheetname”
Лист в документе Excel, содержащей таблицу, по которой будет выполняться поиск. В качестве листа можно указать любой существующий лист.
”first column title”
Заголовок первого столбца в таблице, по которой будет выполняться поиск. Обычно заголовки столбцов находится в первой строке и начинаются со столбца A.
”operator”
Возможны следующие значения:
value to look for
Текстовое или числовое значение, которое можно задать явно, а так же с помощью параметра или локальной переменной.
”second column title”
Заголовок второго столбца в таблице, по которой будет выполняться поиск.
”operator”
<=, >= или =
value to look for
”third column title”
Найти строку на основе нескольких критериев.
Возвращаемый результат
Номер строки (целое число), соответствующей критериям поиска. Значение "-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=.2. Однако только строка 7 соответствует обоим критериям (Dia=.2 и len>=4.1).
Считывается значение из строки, найденной с помощью функции GoExcel.FindRow.
Синтаксис
GoExcel.CurrentRowValue("column name")
”column name”
Имя заголовка столбца для значения ячейки, которое необходимо извлечь из текущей строки.
Возвращаемый результат
Значение ячейки из столбца в текущей строке, которая была ранее найдена с помощью функции 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("filename", "sheetname", "cellnumber")
”filename”
См. раздел "Задание файла Excel".
”sheetname”
Имя листа в документе Excel, содержащем требуемую ячейку. В качестве листа можно указать любой существующий лист.
”cell number”
Адрес ячейки, в которой следует читать или записывать значение (например, "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.SaveGoExcel.Save.Выполняется чтение или запись в ячейку с определенным адресом в таблицу после использования функции GoExcel.CellValue или GoExcel.Open. Эта функция использует ранее открытый файл и лист.
Синтаксис
GoExcel.CurrentCellValue("cellnumber")
GoExcel.CellValue("cellnumber")
”cellnumber”
Адрес ячейки или именованный диапазон значения ячейки, из которой следует выполнить чтение или которое следует записать в текущую таблицу.
Возвращаемый результат
Значение ячейки по заданному номеру ячейки.
Ошибки
Примеры
Читать последовательность ячеек из одной таблицы:
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, указав вместо адреса ячейки имя.
Прежде чем использовать NamedRangeValue в правиле, откройте файл Excel с помощью GoExcel.CellValue или GoExcel.Open.
Синтаксис
GoExcel.NamedRangeValue("PinLength")
Открывает указанную таблицу Excel и может использоваться для активизации именованного листа. Затем можно использовать такие функции, как GoExcel.FindRow и GoExcel.CellValue, чтобы извлечь сведения из листа или изменить его.
Синтаксис
GoExcel.Open("filename", “sheetname”)
”filename”
См. раздел "Задание файла Excel".
”sheetname”
Имя листа в документе 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 = <row>
<row>
Строка, в которой начинаются данные.
Примеры
Значение по умолчанию "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 = <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 = True
GoExcel.DisplayAlerts = False
True
Отображать запросы Microsoft® Excel (по умолчанию).
False
Не отображать запросы Excel.
Предоставляет доступ к объекту приложения Excel. Используйте эту функцию только при достаточном опыте работы с интерфейсом Excel сом. До использования этой функции в правиле вызовите другую функцию GoExcel для инициализации приложения.
Синтаксис
excelApp = GoExcel.Application