![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ленточный конвейер....
dj-Oleg © (2011-11-03 14:37:00)Подскажите пожалуйста, можно ли нарисовать из Делфи в Автокаде ленточный конвейер? Есть задача в делфи уже есть приложение которое расчитывает все параметры ленточного конвейера, который рассчитывается. Результаты занесены в переменные. Возможно ли по этим данным изобразить собственно сам конвейер в автокаде либо каким-то другим способом?
Jeer (2011-11-08 20:05:00) [1]Тут уже за 20 постов, кто просто помогает.
dj-Oleg (2011-11-08 14:04:00) [2]У кого есть желание просто помочь а не погнобить!
app (2011-11-08 12:32:00) [3]Огласите весь список, кто имеет право тратить время на тебя?
dj-Oleg (2011-11-08 11:30:00) [4]Опа! Товарищь Плохиш © вы опять решили затратить на нас свое драгоценное? Не стоило!
Плохиш (2011-11-08 11:26:00) [5]
> dj-Oleg © (08.11.11 11:20) [23]
>
> Та никаких изометрических фигур - задача просто изобразить
> эту радость вообще шоб было похоже на конвейер!
Так на бумажке нарисуй, разбей на объекты и программируй. Про классы в ветке уже сказали.
Плохиш (2011-11-08 11:25:00) [6]
> dj-Oleg © (08.11.11 09:34) [17]
> вот и вопрос как мне тогда располагать в координатной плоскости
> эти например барабаны?
Так в вашей конторе и конструкторов нет?
А если есть, то спроси у них чертёж конвейера, там всё в координатной плоскости прорисовано. Или "высшее" образование чертежи читать не умеет?
dj-Oleg (2011-11-08 11:20:00) [7]Та никаких изометрических фигур - задача просто изобразить эту радость вообще шоб было похоже на конвейер!
Омлет (2011-11-08 11:16:00) [8]> Inovet © (08.11.11 10:52) [21]
> А то может ты изометрическую проекцию хочешь построить.
Тут бы хоть с видом спереди разобраться.. )
Inovet (2011-11-08 10:52:00) [9]И ещё. Ты какой чертёж делаешь? А то может ты изометрическую проекцию хочешь построить.
dj-Oleg (2011-11-08 10:44:00) [10]Ага, вроде въезжаю.....
Омлет (2011-11-08 10:39:00) [11]> dj-Oleg © (08.11.11 09:34) [17]
> известно что у полученного конвейера 4 барабана, но кажд
> барабан находиться мало того что на разном расстоянии друг
> от друга, а + то что под разными углами... вот и вопрос
> как мне тогда располагать в координатной плоскости эти например
> барабаны?
Во-первых, надо учитывать, что точка начала координат (0, 0) находится в левом верхнем углу. Во-вторых, выбрать для конвейера какую-то точку отсчета. Например, левый нижний угол основания.
Допустим, известно, что центр барабана 1 находится на расстоянии 10 метров по оси абсцисс и 5 метров по оси ординат от точки отсчета, и барабан повернут на 40 градусов.
Сначала переводим расстояние в пиксели. Если масштаб, допустим, 0.05 м/пикс, то 10 и 5 надо разделить на 0.05, чтобы получить координаты барабана в пикселях. Прибавляем координаты точки отсчета - получаем координаты на канве. Дальше вызываем процедуру отрисовки барабана в нужных координатах под заданным углом. И так далее. Чистая геометрия.
P.S.
Повернуть точку (X,Y) на угол A с центром вращения в точке (Сx,Cy) можно по формуле:
RotatedX = Cx + (X - Cx) * Cos(A) - (Y - Cy) * Sin(A)
RotatedY = Cy + (X - Cx) * Sin(A) + (Y - Cy) * Cos(A)
Inovet (2011-11-08 09:55:00) [12]> [17] dj-Oleg © (08.11.11 09:34)
> : известно что у полученного конвейера 4 барабана, но кажд
> барабан находиться мало того что на разном расстоянии друг
> от друга, а + то что под разными углами... вот и вопрос
> как мне тогда располагать в координатной плоскости эти например
> барабаны?
Ты сказал, что с масшьабированием и началом координат тебе всё ясно на примере домика. с конвейером остаётся чистая геометрия. Для удобства можно сделать класс Барабан, пусть он умеет себя рисовать в заданных координатах и с заданным углом, рисование организовать в процедуре Draw. Останется создать 4 объекта класса Барабан, задать им координаты и углы, вызвать в OnPaint процедуру Draw см домик.
dj-Oleg (2011-11-08 09:34:00) [13]Спасибо уважаемые Inovet © и Плохиш © за такую прекрасную подсказку по вопросу:
>Домик ты ему сделал, теперь конвейер давай, да код не забудь >прокомментировать. Разленились тут панимаааешь.
>Пример изменения двух координат и двух размеров? Может вашей конторе программиста нанять всё-таки?
Это очень помогает любую минуту, я хорошо понимаю что намного прикольнее погнать с кого-то чем что-то внятное сказать по проблеме, это я и сам хорошо это умею делать! Если я не ошибаюсь на форуме вас силой никто не заставляет напрягаться и помогать кому либо, так в чем проблема? - кто-то просил вашей помощи? Так это у вас завышенная самооценка уважаемые!
По самому вопросу я кажется и не просил решить здесь мне что-то, обратился бы во фриланс. Формулирую вопрос иначе:(Пример домика мне понятен что динамически отрисовывать фигуры в зависимости от меняющейся переменной можно) Пример: известно что у полученного конвейера 4 барабана, но кажд барабан находиться мало того что на разном расстоянии друг от друга, а + то что под разными углами... вот и вопрос как мне тогда располагать в координатной плоскости эти например барабаны?
Чтоб никто не подумал что я намекаю на "код типа мне скинуть", оговариваю, что просьба сказать просто на словах, с целью уловить логику, не более.
P.S очень проханных просьба не напрягаться в помощи, я и так понимаю что вы слишком заняты чтоб тратить на меня свое время, поэтому не отвлекайтесь!
Плохиш (2011-11-07 13:43:00) [14]
> А вот насчет динамически высчитывать и прорисовывать какой-
> нибудь примерец кинуть можешь? хотя бы чтоб попробовать
> идею уловить....
Пример изменения двух координат и двух размеров? Может вашей конторе программиста нанять всё-таки?
Inovet (2011-11-07 11:55:00) [15]> [13] Омлет © (07.11.11 11:52)
> Какой пример? Что именно не понятно?
Домик ты ему сделал, теперь конвейер давай, да код не забудь прокомментировать. Разленились тут панимаааешь.
Inovet (2011-11-07 11:53:00) [16]> [12] dj-Oleg © (07.11.11 11:19)
> А вот насчет динамически высчитывать и прорисовывать какой-
> нибудь примерец
А домик неа?
Омлет (2011-11-07 11:52:00) [17]> какой-нибудь примерец кинуть можешь?
Какой пример? Что именно не понятно?
dj-Oleg (2011-11-07 11:19:00) [18]Домик прикольно получается - это классно! А вот насчет динамически высчитывать и прорисовывать какой-нибудь примерец кинуть можешь? хотя бы чтоб попробовать идею уловить....
Омлет (2011-11-07 10:46:00) [19]> dj-Oleg © (07.11.11 10:43) [9]
> а возможно ли в таком случае реализовать чтоб код сам же
> формировал набор битмапов в зависимости от посчитанных параметров?
Да. Всё можно динамически высчитывать и прорисовывать.
Омлет (2011-11-07 10:45:00) [20]> dj-Oleg © (07.11.11 09:46) [6]
Попиксельно не надо, надо примитивами.
К примеру.. Берем компонент TPainBox, указываем Align = alClient, в обработчике OnPaint рисуем домик, размеры которого зависят от размеров компонента:
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
W, H: integer;
HouseW, HouseH: integer;
RoofH : integer;
begin
W := PaintBox1.Width;
H := PaintBox1.Height;
HouseW := round(W * 0.8); // ширина дома
HouseH := round(H * 0.8); // высота дома
RoofH := round(HouseH * 0.3); // высота крыши относительно высоты дома
with PaintBox1.Canvas do
begin
// Очищаем рисунок
Brush.Color := clWhite;
FillRect(Rect(0, 0, W, H));
// Рисуем коробку дома
Brush.Color := clGray;
Rectangle((W - HouseW) div 2, (H - HouseH) div 2 + RoofH,
W - (W - HouseW) div 2, H - (H - HouseH) div 2);
// Рисуем крышу
Brush.Color := clYellow;
Polygon([Point((W - HouseW) div 2, (H - HouseH) div 2 + RoofH),
Point(W div 2, (H - HouseH) div 2),
Point(W - (W - HouseW) div 2, (H - HouseH) div 2 + RoofH)]);
end;
end;
Меняем размер формы - меняется размер рисунка, т.к. все координаты относительны.
Также и с конвейером - вычислять всё можно в метрах, а вот рисовать надо уже в масштабе и относительно каких-то величин.