Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Помогите с графикой 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
6-1105999407
Новичек
2005-01-18 01:03
2005.03.20
Информация от сервера.


6-1100235778
KirGus
2004-11-12 08:02
2005.03.20
Мастера, есть вопрос по WebBrowser


1-1109766123
Developerr
2005-03-02 15:22
2005.03.20
Подстановка в формулы


3-1108553956
Gost
2005-02-16 14:39
2005.03.20
Как просканировать таблицу (парадокс) с последней записи?


1-1109924793
Alexandre
2005-03-04 11:26
2005.03.20
Скрытие формы