Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1109953284
Tirex
2005-03-04 19:21
2005.03.20
XP Themes and TToolBar.AdvancedCustomDrawButton


1-1110025832
Володя
2005-03-05 15:30
2005.03.20
ошибка


4-1107302590
Green_Templar
2005-02-02 03:03
2005.03.20
OpenPictureDialog


9-1103251664
Septic
2004-12-17 05:47
2005.03.20
Перетекание массы в массиве


1-1110145166
0x011001
2005-03-07 00:39
2005.03.20
Как получить?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский