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

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

Как присвоить атрибуты для полилинии

Ответ
Поиск в этой теме
Непрочитано 14.02.2020, 10:57 #1
Как присвоить атрибуты для полилинии
romanov.gasu
 
Регистрация: 14.02.2020
Сообщений: 5

Добрый день! Нужна помощь.
Есть ли возможность в autocad присвоить необходимые атрибуты для полилинии?
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 467
Размер:	44.8 Кб
ID:	223117

Просмотров: 11393
 
Непрочитано 14.02.2020, 11:02
#2
Кулик Алексей aka kpblc
Moderator

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


В чистом ACAD - нереально
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 14.02.2020, 11:03
#3
romanov.gasu


 
Регистрация: 14.02.2020
Сообщений: 5


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В чистом ACAD - нереально
Где реально???
romanov.gasu вне форума  
 
Непрочитано 14.02.2020, 11:19
#4
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Цитата:
Где реально???
Map 3D, он есть в комплекте AutoCAD One
trir вне форума  
 
Автор темы   Непрочитано 14.02.2020, 13:26
#5
romanov.gasu


 
Регистрация: 14.02.2020
Сообщений: 5


Цитата:
Сообщение от trir Посмотреть сообщение
Map 3D, он есть в комплекте AutoCAD One
Подскажите пожалуйста как это сделать в Map 3d!
romanov.gasu вне форума  
 
Непрочитано 14.02.2020, 13:43
1 | #6
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


https://knowledge.autodesk.com/ru/su...1DCBF-htm.html
1. Создать таблицу
2. Подключить к примитиву
3. Заполнить

Или лучше использовать FDO, но там нужно знать SQL
trir вне форума  
 
Непрочитано 17.02.2020, 00:57
#7
mvz

Генпланист, AutoCad 2009 Eng
 
Регистрация: 26.06.2008
Москва
Сообщений: 33


Цитата:
Сообщение от trir Посмотреть сообщение
https://knowledge.autodesk.com/ru/su...1DCBF-htm.html
1. Создать таблицу
2. Подключить к примитиву
3. Заполнить
Спасибо!

Почитал, youtube посмотрел, наконец-то получилось.
Да, шаг на ускорение процесса произошел, но я сделал это, выделяя в заданном порядке каждый контур штриховки по очереди.
Более 500 выделять всё таки долго. =)
Как-нибудь можно привязать номера к штриховкам?
Чтобы выделить все разом и получить результат - таблицу с номерами зон и их площади.
mvz вне форума  
 
Непрочитано 17.02.2020, 04:36
#8
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Цитата:
но я сделал это, выделяя в заданном порядке каждый контур штриховки по очереди.
Более 500 выделять всё таки долго. =)
Как-нибудь можно привязать номера к штриховкам?
так ведь это нужно сделать один раз

Цитата:
Чтобы выделить все разом и получить результат - таблицу с номерами зон и их площади.
через _mapexport можно вытащить площадь в атрибуты, экспортировать в gml, потом открыть в Excel как таблицу, а от туда copy-past в AutoCAD как таблицу
FDO

Последний раз редактировалось trir, 17.02.2020 в 06:42.
trir вне форума  
 
Автор темы   Непрочитано 18.02.2020, 17:03
#9
romanov.gasu


 
Регистрация: 14.02.2020
Сообщений: 5


Цитата:
Сообщение от trir Посмотреть сообщение
https://knowledge.autodesk.com/ru/su...1DCBF-htm.html
1. Создать таблицу
2. Подключить к примитиву
3. Заполнить

Или лучше использовать FDO, но там нужно знать SQL
Понял, спасибо. Получилось.
Но при сохранении в dwg в autocad не открываются эти атрибуты!!! Пустота. как их экспортировать из Map 3D?
romanov.gasu вне форума  
 
Непрочитано 19.02.2020, 08:11
#10
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Цитата:
как их экспортировать из Map 3D?
зачем?
trir вне форума  
 
Автор темы   Непрочитано 19.02.2020, 09:53
#11
romanov.gasu


 
Регистрация: 14.02.2020
Сообщений: 5


Цитата:
Сообщение от trir Посмотреть сообщение
зачем?
У Заказчика чистый autocad. Задача, чтобы он видел эти данные без установки дополнительных программ.
romanov.gasu вне форума  
 
Непрочитано 19.02.2020, 10:05
#12
Сергей812


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


Цитата:
Сообщение от romanov.gasu Посмотреть сообщение
У Заказчика чистый autocad. Задача, чтобы он видел эти данные без установки дополнительных программ.
напишите/закажите софтину, которая создает блоки из полилиний и заносит им в атрибуты привязанные данные... а хотеть можно что угодно, только
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В чистом ACAD - нереально
Сергей812 вне форума  
 
Непрочитано 19.02.2020, 10:57
#13
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от romanov.gasu Посмотреть сообщение
У Заказчика чистый autocad. Задача, чтобы он видел эти данные без установки дополнительных программ.
Расширенные данные считаются за атрибуты? Здесь много лет назад было обсуждение и наработки: https://forum.dwg.ru/showthread.php?t=4599
А команды xdata и xdlist из Экспресса считаются средством добавления/просмотра без дополнительных программ?
kp+ вне форума  
 
Непрочитано 20.02.2020, 09:57
#14
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


Цитата:
Сообщение от kp+ Посмотреть сообщение
Расширенные данные считаются за атрибуты?
в широком смысле их имхо можно считать атрибутами. можно даже прикрутить к полилиниям расширенные лисп данные. вопрос только в том как заказчик планирует видеть эти данные (кликать каждую полилинию, наезжать на неё, как-то ещё...), что с ними затем должно происходить?
koMon вне форума  
 
Непрочитано 20.02.2020, 10:08
#15
Сергей812


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


Цитата:
Сообщение от koMon Посмотреть сообщение
в широком смысле их имхо можно считать атрибутами. можно даже прикрутить к полилиниям расширенные лисп данные. вопрос только в том как заказчик планирует видеть эти данные (кликать каждую полилинию, наезжать на неё, как-то ещё...), что с ними затем должно происходить?
ну если на .Net - несложно сделать немодальную палитру, куда будет выводиться информация о выделенных полилиниях. А чтобы без всяких надстроек - это в блоки перевести, как выше предлагал - тогда он увидит значения в стандартной панели свойств даже в LT.
Сергей812 вне форума  
 
Непрочитано 20.02.2020, 10:16
#16
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


OD можно вывести в Аннотации - это блоки с текстом
trir вне форума  
 
Непрочитано 20.02.2020, 11:34
#17
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну если на .Net - несложно сделать немодальную палитру
ну лично мне всегда нравится наезжать))) эта палитра всегда будет висеть после загрузки или будет всплывать при наезде на полилинию?
koMon вне форума  
 
Непрочитано 20.02.2020, 11:47
#18
Сергей812


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


Цитата:
Сообщение от koMon Посмотреть сообщение
эта палитра всегда будет висеть после загрузки или будет всплывать при наезде на полилинию?
если под "наездом" подразумевается выделение - то можно в обработчике изменения текущего набора выделенных элементов управлять видимостью палитры этой.
Сергей812 вне форума  
 
Непрочитано 20.02.2020, 11:56
#19
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


то есть будет висеть...
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
если под "наездом" подразумевается
hover over
koMon вне форума  
 
Непрочитано 20.02.2020, 12:08
#20
Сергей812


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


Цитата:
Сообщение от koMon Посмотреть сообщение
hover over
ну тут через PointMonitor обработчик события можно подвеситься, наверно - только это жестоко, имхо: постоянно "прыгающая" туда-сюда по состоянию видимости палитра при перемещении мыши над примитивами) Тогда уж лучше всплывающие окно/контрол на указатель мыши прицепить...
Сергей812 вне форума  
 
Непрочитано 20.02.2020, 12:56
#21
Boxa

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


ИМХО. Если бы мне нужно было бы сделать подобное и с полной совместимостью с чистым автокадом, то я бы смотрел в сторону псевдо кусомных объектов на основе анонимных блоков. А по поводу панели и свойств.... гуглится OPMNetExt
Но все это нужно обсуждать явно не в этом разделе форума...
Boxa вне форума  
 
Непрочитано 20.02.2020, 13:02
#22
Сергей812


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


Цитата:
Сообщение от Boxa Посмотреть сообщение
то я бы смотрел в сторону псевдо кусомных объектов на основе анонимных блоков
Цитата:
Сообщение от Boxa Посмотреть сообщение
и с полной совместимостью с чистым автокадом
зачем псевдо? Уже предлагал перевести полилинии в обычные блоки - но поскольку нет готового решения, то у ТС и интереса к этому нет, похоже)
Сергей812 вне форума  
 
Непрочитано 20.02.2020, 13:46
#23
Куинбус Флестрин


 
Регистрация: 12.12.2016
Сообщений: 24


Возможно Вас поможет программа от уважаемого Lee Mac.

http://www.lee-mac.com/programs.html

Length Field to Attribute - заносит длину полилинии в атрибуты блока.

Area Field to Attribute - заносит площадь в атрибуты блока.

----- добавлено через ~1 мин. -----
Это ответ на просьбу в посте 12.

----- добавлено через ~2 мин. -----
площадь и длина заносятся в виде полей и меняются с изменением объекта
Куинбус Флестрин вне форума  
 
Непрочитано 20.02.2020, 15:03
#24
Boxa

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


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

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

ЗЫ
Сейчас подумалось... псевдодинамические блоки .... наверное это максимально точное название для такого рода объектов....
Boxa вне форума  
 
Непрочитано 20.02.2020, 15:15
#25
Сергей812


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


Boxa, честно говоря, не вижу смысла работы с псевдокастомными объектами в данном случае - исполнитель работает как обычно, а потом для заказчика с голым акадом вызовом команды надстройки делается копия файла с переведенными полилиниями в блоки с атрибутами. Не выхватывает же заказчик из под рук рабочие файлы, надеюсь)
Сергей812 вне форума  
 
Непрочитано 20.02.2020, 15:24
#26
Boxa

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


Сергей812, если атрибуты на самом чертеже не видны, но можно и так, а если видны, то править оформление каждый раз при передаче... ну такое.
В любом случае вариантов решения задачи масса, только ТС они до лампочки. =)
Boxa вне форума  
 
Непрочитано 20.02.2020, 15:32
#27
Сергей812


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


Цитата:
Сообщение от Boxa Посмотреть сообщение
если атрибуты на самом чертеже не видны
естественно, они скрытые.. хоткей Ctrl+1 заказчик то осилит)
Сергей812 вне форума  
 
Непрочитано 20.02.2020, 16:37
#28
pan

добрый человек
 
Регистрация: 23.02.2004
Глушь
Сообщений: 971


Можно использовать связь с БД (Ctrl-6)
__________________
Правильно сформулированный вопрос содержит 90% ответа.
pan вне форума  
 
Непрочитано 26.02.2020, 14:09
#29
АлексЮстасу

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


Показ содержания Xdata при "наезде" на элемент - лисп от CADaSchtroumpf, read_XD.lsp.
Его же лисп конвертации Object Data (Map/Civil) в Xdata - OD2XD.lsp.
Вложения
Тип файла: lsp read_XD.lsp (2.4 Кб, 34 просмотров)
Тип файла: lsp OD2XD.lsp (1.9 Кб, 19 просмотров)
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 26.02.2020 в 14:16.
АлексЮстасу на форуме  
 
Непрочитано 26.02.2020, 14:37
#30
Кулик Алексей aka kpblc
Moderator

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


АлексЮстасу, чистый ACAD не знает функций ade_*
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.02.2020, 14:43
#31
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
АлексЮстасу, чистый ACAD не знает функций ade_*
В read_XD.lsp нет никаких "ade_*".
А OD2XD.lsp, естественно, будет работать только у тех, у кого есть Object Data, т.е. есть Map/Civil, о которых речь была в начале темы.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу на форуме  
 
Непрочитано 26.02.2020, 15:21
1 | #32
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
при "наезде" на элемент
я вот тоже двинулся в этом направлении
Миниатюры
Нажмите на изображение для увеличения
Название: Inspect_Entity.gif
Просмотров: 153
Размер:	6.38 Мб
ID:	223494  
koMon вне форума  
 
Непрочитано 26.02.2020, 15:54
#33
Кулик Алексей aka kpblc
Moderator

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


АлексЮстасу, вообще-то раздел не совсем вертикалок. И об обязательности вертикалки стоило бы предупреждать.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.02.2020, 16:38
#34
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
АлексЮстасу, вообще-то раздел не совсем вертикалок. И об обязательности вертикалки стоило бы предупреждать.
Я в #29 так и сделал:
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Его же лисп конвертации Object Data (Map/Civil) в Xdata - OD2XD.lsp.
И в теме обсуждали использование Map 3D.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу на форуме  
 
Непрочитано 26.02.2020, 16:46
#35
Кулик Алексей aka kpblc
Moderator

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


Offtop: А я еще в #2 сказал, что в чистом ACAD подобное сделать невозможно Ты каждый раз, когда отвечаешь, перечитываешь всю тему?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.02.2020, 17:48
#36
АлексЮстасу

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


Offtop: Разве я с этим твоим утверждением хоть в чем-то спорил?
Мне только что попались эти лиспы. Они соответствуют обсуждаемым в теме подходам. Вдруг, да кому-то пригодятся...
Если считаешь эти лиспы неуместными, удали мои сообщения, пожалуйста.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу на форуме  
 
Непрочитано 03.03.2020, 18:32
#37
jkalex

геодезист
 
Регистрация: 22.12.2009
Киров
Сообщений: 23


http://odclass-odedit.com/od_ru.html это в тему?
jkalex вне форума  
 
Непрочитано 03.03.2020, 19:29
#38
Сергей812


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


Цитата:
Сообщение от jkalex Посмотреть сообщение
http://odclass-odedit.com/od_ru.html это в тему?
А это можете спросить у автора продукта АлексЮстасу ))
Сергей812 вне форума  
 
Непрочитано 02.02.2022, 00:02
#39
АлексЮстасу

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


Цитата:
Сообщение от romanov.gasu Посмотреть сообщение
Есть ли возможность в autocad присвоить необходимые атрибуты для полилинии?
Теперь такая возможность и для базового AutoCAD есть - XDTOOLS.
Пользовательские описательные данные будут при этом храниться в XData. Т.е. будут одинаково доступны в любом AutoCAD.
Вложения
Тип файла: zip XDTOOLS-v-0-5.zip (63.3 Кб, 71 просмотров)
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу на форуме  
 
Непрочитано 02.02.2022, 00:32
#40
Сергей812


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Пользовательские описательные данные будут при этом храниться в XData. Т.е. будут одинаково доступны в любом AutoCAD.
и их можно будет получить вместе с "родными" характеристиками полилинии, например, извлечением данных?
Сергей812 вне форума  
 
Непрочитано 02.02.2022, 11:58
#41
koui


 
Регистрация: 24.01.2017
Сообщений: 126


у полилинии нет атрибута. зато есть гиперссылка. для создания полей или извлечения данных вполне годно.
koui вне форума  
 
Непрочитано 02.02.2022, 16:08
#42
АлексЮстасу

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


Цитата:
Сообщение от koui Посмотреть сообщение
у полилинии нет атрибута. зато есть гиперссылка. для создания полей или извлечения данных вполне годно.
Offtop: Кстати, не все и опытные программисты знают, что гиперссылки - эти самые XData.
Атрибутами в информационных системах за пределами AutoCAD обычно называют описательные свойства объектов. В исходном посте это: Наименование, Номер колодца, Назначение, Диаметр, Материал и т.д. С соответствующими значениями.
Всего здесь 10. Понятно, что может быть и 1, и 20.
И понятно, что для одних полилиний нужен один набор таких свойств, а для других другие, с разным количеством описательных свойств.
Одни свойства текстовые, другие числовые.
Кроме того, нормален вариант, когда одна полилиния может быть с несколькими наборами описательных свойств одновременно. Например, полилиния - граница участка, забор, граница улицы, огорода, газона одновременно.
Как это делать гиперссылкой?
Вопрос без подвоха - поделитесь опытом.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу на форуме  
 
Непрочитано 02.02.2022, 18:01
#43
Сергей812


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


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

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Кроме того, нормален вариант, когда одна полилиния может быть с несколькими наборами описательных свойств одновременно. Например, полилиния - граница участка, забор, граница улицы, огорода, газона одновременно. Как это делать гиперссылкой?
ну split/merge строк никто не отменял. Костыль, конечно, но не больший - чем носиться годами с XData отдельно от самих реальных данных)
Сергей812 вне форума  
 
Непрочитано 03.02.2022, 13:41
#44
koui


 
Регистрация: 24.01.2017
Сообщений: 126


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Offtop: Кстати, не все и опытные программисты знают, что гиперссылки - эти самые XData.
Кроме того, нормален вариант, когда одна полилиния может быть с несколькими наборами описательных свойств одновременно. Например, полилиния - граница участка, забор, граница улицы, огорода, газона одновременно.
это, конечно, интересно, но даже если мы это сделаем, на придётся идти ещё дальше. допустим, требуются планы границ участков, планы ограждений, генплан, план озеленения. и что, формировать каждый план каждый раз отдельно? а потом заказчик скажет "вот тут сдвиньте на метр" и опять всё заново формировать, и так каждый раз? сколько назначений у линии, столько и слоёв с линиями.
koui вне форума  
 
Непрочитано 03.02.2022, 15:04
#45
АлексЮстасу

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


Цитата:
Сообщение от koui Посмотреть сообщение
потом заказчик скажет "вот тут сдвиньте на метр" и опять всё заново формировать, и так каждый раз? сколько назначений у линии, столько и слоёв с линиями.
Зачем? Наоборот - "двигаешь на метр" только эту одну полилинию с примыкающими. У нее же идентификаторы всех типов объектов и информация о них у одной.
Но это другой вопрос - не в тему.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу на форуме  
 
Непрочитано 03.02.2022, 15:26
#46
koui


 
Регистрация: 24.01.2017
Сообщений: 126


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Зачем? Наоборот - "двигаешь на метр" только эту одну полилинию с примыкающими. У нее же идентификаторы всех типов объектов и информация о них у одной.
Но это другой вопрос - не в тему.
вопрос "зачем" - это всегда в тему, потому как людям чаще всего надо решить конкретную задачу. если у вас линии (отрезки или полилинии - я не буду каждый раз это писать) совпадают на 100%, то нет разницы сколько двигать - одну или 20. если придётся подвинуть забор от края улицы на 20 см. - вся система полетит? точнее, вся система будет разделена на отдельные подсистемы. послушайте моего совета: не изобретайте бурбулятор, делайте как все делают, это проверено годами и тысячами людей. и заказчику не нужна картинка, где есть всё, от такой картинки можно офигеть и ничего не понять. да и не надо дорожному строителю заборы видеть, ещё сделает что-то не то.
но тема заслуживает внимания, на самом деле. вы мне дали интересную идею лиспа для создания кабельного журнала. осталось только изучить ЛИСП
koui вне форума  
 
Непрочитано 03.02.2022, 15:59
#47
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от koui Посмотреть сообщение
вы мне дали интересную идею лиспа для создания кабельного журнала. осталось только изучить ЛИСП
Или заняться поиском по форуму: https://dwg.ru/cse?q=%D0%BA%D0%B0%D0...BD%D0%B0%D0%BB
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.02.2022, 21:25
#48
koui


 
Регистрация: 24.01.2017
Сообщений: 126


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Или заняться поиском по форуму: https://dwg.ru/cse?q=%D0%BA%D0%B0%D0...BD%D0%B0%D0%BB
я уже долго искал и смотрел многоженство вариантов КЖ, но, к сожалению, ни один не делает то, что мне нужно на 100%. я бы даже сказал, ни один не делает то, что я не смогу сделать извлечением данных и самыми ходовыми лиспами.
что б не отходить от темы, я хочу написать Лисп, который ищет ближайшую точку к концу линии (будь то текст или атрибут блока) и записывает содержимое в гиперссылку, тогда у меня будет реальная привязка полилинии к блоку. а уж если сделать проверку на дублирование этого содержимого - так вообще круто получится. а дальше извлечение данных в эксель, где уже всё подготовлено, благо VBA маленько знаю (честно говоря, VBA у меня там применяется больше для форматирования/сортировки, расчёты производятся через формулы).
koui вне форума  
 
Непрочитано 03.02.2022, 23:33
#49
Сергей812


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


Цитата:
Сообщение от koui Посмотреть сообщение
я хочу написать Лисп, который ищет ближайшую точку к концу линии (будь то текст или атрибут блока)
все эти поиски по ближайшему срабатывают через раз) В районе пультовых, серверных, кроссовых и т.п. вообще такое "месиво" на чертежах...
Сергей812 вне форума  
 
Непрочитано 04.02.2022, 13:27
#50
koui


 
Регистрация: 24.01.2017
Сообщений: 126


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
все эти поиски по ближайшему срабатывают через раз) В районе пультовых, серверных, кроссовых и т.п. вообще такое "месиво" на чертежах...
да, но только если лисп ищет среди всех объектов, а не только среди выделенных. и плюс начальная точка не так важна, она чаще всего уже скрыта в маркировке конечной. согласен, что будет тяжко заставить считать КЖ между коммутаторами, но вот до абонентов (на что уходит уйма времени) вполне сойдёт.
koui вне форума  
 
Непрочитано 04.02.2022, 14:06
#51
Сергей812


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


Цитата:
Сообщение от koui Посмотреть сообщение
да, но только если лисп ищет среди всех объектов, а не только среди выделенных. и плюс начальная точка не так важна, она чаще всего уже скрыта в маркировке конечной. согласен, что будет тяжко заставить считать КЖ между коммутаторами, но вот до абонентов (на что уходит уйма времени) вполне сойдёт.
имхо, программа должна быть ассистентом (помощником), а не надсмоторщиком типа БИМ-подобных) Т.е., например, соединение кабеля и оборудования - команда/хоткей на выделенные объекты (если уже есть соединение - то игнорируется) со сбросом выделения, разъединение - аналогично. Т.е. решение принимает исключительно проектировщик, а надстройка лишь запоминает его мнение - чтобы потом можно было тот же КЖ/спецификацию сгенерировать, не возвращаясь многократно к одним и тем же данным.
Сергей812 вне форума  
 
Непрочитано 09.02.2022, 00:52
#52
АлексЮстасу

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


Цитата:
Сообщение от koui Посмотреть сообщение
вы мне дали интересную идею лиспа
И Вы дали мне интересную идею! Вместе с другими, кто советовал гиперссылки как альтернативу XData. (Не зная, что это тоже XData).
Можно сделать две программки: 1. Создавать гиперссылки с Текст для отображения из названий всех пользовательских XData. Например, с префиксом "XD=", чтобы отличать от собственно гиперссылки, если она была. И отделять друг от друга, если XData у одного графэлемента несколько. 2. Удалять из гиперссылок эти названия.
Это сделает XData "видимыми" в окне Свойства и при наведении на графэлемент.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу на форуме  
 
Непрочитано 09.02.2022, 07:45
#53
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Это сделает XData "видимыми" в окне Свойства и при наведении на графэлемент.
С чего вдруг?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.02.2022, 16:30
#54
Сергей812


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
С чего вдруг?
для одиночных - в свойствах текст гиперссылки отражается, для множества объект - либо *различные*, либо общий одинаковый текст гиперссылкиссылки. При наведении отображается только для текущего элемента под курсором. Видимо, с практический стороны для чисто академической задачи описательных данных больше для счастья человеку и не нужно)
Сергей812 вне форума  
 
Непрочитано 09.02.2022, 16:37
#55
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
С чего вдруг?
Конечно, видимы так могут быть только названия XData, не данные в них.
Но это лучше же, чем ничего.
И уже позволяет понимать, что у объекта XData есть.
Возвращаясь к апологетике гиперссылок как альтернативы - многие же уже видеть одни названия считают достаточным.
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 09.02.2022 в 16:44.
АлексЮстасу на форуме  
 
Непрочитано 09.02.2022, 16:39
#56
Кулик Алексей aka kpblc
Moderator

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


Значит, я неправильно понял предложение
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
сделать две программки: 1. Создавать гиперссылки с Текст для отображения из названий всех пользовательских XData. Например, с префиксом "XD=", чтобы отличать от собственно гиперссылки, если она была. И отделять друг от друга, если XData у одного графэлемента несколько. 2. Удалять из гиперссылок эти названия.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.02.2022, 17:13
#57
Сергей812


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


взять типа этого и переделать на получение данных из XData. Lisp все-таки не очень подходит для интерактивных вещей.
Сергей812 вне форума  
 
Непрочитано 09.02.2022, 17:30
#58
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Значит, я неправильно понял предложение
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
сделать две программки: 1. Создавать гиперссылки с Текст для отображения из названий всех пользовательских XData. Например, с префиксом "XD=", чтобы отличать от собственно гиперссылки, если она была. И отделять друг от друга, если XData у одного графэлемента несколько. 2. Удалять из гиперссылок эти названия.
Очевидно, что я пишу недостаточно внятно.
Но я написал же "из названий всех пользовательских XData", "эти названия".
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу на форуме  
 
Непрочитано 18.02.2022, 17:23
#59
АлексЮстасу

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


Цитата:
Сообщение от koui Посмотреть сообщение
у полилинии нет атрибута. зато есть гиперссылка. для создания полей или извлечения данных вполне годно.
Сделали две команды для XData <--> Гиперссылки:
1. XDTOOLS_2HYPERLINKS - создание гиперссылок из названий XData. Имеющиеся гиперссылки сохраняются в XData "SAVED_PE_URL".
2. XDTOOLS_RETURNHYPERLINKS - восстановление исходных гиперссылок из сохраненных в XData "SAVED_PE_URL".

Т.о., в любой момент можно сделать свои XData "видимыми" - как гиперссылки. Такие гиперссылки начинаются на "xd=".
И в любой момент такие гиперссылки можно убрать.

В т.ч. таким способом можно оптом и в розницу изменять гиперссылки средствами XData. И создавать из XData "SAVED_PE_URL" гиперссылки с нужным содержанием.
Миниатюры
Нажмите на изображение для увеличения
Название: Hyperlinks_en.png
Просмотров: 53
Размер:	33.1 Кб
ID:	245532  
Вложения
Тип файла: lsp XDTOOLS_2HYPERLINKS-v-0-6.lsp (24.9 Кб, 5 просмотров)
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 18.02.2022 в 19:32. Причина: подправлен лисп
АлексЮстасу на форуме  
 
Непрочитано 18.02.2022, 18:35
#60
Сергей812


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


Тот же результат без всяких гиперссылок - выдает дополнительную информацию в виде списка пар { Код - Значение } значений XData примитивов под апертурой курсора.


Код:
[Выделить все]
 
// Windows
using System;
using System.Text;

// AutoCAD
using aps = Autodesk.AutoCAD.ApplicationServices;
using dbs = Autodesk.AutoCAD.DatabaseServices;
using edi = Autodesk.AutoCAD.EditorInput;
using rtm = Autodesk.AutoCAD.Runtime;


namespace ShowXData
{
    public class CommandsClass
    {
        [rtm.CommandMethod("STARTMON")]
        public static void StartMonitor()
        {
            edi.Editor lEd = aps.Application.DocumentManager.MdiActiveDocument.Editor;
            lEd.PointMonitor += new edi.PointMonitorEventHandler(PointMonitorHandler);
        }


        [rtm.CommandMethod("STOPMON")]
        public static void StopMonitor()
        {
            edi.Editor lEd = aps.Application.DocumentManager.MdiActiveDocument.Editor;
            lEd.TurnForcedPickOn();
            lEd.PointMonitor -= new edi.PointMonitorEventHandler(PointMonitorHandler);
        }


        static void PointMonitorHandler(object sender, edi.PointMonitorEventArgs e)
        {
            aps.Document lDoc = aps.Application.DocumentManager.MdiActiveDocument;
            edi.Editor lEd = lDoc.Editor;
            try
            {
                dbs.FullSubentityPath[] lPaths = e.Context.GetPickedEntities();
                StringBuilder lSB = new StringBuilder(16384);
                using (dbs.Transaction lTr = lDoc.TransactionManager.StartTransaction())
                {
                    foreach (dbs.FullSubentityPath lPath in lPaths)
                    {
                        dbs.ObjectId[] lIds = lPath.GetObjectIds();
                        if (lIds.Length > 0)
                        {
                            dbs.ObjectId lId = lIds[lIds.GetUpperBound(0)];
                            if (!lId.IsNull && !lId.IsErased && lId.IsValid)
                            {
                                dbs.DBObject lDBObj = lTr.GetObject(lId, dbs.OpenMode.ForRead, false, false);
                                dbs.ResultBuffer lRB = lDBObj.XData;
                                if (lRB != null)
                                {
                                    foreach (dbs.TypedValue lTV in lRB)
                                    {
                                        lSB.AppendLine(string.Format("Code = {0:d4}; Value = {1}", 
                                            lTV.TypeCode, lTV.Value.ToString()));
                                    }
                                }
                            }
                        }
                    }
                    lTr.Commit();
                }
                if (lSB.Length > 0) e.AppendToolTipText(lSB.ToString());
            }
            catch(Exception ex)
            {
                lEd.WriteMessage("\nError = {0}", ex.Message);
            }
        }

    }

}


----- добавлено через ~6 мин. -----
собственно об этом говорил в п.57 - сделать на основе кода от Kean Walmsley, заменив только сбор информации о кривых на получение XData. Зачем судорожно пихать лишние объекты в базу чертежа dwg...
Сергей812 вне форума  
 
Непрочитано 19.02.2022, 10:13
#61
Сергей812


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


Только никакой пользы от прямого вывода этих XData нет - см. рисунок. Чтобы была польза - надо зарегистрировать свое приложение, и договориться - что либо определенная последовательность данных в XData, либо что данные идут парами: идентификатор - значение. Тогда вывод можно сделать осмысленным и структурированным. Т.е. применительно к этой теме - в простейшем случае будут пары строк вида { Имя поля : Значение поля }. Для экономии ресурсов можно повторяющиеся имена полей вынести в отдельный словарь с ключем в виде целого числа и тогда будут пары в XData будут вида { Число : Строка }. А при выводе будет из словаря по считанному числу-ключу подставлять имя поля. Этот вспомогательный словарь можно сохранить в словаре чертежа *.dwg, либо хранить в виде xml рядом со сборкой (если набор полей фиксирован) и подхватывать при загрузке сборки в акад.

Ну а поскольку извлечение данных XData не видит, то логично не только полилинии, но и те же блоки тоже вместо занесения всей информации в атрибуты хранить информацию в XData. Тогда собрать информацию по зарегистрированному имени приложения и вывести в нужном виде не представляет особой сложности.
Миниатюры
Нажмите на изображение для увеличения
Название: Вывод_XData.jpg
Просмотров: 62
Размер:	67.7 Кб
ID:	245544  
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как присвоить атрибуты для полилинии

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дублируются полилинии, блоки, атрибуты в динамических блоках. Как избежать? Nemyheim Динамические блоки 30 22.10.2021 13:34
Проблемы с возвратом площади полилинии в динамическом блоке (поля и атрибуты) Полусолнце Динамические блоки 10 11.11.2016 11:51
Атрибуты не в блоках, атрибуты как самостоятельный примитив АлексЮстасу AutoCAD 11 13.05.2015 10:39
Можно ли полилинии присвоить доп. свойства посредством LISP piter_ch LISP 1 20.11.2012 18:32
Атрибуты для полилинии Botticelli AutoCAD 13 17.10.2011 23:17