我有一个尝试在Odoo 10中复制的旧程序。我被卡住,将四舍五入转换为平方米。这是用于地毯卷。地毯的宽度为4M,房间宽度为9x5M。要获得SQ米,我将“房间宽度”乘以“房间长度”乘以45平方米,然后除以4,即“线性”地毯的宽度为11.25。
线性是11.25,但我不知道它们如何得到15。供应商不想切割地毯,因此程序正在根据地毯的宽度进行某种四舍五入或计算。要获得所需的平方单位,请乘以线性x宽度(15x4 = 60)
(图片中的地板宽度文本应为地毯宽度)
我正在使用下面的代码来获取Room的平方,但甚至无法算出数学来尝试线性转换。
@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)
这是另一个例子。
答案 0 :(得分:0)
它们只是沿短边填充房间矩形(也许是制造较短的部分,而不是较长的部分)。
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
答案 1 :(得分:0)
该方案中必须有一个“允许x%浪费”的因素。即使只需要地毯,面积仅为45平方米。单位,但我们需要添加浪费数量百分比。
例如宽度= 9长度= 5
平方单位= 9 * 5 = 45
总平方英尺= 45 +(45 * X%)/ 100 = 60平方英尺单位
这里X(Allow Wastage)= 33.33%
请检查是否有浪费量裕度。