dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

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

Как программно соединить полилинию, часть которой удалена под блоком

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 18.04.2018, 20:51 #1
Как программно соединить полилинию, часть которой удалена под блоком
Alex_Shaton
 
Гомель
Регистрация: 09.09.2017
Сообщений: 13

Alex_Shaton вне форума Вставить имя

Я часто пользуюсь Lisp от Lee Mac - AutoBlockBreakV1-8.lsp отсюда - http://www.lee-mac.com/autoblockbreak.html. В полилинию вставляется блок, под блоком часть полилинии удаляется. Часто встречается и обратная задача - удалить указанный блок, соединить 2 конца полилинии. Поиск по форуму результатов не дал. Вариант решения нашел здесь -https://autocadtips1.com/2014/11/12/autolisp-updated-heal-linepolyline/. Сохранил в блокноте как Lisp, проверил на AutoCAD 2007 и AutoCAD2015_64, представленный там код не срабатывает (хотя описано, что код рабочий). Уважаемые гуру! Подскажите - это ошибка в коде или я что-то делаю не так. Или может есть другие варианты решения этой задачи?
Просмотров: 3924
 
Непрочитано 18.04.2018, 21:11
#2
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Alex_Shaton Посмотреть сообщение
Поиск по форуму результатов не дал.
Поиск по словам "Хитрый блок" многое покажет )
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 19.04.2018, 10:22
#3
Andrey_nadym


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


Пробовать надо. Читайте похожие темы

http://forum.dwg.ru/showthread.php?t=8284
https://dwg.ru/dnl/607

https://forum.dwg.ru/showthread.php?t=95515
https://forum.dwg.ru/showthread.php?t=33696
https://forum.dwg.ru/showthread.php?t=143411

https://www.google.ru/search?q=%D1%8...w=1920&bih=974
Andrey_nadym вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 19.04.2018, 14:31
| 1 #4
koMon


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


Цитата:
Сообщение от Alex_Shaton Посмотреть сообщение
В полилинию вставляется блок, под блоком часть полилинии удаляется.
А нарисовать в блоке Wipeout по графике блока не проще будет?
koMon вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 19.04.2018, 15:56
#5
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,233
Отправить сообщение для zenon с помощью ICQ


Цитата:
Сообщение от koMon Посмотреть сообщение
А нарисовать в блоке Wipeout по графике блока не проще будет?
Сие не всегда оправдано, ибо wipeout это по сути рисунок, и отсюда бывает появляются проблемы, особенно если не подгружены соответствующие библиотеки.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:

Последний раз редактировалось zenon, 19.04.2018 в 16:10.
zenon вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 19.04.2018, 17:58
#6
koMon


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


Цитата:
Сообщение от zenon Посмотреть сообщение
и отсюда бывает появляются проблемы,
при всём уважении, из встроенного мануала:
"Because a wipeout object is similar to a raster image, it has the same requirements for plotting. You need a raster-capable plotter with either an ADI 4.3 raster-capable driver or the system printer driver."
"Поскольку объект Wipeout идентичен растровой картинке, для его печати требуются те же требования. Вам необходим плоттер, способный печатать растровую графику с ADI 4.3 драйвером или драйвер для принтера из набора операционной системы."
Но, имхо, внести необратимые изменения в графические примитивы, порезкой например полилинии - совсем не комильфо(
koMon вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 19.04.2018, 18:15
#7
Сергей812


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


Цитата:
Сообщение от koMon Посмотреть сообщение
Но, имхо, внести необратимые изменения в графические примитивы, порезкой например полилинии - совсем не комильфо(
ну поскольку это программная ветка, но не совсем необратимо) Просто как-то должны запоминаться (например, в расширенных данных) - что данные отдельные примитивы когда то являлись частью целого и каким объектом была "разбита" полилиния. А потом в событии/реакторе удаления данного объекта "склеивать" полилинии и модифицировать их расширенные данные.
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 19.04.2018, 18:16
#8
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,233
Отправить сообщение для zenon с помощью ICQ


koMon, ну как пример:
https://forum.dwg.ru/showthread.php?t=130510
https://forum.dwg.ru/showthread.php?t=6571
https://forum.dwg.ru/showthread.php?t=20031

как сказал, может вызвать проблемы.
Причем тут печать не понял.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 19.04.2018, 21:14
#9
Alex_Shaton


 
Регистрация: 09.09.2017
Гомель
Сообщений: 13


Большое спасибо всем за ответы, буду копать дальше
Alex_Shaton вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 20.04.2018, 06:58
#10
baksconstructor


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


Наверно надо приложить пример, и заодно написать в поиск исполнителей.
baksconstructor вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 20.04.2018, 08:41
#11
koMon


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


Цитата:
Сообщение от zenon Посмотреть сообщение
Причем тут печать не понял.
ну я так теоретичеки полагаю, что это единственная возможная проблема могущая возникнуть например. написал, но ссылки не посмотрел.. исправлюсь) ссылки посмотрел.

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

Последний раз редактировалось koMon, 20.04.2018 в 08:57.
koMon вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 20.04.2018, 09:38
#12
Сергей812


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


Цитата:
Сообщение от koMon Посмотреть сообщение
это очень идеальный и очень сложный вариант решения. но к примеру можно найти крайние точки касания контура блока остатков того, что было под блоком и соединить их сравняв их координаты. вот только если этих остатков будет не от одного примитива?
Этот вопрос надо решать в момент "разбивки" блоком полилинии - когда создает две полилинии вместо одной, то в расширенные данные эти полилиний прописывается какой то общий идентификатор и ссылка на хэндл блока. Когда блок удаляется - по его хендлу ищется совокупность групп разбитых им полилиний, а затем уже анализ их геометрии для поиска ближайших друг к другу конечных узлов полилинии с последующим соединением. Ничего тут идеального нет, просто несколько связанных подзадач.
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 20.04.2018, 10:08
#13
koMon


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Ничего тут идеального нет
я имел в виду буквально следующее: идеальный ≡ совершенный
koMon вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 20.04.2018, 10:21
#14
Сергей812


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


ну скорее не совершенный, а реализуемый с предсказуемой логикой работы)
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 20.04.2018, 12:05
#15
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,233
Отправить сообщение для zenon с помощью ICQ


koMon, кстати, а стандартную команду СОЕДИНИТЬ (_join) почему не попробовать?
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 20.04.2018, 15:32
#16
koMon


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


zenon, я думаю можно и join, но это командный метод...
koMon вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 20.04.2018, 16:13
#17
Сергей812


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


Эту команду тоже надо откуда то "дергать", не руками же вызывать каждый раз. И насколько помню - в событиях/реакторах очень не рекомендуется использовать командные методы.
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 20.04.2018, 16:24
#18
Boxa

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


Что то вы переусложнили... ИМХО, достаточно поверх существующего примитива овердравит нужное отображение. Да, работать будет только при загруженной библиотеке, но имхо это меньшее из зол.
__________________
_бложиг
Boxa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 20.04.2018, 16:31
#19
Сергей812


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


Цитата:
Сообщение от Boxa Посмотреть сообщение
достаточно поверх существующего примитива овердравит нужное отображение. Да, работать будет только при загруженной библиотеке, но имхо это меньшее из зол.
Цитата:
Сообщение от Alex_Shaton Посмотреть сообщение
Часто встречается и обратная задача - удалить указанный блок, соединить 2 конца полилинии.
две разные задачи всетаки, имхо.
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 20.04.2018, 16:39
#20
Boxa

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


Приведу Вашу же цитату:
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну поскольку это программная ветка, но не совсем необратимо) Просто как-то должны запоминаться (например, в расширенных данных) - что данные отдельные примитивы когда то являлись частью целого и каким объектом была "разбита" полилиния. А потом в событии/реакторе удаления данного объекта "склеивать" полилинии и модифицировать их расширенные данные.
Проще не разбивать и реакторы ставить, а просто перерисовывать отображение. Добавили блок, нарисовали разрыв, убрали блок - убрали и разрыв.
Если же исполнителю досталось разгребать последствия чей то работы... тут можно только посочувствовать.
__________________
_бложиг
Boxa вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как программно соединить полилинию, часть которой удалена под блоком

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно закрыть полилинию Peter123 Программирование 8 11.05.2012 08:57
Возможно ли сделать динамический блок, чтобы одна часть его была аннотативная, а другая нет? Falaleichik AutoCAD 5 22.01.2012 15:39
как программно создать полилинию? mamuk Программирование 5 30.05.2011 11:44
Программно заполнить рамку чертежами и открыть другую solo123 Программирование 2 25.02.2011 19:46
подскажите как программно начертить линии разных типов Александер Программирование 4 30.06.2005 07:17

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||