Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизПомогите с графикой Gerber файла. Найти похожие ветки
← →
George © (2005-02-24 18:33) [0]Сабж, господа. Имеется файл, из него нужно получить картинку. При попытке сделать это Канвасом возникла куча проблем (например проблема с дробными координатами - сокращать нельзя). Может у кого есть компонент для таких целей, или исходничек где завалялся?
← →
Fenik (2005-02-24 20:21) [1]Что есть Gerber файл?
← →
DiamondShark © (2005-02-24 21:08) [2]
> например проблема с дробными координатами - сокращать нельзя
А между пикселями рисовать никакой компонент не умеет.
← →
akvilon © (2005-02-25 00:16) [3]gerber это вроде нечто управляющее станками, производящими фотошаблоны?
если я прав, то там же не бесконечная дробь, можно просто умножить каждую координату на 10000 например и получится попиксельно
← →
Руслана (2005-02-25 00:24) [4]To George - пишем конвертер.? :)))
← →
George © (2005-02-25 19:13) [5]Не совсем конвертер... Gerber - это формат файла для фотоплоттера (если кто знает что это такое) :) А если умножать на 10000... представьте размер картинки и и время обработки такого файла. Кроме того))) После того, как я нарисую мне нужно будет узнать площать сей поверхности. Есть какие идеи?
← →
Cosinus © (2005-02-25 19:32) [6]
> George © (25.02.05 19:13) [5]
Только умножать. см.DiamondShark © (24.02.05 21:08) [2]
А конкретная то задача, какая стоит?
← →
akvilon © (2005-02-25 23:25) [7]а если не умножать и не сокращать (кстати, сокращать = округлять?) тогда задача не решаема (между пикселами рисовать придется :)), можно конечно изменить режим отображения, но это и есть округление.
не такая уж и большая картинка, сомневаюсь что размер пп у вас будет больше экрана монитора, а координаты даются в очень маленьких единицах
а для того чтобы по нарисованному вычислить размер площади, то нужно и рисовать один к одному, в режиме MM_TEXT такое врядли удастся, меняй режим отображения SetMapMode(...)
но это уже излишества :)
← →
Руслана (2005-02-26 09:10) [8]Непонятна цель. А что нельзя загрузить в CAM350(или подобное) и оттуда печатью в pdf, например получить картинку?
← →
George © (2005-02-26 18:24) [9]Ок, смиряюсь с мыслью, что придется округлять дробь до 2х знаков. Тогда 1пиксель=0.01мм. Картинка вырастает в 100 раз))) Получается, что любая печатная плата уже БОЛЬШЕ размера монитора))))) По поводу CAM350 нужно учесть, что с прогой будут работать 90летние бабуськи, которые должны запомнить 5 кнопок. Кроме того - начальство требует НОВУЮ ПРОГУ, а с ним спорить не будешь))) Цель - прочитать Gerber, выудить из него рисунок (с минимальными потерями) и потом просчитывать площадь рисунка (точно еще не знаю т.к. пока мне только в общих чертах сказали, что должно быть) с учетом отверстий, итд итп, чтобы потом расчитать кол-во материала(ов), которые будут затрачены на производство платы + кол-во операций, кот придется провести + примерное время обработки каждой операции по отдельности. Увеличивать рисунок в 100 раз не очень хочется... мжожет есть какие другие способы?
P.S. Да простят меня люди, читающие это, но к моему великому стыду, я совершенно не умею работать с графикой.
← →
DiamondShark © (2005-02-26 19:19) [10]Для того, чтобы посчитать площадь, рисовать рисунок не надо.
А если надо показать рисунок на экране, так всё равно точнее пикселя ничего нарисовать нельзя.
Масштаб (сколько физических единиц в пикселе) можно взять любой, вообще любой, какой только захочется.
← →
George © (2005-02-27 21:14) [11]Типо все просчитывать по координатам... А есть у кого такой исходничек? Просто не хочется лезть в нудные вычисления... хотя такое возможно...
← →
George © (2005-02-28 07:32) [12]Кстати если таким способом (не графическим) считать площадь, как я узнаю прощадь нестандартной аппертуры (многоугольника), если там можно оч короткими отрезками хоть Кремль нарисовать? (код аппертуры 4)
← →
Alx2 © (2005-02-28 09:02) [13]George © (28.02.05 7:32) [12]
Для многоугольника с вершинами x[k],y[k] где k=1..N площадь считается, кажется, так:
1/2 * (Sum (x[k]*y[k+1]-x[k+1]*y[k],k=1..N-1) +x[N]*y[1]-x[1]*y[N])
(нумерация вершин в направлении положительного обхода).
← →
George © (2005-03-02 21:17) [14]Хорошшо... тока не пашет. Вот это - +x[N]*y[1]-x[1]*y[N] в результате будет ноль т.к. конечная координада по любому должна совпасть с первой, иначе это кривая, а не фигура. А скобка x[k]*y[k+1]-x[k+1]*y[k] в итоге дает результат меньше, чем должно быть. Может я что-то неправильно делаю?
← →
Fenik (2005-03-02 21:36) [15]http://delphibase.spb.ru/?action=viewfunc&topic=mathcalc&id=10091
← →
Alx2 © (2005-03-03 07:31) [16]>George © (02.03.05 21:17)
У меня пашет :)
Пример для N=3:
x[1]:=0;y[1]:=0;x[2]:=a;y[2]:=0;x[3]:=alpha;y[3]:=h; (теугольник с основанием = a и высотой = b) получаем S=1/2*a*h = площадь такого треугольника.
Еще пример для N=4 (прямоугольник со сторонами a и b)
x[1]:=0;y[1]:=0;x[2]:=a;y[2]:=0;x[3]:=a;y[3]:=b;x[4]:=0;y[4]:=b;
S = a*b
Для прямоугольника, полученного поворотом предыдущего прямоугольника на угол alpha относительно начала координат:
x[1]:=0;y[1]:=0;x[2]:=cos(alpha)*a;y[2]:=sin(alpha)*a;x[3]:=cos(alpha)*a-sin(alpha)*b;y[3]:=sin(alpha)*a+cos(alpha)*b;x[ 4]:=-sin(alpha)*b;y[4]:=cos(alpha)*b;
S = 1/2*cos(alpha)*a*(sin(alpha)*a+cos(alpha)*b)-1/2*(cos(alpha)*a-sin(alpha)*b)*sin(alpha)*a+1/2*(cos(alpha)*a-sin(alpha)*b )*cos(alpha)*b+1/2*sin(alpha)*b*(sin(alpha)*a+cos(alpha)*b) =
cos(alpha)^2*a*b+sin(alpha)^2*a*b =
a*b
Т.е. пока все работает :)
← →
George © (2005-03-03 22:26) [17]Alx2 © В общем я полнял - легче сделать картинку и считать точки)))
Fenik - спасибо за ссылку.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.047 c