К сожалению на такой вариант алгоритма нет. В случае расположения деталей в одном направлении обходился формулой, считал сколько деталей вдоль - сколько поперек и выбирал максимальное значение.
А по такому варианту даже не знаю с какой стороны подходить.
При использовании такого расчета результат получается не правильный, т.к. при расположении деталей как на рис.1 получим 19 а не 16.
[vba]Код
Sub Cutting()
'
'Извлекаем размер заготовки
A = Range("B4")
B = Range("C4")
'Извлекаем размер детали
x = Range("E4")
y = Range("F4")
'
'Кол-во деталей
L = 0
'
'Определяем максимальное количество деталей
N1 = Int(A / x) * Int(B / y)
If L < N1 Then L = N1
'
N2 = Int(A / y) * Int(B / x)
If L < N2 Then L = N2
'
'Возвращаем максимальное кол-во деталей
Range("F7") = L
If N1 = L Then
Range("F8") = L
Else
Range("F8") = 0
End If
'
Range("F9") = L - Range("F8")
'
End Sub
[/vba]
[admin]Оформляйте коды тегами![/admin]