Closed admake closed 6 years ago
Продолжая тему, Нашли в scheme
* ### Площадь изделия
* TODO: переделать с учетом пустот, наклонов и криволинейностей
Если поправить геттер так?
get area() {
let area = 0;
this.contours.forEach( (row) => {
area = area + row.path.area.round(0)/1e6;
});
return area;
}
Так он умеет считать конструкции составные. Будем дорабатывать с трапециями и арками.
Этот вариант посчитает прямолинейные прямоугольные и НЕпрямоугольные конструкции. Но без арок. (трапеции, например)
get area() {
let area = 0;
this.contours.forEach( (contour) => {
let points = [];
contour.nodes.forEach( (node) => {
let point = [ node.x, node.y ];
points.push( point );
} );
let path = new paper.Path( points );
area = area + path.area.round(0)/1e6;
});
return area;
}
А еще мы добрались до кривых, в том плане, что кривая порождает точки и до образующей, на которой мы можем отступить точки с заданным шагом. Завтра дойдем до расчета площади криволинейных изделий. Разумеется с учетом наличия кривизны элемента как таковой, т.е. если элемент прямой, то лишняя математика выполняться не будет.
Особо пристально посмотрите на эти строки и завязывайте с попытками считать площадь по точкам. Авторы paperjs потратили несколько лет на булеву геометрию. Надо пользоваться результатами их труда, а не изобретать велосипеды.
area
теперь считается, как габаритная площадь всех контуров. для отчетов и ценообразования, лучше всего использовать именно эту площадьform_area
для отчетов или статистики в регистрах, имеет смысл добавить реквизит в характеристику
Возьмем например балконный блок, который состоит из двух рам. Его площадь в программе 4, что неверно. Вычислено как 2м * 2м. А реальная его площадь как сумма двух конструкций 1,82 + 1,4 = 3,22. Где посмотреть код изначального вычисления площади? Готов посодействовать, чтобы поправить этот момент. Либо, в свою очередь, для нужд печатных форм могу сам уточнить вычисление площади в print_data().