Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите пожалуйста выполнить задание

47K
20 июня 2012 года
Rayrat7
99 / / 09.06.2012
Прохожу практику на РЖД предприятии, подвернулось интересное задание но мозгов в пока полностью сделать его самому увы не хватает, прошу вашей помощи..
Требуется программка в которой на плане(карте завода) по путям можно было было бы передвигать объекты(как бы вагоны) при чем нужно чтобы эти объекты можно было поставить или передвигать только по линиям путей, а также добавлять и удалять их.
каждый объект должен отображаться в таблице и меть несколько информационных полей (дата начала - завершения работ, цех, этап работ)
Программа будет использоваться на совещаниях для планирования передвижений вагонов по заводу, поэтому требуется минимум лишнего интерфейса, и иметь возможность сохранения.
Начал делать ее в VB 2010, перенес таблицу с access'a добавил на форму план и квадратики которые можно перетаскивать, но как сделать чтобы они были прицеплены к путям(и можно ли вобще такое) , как сохранять их на форме, и связать таблицу с объектам пока не разобрался..


вот код(понимаю что код кривой но я ток начинаю разбираться в BV):
Код:
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: данная строка кода позволяет загрузить данные в таблицу "_ДЛЯ_ПРОГРАММЫDataSet.Основная". При необходимости она может быть перемещена или удалена.
       Me.ОсновнаяTableAdapter.Fill(Me._ДЛЯ_ПРОГРАММЫDataSet.Основная)
        'TODO: данная строка кода позволяет загрузить данные в таблицу "_ДЛЯ_ПРОГРАММЫDataSet.Вспомогательная". При необходимости она может быть перемещена или удалена.
       Me.ВспомогательнаяTableAdapter.Fill(Me._ДЛЯ_ПРОГРАММЫDataSet.Вспомогательная)

    End Sub
    Private Sub ОсновнаяBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ОсновнаяBindingNavigatorSaveItem.Click
        Me.Validate()
        Me.ОсновнаяBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me._ДЛЯ_ПРОГРАММЫDataSet)
    End Sub
    Private Sub ОсновнаяDataGridView_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles ОсновнаяDataGridView.CellContentClick
    End Sub

    Private Sub Panel_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        If Control.MouseButtons = Windows.Forms.MouseButtons.Left Then
            CType(sender, Panel).Left = Control.MousePosition.X - Me.Left - CType(sender, Panel).Width
            CType(sender, Panel).Top = Control.MousePosition.Y - Me.Top - CType(sender, Panel).Height
        End If
    End Sub

    Private Sub CheckedListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub RectangleShape1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub ВспомогательнаяDataGridView_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)

    End Sub

    Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
        AddHandler (Panel1.MouseMove), AddressOf Panel_MouseMove
        Me.Controls.Add(Panel1)
    End Sub
    Private Sub Panel2_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
        AddHandler (Panel2.MouseMove), AddressOf Panel_MouseMove
        Me.Controls.Add(Panel2)
    End Sub
    Private Sub Panel3_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
        AddHandler (Panel3.MouseMove), AddressOf Panel_MouseMove
        Me.Controls.Add(Panel3)

    End Sub
    Private Sub MonthCalendar1_DateChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DateRangeEventArgs)

    End Sub

    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub PictureBox1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub RectangleShape1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub ОсновнаяBindingNavigator_RefreshItems(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ОсновнаяBindingNavigator.RefreshItems

    End Sub

End Class
414
20 июня 2012 года
CassandraDied
763 / / 24.05.2012
Проверять цвет пиксела под курсором. И будут двигаться только по путям. Или по воде ещё, если все пути синие. Но это решаемо одним флагом.
На PHP надо было писать. Или на делфи в билдере. Говорят, там всё очень просто для начинающих.
47K
20 июня 2012 года
Rayrat7
99 / / 09.06.2012
какой командой проверять цвет?
414
20 июня 2012 года
CassandraDied
763 / / 24.05.2012
Если ты сейчас сам этого не нагуглишь, то будешь создавать вопросы по каждой функции, потому что сам не сможешь в этом разобраться. За тебя никто не будет писать это приложение и через какое-то время вообще забьют, потому что гуглить за кого-то обычные функции - тупо и неинтересно, так что оно так и не окажется доделанным. Создаёшь новую вкладку, вбиваешь google.ru и пишешь visual basic getpixel function цвет пикселя, а потом читаешь, читаешь, читаешь.
40K
20 июня 2012 года
D129
228 / / 18.04.2012
Если сделать на пикселях, то вагон быстрым движением мыши можно будет сдернуть с путей.
Так работает система сообщений виндовс - ее возможности не безграничны, если дельта перемещения будет большой, то она будет отработана.

Самый правильный способ - создать математическую модель путей, функции прямых линий , и проверять координаты после перемещения, и не давать им выйти дальше разрешенных.
40K
20 июня 2012 года
D129
228 / / 18.04.2012
Функция вида y = Kx + C
K и С можно хранить в базе данных, это позволит потом создавать-изменять-исползовать разные карты.

Сама проверка может быть во время движения, это (посчитать чего-нибудь) комп делает очень быстро.
40K
20 июня 2012 года
D129
228 / / 18.04.2012
Если добавить не просто остановку при выходе из зоны, а поиск ближайших координат, которые подходят, то вагончик будет двигаться по пути, даже если мышка, которая его тащит, сьедет в сторону.
277
20 июня 2012 года
arrjj
1.7K / / 26.01.2011
Надо: таблицу координат всех развилок.
ситуация 1: вагончик движется по линии - берем от мышки только вертикальную координату и рисуем вагончик на выше/ниже мышки
ситуация 2: вагончик на развилке - считаем векторы всех линий из развилки и выбираем линию с наиболее близким вектором к вектору мышки. Если все векторы смотрят в другую сторону - вагончик в тупике.
40K
20 июня 2012 года
D129
228 / / 18.04.2012
Вообще-то, за вас что-то серьезно взялись.
Следующий этап что? чтобы вагончики не могли поворачивать под острым углом - где есть перекресток, а не стрелка (тут уж пикселями вообще никак не обойдетесь)?
Предотвращение столкновений вагончиков?

И под занавес - а зачем вообще совещание - пусть компьютер сам рассчитает оптимальный план перемещений!

:-)
40K
20 июня 2012 года
D129
228 / / 18.04.2012
Цитата: arrjj
Надо: таблицу координат всех развилок.
ситуация 1: вагончик движется по линии - берем от мышки только вертикальную координату и рисуем вагончик на выше/ниже мышки
ситуация 2: вагончик на развилке - считаем векторы всех линий из развилки и выбираем линию с наиболее близким вектором к вектору мышки. Если все векторы смотрят в другую сторону - вагончик в тупике.



Во во. В довесок графический редактор карт, импорт из автокада, экспорт в гугл ..... Потом связь с контроллерами стрелок и датчиков движения.....

:-)

277
20 июня 2012 года
arrjj
1.7K / / 26.01.2011
Цитата: D129

Во во. В довесок графический редактор карт, импорт из автокада, экспорт в гугл ..... Потом связь с контроллерами стрелок и датчиков движения.....

:-)


А че - норм бабла можно некисло распилить.

47K
20 июня 2012 года
Rayrat7
99 / / 09.06.2012
Цитата: D129
Вообще-то, за вас что-то серьезно взялись.

И под занавес - а зачем вообще совещание - пусть компьютер сам рассчитает оптимальный план перемещений!

:-)


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

277
20 июня 2012 года
arrjj
1.7K / / 26.01.2011
Цитата: Rayrat7
(я вобще 1с тут занимаюсь)


Угу, я всем говорю что я принтеры заправляю ;)

47K
20 июня 2012 года
Rayrat7
99 / / 09.06.2012
я реально на 1с тут сижу
47K
20 июня 2012 года
Rayrat7
99 / / 09.06.2012
создаю новые отчеты и правлю печатные формы
40K
20 июня 2012 года
D129
228 / / 18.04.2012
Цитата: Rayrat7

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



Кстати, готовые такие системы есть. Но они очень не бесплатные. Я в одной фирме работал -
там полная модель 3Д, склада, с транспортерами, автопогрузчиками, если задать недостаточную прочность стеллажей, и перегрузить их - то ящики падают строго по математической модели - итп

На создании этой модели сидел отдельный программист.

277
21 июня 2012 года
arrjj
1.7K / / 26.01.2011
Цитата: arrjj
Надо: таблицу координат всех развилок.
ситуация 1: вагончик движется по линии - берем от мышки только вертикальную координату и рисуем вагончик на выше/ниже мышки
ситуация 2: вагончик на развилке - считаем векторы всех линий из развилки и выбираем линию с наиболее близким вектором к вектору мышки. Если все векторы смотрят в другую сторону - вагончик в тупике.


Даж не так: ищем ближайшую к координатам мышки точку на линии или конец линии , на расстоянии например не больше 10px и отрисовываем вагончик там.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог