Может быть, но там никто на VB програмить не умеет - только на VBA для AutoCad. А это совсем другое дело.)
Там cам autocad как среда программирования. -> Они не представляют многих возможностей VB как среды. Другими словами всё мышление повёрнуто на 180 градусов. (скорее согласятся новый Visual Basic написать на AutoCad, чем AutoCad на Visual Basic)
А какая разница где людей собирать? Ну найдёш ты несколько желающих, накидаешь план того что нужно, условно разобъёш на части, и каждому раздаш по этой части и все благополучно сделают как надо, ты соберш всё до кучи и всё будет teep-top? Ты так себе это представляешь?
ТЗ? Ну вообще работы много, поэтому я перечислю основное. А вы уж конкретизируйте, что кого интересует, и тогда я напишу подробнее. А пока:
1)Программа для черчения, а не для вычисления конструкций (это легко решается с VB)
1) Необходимо создать элементарную базу для 2d-графики. При этом нужно хорошо продумать набор команд 15-20, чтобы они были очень удобны. (их не должно быть много, 30 команд - предел).
4)Весьма неудобные способы черчения (постоянно одной рукой тянуться к Esc, и она почти не работает). Казалось бы мелочь, но оптимальное использование клавиатуры ускорило бы черчение в два раза!
2)Создать возможность, чтобы пользователь мог сам делать себе горячие клавиши. Причём не так, чтобы ctrl+alt+z (Издевательство!). А мог сделать любую клавишу клавиатуры, которой ему было бы удобно пользоваться(хоть х, хоть с...). Поставить умолчания по этому поводу. Получится, что он будет как бы печатать на клавиатуре чертеж одной рукой, а рисовать мышкой - другой (такого я ещё нигде не видел, а воплотить очень легко!) Для этого и особого творчества не надо , или алгоритмистики...(может и новичёк)
3)Оптимальное использование монитора:
поставил windowstate=2, borderstyle=0 и вперед..., растянув картинку на всю форму. (команды все - на клавиатуре, лучше не придумать)
3)Нету простых и элементарных команд, типа стирательной резинки в paint'е, (а почему? это заметно бы облегчило работу)
4)Ну это легко решается с помощью pset и point/ без комментариев. (правда над разбиением объектов надо подумать...)
1)Программа для черчения, а не для вычисления конструкций (это легко решается с VB)
4)Ну это легко решается с помощью pset и point/ без комментариев. (правда над разбиением объектов надо подумать...)
1)Программа для черчения, а не для вычисления конструкций (это легко решается с VB)
5)Можно задавать прочность, др. мех.(и не только: хим, физ и др) св-ва через сооветствующие формулы. Чтобы тем, кому эти свойства не нужны, они не путались под ногами, а те кому надо - не открывали для этого десять окон, а пользовались ими, как дышали воздухом.
Для этого есть очень много интересных разработок. Думаю, что когда мы справимся с графикой, это будет самая интересная работа
2)Очень сложная работа с 3d(можно сделасть шаблоны для
6)И это тоже особо интересная работа. Здесь мы точно обойдём autocad/ В AutoCad'е через командную строку - так неудобно работать в 3d! )Три picture - виды, четвертый - изометрия. Массив объектов line и т. п. Задаём одной line координаты на одном виде - меняются ее виды все. И поехало... Потом надо сделать, чтобы убирались невидимые линии... Но я думаю, что-нибудь придумаю.
7)Есть идея сделать на нем свой язык программирования. Что-то вроде VBA modern или box. С помощью алгоритмов я его хочу оптимизировать. Будет униерсальный язык, который может быть в чём-то превзойдет Microsoft'ский. Это увеличит возможности программы в десять раз!
7,1)Кроме того, мы незря согласились на то, что не нужно сто комманд. Пусть пользователь сам создает комманды , кладёт на панели(как в VBA Word, Excel и др - в VBA Autocad - нету!!!) и ставит им клавиши. Это намного расширит возможности черчения( что-то вроде ActiveX Control - в Visual Basic).
8) Работа с реестром. Создать своё расширние файлов (у меня пока руки не дошли). Кроме того, организовать достойный экспорт и импорт.
9)Можно создать звуковое сопровождение комнд, это тоже - нвовведение в графике.
10)Интерфейс Visual Basic 6.0 устарел, поэтому нужно его обновить - есть специальные контролы, панели(на нашем сайте, кажеися я видел пример). Если мы хотим, чтобы программа не была отсеяна временем из-за "прямоугольных кнопок", то этому нужно тоже уделить достаточное внимание. Ну и вообще каждому программисту приятно , когда из под компилятора выходит что-то внешне красивое. А пользователь так вообще первым делом смотрит на то, как оформлена программа снаружи.
Вот десять основных пунктов Технического Задания на данный момент.
Я знаю, что вы скажете: всё слишком амбициозно. -Да, но только для одного человека. Но не для группы.)
80-85% того, что я представил, я знаю, как делать. Но чтобы это всё осуществить самому потребуется лет семь - минимум, а то и вся жизнь. Другими словами это неосуществимо, пэтом я и обращаюсь к вам за помощью.
Ну вот, а клонил я к тому, что если "в общем-то да", то можно не браться вовсе...
1) +
2) +
3) в автокаде тоже так можно - ок +
4) Это не возможно, иначе объекты остануться без каркаса, а зачит поломаются
5) Непонял, зачем прочность в чертежах? Архитектовы, тем кому это нужно, рисуют в ArhiCad, там это предусмотрено. Или ты хочешь универсальную?
6) Уйдёш от камандной строки, прийдёш к InputBox "введите сюды радиус круга" итп смысл?
7) В юмор... Макс что реал, использовать VB скрипты в своей программе, но у ж Micrisoft мы этим точно не обойдём Или ты хочешь ближе познакомится как работает компилятор?
7,1) А помойму есть в автокаде что-то вроде своего скрипта, ессно не вба, но что-то там есть..
8) Я за опенформат - xml рулит.
9) В юмор... Лучше тогда распознавание звука... "- Компьютер, ну ка бегом начертил мне домашнее задание!"
10) Награмождение "красотой" из вне (UserControl, OCX) нагружает IDE в VB6 очень сильно, так что обширных планов ты не строй, иначе придётся писать не контролы а классы, наподобие API реализации контролов.. это конечно занимательно и весело, но я пасс )
Ну т/з это слабо похоже, скорее планы, желания, мечты...
Если самому лет семь, семи разработчикам всего на 1 год ?
Вопросы?
А не надоест? А не развалится проект из за того что вася в модуле что-то измениит, не скажет об этом пети, а тот ещё что-то изменит и забут сказать третему васи, а то ещё чё-то там, в итоге всё нах так запущено что прога хрен скомпилируется Такое ж может быть? Что у тебя за мысли по этому поводу? Выделить ресурс можно... но вдруг вася сдуреет нах и решит удалить оттуда чё-то лишне, что 1 год будет писать петя, а тот разозлится и нах снесёт оттуда весь проект. Общий доступ к ресурсу давать это маразм... нужна cvs.
Предложения?
CVS - SourceForge.net
Нужен опатный Team-Лидер, у которого хватит терпения, ровнять руки другим разработчикам, постоянно их дёргать и подгонять, кроме это правельно планировать реализацию чего либо, опираясь на свой опыт... Такой есть?
Создать сайт, расписать о проекте, о достижениях... это даст более мение постоянный приток новых сил в проект, а то и найдутся кто сможет поддержать материально.
Накопить денег, на пол пути энтузиазм обычно пропадает, тогда нужно материальная поддержка, чтобы проект не забросили...
Еснно хорошее т/з.
P.S. Я практически не представляю обработку 3д графики на уровне автокада, может быть там ничего сложно, всё упирается в то что я просто в 3д ничего не понимаю, но что-то мне кажеться, что вот так амбиозно ничего не получится.
он будет как бы печатать на клавиатуре чертеж одной рукой, а рисовать мышкой - другой (такого я ещё нигде не видел, а воплотить очень легко!)
Во флеше примерно так
7)Есть идея сделать на нем свой язык программирования. Что-то вроде VBA modern или box. С помощью алгоритмов я его хочу оптимизировать. Будет униерсальный язык, который может быть в чём-то превзойдет Microsoft'ский. Это увеличит возможности программы в десять раз!
Задача написания своего языка (даже встроенного, даже интерпретируемого) настолько нетривиальна, что никак не могу ее советовать реализовывать "в довесок". Возьмите готовый движок, типа Boost.Python или Луа. В крайнем случае WSHвский VBScript и добавьте ко всем объектам IDispatch-интерфейсы.
10)Интерфейс Visual Basic 6.0 устарел, поэтому нужно его обновить - есть специальные контролы, панели(на нашем сайте, кажеися я видел пример). Если мы хотим, чтобы программа не была отсеяна временем из-за "прямоугольных кнопок", то этому нужно тоже уделить достаточное внимание. Ну и вообще каждому программисту приятно , когда из под компилятора выходит что-то внешне красивое. А пользователь так вообще первым делом смотрит на то, как оформлена программа снаружи.
Об этом следует думать в последнюю очередь, на мой взгляд. Все же главнее, чтобы программа работала, чем чтобы она красиво выглядела.
Ну т/з это слабо похоже, скорее планы, желания, мечты...
Первый шаг к ТЗ
А не развалится проект из за того что вася в модуле что-то измениит, не скажет об этом пети, а тот ещё что-то изменит и забут сказать третему васи, а то ещё чё-то там, в итоге всё нах так запущено что прога хрен скомпилируется
Поэтому надо писать на нормальном языке типа C++ или (тьфу-тьфу) Java, структура которого позволяет собирать программы из более-менее независимых модулей, а не недоООПного VB6.
В качестве отправной точки могу предложить ознакомиться с сырцами моей древней проги BasShop, векторный редактор для досовского Бейсика
http://regsetup.narod.ru/basshop_src.rar
Не думаю... не видел, не слышал - не делал. Скажешь как - соглашусь, но не думаю, что скажешь: там нету такой возможности.
4) Это не возможно, иначе объекты остануться без каркаса, а зачит поломаются
Да согласен, что без каркаса. Но pset можно использовать как замазку: замазал - не видно. Но под слоем краски чертёж остался. Иными словами, это как бы для подгонки.(он изменяет только цвет пикселя/твипа). Каркас остаётся.
Кстати, мона сделать, чтобы автоматически стиралось и на др видах... (ну это там уже).
Нету простых и элементарных команд, типа стирательной резинки в paint'е, (а почему? это заметно бы облегчило работу)
Кроме того, я думаю решить эту проблему с помощью разбиения объектов(это б уже другая команда) - когда например проводишь стеркой поперк, и программно объект line делится на два, разделенных этим промежутком, где провёл стеркой.
В этом духе. Никакого отсутствия каркаса.
5) Непонял, зачем прочность в чертежах?..
Ну это то, что можно оставить на последок. Главное графика, там уж сделаем...
Архитектовы, тем кому это нужно, рисуют в ArhiCad, там это предусмотрено. Или ты хочешь универсальную?
Там не всё придусмотрено(ну то есть свои недоработки, могу и о них рассказать). В том же автокаде есть комманда, которая вычисляет массу, объём, момент инеции и т п. у solid-обьекта. Но на этом всё.(вычисляла бы она ещё прогибы да ядро сечения, да ещё эпюры строила),+ к тому выдаст результаты в коммандну строку, и заглядывай в нее, попробуй программно вытащи их оттуда( я б конечно мог если постараться, но можно ж проще - в excel)/
А между прочим, почему бы не создать универсальную??? Такой я ещё не видел...
Чтобы объединяла достинства ArchiCad'а и AutoCad/
Правда сперва с графикой надо всё выяснить.!!!
6) Уйдёш от камандной строки, прийдёш к InputBox "введите сюды радиус круга" итп смысл?
Ну может здесь мы особо не выиграем. Но зачем Inputbox? просто поставить лабел в строке состояния, который будет говорить, что делать, и ещё один - будет с курсором мыши, будет показывать входящие данные, а?
А в 3d графике возможности VB безграничны, ты уж поверь.
Или ты хочешь ближе познакомится как работает компилятор?
А это идея.
7,1) А помойму есть в автокаде что-то вроде своего скрипта, ессно не вба, но что-то там есть..
Прошу прощения если я неудачно выпазился
Пусть пользователь сам создает комманды , кладёт на панели(как в VBA Word, Excel и др - в VBA Autocad - нету!!!) и ставит им клавиши.
Я имел ввиду, что в автокаде нет возможности(по-моему - здесь я мог просто не знать) ложить записанные макросы в VBA на панели инструментов(хотя создавать новые строки меню там кажется есть). Но отнюдь не то, что в AutoCad'е нет VBA, там даже ещё один есть - Visual Lisp называется, но он внутренний. О VBA мы уже говорили в ответах №2 и №3. Взгляни туда)
А не надоест? А не развалится проект из за того что вася в модуле что-то измениит, не скажет об этом пети, а тот ещё что-то изменит и забут сказать третему васи, а то ещё чё-то там, в итоге всё нах так запущено что прога хрен скомпилируется Такое ж может быть? Что у тебя за мысли по этому поводу? Выделить ресурс можно... но вдруг вася сдуреет нах и решит удалить оттуда чё-то лишне, что 1 год будет писать петя, а тот разозлится и нах снесёт оттуда весь проект. Общий доступ к ресурсу давать это маразм... нужна cvs.
Всё должно быть централизованно, планомерно: каждый берет на себя ту часть общего плана, над которой он хочет работать, которая ему лично интересна и которую он знает лучше всего. За нее он несёт личную ответственность. Дома он делает работенку в модуле(желательно) - и в отдельном проекте. Если ему удается удачно реализвать алгоритм и он показывает и объясняет его группе (чтобы каждый понял!!! - и не было замешательства), и у группы нет предложений получше, этот алгоритм переносят на общий проект. Причем каждый член группы должен быть с командой одним целым. И каждй член - ясно понимать код общего проекта. Тот кто понимает сразу же делится с группой - и все, как одно целое.
Но это конечно желательно, но слишком идеально, чтобы быть нна самом деле. Обязательно наступит момент, когда не все смогут ориентироваться в таком огромном багаже знаний. Просто кто-то, у кого поменьше опыта, будет отставать. И выделится лидер, который знает больше. Он и будет вести проект дальше, руководя, принимая, исправляя, отвергая, объясняя.
Вот это суть. И таких инцидентов, что ты изложил, в такой системе быть не должно:
Каждый в своей личном задании(или тз) может делать что хочет, но общий проект будет прозрачным, и каждый будет знать о нем все, не внося ничего без ведома других
Нужен опатный Team-Лидер, у которого хватит терпения, ровнять руки другим разработчикам, постоянно их дёргать и подгонять, кроме это правельно планировать реализацию чего либо, опираясь на свой опыт... Такой есть?
Ну потараюсь.
Создать сайт, расписать о проекте, о достижениях... это даст более мение постоянный приток новых сил в проект, а то и найдутся кто сможет поддержать материально.
Сейчас, как раз над этим работаю. На днях выложу адрес сайта. Я над этим тоже думал)
Накопить денег, на пол пути энтузиазм обычно пропадает, тогда нужно материальная поддержка, чтобы проект не забросили...
Ну это прежде всего зависит от нас,
Более т., думаю у меня такая возожность есть,
Пока не загадываю.)
P.S. Я практически не представляю обработку 3д графики на уровне автокада, может быть там ничего сложно, всё упирается в то что я просто в 3д ничего не понимаю, но что-то мне кажеться, что вот так амбиозно ничего не получится.
А я говорю, что
...в 3d графике возможности VB безграничны, ты уж поверь.
2Sharp:
Об этом следует думать в последнюю очередь, на мой взгляд. Все же главнее, чтобы программа работала, чем чтобы она красиво выглядела.
Согласен, вполне согласен. Просто сказал на будущее. Вообще же конечно - это в последнюю очередь.
Просто нужно предусмотреть, что все события мы привязываем к объектам, которые и представляют из себя интерфейс. И когда мы захотим их модрнизировать, чтобы не пришлось переписывать весь код
Задача написания своего языка (даже встроенного, даже интерпретируемого) настолько нетривиальна, что никак не могу ее советовать реализовывать "в довесок". Возьмите готовый движок, типа Boost.Python или Луа. В крайнем случае WSHвский VBScript и добавьте ко всем объектам IDispatch-интерфейсы.
А что? Мы прислушаемся. Неплохое предложение.
В качестве отправной точки могу предложить ознакомиться с сырцами моей древней проги BasShop, векторный редактор для досовского Бейсика
http://regsetup.narod.ru/basshop_src.rar
Посмотрел, неплохо для начинающих. Но код не оптимальный, оттго и тормозит на 200 линии. В качестве начала у меня уже такой есть, но во всяком случае спасибо за предложение!
Поэтому надо писать на нормальном языке типа C++ или (тьфу-тьфу) Java, структура которого позволяет собирать программы из более-менее независимых модулей, а не недоООПного VB6
В чем-то ты конечно прав, но хочу привести тебе цитату с форума VBStrets
Задали мне задание: рассчитать значения хитрой комбинаторной функции, и чем в большем числе точек, тем лучше. Функция такая, что время на её вычисление экспоненциально зависит от величины аргумента, т.е. "с наскоку" её не сосчитать.
Я сел и неделю писал прогу на VB с разными наворотами вроде возможности приостановки вычисления (типа Hibernate) и последующего продолжения; упаковки восьми булевских переменных в один байт; всяческой оптимизацией и т.п.
За 20 часов (три ночи) эта прога сосчитала мне значения до 250.
Я сел и переписал прогу на VC, уже без наворотов, а просто чтобы прикинуть скорость. Скорость была совершенно та же. Сейчас эта программа работает девятый час, и сосчитала значения до 140.
Я пошёл к преподу выяснять, как быть - получается, уже для 1000 потребуется месяц вычислений, а то и больше. И он мне показал свою прогу на JS для решения этой же задачи. Мои результаты до 250 она получает за несколько минут, за 20 часов - примерно до 400, а за пару суток - до 600. Естественно, у него там более хитроумный алгоритм, выгода от которого в тысячи раз превышает разницу в быстродействии языков.
Отсюда вывод: язык - ерунда, главное - руки. На любом языке можно написать безобразно медленную программу, если руки кривые (как у меня ) И напротив, с прямыми руками можно написать быструю программу на любом языке.
Я пишу на VB, а не C++ по двум причинам:
1) Здесь уже готовые элементы упр line, а на С++ их заново писать
2)С++ я знаю на порядок хуже: чтобы его освоить мне понадобится гораздо больше времени
С третьей стороны, что на мешает писать на С++ контролы для VB/ можно какую-нибудь библиотеку...
структура которого позволяет собирать программы из более-менее независимых модулей
Ну вот и будет сборка из более менее независимых модулей. В чём проблема?
А в 3d графике возможности VB безграничны, ты уж поверь.
Смеялся Но буду очень благодарен, если ты напишешь программу, которая, скажем, использует пиксельные шейдеры из VB6 или строит простую мешевую сценку из .x файлов с использованием OpenGL.
Всё должно быть централизованно, планомерно: каждый берет на себя ту часть общего плана, над которой он хочет работать, которая ему лично интересна и которую он знает лучше всего. За нее он несёт личную ответственность. Дома он делает работенку в модуле(желательно) - и в отдельном проекте. Если ему удается удачно реализвать алгоритм и он показывает и объясняет его группе (чтобы каждый понял!!! - и не было замешательства), и у группы нет предложений получше, этот алгоритм переносят на общий проект. Причем каждый член группы должен быть с командой одним целым. И каждй член - ясно понимать код общего проекта. Тот кто понимает сразу же делится с группой - и все, как одно целое.
Увы, это скорее желаемое, чем действительное. В реальности же нужен хороший Team Leader, который может выполнить любую работу за любого участника и хорошо знает, как ее нужно выполнить.
Сейчас, как раз над этим работаю. На днях выложу адрес сайта. Я над этим тоже думал)
Увы, приток программистов будет крайне низким (если вообще будет), опен-сорс сообщество предпочитает C/C++, на VB6 вряд ли кто-то клюнет. Поэтому рекомендую писать код так, чтобы его было легко переводить, когда потребуется переход на C++.
Но код не оптимальный, оттго и тормозит на 200 линии.
Увы, простора для оптимизации там почти никакого. И уж точно не в сотни раз.
Отсюда вывод: язык - ерунда, главное - руки. На любом языке можно написать безобразно медленную программу, если руки кривые (как у меня ) И напротив, с прямыми руками можно написать быструю программу на любом языке.
Разумеется, существуют задачи, которые представляют алгоритмическую сложность, а не вычислительную - но данный случай таким не является, здесь на первый план выходит именно быстродействие сгенерированного компилятором кода.
1) Здесь уже готовые элементы упр line, а на С++ их заново писать
MFC?
2)С++ я знаю на порядок хуже: чтобы его освоить мне понадобится гораздо больше времени
Ну это же не довод. Тогда можно и на Фокале писать, потому что его в советской школе изучали, или на Паскале, который в вузе преподавали.
Ну вот и будет сборка из более менее независимых модулей. В чём проблема?
Проблема, скорее всего, будет в том, что код на VB даже при достаточной квалификации участников проекта будет напоминать, скорее, кашу, которую разделить на составляющие и отрефакторить будет очень сложно.
Всё должно быть централизованно, планомерно: каждый берет на себя ту часть общего плана, над которой он хочет работать, которая ему лично интересна и которую он знает лучше всего. За нее он несёт личную ответственность. Дома он делает работенку в модуле(желательно) - и в отдельном проекте. Если ему удается удачно реализвать алгоритм и он показывает и объясняет его группе (чтобы каждый понял!!! - и не было замешательства), и у группы нет предложений получше, этот алгоритм переносят на общий проект. Причем каждый член группы должен быть с командой одним целым. И каждй член - ясно понимать код общего проекта. Тот кто понимает сразу же делится с группой - и все, как одно целое.
Прошли мы всё это, с пол форумом переругался, за то щас читать приколько, воспоминания )))
Вообщем я понял твои мысли, так как ты хочешь, ничего не получится. Нету организации. Серёзные программисты на этот проект смотреть не будут - нет серёзной метериальной поддержки. У новичков работать в команде неполучится. Одному тоже не справится. В итоге, проект не осуществим. Обсуждать подробности языков, подробности этого проекта, я совершенно не вижу смысла.
Впрочем, я могу быть не прав. Возможно ты довольно хорошо владеешь вб, нюансами командной разработки итп итд... в таком случае, тебе б немешало как продемонстрировать свои знания... Чем лучше покажешь, тем более серёзный найдёшь единомышлиников.
Далеко не всем серьезным программистам нужна серьезная материальная поддержка. Но им в любом случае нужно одно из двух: 1) необходимость такого продукта им лично; 2) возможность чему-то научиться в процессе создания (а для этого нужен крутой Team Leader)