|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
>Krieger №18 Версия Автокада тут ни при чем. Отрисуй две зеркальные дуги и увидишь, что типом линии они покрываются одинаково. Такое ощущение, что при встрече дуги (дугового сегмента) по алгоритму заново рассчитываются начало/конец дуги, причем справа-налево и против часовой. Мы у себя для этих целей имеем типы линий - перевертыши.
>AleXПочему именно в 2D_POLYLINE? Управляющие точки могум иметь различные координаты Z. Тут наверное только 3d polyline. >Sleekka Ассоциативновть полилинии, это когда она задает контур каким-либо другим примитивам. Я знаю два: штриховка и видовой экран. Причем ассоциативность штриховки иногда слетает. Т.к. в своей работе часто пользуюсь подрезанными видовыми экранами, то особо хочу подчеркнуть, что если в PL-VxAdd будет указан видовой экран, то он подрежется полилинией. Получается 2 в 1: подрезаем В.Э. и указываем новую конфигурацию, чем я особо доволен. [ATTACH]1159164515.jpg[/ATTACH] |
|||
![]() |
|
||||
CNC Регистрация: 28.08.2003
Belarus
Сообщений: 47
|
>VVA
"Почему именно в 2D_POLYLINE? Управляющие точки могум иметь различные координаты Z. Тут наверное только 3d polyline." По двум причинам: 1. в 2D_POLYLINE конечно же 2-х мерный SPLINE. Задачка уж больно интересная. Преобразование в 2D_POLYLINE позволяет уменьшить количество точек ее определяющих, что может быть полезным, например при написании управляющих программ станков с ЧПУ. Что-то вроде имеющейся возможности определить элипс участками полилинии. 2. В 3d polyline полилинию через точки наверно банально и просто. Поискав по форумам можно найти почти готовые решения. |
|||
![]() |
|
||||
Регистрация: 20.04.2006
Сообщений: 67
|
vva.
спасибо огромное за ваш труд, очень облгечает рутинные операции. пожелание можна ли дополнить функциями копирования сегментов, т.е по указанным пользователем сегментам pline создавался новый объект-копия включающий в себя только указанные сегменты. еще раз спасибо. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
>AleX
Цитата:
Цитата:
Цитата:
>luser Сейсас готовится обновление с найденными багами KAI, попробую учесть и твое предложение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Выложены новые обновления от 29.09.2006
1. Добавлена новая команда PL-CLONE - Из указанных пользователем сегментов полилинии создавается новая полилиния 2.В замене линейного сегмента в полилинии дуговым сегментом предусмотрена опция задания радиуса радиус может быть положительным и отрицательным (влияет на направление дуги) 3. PL-A2L и PL-L2A подружились с UCS 4. Удаление совпадающих вершин полилинии (PL-VxOpt) работает с группой объектов, а не по одной |
|||
![]() |
|
||||
Регистрация: 09.10.2006
Санкт-Петербург
Сообщений: 99
|
Поскольку я только начинаю разбираться с LISPом и с программированием вообще, хочется что-то представить на суд знатоков и услышать критику, что так, что не так, и как можно лучше.
Прилагаю программку для редактирования положения вершин полилинии без того, чтобы таскать ручки. (defun C:con_ed (/ object object2) (defun obrabotka () (if (> vert_no1 vert_no2) (while do_next (if (setq new_pt (getpoint (vlax-safearray->list (vlax-variant-value (vlax-get-property vname 'Coordinate (if (= begin_vert 0) 0 (- begin_vert 1) ) ) ) ) "\nСледующая вершина" ) ) (progn (setq new_pos (vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 1)) (vl-remove (last new_pt) new_pt) ) ) (vla-put-Coordinate vname begin_vert new_pos) (if (<= (+ 1 begin_vert) (vlax-curve-getEndParam vname)) (setq begin_vert (+ 1 begin_vert)) (progn (exit) (princ) ) ) ) (setq do_next nil) ) ) (while do_next (if (setq new_pt (getpoint (vlax-safearray->list (vlax-variant-value (vlax-get-property vname 'Coordinate begin_vert ) ) ) "\nСледующая вершина" ) ) (progn (setq new_pos (vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 1)) (vl-remove (last new_pt) new_pt) ) ) (vla-put-Coordinate vname (- begin_vert 1) new_pos) (if (> begin_vert 1) (setq begin_vert (- begin_vert 1)) (progn (exit) (princ) ) ) ) (setq do_next nil) ) ) ) (princ) ) ;;Main function;; (setq object (entsel "\nЩелкните по той части полилинии, которую собираетесь редактировать" ) name (car object) place (cadr object) prlst (entget name) ) (if (equal (cdr (assoc 0 prlst)) "LWPOLYLINE") (progn (setq vname (vlax-ename->vla-object (car object)) dist1 (vlax-curve-getDistAtPoint vname (vlax-curve-getClosestPointTo vname (cadr object) ) ) object2 (entsel "\nА теперь щелкните вблизи от той вершины, с которой собираетесь начать" ) name2 (car object2) place2 (cadr object2) vname2 (vlax-ename->vla-object (car object2)) dist2 (vlax-curve-getDistAtPoint vname2 (vlax-curve-getClosestPointTo vname2 (cadr object2) ) ) vert_no1 (vlax-curve-getParamAtDist vname dist1) vert_no2 (vlax-curve-getParamAtDist vname dist2) begin_vert (if (< (fix vert_no2) 0.5) (fix vert_no2) (+ (fix vert_no2) 1) ) do_next T ) (if (eq name name2) (obrabotka) (progn (alert "Очень странно!\nСначала был указан другой объект.\nНе желаете ли подумать,\nчто же вы хотите делать?" ) (princ) ) ) ) (progn (alert "С выбранным объектом\nв такие игры не играют") (princ) ) ) ) |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
PL-VxMove - программа для редактирования вершин без таскания за ручки. Дополнительные ф-ции по ссылке с поста №1.
Будет включена в новое обновление. Интересуют замечания по интерфейсу. Код:
Цитата:
Последний раз редактировалось VVA, 19.09.2015 в 20:46. |
|||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
По интерфейсу:
не мешало бы добавить опции "вперед" и "назад" (или как в Pedit, Prev/Next), а уж если и Undo на неверно введенную точку! Кстати, после выхода из программы по Esc надо жать 3 раза на U, чтобы отменить действие команда (при нормальном выходе все OK), далее листинг действий: Command: PL-VXMOVE Укажите изменяемую вершину полилинии <выход>: Новое положение вершины 2[выход(X)] <оставить>: Новое положение вершины 3[выход(X)] <оставить>: Новое положение вершины 4[выход(X)] <оставить>:*Cancel* Команда прервана пользователем Command: u PL-VXMOVE Command: u GROUP Command: u GROUP Command: |
|||
![]() |
|
||||
Прекрасный набор команд. Удобно оформлен. Хотя это не ново. В ToolPac это уже есть, да и не мешало бы посмотреть создателю, как реализовано это все в GeoniCS. Намного удобней.
Если возможно, то добавьте, пожалуйста, в функцию "добавления вершин в полилинию" возможность редактирования при включенных ручках, или подсвеченных вершин. А то добавляешь вершину, а рядом уже есть. Приходится корректировать. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,377
|
Насчет Toolpac'a я не знаю, может, он и стал бесплатным, но за GeoniCS (при условии всех его плюсов и минусов) платить приличные суммы лично я не согласный.
И потом, как-то нелогично получается - Toolpac удобнее, Geonics вообще заоблачные высоты, и тут же "добавьте то-то и то-то"... --- P.S. Обязательно прочтите мою подпись! --- Добавлено: В GeoniCS масса вещей (если вообще не все) сделаны на ObjARX, а там ничего не посмотришь, кроме как на междумордие да результаты работы. И потом пытаться сделать на лиспе то же самое. у меня лично подобные трюки прокатывают далеко не всегда
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Я совсем не хочу уменьшить значение твоей программы, но, некоторые моменты в Геониксе реализованы гораздо удобней. И если бы была возможность вытащить в Автокад из Геоникса набор команд по редактированию полилинии, то меня бы все устроило. Имелась в виду концепция решения.
|
||||
![]() |
|
||||
инженер Регистрация: 13.12.2004
Минск
Сообщений: 496
|
>>Игорь Богаченко
Цитата:
Поэтому пользуемся тем что есть! ![]() |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Новый АВТОНОМНЫЙ вариант PL-VxMove с учетом замечаний KAI и Игорь Богаченко
Код:
Добавлено Команда сделана автономной |
|||
![]() |
|
||||
Регистрация: 09.10.2006
Санкт-Петербург
Сообщений: 99
|
VVA
Цитата:
Какие были мысли относительно этой команды: указывается направление редактирования, и резиновая нить цепляется за предыдущую вершину, обозначая положение линейного сегмента полилинии после изменения положения вершины. Таким образом, для пользователя процесс схож с вычерчиванием заново участка полилинии. |
|||
![]() |