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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Возможно ли создать линию с блоками в узлах и автоматической нумерацией?

Возможно ли создать линию с блоками в узлах и автоматической нумерацией?

Ответ
Поиск в этой теме
Непрочитано 08.12.2018, 23:01 #1
Возможно ли создать линию с блоками в узлах и автоматической нумерацией?
Молокан
 
Регистрация: 11.01.2017
Сообщений: 4

Добрый день!
Заинтересовался вопросом программирования для автоматизации рутинных операций в AutoCAD, а именно интересует возможно ли создать линию (к примеру, для чертежей по пожарной сигнализации), в узлах которой автоматически будут вставляться блоки датчиков на выбор (т.е. узел как может состоять из датчика, так и нет), при этом эти датчики будут автоматически нумероваться в зависимости от изначально заданных параметров. Также, к примеру, в этой линии можно было-бы удалять и добавлять узлы (т.е. датчики), при этом нумерация всех остальных датчиков, принадлежащих этой линии, будет автоматически меняться. Также интересует, возможно ли добавить этой линии свойство "реальной длины", т.е. чтобы можно было задать высоту установки датчиков в зависимости от типа, и программа автоматически считала всю длину кабеля с опусками и подъемами?
Подскажите пожалуйста, возможно ли создание вот таких интерактивных линий, и в каком направлении нужно двигаться, чтобы понять как это делать?
Заранее спасибо!
Просмотров: 4738
 
Непрочитано 09.12.2018, 01:01
#2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


если вы хотите создать именно такую "умную" линию - то особой альтернативы нет: ObjectARX. Если хотите создать автоматизированное составление спецификации/КЖ - поищите по форуму, здесь несколько вариантов есть: от надстроек над акадом до программы на самописном движке. Ну и самому вполне реально написать, просто информация по длине разделяется по разным местам: длина самой полилинии из характеристик самого примитива, запас на монтаж и подъемы/опуски высчитываются на основе информации о прокладке кабеля и о высоте установке оборудования. И на основании принадлежности оборудования к полилинии/кабелю эти значения добавляются к физической длине самой полилинии. Ну и коэффициент запаса еще, естественно.
Сергей812 вне форума  
 
Непрочитано 09.12.2018, 09:56
#3
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Молокан, Все возможно, но будет ли это реализовано зависит только от Вас. Сергей предложил самый трудный способ (в "лоб"), есть еще как минимум два способа это сделать: DrawableOverrule и псевдосвой объект, у каждого из этих способов есть свои плюсы и минусы.... В любом случае, все эти штуки реализуются только на .NET (C#, VB.NEW, F#) или С++ . Так что, если Вы хотели понять в каком направлении двигаться, то двигаться нужно в сторону серьезного изучения программирования вообще и платформы автокада в частности. У Вас впереди долгий и увлекательный путь...
Boxa вне форума  
 
Непрочитано 09.12.2018, 10:20
#4
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от Boxa Посмотреть сообщение
есть еще как минимум два способа это сделать: DrawableOverrule и псевдосвой объект
Да не нужно ему это) Это обычная задача по обработке распределенных связанных данных.

Цитата:
Сообщение от Молокан Посмотреть сообщение
возможно ли создать линию (к примеру, для чертежей по пожарной сигнализации), в узлах которой автоматически будут вставляться блоки датчиков на выбор (т.е. узел как может состоять из датчика, так и нет), при этом эти датчики будут автоматически нумероваться в зависимости от изначально заданных параметров.
при вставке/удалении оборудования блоки сами определяют (либо пользователь вручную указывает) свой порядковый номер на полилинии и в соответствии с заложенным шаблоном формата нумерации корректируют значения своих атрибутов в событии простоя акада.

А при расчете длины трассы то же самое (описанное мною выше) делается в голове или во вспомогательных файлах во время реального проектирования. Причем несколько раз: сначала по время рисования планов кабельных трасс и расположения оборудования, затем во время создания КЖ и спецификации. И если это делать в один проход, то появляется экономия времени и заодно меньше тупой нудной работы)
Сергей812 вне форума  
 
Непрочитано 09.12.2018, 14:53
#5
Nike

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


Цитата:
Сообщение от Молокан Посмотреть сообщение
в каком направлении нужно двигаться
в этом
http://rubezhcad.ru/
Nike вне форума  
 
Непрочитано 19.12.2018, 20:05
#6
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


можно на vba сделать
(далее код с ошибками) только принцип

dim 1stpoint as variant
dim 2point variant
dim lin as acadline
dim bl as acadblockreference
в точку вставляете динамический блок (над его организацией надо думать) и

1stpoint=...getpoint()
2tpoint=...getpoint()

set lin =thisdrawing.modelspace.addline(1point,2point)
set bl=thisdrawing.modelspace.addblockref(1point)

массив последовательных точек из набора соединенных линий делается легко
массив блоков вставленных в эти точки тоже

а потом обрабатывайте как хотите
p_sh вне форума  
 
Непрочитано 19.12.2018, 21:02
#7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Хоть прочитайте, что в шапке написано:
Цитата:
Сообщение от Молокан Посмотреть сообщение
а именно интересует возможно ли создать линию (к примеру, для чертежей по пожарной сигнализации), в узлах которой автоматически будут вставляться блоки датчиков на выбор (т.е. узел как может состоять из датчика, так и нет), при этом эти датчики будут автоматически нумероваться в зависимости от изначально заданных параметров. Также, к примеру, в этой линии можно было-бы удалять и добавлять узлы (т.е. датчики), при этом нумерация всех остальных датчиков, принадлежащих этой линии, будет автоматически меняться.
не просто getpoint, а проекция на полилинию с поиском ближайшей вершины. И не надо отрезками эмулировать полилинию. Надо работать со списком блоков, принадлежность блоков к которому и порядок следования задается указанной полилинией.
Сергей812 вне форума  
 
Непрочитано 19.12.2018, 21:09
#8
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


можно цепочку блоков просто создавать со ссылками (можно использовать атрибуты) на handle предыдущего и последующего блоков (у которых есть insertionpoint).
т.е. обращаясь к одному блоку - имеешь доступ ко всей цепи, а обрисовать ее хоть линиями хоть полилинией - дело вкуса.
handle линий тоже записывать в атрибуты блоков. и уже есть доступ ко всем объектам мультиобъекта (чего-там в заголовке)

просто надо продумать сколько объектов привязать к блоку через handle : текст-номер, блок-изображение и т.д.
и будет база данных
а если у всех блоков будет атрибут идентификатор (объекта в заголовке) то горизонты потенциальных возможностей для обработки вырастают до нужных размеров

Последний раз редактировалось p_sh, 19.12.2018 в 21:16.
p_sh вне форума  
 
Непрочитано 19.12.2018, 21:49
#9
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от p_sh Посмотреть сообщение
можно цепочку блоков просто создавать со ссылками (можно использовать атрибуты) на handle предыдущего и последующего блоков (у которых есть insertionpoint).
т.е. обращаясь к одному блоку - имеешь доступ ко всей цепи, а обрисовать ее хоть линиями хоть полилинией - дело вкуса.
блоки - определяют на выходе количество оборудования в спецификации
полилинии и т.п. - длины кабелей в спецификации.
это связанные величины.

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

----- добавлено через 42 сек. -----
p.s. а еще есть кабельный журнал
Сергей812 вне форума  
 
Непрочитано 19.12.2018, 21:52
#10
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


Цитата:
файлах чертежей вообще находятся?)
пишешь в атрибут имя,путь файла и handle блока который чего-то продолжает
если объект полилиния удобен (длину легко определить) то можно использовать её (свойства). (как объект и поля БД через её handle)
но метки опорных точек все равно лучше задавать блоками с атрибутами, содержащими необходимые поля БД

Последний раз редактировалось p_sh, 19.12.2018 в 21:57.
p_sh вне форума  
 
Непрочитано 19.12.2018, 22:18
#11
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Хэндл поменяется - и во всех связанных элементах во всех файлах (при их наличии) править ссылку?
Сергей812 вне форума  
 
Непрочитано 20.12.2018, 03:50
#12
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


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

В данном случае узел с номером, изображением, ссылками на объекты И т.д.

----- добавлено через ~3 ч. -----
пример использования блоков+линии+размер+ VBA

https://yadi.sk/i/NFAIT0ZfQKQGag

Последний раз редактировалось p_sh, 13.01.2019 в 09:31.
p_sh вне форума  
 
Непрочитано 20.12.2018, 10:06
#13
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от p_sh Посмотреть сообщение
Handle примитива не изменяется.
примитив может быть изменен пользователем) А после этого придется еще и другие примитивы (ссылающиеся по хэндлу на этот примитив) править, хотя они сами не изменились и их вообще трогать не надо по нормальному.

ObjectId не изменяется, а генерируется при открытии БД чертежа/создании новых примитивов.

Цитата:
Сообщение от p_sh Посмотреть сообщение
Handle и блоков с атрибутами достаточно для решения построения любых фантазий.
ну тут на форуме кто-то и кабели пытается блоками делать (чтобы использовать атрибуты) - уверяя всех, что это очень удобно)
Сергей812 вне форума  
 
Непрочитано 20.12.2018, 10:13
#14
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


всё решаемо.
p_sh вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Возможно ли создать линию с блоками в узлах и автоматической нумерацией?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoCad Civil 3D 15. Как создать линию по азимуту? ШАЮ Вертикальные решения на базе AutoCAD 21 24.08.2016 17:28
народ помогите создать линию проектируемой телефонной канализации ОлегD AutoCAD 13 23.08.2011 19:30
Возможно ли создать фаску между дугой и полилинией в AutoCAD 2010??? Vanya_tut AutoCAD 12 19.05.2010 15:59