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

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

Новые команды для работы с полилинией

Ответ
Поиск в этой теме
Непрочитано 14.09.2006, 13:30 4 |
Новые команды для работы с полилинией
VVA
 
Инженер LISP
 
Минск
Регистрация: 11.05.2005
Сообщений: 6,990

Данный набор программ является коллективным продуктом участников форумов autocad.ru и dwg.ru с моими доработками.
Захотелось собрать все программы для работы с полилиниями воедино и оформить как полагается.

=========== Доступные команды PLTOOLS=================
Редакция 17.06.2014
PL-JOIN -Объединение выбранных полилиний
PL-VFI -вставка вершин в выбранной полилинии в местах пересечения с
указанными полилиниями, линиями, дугами
PL-JOIN3D -Объединение 3D полилиний
PL-L2A -Замена линейного сегмента в полилинии дуговым сегментом.
PL-A2L -Замена дугового сегмента в полилинии линейным сегментом.
PL-DIV -Разбивает выбранный сегмент полилинии на указанное количество
сегментов или через указанное расстояние
PL-DIVAll -Разбивает все сегменты полилинии на указанное количество
сегментов или через указанное расстояние
PL-VxAdd -Добавляет новую вершину к полилинии
ENTREVS -Реверс объекта
ENTREV -Реверс объектов (множественный выбор)
PL-CW -Реверс выбранных полилиний по часовой стрелке
PL-CCW -Реверс выбранных полилиний против часовой стрелки
PL-VxRdc -Удаление вершин полилиний, которые лежат на одной прямой
PL-VxDel -Удаление выбранной вершины
pl-VxOpt -Удаление совпадающих вершин из полилинии
PL-NoArc -Аппроксимация дуговых сегментов полилинии
PL-Clone -Построение полилинии путем копирования ее сегментов
PL-VxMove -Перемещение вершин полилинии
PL-Vx1 -Изменение начала полилинии
ConvTo2d -Преобразование линейных объектов в 2D полилинии
ConvTo3d -Преобразование линейных объектов в 3D полилинии
MPL -Построение средней линии Более продвинутая версия Rollin_Ball.lsp Find MidBoundary between two polylines.
R3P -Прямоугольгик по 3-м точкам
PL-P90 -Рисование перпендикулярных друг к другу сегментов полилинии
PL-CSE -Объединение 2d полилиний по примитиву
PL-SgWidth -Изменить ширину сегмента полилинии

Реверс дуговых сегментов полилинии из #79
На дуговых сегментах полилинии тип линий может быть "вверх тормашками", причем реверс не помогает. Этот артефакт можно побороть, если в полилинии включить "генерацию типа линий".

Панели, лисп и инструкции здесь http://dwg.ru/dnl/607
Иконки для темной темы здесь
Обсуждаем, критикуем, предлагаем

Миниатюры
Нажмите на изображение для увеличения
Название: plrevers.jpg
Просмотров: 15347
Размер:	30.3 Кб
ID:	21079  


Последний раз редактировалось VVA, 08.09.2023 в 13:25. Причина: ссылка на иконки для темной темы
Просмотров: 367899
 
Непрочитано 27.08.2014, 10:17
1 | #461
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Какой вредный дядька gomer Кидается и кидается помидорами Объяснил бы по-человечески.
Если меня память не подводит, то надо вместо:
(initget "u Undo о Отменить")
Написать:
(initget "Отменить _Undo")
Отдельно буквы не надо прописывать, т.к. они в словах выделены большими.
И сперва по порядку идут названия опций на языке локализации, а потом подчеркивание, и те же самые опции на английском.
Например:
(initget "Да Нет _Yes No")
Ну и при наборе "Да", "Д","д" "_Yes", "_Y","_y" функция запроса будет возвращать "Yes". Аналогично и для "No".
Может быть, тут еще и флаг какой-то целесообразно применить...
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 28.08.2014, 02:25
#462
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от Do$ Посмотреть сообщение
Объяснил бы по-человечески.
Ну это у него такие методы педагогические, хочет заставить думать развивающийся мозг
Do$, спасибо огромное тебе, что не остался равнодушным, не, правда, спасибо, от души, приятно. Но ведь gomer прав: что бы мне стоило заглянуть в Полещука и разобраться? Я читал это все довольно давно, но пользовался в своих кодах только русскими ключевыми словами в связке initget-getkword (чаще всего), поэтому и позабыл о том, как надо. Вчера (точнее, уже позавчера), я разобрался, но ответить и исправить не успел. Ну не придал большого значения инитгету, а разбирался с отменами...Спасибо еще раз
Цитата:
Сообщение от Do$ Посмотреть сообщение
Может быть, тут еще и флаг какой-то целесообразно применить...
У Полещука сказано, что entsel равнодушен к битам, только ключевые слова воспринимает. Да и по логике программы он ни к чему.
А теперь к помидоркам

Цитата:
Сообщение от gomer Посмотреть сообщение
что у тебя делают строчки 74-76? Не то же, что и 04-09?
74-76 - для штатного режима, 04-09 - в случае ошибки. Но ты ведь это знаешь, и намекаешь на то, раз я функцию описал один раз, то почему же ее еще разочек не вызвать, чем еще разище описывать? То есть сознательно инициировать ошибку? Принято, согласен, так удобней. Какой ей аргумент-то давать? Пустую строку?
Цитата:
Сообщение от gomer Посмотреть сообщение
(entsel "\nУкажите сегмент сегмент...
- это логика цикличного вызова, отраженная в приглашении? Исправил.
Цитата:
Сообщение от gomer Посмотреть сообщение
Логичный вопрос: а что мы хотим отменить и что завершить?
Ну...Это... Как там? Отменить удаление сегмента, а завершить выполнение команды... Думаешь, это тоже в приглашении указать? Длинновато будет однако...
Цитата:
Сообщение от gomer Посмотреть сообщение
С инитгет ты так и не разобрался, это печаль
Ну с этим проехали, надеюсь. Кстати я сделал, чтоб при любой раскладке буквы U (англ) и О (рус) вызывали отмену. Не переборщил?
Цитата:
Сообщение от gomer Посмотреть сообщение
Да и что стоит тебе отформатировать код, чтоб это ВЫГЛЯДЕЛО
Вот тут, пожалуйста поподробнее. Не понимаю. Ты ведь не имеешь в виду выравнивание? Или я как-то неправильно выровнял? Или что не так?
Цитата:
Сообщение от gomer Посмотреть сообщение
добавить комментарии, чтоб все было ПОНЯТНО
Ну это пожалуйста. (Можно подумать тебе и так не понятно)
Цитата:
Сообщение от gomer Посмотреть сообщение
Добавить файл с исходниками
+
Цитата:
Сообщение от gomer Посмотреть сообщение
с какого бодуна у тебя флаг оказался счетчиком?
Исправил, согласен.
Все исправления, по традиции, в #450.
gomer, зачетку доставать?

----- добавлено через ~24 мин. -----
Цитата:
Сообщение от gomer Посмотреть сообщение
Тыжпрограммист
Не-не-не! Яжинженер В основном
Пришла такая мысль. А если полилиния, из которой мы захотим удалить сегмент, окажется взорванной? Или нам нужно, удаляя сегменты, удалить дугу или отрезок?Vladimir_Sergeevich, как считаешь? Может, добавить? Понимаю, что тема про полилинии, но все же?
skkkk вне форума  
 
Непрочитано 03.09.2014, 13:25
#463
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Как то небыло необходимости в отдельной функции для удаления отрезков/дуг - кнопку del еще никто не отобрал.
А если дуга в составе полилинии, то и так её выкуривает. На мой взгляд все уже как надо.
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 03.09.2014, 20:33
#464
АлексЮстасу

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


Цитата:
Сообщение от WATRES Посмотреть сообщение
возможно ли использовать команду PL-DIVAll для нескольких полилиний сразу.
Я присоединяюсь к вопросу-пожеланию: Можно сделать так, чтобы PL-DIVAll обрабатывала сразу все указанные полилинии?
Иначе легко что-то нужное пропустить.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 03.09.2014, 23:30
1 | #465
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


АлексЮстасу, WATRES, Нужно посмотреть. Давно писал. Многое забылось.

----- добавлено через ~20 ч. -----
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Я присоединяюсь к вопросу-пожеланию: Можно сделать так, чтобы PL-DIVAll обрабатывала сразу все указанные полилинии?
Обновил архив. Будет доступен после проверки модератором
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 05.09.2014, 12:54
#466
АлексЮстасу

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


Цитата:
Сообщение от VVA Посмотреть сообщение
Обновил архив.
Спасибо! PL-DIVAll работает теперь со многими полилиниями.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 14.11.2014, 16:33
#467
bol


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


Помогите, возникают задачи при которых нужно что бы узлы полилинии (нескольких полилиний) были как то обозначены в процессе черчения (примерно как при выделении полилинии - в виде ручек). Есть ли такая функция в стандартном наборе инструментов Autocad, если нет то возможно ли это реализовать?
bol вне форума  
 
Автор темы   Непрочитано 14.11.2014, 16:40
#468
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Могу только посоветовать расставить в узлы блоки
Расстановка блоков вдоль линии, полилинии, сплайна
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.11.2014, 17:16
#469
bol


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


Насчет блоков, не очень удобно получается, если нужно отобразить узлы множества полилиний сразу. На самом деле чертить по уже имеющейся полилинии (нескольким) с помощью привязки к узлам не всегда удобно, при расположении узлов на различном расстоянии часто ошибаешся (пропускаешь узел).
bol вне форума  
 
Автор темы   Непрочитано 14.11.2014, 17:29
#470
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Тогда сюда Баги и пожелания в Autodesk На лиспе я не представляю как это реализовать
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 15.11.2014, 02:10
#471
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от bol Посмотреть сообщение
нужно что бы узлы полилинии (нескольких полилиний) были как то обозначены в процессе черчения (примерно как при выделении полилинии - в виде ручек)
bol, правильно ли я понимаю, что цель - чертить полилинию, указывая поочередно точки по вершинам уже существующей полилинии? А желание - чтобы у существующей полилинии при этом были подсвечены ручки? Не совсем понимаю, для чего такое может понадобиться, и даже обычно про себя ругаю такие чертежи, в которых линии дублируют друг друга: работать с такими весьма неудобно - как программно, так и вручную. Думаю, что при детальном рассмотрении конечной цели может найтись более красивое решение, однако, попробуем порассуждать.
Если выделить существующую на чертеже полилинию, а затем вызвать команду _pline (даже не с кнопки, которая эмулирует двойное нажатие Esc, а именно вводом в командную строку), то выделение полилинии снимается. А что если соорудить такую программку, которая бы, запрашивая точки, не снимала бы с полилинии выделение, а затем отрисовывала бы полилинию по указанным точкам? Ведь (getpoint) выделение не снимает. Такое реализовать нетрудно, по крайней мере на первый взгляд, - была бы в этом реальная необходимость. Посложнее будет, если нужны и дуговые сегменты: тут будут проблемы с визуализацией динамической дуги, но, думаю, тоже реально, например, с помощью (grvecs). В общем, нужно продуманное техзадание и чертеж с примером.
Правда, больше я склоняюсь к тому, что я что-то не так понял. Потому как очень смущает, что
Цитата:
Сообщение от VVA Посмотреть сообщение
На лиспе я не представляю как это реализовать
Если уж VVA не представляет, то мне уж со своим чемоданчиком знаний в багажном отсеке точно делать нечего - можно оставить его при себе.
skkkk вне форума  
 
Непрочитано 15.11.2014, 09:47
#472
MeshIN

Изыскания и САПР
 
Регистрация: 05.07.2008
Ижевск
Сообщений: 297


Могу привести пример для работы, например оцифровка плана с сохранением топологии.
MeshIN вне форума  
 
Автор темы   Непрочитано 15.11.2014, 10:22
#473
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от skkkk Посмотреть сообщение
Ведь (getpoint) выделение не снимает. Такое реализовать нетрудно, по крайней мере на первый взгляд
Даже реализовывать нет необходимости
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 17.11.2014, 09:31
#474
bol


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


Как пример, в кадастре, при формировании нового земельного участка, когда границы вычерчиваются по уже имеющимся границам большого количества земельных участков.
При черчении полилинией с привязкой к узлам очень часто случаются пропуски узлов лежащих на одной линии или близко расположенных друг к другу, а это в свою очередь является ошибкой при формировании границы зем. уч., да и следить все время за привязкой (при огромном количестве узлов) немного затруднительно что ли. К знатокам, может в Civil такое реализовано, знаю в mapinfo умельцы реализовали, но это другая история (там узлы подсвечиваются на рабочем слое).
bol вне форума  
 
Автор темы   Непрочитано 17.11.2014, 19:51
#475
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


bol, Может здесь что-нибудь подберешь
Draw polyline along with 2 or more adjacent closed polylines
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 17.11.2014, 20:40
1 | #476
АлексЮстасу

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


Цитата:
Сообщение от bol Посмотреть сообщение
Как пример, в кадастре, при формировании нового земельного участка, когда границы вычерчиваются по уже имеющимся границам большого количества земельных участков.
Не в отрицание самой задачи. Ее решение было бы полезно.
В принципе, раз речь о картографии и кадастре - делать через топологические модели площадных объектов в Map 3d.
Если "по-простому", то можно делать с помощью хоть той же _boundary. Перед этим начертить границу в той части, которая не повторяет имеющиеся границы, замкнув площадь нового участка. Указать для _boundary все элементы, задающие границу. Потом, правда, нужно проверить-уточнить, все ли вершины повторились - _boundary любит мелкие детали упрощать.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 18.11.2014, 11:13
#477
bol


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
_boundary
Спасибо за совет _boundary узнал недавно, сейчас активно использую.
bol вне форума  
 
Непрочитано 04.12.2014, 07:25
#478
Vova1502

ПГС
 
Регистрация: 31.07.2013
Южно-Сахалинск
Сообщений: 24


А есть у кого такой лисп чтобы полилиния объединялась с отрезком как команда "фаска" и "соединить"?
Vova1502 вне форума  
 
Непрочитано 04.12.2014, 07:48
#479
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Команда PL-JOIN из лиспа в шапке этой темы.
skkkk вне форума  
 
Непрочитано 04.12.2014, 09:20
#480
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Цитата:
Сообщение от Vova1502 Посмотреть сообщение
А есть у кого такой лисп чтобы полилиния объединялась с отрезком как команда "фаска" и "соединить"?
Не знаю у кого как, а у меня "фаска" и "соединить" это и делают: если хотя бы один из примитивов полилиния - они объединяются в одну полилинию. (у меня акад 2010) если этого не происходит полистай опции этих комманд, там могут быть нюансы. ну и если это были отрезки, то сначала фаску и потом pl-join
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Новые команды для работы с полилинией

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

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