Уважаемые знатоки!
Хотел набросать программку, в которой можно было бы составлять блок-схемы. Хочу реализовать возможность добавлять блоки (не обязательно разной формы и цвета, но с текстом) и связи между ними. Самое главное чтобы по окончании составления схемы можно было перечислить все блоки и связи по имени (например "дом", "работа", "парк" для блоков и "дом#работа", "работа#парк", "парк#дом" для связей). Имея возможность перечисления для связей по имени, можно будет реализовать вывод полей edit по количеству связей или таблицы для заполнения расстояния. Связей может быть несколько (дом#работа, дом#парк, дом#магазин) причем дом#магазин и магазин#дом - это не одно и тоже, хотелось бы что бы при указании связи запоминалось начало и конец, на манер стрелочки.
Надеюсь обрисовал понятно. Не пинайте сильно если обсуждалось - не нашел.
Подскажите пожалуйста, как это можно реализовать - сам новичок и знаний не хватает.
Не обязательно чтобы были спрайты или графика, может можно как-то просто добавлять кнопки на форму, располагать их перетаскивая мышкой и указывать связи, но как это "просто" сделать я не знаю
Я не прошу всё сделать за меня, просто подскажите какие компоненты могли бы мне в этом помочь. Примеры, конечно, приветствуются.
Этот топик читают: Гость
Этот топик был перемещен из раздела "Помощь по среде"
Ответов: 4
Рейтинг: 0
|
|||
карма: 0 |
|
Ответов: 784
Рейтинг: 168
|
|||
Artie, посмотри в сторону https://forum.hiasm.com/topic/65447
|
|||
карма: 15 |
|
Ответов: 2236
Рейтинг: 676
|
|||
Artie, вопросы:
1. Блоки достаточно одной формы (прямоугольный)? 2. Связи (линия с стрелочкой) между блоками должны ломаться или быть прямыми? 3. Связи от блоков из одной точки выходят (если их несколько)? И в какой позиции должна находится эта точка(и) (в центре стороны, у угла)? 4. Связи от блока и к блокам подходят/отходят с определённой стороны или с любой? |
|||
карма: 11 |
|
Ответов: 4
Рейтинг: 0
|
|||
Gunta писал(а): Artie, посмотри в сторону https://forum.hiasm.com/topic/65447
Спасибо! Не успел глянуть как автор в моей теме появился sla8a писал(а): Artie, вопросы:
1. Блоки достаточно одной формы (прямоугольный)? 2. Связи (линия с стрелочкой) между блоками должны ломаться или быть прямыми? 3. Связи от блоков из одной точки выходят (если их несколько)? И в какой позиции должна находится эта точка(и) (в центре стороны, у угла)? 4. Связи от блока и к блокам подходят/отходят с определённой стороны или с любой? Спасибо, что откликнулись! Если мы говорим о хотелках в общем, то примерно так: 1. Думаю можно обойтись одной формой (прямоугольник), но с возможностью менять размер и цвет; 2. Стрелочки можно прямые, но с возможностью размещения их под углом. То есть стрелочка будет менять положение в зависимости от расположения блоков (привязка); 3 и 4. Думаю хорошим решением было бы, чтобы стрелочки всегда "целились" в центр фигуры и начиналась из центра фигуры в независимости от стороны. При этом сам конец стрелочки отрисовывался бы на границе фигуры, а та часть что пересекается с фигурой была бы невидима. На границе фигуры из которой выходит стрелочка можно отрисовывать точку. 5. Было бы неплохо в выпадающем меню иметь возможность менять список с готовыми пресетами (фигурами): "Дом" (размер, цвет), "Работа" (размер, цвет). Сами свойства в списке отображать не нужно, а задавать их (пресеты) можно из StrList; 6. Ну и конечно сохранение в файл. Еще можно осуществить передачу в поток. При этом хорошо бы чтоб структура была вида: <name:'дом'><in>работа#дом;магазин#дом<\in><out>дом#парк<\out><coords>12;25<\coords><\name:'дом'>. Ну или только <out>, чтоб стрелки не дублировались. Если же говорить о возможностях которыми HiAsm обладает вообще, то тут Вам видней Не до красивостей, мне бы хотя бы перечисление связей организовать |
|||
карма: 0 |
|
Ответов: 2236
Рейтинг: 676
|
|||
Вечером постараюсь сделать набросок.
Редактировалось 1 раз(а), последний 2020-09-30 20:49:26 |
|||
карма: 11 |
|
Ответов: 2236
Рейтинг: 676
|
|||
Вот такую заготовку можно доработать:
Зажав блок курсором его можно передвинуть вместе со связями. Редактировалось 2 раз(а), последний 2020-09-30 20:53:16 |
|||
карма: 11 |
| ||
Голосовали: | Poputchik |
Ответов: 16884
Рейтинг: 1239
|
|||
Artie писал(а): 1. Думаю можно обойтись одной формой (прямоугольник), но с возможностью менять размер и цвет;https://grapholite.ru/flowcharts/ |
|||
карма: 25 |
|
Ответов: 4
Рейтинг: 0
|
|||
sla8a писал(а):
Вот такую заготовку можно доработать: При правом клике по полю или блоку выпадает список. Зажав блок курсором его можно передвинуть вместе со связями. Редактировалось 2 раз(а), последний 2020-09-30 20:53:16 Сударь, огромное приогромное спасибо! Эх, мне бы так же шарить как вы Если это Вас не сильно обременит, не могли бы вы подсказать еще как сохранение и загрузку в приложенной вами схеме реализовать. Спасибо! Tad писал(а):
Artie писал(а): 1. Думаю можно обойтись одной формой (прямоугольник), но с возможностью менять размер и цвет; Есть стандартный набор фигур. https://grapholite.ru/flowcharts/ Спасибо за наводку, но тут нужно не только строить блок-схему но и тут же считать введенные данные по связям между блоками. То есть по блок-схеме будет строиться математическая модель. |
|||
карма: 0 |
|
Ответов: 2236
Рейтинг: 676
|
|||
Artie писал(а): как сохранение и загрузку в приложенной вами схеме реализовать. Есть два списка строк. В одном хранится данные о блоке в формате(x, y, ширина, высота, цвет, текст), а во втором данные о связях между блоками в форматеиндекс блока начала связи, индекс блока конца связи). Сохранить эти два списка можно как в обычный текстовой файл, так и в ini файл. |
|||
карма: 11 |
|
Ответов: 4
Рейтинг: 0
|
|||
sla8a писал(а):
Artie писал(а): как сохранение и загрузку в приложенной вами схеме реализовать. Есть два списка строк. В одном хранится данные о блоке в формате(x, y, ширина, высота, цвет, текст), а во втором данные о связях между блоками в форматеиндекс блока начала связи, индекс блока конца связи). Сохранить эти два списка можно как в обычный текстовой файл, так и в ini файл. Прошу простить, не сразу въехал в предложенный Вами алгоритм. Теперь вижу каким образом эти списки строк "прикручены" к схеме и как их можно использовать для сохранения/загрузки. Спасибо! Плюсанул бы всем за помощь если бы не отсутствие рейтинга |
|||
карма: 0 |
|
Ответов: 413
Рейтинг: 57
|
|||
sla8a, возможно ли реализовать добавление на поле сложных фигур (например контур радиодетали с контактными площадками с возможностью их поворота) и нет ли примера?
Может у кого есть набросок трассировщика плат в HiAsm (привязка линий к сетке, рисование линий под углом), чтоб с нуля не начинать. Редактировалось 1 раз(а), последний 2020-10-11 10:50:15 |
|||
карма: 0 |
|
Ответов: 2236
Рейтинг: 676
|
|||
Poputchik, да любые фигуры можно, только нужно сразу определится какие фигуры будут и как будут тянутся связи. С поворотом тоже не должно быть проблем. По поводу примера, то тот что я выложил выше более чем достаточен для понимания как сделать. Конкретно под такую задачу у меня нет.
|
|||
карма: 11 |
|
Ответов: 413
Рейтинг: 57
|
|||
По поводу примера, то тот что я выложил выше более чем достаточен для понимания как сделать. Кое что получается, но это только самое начало и то только работа с линией: https://forum.hiasm.com/getfile/39154 Работают кнопки: настройки, рисовать линию, перетаскивать узел, сетка, ПКМ. Но пока очень много вопросов. Как сделать, чтоб перерисовка сетки меньше ресурсов потребляла? Можно при рисовании линии к сетке привязаться? Как создать радиодеталь и потом перетянуть на поле? В какой файл всё это потом записывать (может Sqlite нужно использовать, для большей скорости обработки данных?)? Может кто, что полезного по данной теме подскажет? Редактировалось 2 раз(а), последний 2020-10-11 22:51:10 |
|||
карма: 0 |
|
Ответов: 2236
Рейтинг: 676
|
|||
Poputchik писал(а): https://forum.hiasm.com/getfile/39153 |
|||
карма: 11 |
|
Ответов: 413
Рейтинг: 57
|
|||
exe Ошибся! Исправил (sha): https://forum.hiasm.com/getfile/39154 Редактировалось 2 раз(а), последний 2020-10-12 20:31:41 |
|||
карма: 0 |
|