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

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

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

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

Всем привет!
В свободное время делаю для себя небольшую 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 версии не менее 1.6 на данный момент нужна последняя версия Lazarus из trunk, FPC версии не менее 3.0.4
  • SVN клиент чтоб скачать исходные коды (под Windows лучше всего подойдет TortoiseSVN, мануал)
Если Вы соберете zcad для Windows64 также понадобится 64 разрядная версия библиотеки GLU32.DLL (системная не подходит, т.к. старой версии) - прилагаю к этому посту, необходимо будет положить ее рядом с ексешником, заменив идущую в дистрибутиве zcad`а 32 разрядную версию GLU32.DLL

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

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

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

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


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

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


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

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


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

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


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

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

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

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,429
<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,105


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

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

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

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

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

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

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


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

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,429
<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,105


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

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

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

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

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

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

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


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

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

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


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

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

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


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

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

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


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

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

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

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


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

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,429
<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
Просмотров: 93
Размер:	68.0 Кб
ID:	217391  
zamtmn вне форума  
 
Автор темы   Непрочитано 08.09.2019, 22:47
#336
zamtmn

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


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

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


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
С.-Петербург
Сообщений: 36,760


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

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

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


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

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,429
<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
Просмотров: 27
Размер:	45.8 Кб
ID:	217863  Нажмите на изображение для увеличения
Название: function.PNG
Просмотров: 23
Размер:	48.4 Кб
ID:	217864  

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

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

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