PipeCalc (консольная)

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

Модератор: BV

uni
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 05.05.2006 (Пт) 15:24
Откуда: Екатеринбург

PipeCalc (консольная)

Сообщение uni » 08.07.2011 (Пт) 15:18

Программа гидравлического расчёта труб

Тип: консольная (vbAdvance + Console)
IDE: Portable MS Visual Basic 6.0 (SP6, KB957924 + ApiViewer, vbAdvance, CodeSMART)
Назначение: Гидравлический расчёт труб с непоным наполнением (самотечные трубопроводы)
Литература: А. Я. Добромыслов, Том 2 "Безнапорные трубопроводы". Таблицы для гидравлических расчётов трубопроводов из полимерных материалов, М., 2004.

uml: PipeCalc Class Diagram.pdf
Проект: https://mysvn.ru/cop/PipeCalc/
svn: https://mysvn.ru/cop/PipeCalc/ (чтение) (Клиент SVN для Windows: TortoiseSVN)

Пример вывода:
Код: Выделить всё
[D:\Projects\vbasic\Projects\PipeCalc]$ PipeCalc.exe

-----------------------------------------------------
Безнапорные трубопроводы.
Гидравлический расчёт трубопровода из полимерного материала.
Версия 1.0.51
Дата расчёта: 08.07.2011 г. в 18:01:48
Автор: Мезенцев В. Н.
Почта: unihomelab*ya.ru
-----------------------------------------------------

Задание на расчёт

Внутренний диаметр трубопровода: Dвнутр = 0,208 м
Уклон самотечного трубопровода: is = 0,010
Коэффициент кинематической вязкости: n = 0,00000149 м^2/с
Коэффициент эквивалентной шероховатости: Ke = 0,020 мм

-=/ Результаты расчёта /=-

Наполнение      Скорость        Расход

0,3     1,183   10,102
0,4     1,392   17,597
0,5     1,556   26,328
0,6     1,678   35,578
0,7     1,758   44,493
0,8     1,792   52,020
0,9     1,766   56,658
1,0     1,556   52,657


Описание:
Программа заменяет таблицы Добромыслова. Алгоритм заменён на прямой вместо итерационного. Увы, но я не смог настроить перенаправление ввода-вывода при таком способе создания консоли, поэтому для ввода и вывода данных нужно придумать что-нить другое. Задание на проектирование нужно вписывать в коде. Это старая моя программка, которую я переделал под VB6. Изначально было написано на паскале. Именно после этого проекта я стал изучать построение компиляторов, т.к. писать подобные листинги и сопровождать их больше желания не было.
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось uni 12.07.2011 (Вт) 22:22, всего редактировалось 2 раз(а).
Россия навсегда!
Сетрификаты

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2846
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: PipeCalc (консольная)

Сообщение Proxy » 08.07.2011 (Пт) 17:42

Специфично. Кроме трубопровода это ещё как-либо можно применить?
Follow the white rabbit.

uni
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 05.05.2006 (Пт) 15:24
Откуда: Екатеринбург

Re: PipeCalc (консольная)

Сообщение uni » 08.07.2011 (Пт) 22:59

Конечно, дело не в трубопроводе. Если кому надо, то я могу сделать консольный кирпич из своей программы, убрав всё лишнее. А использоваться может для тестирования. Чтобы не мутить оконных приложений, когда нужно потестить какой нить алгоритм, делаются миниатурные прототипы, которые ведут лог своей работы (на экран, в файл).

Эта прога имеет:
- настройки в ini-файле;
- ведение лога в файл (имя задаётся в ini-файле, лог стандартный от VB);
- класс-обёртку CConsole, который содержит минимальный функционал для ввода-вывода.

Т.е. делаем шаблонный проект. Добавляем в него интересующий нас класс (алгоритм и т.п.) и тестим его с выводом куда-нить. Мне вот для расчёта трубопровода по началу нужно было алгоритм потестить, а потом уже интерфейсом заниматься. Может быть какие юнит-тесты делать с помощью консольной проги.

Тут где-то был уже один пример, из которого я выдрал часть содержимого. Но там была не настоящая консоль. vbAdvance метит образ, устанавливая флаг CUI вместо GUI - это большая разница, т.к. я запускаю консольные проги в Far'е и мне нужно, чтобы вывод там и оставался.

П.С. Вручную читать из стандартного ввода можно, а вот автоматизировать через перенаправление не получилось. В чём зарыта фишка глубоко не копал, но, судя по тестам, при перенаправлении данные не приходят. Может быть потому что это не стандартный ввод получается, а канал какой, не знаю.
Отладка работает, за исключением случая ручного ввода, что в принципе не так уж и нужно.

В общем, ещё один инструмент для тех, кто любит минимализм (никаких форм). Я использую "нестандартную" среду, т.к. её удобства для меня перевешивают всю её "нестандартность". Это я о CodeSmart 2009.
У вас нет доступа для просмотра вложений в этом сообщении.
Россия навсегда!
Сетрификаты

uni
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 05.05.2006 (Пт) 15:24
Откуда: Екатеринбург

Re: PipeCalc (консольная)

Сообщение uni » 09.07.2011 (Сб) 9:21

Блин, я придумал свой велосипед. Оказывается, обёртка уже давным давно существует: http://vb.mvps.org/samples/Console/

Буду разбираться, пишут, что:
Of course, redirection and pipes are fully supported as well.
Россия навсегда!
Сетрификаты

uni
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 05.05.2006 (Пт) 15:24
Откуда: Екатеринбург

Re: PipeCalc (консольная)

Сообщение uni » 10.07.2011 (Вс) 19:58

Обновлён до ревизии 2 (Версия 1.0.0.64).

Изменения:
- удалён класс CConsole;
- добавлены модули поддержки консоли от Karl E. Peterson: MEnvVars.bas, MConsole.bas;
- добавлен код обработки перенаправления;
- добавлена функция чтения версии файла в классическом виде (x.x.x.x): GetFileVersion.bas.
- добавлен батник для автоматизации расчёта: run.bat.

Всё пучком.
Россия навсегда!
Сетрификаты

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16095
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: PipeCalc (консольная)

Сообщение Хакер » 11.07.2011 (Пн) 6:05

uni писал(а):- удалён класс CConsole;
- добавлены модули поддержки консоли от Karl E. Peterson: MEnvVars.bas, MConsole.bas;

Делать что-ли нечего?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

uni
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 05.05.2006 (Пт) 15:24
Откуда: Екатеринбург

Re: PipeCalc (консольная)

Сообщение uni » 11.07.2011 (Пн) 14:46

Разбираюсь с паттернами программирования. Отлаживаю сквозную разработку на простом примере. Консольные проги очень для этого подходят. А вообще говоря, этот код часть программы, за которую мне в своё время заплатили. Я на сторону людям помогаю бывает и делаю небольшие проектики, в том числе и на бейсике. Может по позже выложу с разрешения оконный проект по программированию стиральных машин, где я полученные тут навыки применяю на практике. VB6 для меня просто идеален в плане мелких утилит. Надо ли говорить, что многие проф проги имеют деление на командную и интерфейсные части. Так что даром это не пройдёт. Кроме того для VB6 есть много разного написанного софта, который улучшает жизнь: IBM Rational Rose for VB6, vbAdvance, CodeSmart, vbCodePrint, vbdocman и т.д. Я пользуюсь большей частью из них. Дополняя это дело: SVN, Help & Manual, Inno Setup - получаем на компе достаточно солидную систему сквозного проектирования, когда собрать проект можно одним-двумя кликами.

Ну, а кроме этого, когда я поработал на фирму, меня удивил уровень математического образования тех товарищей, которые меня нанимали (фрилансом). Я придумал свой алгоритм расчёта, которым и хочу поделиться с миром. Дело в том, что за 20-30 или даже 40 лет расчёты по СНиПам выполняются всё также. Т.е. ручные алгоритмы просто переписываются с помощью программирования, не учитывая тот факт, что составлялись они для простого инженерного расчёта вручную или для калькулятора. Там просто непаханное поле для современных программистов.

На самом деле, ближайший мой идеал сборки вот: Построение «правильного» процесса разработки на платформе.NET
Пишу же сейчас под Android. Там есть очень много чего, что после J2ME даётся с некоторым трудом.
Россия навсегда!
Сетрификаты

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16095
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: PipeCalc (консольная)

Сообщение Хакер » 11.07.2011 (Пн) 14:48

Ты так и не ответил на вопрос.

Удалять из проекта свой код, и заменять его чужим куском, и по поводу этого публиковать новую версию — это не вписывается в моё представление мира.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

uni
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 05.05.2006 (Пт) 15:24
Откуда: Екатеринбург

Re: PipeCalc (консольная)

Сообщение uni » 11.07.2011 (Пн) 15:28

А какое оно? Твоё представление мира? Я помотрел его код и нашёл, что он делает тоже самое что и мой, плюс много чего более. Зачем мне писать опять это же? Эта тема по гидравлическому расчёту и работа с консолью - это просто вспомогательная часть. Работу с каналами и перенаправлением мне бы долго пришлось писать, но она нужна в проекте для автоматизации расчёта, когда данные вводятся потоком.

Мой мир - сборка проекта по частям для выполнения ТЗ. Если есть что-то, что мне подходит, я это применяю, если нет, то пишу. Когда у меня появился vbAdvance, я понятия не имел как сделать консольную программу, т.к. в поставке к Portable VB6, что я привёл выше, нету никакого описалова. Это меня не смутило и немного пошукав я нашёл то, что же имелось в виду. Написал свой класс. Когда же я пошукал чуть лучше, то нашёл готовое решение, которое гораздо превосходит моё по функционалу. Так что, если надо - напишу, изобрету, если найду - применю.

Хотелось бы ещё раздел тут на форуме, по руководству применения инструментария для разработки проектов. Вот, к примеру, как я собираю другой свой проект на VB6:
Сборка проекта Конфигуратора УП версия 1.3.0.157

Вот так выглядит мой мир VB6. Хакер, покажи свой мир.
Россия навсегда!
Сетрификаты

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16095
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: PipeCalc (консольная)

Сообщение Хакер » 11.07.2011 (Пн) 15:32

Те, кто используют Portable VB — это вообще клинические извращенцы. Неизлечимые.

Мой мир такой: если бы меня заставили заменить кусок проекта, мною написанный, на аналогичный, ХЗ-кем написанный, я бы застрелился. А тут человек делает это добровольно, да её такую вещь за новую версию выкладываю.

Впрочем, это же тот самый человек, что ратует за исключительно русскоязычный идентификаторы в коде. Так что я пасс, тут видимо чем извращённее, тем лучше.

P.S. И вот видео открылось, загрузилось — там в VB выставлен чёрный фон кодабокса, а панель пуска прилеплена к верху. uni, а ты не тонкий ли троль?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

uni
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 05.05.2006 (Пт) 15:24
Откуда: Екатеринбург

Re: PipeCalc (консольная)

Сообщение uni » 11.07.2011 (Пн) 15:41

Хакер писал(а):... ХЗ-кем написанный...

Ну, это ты зря.

Вот страничка автора: http://vb.mvps.org/
Он обновлял свои работы до прошлого года! Вот это действительно маниак от VB6.

P.S. И вот видео открылось, загрузилось — там в VB выставлен чёрный фон кодабокса, а панель пуска прилеплена к верху. uni, а ты не тонкий ли троль?

Угомонись, у меня ВСЕ среды такие. Я программирую ещё со времён TP7. Там никому в голову тогда не пришло бы выставлять белый фон. Всё работали в такой цветовой схеме. Я уже более 10 лет использую только такие схемы, вот погляди:
У вас нет доступа для просмотра вложений в этом сообщении.
Россия навсегда!
Сетрификаты

uni
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 05.05.2006 (Пт) 15:24
Откуда: Екатеринбург

Re: PipeCalc (консольная)

Сообщение uni » 11.07.2011 (Пн) 19:13

Чтобы не было непоняток, какой код я выкидываю, какой оставляю и почему меняю версии, то я поясню по теме.

Весь этот проектик является частью другого более солидного проектика. Всё "ядро" этого расчётного модуля построено на вот этом коде:

Код: Выделить всё
    '// -=/ Второй вариант алгоритма гидравлического расчёта /=-
    '// Аналог расчёта см. в Mathcad документе "Гидравлический расчёт. Алгоритм 2.mcd"
    Rekv = 500# * 4# * Rs * 1000# / Ke
    K1 = Log10(4# * Rs / v)
    K2 = Log10(Rekv)
    K3 = Log10(Vn)
    '// Формула выведена Мезенцевым В. Н. на основе соотношения для bs = 3 - lg(Re_кв) / lg(Re_факт)
    '// Требует тестирования
    bs = 3# / 2# - (K2 + K3) / (2# * K1) + Sqrt(Pow(3# * K1 + K3, 2) + K2 * (2# * (K3 - 3# * K1) + K2)) / (2# * K1)
    u = Pow(Vn, 1 / bs)

    '// Rekv - Число Рейнольдса
    CalcVars.ReinoldsNumQuad.SetValue (Rekv)
   
    '// Rephi- Число Рейнольдса
    CalcVars.ReinoldsNumPhi.SetValue (Rephi)
   
    '// bs   - Безразмерный показатель степени
    CalcVars.DimlessExponentEnd.SetValue (bs)
   
    '// Vf   - Средняя скорость течения жидкости при полном заполнении трубопровода
    '// Конечное значение
    CalcVars.FillFluidFlowAverSpeedEnd.SetValue (u)
   
    '// Vnep - Средняя скорость течения жидкости при неполном заполнении трубопровода
    Vnep = u * Pow(Rsnep_Rsn, (1# + a) / bs)
    CalcVars.NotFillFluidFlowAverSpeed.SetValue (Vnep)
   
    '// qs   - Расход жидкости
    qs = Vnep * w * 1000#
    CalcVars.FluidConsumption.SetValue (qs)

Всё же остальное - второстепенно. Не надо только думать, что эти несколько строк не стоят ничего. Эти несколько строк заменяют целую книжку с таблицами, которую я указал в шапке (см. картинку внизу). Книжка насчитывает 127 страниц формата А4, целиком занятыми таблицами.
С помощью этой мелкой консольной тулзы я могу сгенерить такую справочную книжку одним кликом. Документация в процессе написания. Там нужно делать ряд математических выводов с пояснениями. Всё это для меня гораздо важнее, чем какой-то стандартный консольный ввод-вывод, описанный в MSDN. Вот моя формула пока нигде не описана, кроме фирмы, где я её применил. Эта фирма занимается продажей пластиковых труб. Книжки же, которые я использовал, используют устаревший итеративный расчёт, который являлся частично эмпирическим. Это делало код непонятным, а действия по вычислению параметров, похожими на манипуляцию шамана.

Я доведу утилитку до ума. Сделаю сценарий по генерации книжки Добромыслова, напишу доку, сравню результаты (они практически не отличаются) и всё это дело выложу в рунете. Также пошлю копию самому автору издания. Вот что для меня тут интересно. Заодно попрактикуюсь комплексной сборке.
У вас нет доступа для просмотра вложений в этом сообщении.
Россия навсегда!
Сетрификаты


Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList