Функции для вычислений:
Function GetMesurmentKoefInSpecification()
As Double
Функция возвращает число с плавающей точкой для использования
его при переводе из миллиметров в выбранные единицы измерения.
Используется при расчете спецификации.
Function GetSizePartOfRackForCrossbarOnXAxe(ARackID
As String) As Double
Возвращает размер части стойки который используется для вычисления
длины ригеля между стойками.
Параметры:
ARackID - Идентификатор стойки.
Примеры:
для идентификатора стойки "Rack3Directions"
для идентификатора стойки "Rack4Directions"
Function CalculateLength_LateralCrossBar(ByVal
AWidth As Double, ByVal AForwardRack As String, ByVal ABackRack
As String) As Double
Возвращает необходимую длину бокового ригеля который нужно
поместить между 2-мя стойками относительно заданной глубины
витрины.
AWidth - Глубина витрины
AForwardRack - Идентификатор стойки спереди
ABackRack - Идентификатор стойки сзади
Пример:
myrigel = CalculateLength_LateralCrossBar(400, "Rack4Directions",
"AngularRack")
Function GetStructuresCount(AAmountOfStructures
As String) As Integer
Возвращает количество составов
Параметры:
AAmountOfStructures - строка, количество
составов, м.б. задана специальным форматом колич_составов:длина_ригеля1,длина_ригеля2,
...)
Function GetPRigelsSizesArray(ByVal
ALength As Double, ByVal ASostavsFieldValue As String, ALeftRackID,
ARightRackID) As Variant
Если нужно то вычисляет размеры не заданных передних ригелей
между составами и возвращает массив с размерами передних ригелей
для всех составов. Индекс первого элементва массива равен
1.
Параметры:
ALength - длина витрины
ASostavsFieldValue - строка. Количество
составов из которых будет состоять витрина. Размер составов
определяется автоматически. Также существует возможность задания
разных размеров составов. В этом случае необходимо после количества
поставить двоеточие и указать размеры передних ригелей для
каждого состава витрины через запятую. Если размеры последних
составов не задать то их размер будет расчитан автоматически.
В задании размеров можно использовать символ *, что означает
автоматическое определение размера ригеля.
Например:
Допустим мы задали витрину длиной 3200 мм.
Нам нужно создать витрину из 4-х составов, причем 2-й и
3-й составы должны быть размером 500 мм,600 мм. Для этого
в поле "Количество составов" необходимо ввести:
4:*,500,600,*
ALeftRackID - идентификатор стойки слева
ARightRackID - идентификатор стойки справа
Пример:
RigelsArray = GetPRigelsSizesArray(4900, "5:900,*,725",
"AngularRack", "AngularRack")
Содержание RigelsArray после запуска примера:
Watch : - : RigelsArray : : Variant/Variant(0 to 5) : M_Calculations.test
: RigelsArray(0) : Empty : 0-й элемент не используется
: RigelsArray(1) : 900 : Variant/Double : M_Calculations.test
: RigelsArray(2) : 1018,33333333333 : Variant/Double : M_Calculations.test
: RigelsArray(3) : 725 : Variant/Double : M_Calculations.test
: RigelsArray(4) : 1018,33333333333 : Variant/Double : M_Calculations.test
: RigelsArray(5) : 1018,33333333333 : Variant/Double : M_Calculations.test
Function GetYSizeOfLeftRackByID(ARackID)
As Double
Возвращает наибольший размер стойки по оси Y
Параметры:
ARackID - идентификатор стойки
Например для прогонной стойки на 3 направления(Rack3Directions):
Function GetYPartSizeOfLeftRackForCrossbarsByID(ByVal
ARackID) As Double
Возвращает часть размера стойки по оси Y которая используется
для уточнения положения точки вставки
Параметры:
ARackID - идентификатор стойки
Функции для создания и экспорта контейнера
спецификации:
Описанные ниже функции оперируют с глобальным
предопределенным объектом CurSpecContainer. Его объявление:
Public CurSpecContainer As TSpecificationContainer
Sub SpecContainer_ClearAndInit()
Очищает и инициализирует контейнер со спецификацией.
Следует вызывать эту процедуру каждый раз когда вы хотите
создать новую спецификацию в контейнере.
Пример:
SpecContainer_ClearAndInit
Sub SpecContainer_Add(ADetailID,
ACount, ALength, AWidth, APrimechanie, AColor)
Добавляет новую запись о детали в контейнер
спецификации. Если именно такая деталь уже есть в контейнере
то к существующей записи суммируется полученное количество
деталей.
Параметры:
ADetailID - строка, идентификатор
детали
ACount - количество
ALength - длина
AWidth - ширина
APrimechanie - примечание
AColor - цвет
Пример:
SpecContainer_Add ToDetailID(pLeftForwardRack.Value),
1, stoika * edizm, 1, "-", "-"
SpecContainer_Add "LegForRackAdjustableSP10", 1,
1, 1, "-", "-"
SpecContainer_Add "LegForRackAdjustableSP10", 1,
1, 1, "-", "-"
Sub SpecContainer_ExportTo(AAnotherContainerID
As String)
Экспортирует контейнер спецификации для работы
в другой программе. На данный момент доступен только Excel.
Параметры:
AAnotherContainerID - идентификатор
контейнера. Если равно "Excel" или "xls"
то спецификация экспортируется в MS Excel.
Пример:
SpecContainer_ExportTo "Excel"
Функции для расчета набора деталей:
Sub SpecContainer_Add_CrossbarsWall(ByVal
AHeight As Double, ByVal ALengthOfCrossbar As Double, ByVal
AHeightOfStore As Double, AStoreDetailID As String, ByVal
AHeightOfFrieze As Double, AFriezeDetailID As String, ByVal
AAmountOfSections As Integer, ASectionDetailID As String,
STPRIR, edizm, ACrossbarID)
Вычисляет и добавляет необходимое количество
ригелей, замков для ригелей, стенок для боковой, передней
или задней стенки витрины
Параметры:
AHeight - высота витрины
ALengthOfCrossbar - длина ригеля
AHeightOfStore - высота накопителя
AStoreDetailID - идентификатор детали в накопитель,
если равен "none" то стенки в накопитель не ставятся
AHeightOfFrieze - высота фриза
AFriezeDetailID - идентификатор детали во
фриз, если равен "none" то стенки во фриз не ставятся
AAmountOfSections - количество секций
ASectionDetailID - идентификатор детали в
секции(ю), если равен "none" то стенки в секции
не ставятся
STPRIR - приращение для стенок. Если 0 то
к стенкам добавляются шканты.
edizm - коэффициент для перевода из милиметров
в другие единицы измерения
ACrossbarID - опционально, материал для ригеля,
если не задано, то выбирается ригель с одной полкой.
Sub SpecContainer_Add_Shelf(ADetailID,
ACount, APrigelLength, ABrigelLength, AColor, edizm)
Расчитывает необходимую длину и ширину полки,
количество полкодержателей если нужны в зависимости от идентификатора
детали и добавляет в текущей контейнер спецификации.
Параметры:
ADetailID - идентификатор детали
ACount - количество
APrigelLength - длина переднего ригеля
ABrigelLength - длина бокового ригеля
AColor - цвет полки
edizm - коэффициент для перевода из миллиметров
Функции для работы с Excel напрямую:
Sub PutSpecificationHeader(ByRef
specData, ByVal ARow)
Заполняет шапку для листа рабочей книги Excel со спецификацией
Параметры:
specData - объект, лист рабочей книги Microsoft
Excel
ARow - номер строки
Sub FillSpecificationRow(ByRef
specData, ByVal ARow, ADetailID, ACount, ALength, AWidth,
APrimechanie, AColor)
Заполняет одну строку в Excel файле спецификации.
Параметры:
specData - объект, лист рабочей книги Microsoft
Excel
ARow - номер строки
ADetailID - строка, идентификатор детали
ACount - количество
ALength - длина
AWidth - ширина
APrimechanie - примечание
AColor - цвет
Sub PutSpecificationFormulas(ByRef
specData, ByVal ARow)
Заполняет лист рабочей книги Excel формулами для вычисления
стоимости деталей и всего изделия, так же заполняет строку
стоимость материала, исходя из названия материала детали.
Параметры:
specData - объект, лист рабочей книги Microsoft
Excel
ARow - строка на которой список деталей в
спецификации заканчивается
|