oknosoft / windowbuilder

Окнософт:Заказ дилера
http://www.oknosoft.ru/zd/
Other
10 stars 19 forks source link

Площадь изделия. .s (балконные блоки) #361

Closed admake closed 6 years ago

admake commented 6 years ago

image Возьмем например балконный блок, который состоит из двух рам. image Его площадь в программе 4, что неверно. Вычислено как 2м * 2м. А реальная его площадь как сумма двух конструкций 1,82 + 1,4 = 3,22. Где посмотреть код изначального вычисления площади? Готов посодействовать, чтобы поправить этот момент. Либо, в свою очередь, для нужд печатных форм могу сам уточнить вычисление площади в print_data().

admake commented 6 years ago

Продолжая тему, Нашли в scheme

* ### Площадь изделия
* TODO: переделать с учетом пустот, наклонов и криволинейностей
admake commented 6 years ago

Если поправить геттер так?

get area() {
    let area = 0;
    this.contours.forEach( (row) => {
    area = area + row.path.area.round(0)/1e6;
    });
    return area;
}

Так он умеет считать конструкции составные. Будем дорабатывать с трапециями и арками.

admake commented 6 years ago

Этот вариант посчитает прямолинейные прямоугольные и НЕпрямоугольные конструкции. Но без арок. (трапеции, например)

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;
}
Sehktel commented 6 years ago

А еще мы добрались до кривых, в том плане, что кривая порождает точки и до образующей, на которой мы можем отступить точки с заданным шагом. Завтра дойдем до расчета площади криволинейных изделий. Разумеется с учетом наличия кривизны элемента как таковой, т.е. если элемент прямой, то лишняя математика выполняться не будет.

unpete commented 6 years ago

Особо пристально посмотрите на эти строки и завязывайте с попытками считать площадь по точкам. Авторы paperjs потратили несколько лет на булеву геометрию. Надо пользоваться результатами их труда, а не изобретать велосипеды.

unpete commented 6 years ago

https://github.com/oknosoft/windowbuilder/commit/0bc526222a25cff45586af0b7c5654df54e13257