| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание CAD программы с нуля

Создание CAD программы с нуля

Ответ
Поиск в этой теме
Непрочитано 19.11.2013, 00:29 6 |
Создание CAD программы с нуля
zamtmn
 
КИПиА
 
Tyumen
Регистрация: 21.03.2005
Сообщений: 1,453

Всем привет!
В свободное время делаю для себя небольшую CAD программу - всегда было интересно как это работает внутри.
На данный момент есть следующие наработки:
  • Довольно быстрый OpenGL рендеринг чертежа
  • Кроссплатформенность (Windows/Linux, x86/x64, win/gtk/qt)
  • поддержка подмножества DXF версии 2000
  • поддержка SHX, TTF шрифтов
  • поддержка типов линий
  • поддержка примитивов POINT, LINE, CIRCLE, POLYLINE, LWPOLYLINE, ARC, ELLIPSE, INSERT, TEXT, MTEXT, 3DFACE, SOLID, SPLINE
  • некоторые потуги автоматизации слаботочных разделов проекта
Cтраничка программы на SourceForge
Cтраничка программы на GitHub
Cтраничка программы на Ohloh

Программа пишется на паскале, компилируется в Lazarus/FPC. Исходный код открыт и лежит в SVN репозитории Git репозитории
Текущую сборку программы можно взять тут, но лучше тут (более менее свежие сборки для Windows_x86 и для Linux_x86_64, другие - стареханькие). Для работы требуется аппаратная поддержка OpenGL на целевом компе
Также программу можно собрать самомтоятельно, для этого понадобятся:
  • релизный Lazarus версии не менее 2.0.10 на базе FPC версии не менее 3.2

Программа не требует установки и не пишет\читает ничего в системные папки (за исключением TEMP) Под windows не допускаются кирилические (и другие) символы в пути к программе (в путях к dxf файлам допускаются), linux версия такой болезнью не страдает.

Для запуска доступны следующие ключи командной строки:
  • NLL - отключение загрузки файла докинга окон, окна открываются непристыкованными, но докинг работает
  • SI - полное отключение докинга, зкад работает в однооконном режиме (очень недоделанном)
  • UPDATEPO - отключение закрузки локализации, будет запущена английская версия. Также в этом режиме доступна команда обновления файлов локализации
  • NOSPLASH - отключение показа окна загрузки
  • путь/к/файлу.dxf - открыть указанный файл

Любые замечания/предложения приветствуются!

Вложения
Тип файла: zip glu.zip (903.8 Кб, 378 просмотров)


Последний раз редактировалось zamtmn, 08.07.2020 в 00:19.
Просмотров: 110617
 
Непрочитано 06.02.2019, 18:59
| 1 #321
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,951


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Понадобился контрол для вставки блоков в чертеж.
Думаю какой сделать: некую древовидную структуру или в виде палитры как в автокаде.
Где можно подглядеть удачные реализации вставки блоков из библиотеки?
вот: http://www.kdmsoft.ru/multielement.html
Nike вне форума  
 
Непрочитано 06.02.2019, 20:09
#322
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,815


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Понадобился контрол для вставки блоков в чертеж.
Думаю какой сделать: некую древовидную структуру или в виде палитры как в автокаде.
Где можно подглядеть удачные реализации вставки блоков из библиотеки?
Design center?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 06.02.2019, 20:45
#323
gesper

Проектирование разделов ЭО и ЭМ
 
Регистрация: 18.04.2009
Москва
Сообщений: 128


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Понадобился контрол для вставки блоков в чертеж.
Думаю какой сделать: некую древовидную структуру или в виде палитры как в автокаде.
Где можно подглядеть удачные реализации вставки блоков из библиотеки?
Мое предложение: Не трать время на дураков и бездельников. Делай как нужно тебе.

Но если бы я делал: Сделай параметр "Папка блоков" в программе, и по умолчанию пусть будет ссылаться на соответствующую папку в директории программы.
Там собственно храни блоки дефолтные. Пользователь захочет - сменит расположение на нужное ему.
А содержимое папки в виде дерева пусть отображается в диалоге загрузки.

Примерно как на картинке ниже , только у тебя будет справа просмотр содержимого файла. Дизайн центр автокада имеет схожую картину, но он очень жирный по функционалу и пугает людей. Они в нем при первом просмотре теряются. И там нет первоначальной папки пользователя, там проводник открывается с кучей папок - это не удобно если надо сделать свой древовидный каталог под нужды.
Нажмите на изображение для увеличения
Название: resedit jadwiga 2019.jpg
Просмотров: 160
Размер:	308.8 Кб
ID:	210718
gesper вне форума  
 
Автор темы   Непрочитано 06.02.2019, 22:52
#324
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,453
<phrase 1=


Nike
Спасибо.
АлексЮстасу
Design center - имхо слишком замудрен, для начала начну с чегото простого - именно с палитры
gesper
Лясы поточить тоже бывает полезно
>>Но если бы я делал:
В моем случае так не получится, т.к. у зкадных блоков есть зависимости - прежде чем загрузить какойто блок, возможно нужно загрузить зависимые блоки. Например сейчас прежде чем использовать блоки из файлов зкада _ops.dxf или _kip.dxf нужно загрузить файл _connectors.dxf - он содержит определения блоков коннекторов используемых в блоках ops или kip (а в этих файлах вместо коннекторов пустые блоки заглушки) сделано для облегчения внесения изменений - правим коннектор в одном файле - изменения появляются везде.
Я в принципе уже продумал - структура блоков будет грузиться из xml конфига. конфиг с иконками блоков будет создаваться отдельной утилитой (вдальнейшем, сначала ручками)) ) Интересует сама реализация интерфейса - дерево\палитра\еще_както
zamtmn вне форума  
 
Непрочитано 06.02.2019, 23:21
#325
gesper

Проектирование разделов ЭО и ЭМ
 
Регистрация: 18.04.2009
Москва
Сообщений: 128


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Nike
В моем случае так не получится, т.к. у зкадных блоков есть зависимости - прежде чем загрузить какойто блок, возможно нужно загрузить зависимые блоки. Например сейчас прежде чем использовать блоки из файлов зкада _ops.dxf или _kip.dxf нужно загрузить файл _connectors.dxf - он содержит определения блоков коннекторов используемых в блоках ops или kip (а в этих файлах вместо коннекторов пустые блоки заглушки) сделано для облегчения внесения изменений - правим коннектор в одном файле - изменения появляются везде.
Как не получится шеф? Все просто. Если блоки делаешь в zcad то файлы dxf делаешь в нем же, так? А значит при экспорте _ops.dxf рядом с ним появляется _ops_links.xml который описывает что еще надо подгрузить и в каком порядке.

Если палитра, то потом ее на группы делить придется рано или поздно, а это тоже самое дерево. Просто мой вариант нагляднее и менее трудозатратен.
gesper вне форума  
 
Непрочитано 07.02.2019, 07:07
#326
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 11,650


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Понадобился контрол для вставки блоков в чертеж.
Думаю какой сделать: некую древовидную структуру или в виде палитры как в автокаде.
Где можно подглядеть удачные реализации вставки блоков из библиотеки?
Я уже не раз показывал свое древовидное меню. Визуально это дерево чего угодно. Хоть блоков, хоть программ.

Каждый "листик" имеет иллюстрацию и длинное описание. Иллюстрацию можно сделать или изменить прямо "на лету" вырезкой из окна любой программы. У каждого листика есть свой "скрипт", в котором можно написать что угодно - у меня это Лисп-выражение.

Может быть множественный выбор веток, например для выбора списка "ссылочных" документов.

Структура дерева хранится в XML. При этом XML может иметь вложения. Вложенный XML вставляется со всеми своими ветками и также может иметь вложения. При вызове аргументом передается начальный уровень. В результате может отобразиться и несколько сотен элементов и всего несколько. Структуру можно хранить и в одном файле БД, передавая аргументом фильтр для записей. Но это менее удобно для редактирования.

Такое окно может вызываться в модальном режиме или постоянно висеть на экране, свертываясь в полоску.
Миниатюры
Нажмите на изображение для увеличения
Название: xml_3d_pipe_support.png
Просмотров: 199
Размер:	21.1 Кб
ID:	210723  Нажмите на изображение для увеличения
Название: xml_tables_ved_type_details.png
Просмотров: 94
Размер:	9.5 Кб
ID:	210724  Нажмите на изображение для увеличения
Название: xml_2d_kip.png
Просмотров: 101
Размер:	15.0 Кб
ID:	210725  Нажмите на изображение для увеличения
Название: xml_3d_kip.png
Просмотров: 98
Размер:	114.5 Кб
ID:	210726  Нажмите на изображение для увеличения
Название: xml_2d_filters.png
Просмотров: 114
Размер:	13.4 Кб
ID:	210727  

ShaggyDoc вне форума  
 
Непрочитано 07.02.2019, 07:41
#327
Бахил

?
 
Регистрация: 17.06.2014
Царицын
Сообщений: 9,111


ShaggyDoc,
__________________
В конструктивных дискуссиях каждый участник укрепляется в своих заблуждениях.
Бахил вне форума  
 
Автор темы   Непрочитано 07.02.2019, 17:25
#328
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,453
<phrase 1=


ShaggyDoc
При всем уважении, это решение в лоб, а не удачная реализация. Будь я пользователем программы, просил бы добавить хотябы возможность фильтрации дерева
zamtmn вне форума  
 
Непрочитано 07.02.2019, 18:33
#329
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 11,650


Цитата:
Сообщение от zamtmn Посмотреть сообщение
ShaggyDoc
При всем уважении, это решение в лоб, а не удачная реализация. Будь я пользователем программы, просил бы добавить хотябы возможность фильтрации дерева
Была и такая реализация - дерево в базе данных и установка фильтра. Но фильтр и вообще дополнительные контролы - излишняя сложность именно для обычных "теток". Им проще свернуть-развернуть дерево, чем выбирать дополнительные параметры.

Да и диалог в этом случае получается универсальный, для любых данных.

Ну а там, где действительно надо - можно и фильтр и поиск сделать. На картинках:

Дерево строительных материалов (798 позиций). Его можно на лету сгруппировать так, чтобы было удобней. Например в отдельную ветку перенести "избранное".

А можно воспользоваться фильтром и отобрать только то, что соответствует заданным условиям. Но это дополнительное шевеление мозгами и ввод условия.

Можно еще и поиск по условию применить. Кому как удобнее, тот так и работает.
Миниатюры
Нажмите на изображение для увеличения
Название: tree_filter_0.jpg
Просмотров: 97
Размер:	190.1 Кб
ID:	210776  Нажмите на изображение для увеличения
Название: tree_filter.jpg
Просмотров: 74
Размер:	188.0 Кб
ID:	210777  Нажмите на изображение для увеличения
Название: tree_filter_2.jpg
Просмотров: 54
Размер:	113.7 Кб
ID:	210778  Нажмите на изображение для увеличения
Название: tree_filter_3.jpg
Просмотров: 70
Размер:	201.5 Кб
ID:	210780  
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 08.02.2019, 08:57
#330
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,453
<phrase 1=


Склоняюсь к введению в интерфейс наряду с тулбарами палитр. Будут читаться из xml и отображаться в виде дерева или списка, в зависимости от настроек. наполнение - не только блоки, но и любые команды зкада. Настройку внешнего вида палитр в виде закладок возложу на плечи штатного зкадного механизма стыковки.

Аналог design center полежит в моих влажных мечтах до лучших времен((
zamtmn вне форума  
 
Автор темы   Непрочитано 20.02.2019, 22:35
#331
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,453
<phrase 1=


Появилась "фича" экспорта соединений в dot формат для визуализации в graphviz. Практического смысла не имеет, но наглядность и контроль ошибок повышает. Выглядит както так:

----- добавлено через ~11 мин. -----
тестовый пример из состава зкада https://imgur.com/a/nQ0UFxu
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 123
Размер:	130.1 Кб
ID:	211177  
zamtmn вне форума  
 
Непрочитано 24.02.2019, 14:51
#332
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,815


Цитата:
Сообщение от zamtmn Посмотреть сообщение
возможность фильтрации дерева
Мы фильтры сделали так:
1. Выбор по названию - при вводе любых символов в строке Search сразу отображаются только те классы и типы объектов, чьи названия содержат эти наборы символов.
2. У окна меню-дерева три закладки: Classification, Recent, Favorites.
Classification - вся классификация, все типы объектов.
Recent - использованные типы объектов. Располагаются от чаще и позднее используемых к менее и ранее использованным.
Favorites - вручную создаваемая выборка типов объектов, которые хотелось бы иметь под рукой. Можно сразу добавлять свои разделители групп объектов, произвольно структурировать список, перетаскивая вверх-вниз.
Миниатюры
Нажмите на изображение для увеличения
Название: Справочник_материалов_1.png
Просмотров: 62
Размер:	32.2 Кб
ID:	211306  Нажмите на изображение для увеличения
Название: Справочник_материалов_фильтр_Search.png
Просмотров: 34
Размер:	10.5 Кб
ID:	211307  Нажмите на изображение для увеличения
Название: Справочник_материалов_Recent.png
Просмотров: 28
Размер:	14.8 Кб
ID:	211308  Нажмите на изображение для увеличения
Название: Справочник_материалов_add_Favorites.png
Просмотров: 43
Размер:	35.5 Кб
ID:	211309  Нажмите на изображение для увеличения
Название: Справочник_материалов_Favorites.png
Просмотров: 27
Размер:	14.5 Кб
ID:	211310  

__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 25.02.2019, 11:43
#333
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,453
<phrase 1=


АлексЮстасу
в целом я делаю тоже самое, но

>>1. Выбор по названию - при вводе любых символов в строке Search сразу отображаются только те классы и типы объектов, чьи названия содержат эти наборы символов.
я хочу одну глобальную "строку Search" а не отдельно на каждую "палитру"

Ну и интерактивное редактирование панелей я оставляю на далекое потом. пока придется ручками править xmlки с конфигами
zamtmn вне форума  
 
Непрочитано 25.02.2019, 21:52
#334
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,815


Цитата:
Сообщение от zamtmn Посмотреть сообщение
я хочу одну глобальную "строку Search" а не отдельно на каждую "палитру"
Глобальную - это куда? К чему?
У нас не несколько таких окон, а одно. И одна строка Search. Похоже, и у ShaggyDoc окно одно. В которое загружается нужное сейчас содержание.
И у ToolPalettes, и у Design Center тоже одно.
Цитата:
Сообщение от zamtmn Посмотреть сообщение
Ну и интерактивное редактирование панелей я оставляю на далекое потом
Я вообще-то не говорил про интерактивное редактирование. Оно, скорее, вредно.
Да. перенос и создание заголовков у нас есть, но во вспомогательной закладке окна - Favorites (Избранное). Туда пользователь может произвольно набрать какие-то чаще нужные типы объектов из большого основного меню в Classification.
А в основной закладке, в Classification обязательно отображается состав объектов полностью, и в том виде, в каком описан.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 02.09.2019, 14:16
#335
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,453
<phrase 1=


На полгодика замотало, не до зкада было((
Появилось время, продолжу ковыряния. В первом приближении соорудил палитры: обычную (снизу) и древовидную (справа) на скриншоте показан следующий конфиг:
Код:
[Выделить все]
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
  <PalettesContent>
    <BlockLib Type="Tree" Caption='Библиотека блоков' ImagesWidth='24'>
      <ZTreeNode Caption='Сдаботочка'>
        <ZTreeNode Caption='Сигнализация'>
          <ZTreeCommand Command="Insert(DEVICE_PS_ARK_DEVICE)" Img='DEVICE_PS_ARK_DEVICE_150' Caption='Прибор'/>
          <ZTreeNode Caption='ПС'>
            <ZTreeNode Caption='Извещатели'>
              <ZTreeCommand Command="Insert(DEVICE_PS_DAT_SMOKE)" Img='DEVICE_PS_DAT_SMOKE_150' Caption='Дымовой'/>
              <ZTreeCommand Command="Insert(DEVICE_PS_DAT_SMOKE_FALSH)" Img='DEVICE_PS_DAT_SMOKE_FALSH_150' Caption='Дымовой запотолочный1'/>
              <ZTreeCommand Command="Insert(DEVICE_PS_DAT_SMOKE_FALSH2)" Img='DEVICE_PS_DAT_SMOKE_FALSH2_150' Caption='Дымовой запотолочный2'/>
              <ZTreeCommand Command="Insert(DEVICE_PS_DAT_SMOKE_AVTON)" Img='DEVICE_PS_DAT_SMOKE_AVTON_150' Caption='Дымовой автономный'/>
              <ZTreeCommand Command="Insert(DEVICE_PS_DAT_TERMO)" Img='DEVICE_PS_DAT_TERMO_150' Caption='Тепловой'/>
              <ZTreeCommand Command="Insert(DEVICE_PS_DAT_HAND)" Img='DEVICE_PS_DAT_HAND_150' Caption='Ручной'/>
            </ZTreeNode>
          </ZTreeNode>
        </ZTreeNode>
     </ZTreeNode>
    </BlockLib>
    <PSDat Type="vsIcon" Caption='Извещатели ПС' ImagesWidth='48'>
      <ZVSICommand Command="Insert(DEVICE_PS_DAT_SMOKE)" Img='DEVICE_PS_DAT_SMOKE_300' Caption='Дымовой'/>
      <ZVSICommand Command="Insert(DEVICE_PS_DAT_SMOKE_FALSH)" Img='DEVICE_PS_DAT_SMOKE_FALSH_300' Caption='Дымовой запотолочный1'/>
      <ZVSICommand Command="Insert(DEVICE_PS_DAT_SMOKE_FALSH2)" Img='DEVICE_PS_DAT_SMOKE_FALSH2_300' Caption='Дымовой запотолочный2'/>
      <ZVSICommand Command="Insert(DEVICE_PS_DAT_SMOKE_AVTON)" Img='DEVICE_PS_DAT_SMOKE_AVTON_300' Caption='Дымовой автономный'/>
      <ZVSICommand Command="Insert(DEVICE_PS_DAT_TERMO)" Img='DEVICE_PS_DAT_TERMO_300' Caption='Тепловой'/>
      <ZVSICommand Command="Insert(DEVICE_PS_DAT_HAND)" Img='DEVICE_PS_DAT_HAND_300' Caption='Ручной'/>
    </PSDat>
  </PalettesContent>
</CONFIG>
картинки блоков генерятся на основе определений блоков, но содержимое палитр пока без фильтрации - штатный TTreeView c с ней не очень дружит
Миниатюры
Нажмите на изображение для увеличения
Название: palettes.png
Просмотров: 101
Размер:	68.0 Кб
ID:	217391  
zamtmn вне форума  
 
Автор темы   Непрочитано 08.09.2019, 22:47
#336
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,453
<phrase 1=


Вот что получилось в итоге https://youtu.be/J0SxhpaLxhg
zamtmn вне форума  
 
Непрочитано 09.09.2019, 17:50
#337
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,815


zamtmn - Смотрю, Вы использовали прием, о котором я писал - строку выбора?
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось Кулик Алексей aka kpblc, 10.09.2019 в 08:26.
АлексЮстасу вне форума  
 
Непрочитано 10.09.2019, 08:28
#338
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 37,465


Тема почищена от обсуждения ruCAD, сообщения перемещены в тему https://forum.dwg.ru/showthread.php?t=12788.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.09.2019, 21:42
#339
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,815


Цитата:
Сообщение от zamtmn Посмотреть сообщение
В первом приближении соорудил палитры
При черчении из этих палитр графическим элементам придается сразу и неграфический идентификатор? Определяющий, что этот блок - извещатель дымовой, а эта линия - кабель такой-то? Один и тот же объект реальности может отображаться множеством способов - в зависимости от авторов, задач и подходов. И наоборот - графические элементы с одинаковыми свойствами могут отображать разные сущности. Неграфические идентификаторы дают дополнительную степень свободы для управления данными. И превращают чертеж в объектную модель, а графический редактор в собственно CAD. Не полностью, конечно, но создают обязательную его основу.
Заодно и дается ли сразу возможность описывать нужные неграфические характеристики объектов? Типа: фирма-производитель, материал и пр.?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 14.09.2019, 22:53
#340
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,453
<phrase 1=


При работе с этими палитрами выполняются команды привязаные к элементам. В простейшем (данном) случае это просто вставка устройства, с присвоеными свойствами поумолчанию.
>>Один и тот же объект реальности может отображаться множеством способов - в зависимости от авторов, задач и подходов.
Согласен. я выше https://forum.dwg.ru/showpost.php?p=...&postcount=197 закидывал удочки на эту тему. И даже недавно начал работу в этом направлении по второму варианту с учетом #199. Но пока хвастать нечем, проблем больше чем результатов. Суть:
На чертеже вставлено несколько устройств. они между собой связаны, есть "главное устройство" и его "представители". Например главное устройство - извещатель на плане, а на схеме подключений его "представитель". Каждое это устройство имеет свой набор "атрибутов" (в терминологии понятной автокадчикам), но при работе с представителем мы также имеем доступ к атрибутам главного устройства. т.е. выделив извещатель на схеме мы в инспекторе увидим также свойства извещателя на плане. Но это 2 разных примитива.
Чтобы понять кто есть кто у каждого блока есть 2 переменных его позиционирующие: ENTID_Representation и ENTID_Function это обычные строковые переменные
ENTID_Representation - тут лежит что это устройство из себя представляет - сущьность на плане, на схеме, на какой схеме...
ENTID_Function - тут лежит что это за устройсто извещатель, светильник, двигатель...
По задумке ENTID_Function лежит в "главном устройстве" а ENTID_Representation есть и в "главном устройстве" и в "представителе". Т.е. ткнув любое устройство на чертеже и прочитав его "атрибуты" мы увидим например
ENTID_Representation='onScheme|Electrical_circuit';
ENTID_Function='Power_consumer|Other|Motor';
т.е. это представление на схеме электрической для потребителя энергии - двигателя. значение этих переменных по сути адрес веток дерева с разделителем '|', т.е. выбрав например все устройства попадающие под шаблон 'ENTID_Function='Power_consumer|*' мы выберем всех потребителей энергии на чертеже. Срины редакторов значений этих переменных я приложу, может станет понятней что я имею ввиду. но деревья в редакторах "тестовые" для реальных применений они будут куда ветвистее. Это еще только тесты и мысли, в реальной работе я это не пробовал.

----- добавлено через ~5 мин. -----
На данный момент большие проблемы
>>На чертеже вставлено несколько устройств. они между собой связаны, есть "главное устройство" и его "представители".
с копированием и удалением примитивов участвующих в этих связях. Но надеюсь все решится и эти моменты станут более менее интуитивно понятны для пользователя
Миниатюры
Нажмите на изображение для увеличения
Название: representation.PNG
Просмотров: 32
Размер:	45.8 Кб
ID:	217863  Нажмите на изображение для увеличения
Название: function.PNG
Просмотров: 31
Размер:	48.4 Кб
ID:	217864  

Последний раз редактировалось zamtmn, 14.09.2019 в 23:13.
zamtmn вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание CAD программы с нуля

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск