Преобразование областей измерения - Округление - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть старая программа, которую я пытаюсь воспроизвести в Odoo 10. Я застрял, переводя квадратные метры в линейные метры с округлением.Это для рулонов ковра.Ширина ковра 4М, ширина комнаты 9х5М.Чтобы получить SQ метров, я умножаю ширину комнаты на длину комнаты, которая составляет 45 кв. М, затем делю на 4, которая является шириной ковра для Linear, равной 11,25.

Linear составляет 11,25, но я не могу понять, как ониполучим 15. Поставщик не хочет резать ковер, поэтому программа выполняет какое-то округление или расчет на основе ширины ковра.Чтобы получить требуемые квадратные единицы, затем умножьте значение Linear x Width (15x4 = 60)
(ширина пола на рисунке должна быть шириной ковра) enter image description here

Я используюприведенный ниже код для получения комнаты в квадрате, но не могу понять, как математически даже попытаться выполнить линейное преобразование.

@api.onchange('roomwidth')
    def _onchange_squaremtr(self):
        self.sqfeet = (self.roomwidth or 1) * (self.roomlength or 1)



    @api.onchange('roomlength')
    def _onchange_roomlenght(self):
        self.sqfeet = (self.roomwidth or 1) * (self.roomlength or 1)

Вот еще один пример.

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

В сценарии должен присутствовать фактор «Разрешить x% потерь».Даже если ковер нужен только 45 кв.Единицы, но нам нужно добавить процент количества отходов.

Пример.Ширина = 9 и длина = 5

Кв. Единицы = 9 * 5 = 45

Всего Кв. Единиц = 45 + (45 * X%) / 100 = 60 Кв.Единицы

Здесь X (Разрешенные потери) = 33,33%

Пожалуйста, проверьте, есть ли запасы количества отходов.

0 голосов
/ 20 сентября 2018

Они просто заполняют прямоугольник комнаты по короткому краю (возможно, чтобы сделать более короткие куски, а не длинные).

w = 4, комната 9x5: три куска A = 4x5, B = 4x5, C = 4x5 иотрежьте последний, чтобы сделать полосу 4x1

 A A A A A
 A A A A A
 A A A A A
 A A A A A  
 B B B B B
 B B B B B
 B B B B B
 B B B B B
 C C C C C
 ---------  cut
 C C C C C
 C C C C C
 C C C C C

w = 6, комната 13x8: три куска A = 6x8, B = 6x8, C = 6x8 и отрежьте последний, чтобы сделать полосу 6x1

import math
def calccarpet(wdt, roomwdt, roomhgt):
    longer = max( roomwdt, roomhgt)
    shorter = min( roomwdt, roomhgt)
    numpieces = math.ceil(longer / wdt)
    carpetarea = numpieces * wdt * shorter
    return carpetarea

print(calccarpet(4, 5, 9))
print(calccarpet(6, 13, 8))
>>> 
60
144
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...