![]() |
|
|
![]() |
![]() |
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
3 | | #1 |
Новые команды для работы с полилинией
Инженер LISP
Минск
Регистрация: 11.05.2005
Сообщений: 6,910
|
||
Просмотров: 350238
|
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,663
|
Замечания к программам (командам).
"Добавить новую вершину в полилинию." Не обрабатывается нажатие правой кнопки мыши. В программе предполагается, что новую вершину мы куда-то переместим мышью. но если нам не надо перемещать вершину, а подтвердить уже указанную точку, то напрашивается нажатие правой кнопки мыши и вот тут программа срывается. По-моему, kpblc дорабатывал эту программу. "Удалить вершину полилинии". Результат может оказаться непредсказуемым, если удаляется вершина между линейным и дуговым сегментами. В зависимости от направления полилинии вместе с вершиной удаляется или дуговой или линейный сегмент. "Аппроксимация дуговых сегментов линейными". В русской версии не работает контекстное меню. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,746
|
Дорабатывал, но не добил. Stretch все равно слетает черт-те куда. Там на оригинальном адресе, по-моему, Евгений Елпанов показывал обработку. Его вариант, насколько мне помнится, работал более устойчиво.
__________________
|
|||
![]() |
|
||||
Цитата:
Цитата:
Другое дело, что тот кто удаляет вершину должен отдавать себе отчет как направлена полилиния. Но как помочь ему в этом [sm2100] >kpblc В результате плотного общения с Лентяем, доработавшего код Евгения Елпанова, удалось добиться главного: избавиться от _break (полилинии не теряют ассоциативность). В этой версии вершины добавляются без _strech (там основная сложность была в пересчете bulge), что на мой взгляд более корректно. Последний раз редактировалось VVA, 19.09.2015 в 20:42. |
||||
![]() |
|
||||
Гидрорезка Регистрация: 18.09.2006
г Владимир
Сообщений: 2
|
"Аппроксимация дуговых сегментов линейными".
Как сделать следующее: Есть полилиния состоящая из нескольких прямых и дуг с разными радиусами до 500 мм и более 500 мм. Надо аппроксимировать дуги с радиусом более 500 мм с отклонением 0.1 мм.
__________________
Гидро абразивная резка waterjet 4000 Атм |
|||
![]() |
|
||||
Я бы сделал так:
1. _break в точке ->Выделить дуговые сегменты с радиусом более 500 мм в отдельные полилинии (вариант: скопировать полилинию и обрезать) 2. Аппроксимировать их с отклонением 0.1 (имеется ввиду предельное отклонение хорды, т.е. высота стрелки дуги) 3. PL-JOIN собрать все обратно в полилинию 4. При необходимости ENTREVS задать нужный порядок обхода |
||||
![]() |
|
||||
Гидрорезка Регистрация: 18.09.2006
г Владимир
Сообщений: 2
|
Так и делаю, но это очень долго. Уходят часы и дни на обработку нескольких полилиний.
Хотелось бы автоматически. Задать радиус дуги болше которого полилиния должна обрабатываться и отклонение.
__________________
Гидро абразивная резка waterjet 4000 Атм |
|||
![]() |
|
||||
Решил тоже добавить код в копилку...
Программа аппроксимирует дуговые сегменты полилинии по заданной высоте, т.е я использую подобный код для генерации векторной картинки полилинии в диалоговых окнах, задавая максимальную высоту в один пиксел. Предложенная программа только пример, никакой оптимизации... Я ее наспех выдернул из другого кода и слегка адаптировал для форума... Код:
|
||||
![]() |
|
||||
Регистрация: 20.01.2004
Москва
Сообщений: 154
|
посмотрел понравилось, но я думаю что стоит добавит еще 1 команду
или чуть-чуть изменить существующую- PL-DIV -Разбивает выбранный сегмент полилинии на указанное количество сегментов или через указанное расстояние что бы можно было делить не только один сегмент но и всу полилинию вместе, с сохранением текущих вершин А програмка супер молодцы |
|||
![]() |
|
||||
Инженер-конструктор, магистр СПбГПУ. Регистрация: 27.11.2005
Санкт-Петербург
Сообщений: 78
![]() |
Цитата:
__________________
Начинаю писать магистерскую диссертацию на тему нелинейных методов совместных расчетов оснований и фундаментов. Буду рад любой помощи со стороны профессионалов. |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,202
|
Спасибо за замечательный набор программ!
Может быть уважаемым авторам не составит труда добавить программку, которая бы по одиночному клику на полилинии строила бы фаску и скругление смежных сегментов, ближайших к точке выбора. |
|||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,663
|
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,746
|
Это не сделать, наколько я помню, вообще никак. Только если изготовить новый тип линии и его назначать на полилинию
__________________
|
|||
![]() |
|
||||
>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 создавался новый объект-копия включающий в себя только указанные сегменты. еще раз спасибо. |
|||
![]() |
|
||||
>AleX
Цитата:
Цитата:
Цитата:
>luser Сейсас готовится обновление с найденными багами KAI, попробую учесть и твое предложение. |
||||
![]() |
|
||||
Выложены новые обновления от 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) ) ) ) |
|||
![]() |
|
||||
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
С.-Петербург
Сообщений: 38,746
|
Насчет Toolpac'a я не знаю, может, он и стал бесплатным, но за GeoniCS (при условии всех его плюсов и минусов) платить приличные суммы лично я не согласный.
И потом, как-то нелогично получается - Toolpac удобнее, Geonics вообще заоблачные высоты, и тут же "добавьте то-то и то-то"... --- P.S. Обязательно прочтите мою подпись! --- Добавлено: В GeoniCS масса вещей (если вообще не все) сделаны на ObjARX, а там ничего не посмотришь, кроме как на междумордие да результаты работы. И потом пытаться сделать на лиспе то же самое. у меня лично подобные трюки прокатывают далеко не всегда
__________________
|
|||
![]() |
|
||||
Я совсем не хочу уменьшить значение твоей программы, но, некоторые моменты в Геониксе реализованы гораздо удобней. И если бы была возможность вытащить в Автокад из Геоникса набор команд по редактированию полилинии, то меня бы все устроило. Имелась в виду концепция решения.
|
||||
![]() |
|
||||
инженер Регистрация: 13.12.2004
Минск
Сообщений: 496
|
>>Игорь Богаченко
Цитата:
Поэтому пользуемся тем что есть! ![]() |
|||
![]() |
|
||||
Новый АВТОНОМНЫЙ вариант PL-VxMove с учетом замечаний KAI и Игорь Богаченко
Код:
Добавлено Команда сделана автономной |
||||
![]() |
|
||||
Регистрация: 09.10.2006
Санкт-Петербург
Сообщений: 99
|
VVA
Цитата:
Какие были мысли относительно этой команды: указывается направление редактирования, и резиновая нить цепляется за предыдущую вершину, обозначая положение линейного сегмента полилинии после изменения положения вершины. Таким образом, для пользователя процесс схож с вычерчиванием заново участка полилинии. |
|||
![]() |
|
||||
Этот код не вставляет вершину, а смещает. Это не подходит.
Если применять резинувую нить, то для двух смежных вершин, а не для одной с направлением. И, желательна свобода перемещения по редактируемой полилинии, а не быть привязаным к определенному участку, и двигаться по линии к следующему участку редактирования. Лучше просто подсветить редактируемую линию, и вставлять вершины в нужных местах. |
||||
![]() |
|
||||
>Игорь Богаченко В № 38 писал
Цитата:
Цитата:
![]() Я тоже сомневаюсь в практической ценности PL-VxMove и согласен с Profan №43 Хотел написать на Profan №45 Цитата:
|
||||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,663
|
Еще про ручки (такие, знаете ли, миленькие нежные ручки).
Подумавши, свою фразу построил бы по другому: Выделил полилинию и выбирай любую ручку, если нет ножки, или выбирай с Shift'ом несколько ручек, если тебя привлекает групповуха. :twisted: |
|||
![]() |
|
||||
Пользуясь случаем обновил программы. Исправленные ошибки:
- PL-CLONE, PL-VxRdc Неточночть работы в UCS - Добавлена команда PL-VX1 - Изменение начала полилинии - В команду PL-VxMove добавлена опция: Для 3d полилиний добавляется запрос сохранения Z узла полилинии - CVPOLY переведена в режим командной строки. - Вместо нее добавлена PL-3d2d (проецирование 3d на текущую ПСК) - Entrevs - для замкнутых полилиний вершина остается на месте - Корректная обработка кривизны и ширины замыкающего сенмента полилинии в ENTREVS Особо хочу поблагодарить KAI за дельные замечания и советы. > Neznayka Все добавляется. Просто размер прицела выбора (PICKBOX) должен быть больше текущей толщины полилинии на экране. Варианта 2: 1. Либо зумом отъедь от полилинии 2. Либо в командной строке PICKBOX и увеличь значение. Только что проверил: работает в 2007 RUS. Там чистый Лисп. От версии не должно зависеть. |
||||
![]() |
|
||||
Регистрация: 24.03.2005
Сообщений: 317
|
> Neznayka Все добавляется. Просто размер прицела выбора (PICKBOX) должен быть больше текущей толщины полилинии на экране.
Варианта 2: 1. Либо зумом отъедь от полилинии 2. Либо в командной строке PICKBOX и увеличь значение. Только что проверил: работает в 2007 RUS. Там чистый Лисп. От версии не должно зависеть.[/quote] Все понял , спасибо, поставил новую версию и в 2007 заработало почему-то :roll: еще нашёл замечательное применение : все время мучился с отрисовкой забора на своих схемах, теперь полилинию можно разбить на нужной длины сегмент, назначить глобальную ширину, и переменную FILLMODE обнулить - все. а то я раньше всякие (мультилинии), выдумывал вот только акад при разбивки секунд на 15 призадумывается, и это при том , что комп далеко не слабый у меня [ATTACH]1164096458.GIF[/ATTACH] а может еще такую фишку с геоникса добавить, типа есть замкнутый контур (здание обведено с растра, например) внутренние углы стремятся к 90 градусам, но у них это не получается из-за того не пользовались ф8 ![]() возможно ли такое ? |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,016
|
Совет программистам:
Для того, чтобы предотвратить ситуацию с неправильным указанием широкой (c физической шириной) полилинии, надо в функцию выбора примитива включать наподобие Код:
|
|||
![]() |
|
||||
>ShaggyDoc Спасибо, использовал.
>Neznayka Цитата:
Код:
Последний раз редактировалось VVA, 19.09.2015 в 20:52. |
||||
![]() |
|
||||
архитектор Регистрация: 14.01.2006
Portugal, Sintra
Сообщений: 119
|
Извините, что вклиниваюсь в столь умную беседу со своей проблемой, в лиспах ничего не смыслю. Но вопрос касается свойств полилинии.
В одном файле после использования команды flatten objekts изменилось отбражение вновь проводимых полилиний. Толщина их стало отбражаться в абсолютных величинах, а не относительно экрана. мне удалось только выяснить, что это зависит от величин global width. Где можно это значение "обнулить"? Пока приходится делать это вручную в свойствах... :?:
__________________
жизнь-занятная штука... |
|||
![]() |
|
||||
Регистрация: 24.03.2005
Сообщений: 317
|
Вы кудесник, это так "окрасивит" мои чертежи,!!! прям сказка,
немогли бы вы на словах рассазать про алгоритм работы, это сравни уравновешивания теодолитного хода? если Вас интересуют пожелания, то они такие: некорректно работает с не замкнутой плинией (появляется короткий апендикс который совсем в другую сторону смотрит), и если можно ограничить выпрямляймые углы , скажем от 85 до 95 градусов, а то в зданиях бывают не только прямые углы, и еще чтоб скапом можно было контура обрабатывать, а не по одному. ОГРОМНОЕ СПАСИБО |
|||
![]() |
|
||||
>Lizzy Вручную в свойствах, только для всех полилиний сразу.
Выдели объекты, в окне свойств (там где Все) раскрой список, выбери полилинии. в поле Глобальная ширина вбей 0. >Neznayka Пробуй. Про алгоритм чуть позже Код:
Цитата:
Последний раз редактировалось VVA, 19.09.2015 в 20:55. |
||||
![]() |
|
||||
>Кочетков Андрей Исправил. Выложил в download
|
||||
![]() |
|
||||
>Profan Спасибо, Владимир. Как-то пропустил твой пост, только сейчас заметил. Заменил. Исправления от 14.03.2007
Помимо этого добавлено: ConvTo2d -Преобразование линейных объектов в 2D полилинии ConvTo3d -Преобразование линейных объектов в 3D полилинии MPL -Построение средней линии R3P -Прямоугольгик по 3-м точкам PL-JOIN -Объединение полилиний чохом (если есть 3d полилинии, то объединяет и их тоже, но не с 2d, а между собой) PL-JOIN3D -Объединение 3D полилиний (Отрезки + 3d полилинии) Исправлены мелкие и не очень (спасибо KAI) глюки. |
||||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
Цитата:
Даже мне, зунуде, кажется, что уже все в норме. Есть конечно мелкие огрехи, кое в чем с автором я не согласен, но на то и АВТОР! Ему видней. А в целом комплекс ОЧЕНЬ хороший! Рекомендую! Огромное спасибо VVA!
__________________
Лень - великий двигатель прогресса! |
|||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,663
|
Для VVA.
Вот ЗДЕСЬ есть еще программа Евгения Елпанова "Изменение начальной и конечной ширины произвольного сегмента полилинии". Вы не хотите включить ее или ваш аналог в пакет PLTOOLS? Правильно вы сделали, что сгруппировали кнопки. |
|||
![]() |
|
||||
Поступают просьбы добавить команду, чтоб выбирать надо было бы только один объект, а команда объединяла все примыкающие объекты (линии, полилинии, дуги...) в полилинию.
Выкладываю на тестирование и для предложений/замечаний. Алгорити взят у ChainSelect Fatty Код:
CSS - объединение путем выбора притива CSP - объединение путем указания точки |
||||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
>> VVA
Очень интересно! Но: 0. Мур-мур от команд надо-бы отключить. 1. CSS. В одном из моих отладочных чертежей вылезла следующая ошибка (правда там объекты отрисованы в разных UCS и ужасная мешанина из объектов): Command: CSS Выбрать первую или последнюю линию в цепи : Значение допуска < 0.01 >: ; error: bad argument value: AcDbCurve 2130505112 2. CSS. 3DPoly следует исключать из набора, иначе получается следующая картина: ---3DPoly в конце цепочки------------ Command: css Выбрать первую или последнюю линию в цепи : Значение допуска < 0.01 >: _.redraw Command: _pedit Select polyline or [Multiple]: _M Select objects: 9 found Select objects: Enter an option [Close/Open/Join/Width/Fit/Spline/Decurve/Ltype gen/Undo]: _j Join Type = Both (Extend or Add) Enter fuzz distance or [Jointype] <0.010>: _j Enter join type [Extend/Add/Both] <Both>: _b Join Type = Both (Extend or Add) Enter fuzz distance or [Jointype] <0.010>: 0.010000000000000 8 segments added to polyline Enter an option [Close/Open/Join/Width/Fit/Spline/Decurve/Ltype gen/Undo]: Command: ._select Select objects: 0 found Select objects: ---3DPoly в начале---------------------- Command: CSS Выбрать первую или последнюю линию в цепи : Значение допуска < 0.01 >: _.redraw Command: _pedit Select polyline or [Multiple]: _M Select objects: 10 found Select objects: Enter an option [Close/Open/Spline curve/Decurve/Undo]: _j Invalid option keyword. Enter an option [Close/Open/Spline curve/Decurve/Undo]: ._select Invalid option keyword. ; error: Function cancelled Enter an option [Close/Open/Spline curve/Decurve/Undo]: 3. CSP. Похоже точку надо указывать точно на узле объекта? 4. Для PEDITACCEPT лучше применять конструкцию: (if (getvar "PEDITACCEPT");для 2006>> (progn (setq pda (getvar "PEDITACCEPT")) (setvar "PEDITACCEPT" 1) ) ) Вдруг прогу запустят в acad 2005? 5. CSS. Кроме 3DPoly, думаю следует проверять еще и линии (они должны лежать в одной плоскости), а то получается, что грипсы загораются на всей цепочке, но это только видимость! Если последняя линия не в плоскости полилинии. 6. На мой взгляд, fuzz по умолчанию лучше бы сделать 0.0, будем приучать пользователей к точности.
__________________
Лень - великий двигатель прогресса! |
|||
![]() |
|
||||
> 0. Мур-мур от команд надо-бы отключить
Извини, не понял о чем речь ![]() >1. CSS. В одном из моих отладочных чертежей вылезла следующая >ошибка (правда там объекты отрисованы в разных UCS и ужасная >мешанина из объектов): Попробуй проверить этот чертеж _audit или _recover. Это помогло на том глючном файле, который ты присылал раньше. >2. CSS. 3DPoly следует исключать из набора, иначе получается >следующая картина: Пришли файл, т.к. 3dpoly исключаю Код:
Да >4. Для PEDITACCEPT лучше применять конструкцию: PEDITACCEPT появилась с 2004 Автокада. Не знаю, есть ли смысл ввводить проверку? >5. CSS. Кроме 3DPoly, думаю следует проверять еще и линии (они >должны лежать в одной плоскости), а то получается, что грипсы >загораются на всей цепочке, но это только видимость! Если >последняя линия не в плоскости полилинии. Здесь принцип такой: строится список объектов с совпадающими началом/концом и отдается на откуп _PEDIT _M. А уж сколь там контуров построит PEDIT одному Autodesk'у известно. Грипсами подсвечивается все, что получилось (или осталось). Это могут быть и несколько контуров, или (и) не объединенные LINE. Почему проскальзывают 3dpoly пока не понятно? >6. На мой взгляд, fuzz по умолчанию лучше бы сделать 0.0, будем >приучать пользователей к точности. Это правильно. Еще терзают смутные сомнения в необходимости CSP. |
||||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
>> VVA
>0. Именно CMDECHO. >1. CSS. В одном из моих отладочных чертежей вылезла ошибка... Audit and Recover не помогло. >2. CSS. 3DPoly следует исключать из набора... Если 3DPoly в конце - все OK. А вот если в начале, то .... >4. Для PEDITACCEPT Отнюдь не все перешли еще на 2004>> >5. CSS. Линии не в плоскости. Может лучше подсветить грипсы для итоговой полилинии, а не для набора, передаваемого в PEdit? > Еще терзают смутные сомнения в необходимости CSP. Наверное, это не нужно, что-то никак не могу придумать в каких ситуациях это будет полезно. И еще заметил. Если выбирать дугу, расположенную в середине цепочки, то CSS вроде логично объединяет дугу с последующими объектами (предыдущие не объединяются, предыдущий объект линия). Но если выбрать линию (дугу) в середине цепочки, то объединяются выбранный объект и последующие и почему-то один предыдущий линия (или дуга при выборе дуги).
__________________
Лень - великий двигатель прогресса! |
|||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
>> VVA
Может это старческое брюзжание, но: 1. Болезнь отмены работы программы так и не преодолена, для отмены нужно 2 раза посылать команду U (это касается и программ комплекса pltools). 2. Все-таки логичнее будет, если пользователь выбирает объект вблизи будущего начала полилинии и к нему добавляются только объекты, примыкающие к концу этого объекта! Сейчас же, похоже, объединение выполняется в зависимости от направления исходных объектов, причем объединение происходит в режиме: все в одном направлении + один объект в противоположном. 3. Перед началом работы программы следует сбросить грипсы. Если после CSS снова ее запускаем (грипсы на предыдущей не сброшены), то после указания нового объекта для объединения получаем ошибку: Command: CSS Выбрать первую или последнюю линию в цепи : Значение допуска < 0 >: Invalid option keyword. Invalid option keyword. ; error: Function cancelled Enter an option [Close/Join/Width/Edit vertex/Fit/Spline/Decurve/Ltype gen/Undo]: А в целом, можно уже помещать ее в PLTolls.
__________________
Лень - великий двигатель прогресса! |
|||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,663
|
Да вот, например. Архитекторы чертят план в масштабе 1:1, а выводить на печать будут из модели в масштабе 1:100. Все размерные величины (и тексты) соответственно увеличены в 100 раз. Для этого задается переменная "DIMSCALE" равная 100. В этих условиях ширина полилинии должна быть, для примера, не 0.5, а 50. Поэтому я и предположил, что, если "DIMSCALE" > 1, то и ширину полилинии надо устанавливать равной, скажем, 0.5 x (getvar "DIMSCALE"). Возможно, это спорный момент.
|
|||
![]() |
|
||||
> Krieger №18
Цитата:
Цитата:
На дуговых сегментах полилинии тип линий может быть "вверх тормашками", причем реверс не помогает. Этот артефакт можно побороть, если в полилинии включить "генерацию типа линий". Последний раз редактировалось VVA, 19.09.2015 в 22:56. |
||||
![]() |
|
||||
>Profan # 76,78
По поводу учета толщины полилинии и DIMSCALE все решается через меню. Добавил панель "Ширина полилинии*Dimscale". Выложил в download. Обновление от 12.12.2007. Ссылка в 1 посте
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 13.11.2009 в 20:23. Причина: орфография |
||||
![]() |
|
||||
Регистрация: 27.12.2007
Сообщений: 2
|
В файле новом файле dnl607.rar загружаемом со страницы http://dwg.ru/dnl/607 обновлены только history.txt, pltools.mnu и pltools.mns.
Все остальные файлы к сожалению от 13,03,2007 |
|||
![]() |
|
||||
Да, пока так и есть. См. #83. Планирую обновления выложить после праздников. Основные отличия - переработаны алгоритмы оптимизации (прополки) полилинии + прополка (PL-VxRdc) восстанавливает дуговые сегменты. В данный момент переписываю алгоритм PL-DIV. Если успею, добавлю новую команду переноса сегмента полилинии по вертикали (а может и по горизонтали) с учем разных вертикальных и горизонтальных масштабов. Написал по заказу дорожников, для работы с профилями
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Регистрация: 27.12.2007
Сообщений: 2
|
Спасибо Вам огромное. Ваши программы увеличивают возможности автокада в несколько раз. Раньше пользовался ToolPack, теперь уже почти год Вашим пакетом. Работает отлично, без каких либо глюков и ошибок. Единственно где были проблемы, так это в программе VxRdc (с дугами, а также очень медленно работает при количестве точек порядка 7000). Проблему с дугами решил для себя заменив фрагмент:
if (or (and (vlax-method-applicable-p pl 'Getbulge) (zerop (vla-GetBulge pl (1- n)))) (not (vlax-method-applicable-p pl 'Getbulge)) (and (vlax-method-applicable-p pl 'Getbulge) (not (zerop (vla-GetBulge pl (1- n)))) pang )) На if (zerop (vla-GetBulge pl (1- n))) Очень рад что после праздников может быть будет оптимизация. Последний раз редактировалось plugins, 28.12.2007 в 15:43. |
|||
![]() |
|
||||
Ну вот, свершилось. Выложил новую версию (обновление от 24.01.2008).
Кратко что нового: Новые команды PL-CSE -Объединение 2d полилиний по примитиву PL-SgWidth -Изменить ширину сегмента полилинии Переписан алгоритм PL-DIV и PL-DIVALL (теперь все делается геометрически) Переписана и оптимизирована PL-VxRdc (теперь восстанавливает и дуговые сегменты)
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Спасибо Владимир, Александр (KAI) мне уже сообщил. Обновил сборку (от 25.01.2008). Найденные Александром отсальные глюки (в основном при работе с тяжелыми [2d] полилиниями) устраню на досуге. Постараюсь не добавить новых.
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 25.01.2008 в 14:38. Причина: Склероз и невнимательность |
||||
![]() |
|
||||
Регистрация: 30.07.2007
Беларусь
Сообщений: 101
|
(Продублировал с доунлоада)
А есть ли там функция объеденить в полилинию все отрезки на прямой? Или надо добавить? Например делаем сечение втулки, кольца, итд, чтобы сделать разрез нужно линии объеденить, joynt конечно помогает но было бы проще одним щелчком или с промежуточным подтверждением, чтобы убедиться что не захвачены линии не входящие в этот объект Загрузил прогу подключил, а то о чем писал один пост назад (объединение нескольких отрезков на одной прямой в одну сплошную полилинию у меня не получилось, команда (привожу дословно) ОБЪЕДИНИТЬ ВЫБРАННОЕ В 2d ПОЛИЛИНИИ , всего лишь ПРЕОБРАЗОВЫВАЕТ их, но НЕОБЪЕДИНЯЕТ! Никаких ошибок не сообщает. АКАД2007русифицированный(неРУС) |
|||
![]() |
|
||||
Выложи сюда фрагмент чертежа.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Инженер дорожник Регистрация: 22.10.2007
Израиль
Сообщений: 1,859
|
Для объединения в полилинию пользуюсь макросом. Данный макрос позволяет не вязку линий, в данном случае 10 в плане. Само собой, что линии на разных уровнях и с разными координатами по Z начала и конца линии, а также 3D линии.
^C^C(progn(setq ssnab (ssget "_I"))(while (not ssnab)(setq ssnab (ssget)))(command "_pedit" "_Multiple" ssnab "" "_Y" "_Join" 10.00 "")); |
|||
![]() |
|
||||
Инженер дорожник Регистрация: 22.10.2007
Израиль
Сообщений: 1,859
|
Посмотрел и ваш пример. Если речь идёт о трёх отрезках так между концами отрезков почти 500 мм. Концы отрезков должны совпадать тогда они объедятся через редактирование полилилнии объединить. Команда _join она продлевает и объединяет если отрезки лежат на одной прямой.
|
|||
![]() |
|
||||
>rus22 Можешь воспользаваться макросом #94. В pltools есть справке, а в енй написано
Цитата:
Кстати твой отрезки прекрасно объединила новая команда PL-CSE с значением допуска 500
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Регистрация: 30.07.2007
Беларусь
Сообщений: 101
|
Блин сообщение с благодарностью куда-то делось
Спасибо за разъяснение ещё раз эти функции казались очевидными (объединение строк) в необходимости однако с наскоку не получилось, поэтому может в хелп стоит добавить пару строк, да и вообще комментировать в каких случаях большинство участвовавших каким-либо образом в разработке этого хорошего набора его применяют |
|||
![]() |
|
||||
VVA, Только что узнал что PLtools это твоих рук творение. Я без нее давно AutoCAD не представляю. Спасибо большое.
![]() Есть кое что в PLtools, что мне хотелось бы слегка подкорректировать. Когда добавляешь вершину в полилинию почему-то работает только привязка nearest, тогда как очень бывает нужно чтобы работали и другие привязки. Извиняюсь если этот вопрос уже обсуждали. Форум весь я не читал. |
||||
![]() |
|
||||
Это связано с тем, что за один раз указывается точка и по этой точке выбирается полилиния. Привязки действуют, но только временные. Нажми Shift+ правый клик и выбери нужную.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
>Red Nova И что остается потом?
Если 2 полилинии, то _.break
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Цитата:
|
||||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,600
![]() |
Угу, вот только еще удаляет то что не надо удалять, да и 2 клика нужно
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,377
|
Когда kpblc вылезает с entsel'ом с последующим vl-ename->vla-jbject'ом, у меня начинается изжога с скердцебиением. А потому - мои бесценные два цента.
Код:
|
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,377
|
Profan, я по скудости личного кошелька пользуюсь все еще AutoCAD-2005, поскольку на работе мне АвтоКад не положен. А посему. активно пользуюсь удобства ради одним собственноручно открытым багом - заменой имени функции именем переменной. В данном случае, например,
Код:
Код:
Код:
Последний раз редактировалось Лентяй, 16.03.2008 в 04:37. |
|||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,663
|
Лентяй, мой личный кошелек тоже скуден, поэтому дома я работаю на чем попало, хоть на 2009. На работе мне продукт положен, однако, из-за скудости кошелька руководителя конторы приходится тоже работать на чем попало, хоть на 2009. Но это временное явление. Стремясь стать независимым служащим, я уже приобрел две коробки с Windows XP HE.
![]() Последний раз редактировалось Profan, 16.03.2008 в 04:56. |
|||
![]() |
|
||||
Приветствую вас, а можно сделать так чтоб после запуска команда PL-CSE с допуском например 3.5, при повторном запуске сохраняла ранее введенное значение допуска <3.5>, а не сбрасывала его на <0>?
И незнаю, насколько это возможно, сделать алгоритм соединения зависимым не только от "допуска", но и от min величины "угла" примыкания соединительного отрезка. [IMG]http://img522.**********.us/img522/6158/sdgn4.th.jpg[/IMG] |
||||
![]() |
|
||||
Про запоминание значения не проблема, а про "угол" надо подумать. Вся проблема в алгоритме.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
У меня в AutoCAD 2005 (и в 2008) всё равно не хочет объединять все сегменты, даже если первый или последний выбрать! То часть сегментов определит, то только слева направо от выделенного. Ну а Bricscad вообще отказался работать =)
Последний раз редактировалось Tonic, 28.03.2008 в 12:31. |
|||
![]() |
|
||||
Изменил код в #121 Пробуй снова. BricsCad не поддерживает Visual LISP
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,746
|
Не совсем так. 8-ка ActiveX уже поддерживает. Правда, не в полном объеме, там надо практически построчно проходить выполнение.
__________________
|
|||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
Запускаем:
Command: css Выбрать линию в цепи : Значение допуска < 0.01 >: _.redraw Command: _pedit Select polyline or [Multiple]: _M Select objects: 10 found Select objects: Enter an option [Close/Open/Join/Width/Fit/Spline/Decurve/Ltype gen/Undo]: _j Join Type = Both (Extend or Add) Enter fuzz distance or [Jointype] <0.010>: _j Enter join type [Extend/Add/Both] <Both>: _b Join Type = Both (Extend or Add) Enter fuzz distance or [Jointype] <0.010>: 0.010000000000000 9 segments added to polyline Enter an option [Close/Open/Join/Width/Fit/Spline/Decurve/Ltype gen/Undo]: Command: ._select Select objects: 1 found Select objects: Command: Мур-мур бы убрать... И в добавок. Гораздо интереснее было бы соединять в полилинию только те объекты, которые ближе к выбранному концу объекта, а с другого конца объекта их игнорировать. Или может быть оформить это опциями (All по умолчанию, Next - только ближайшие к концу). И по окончанию работы программы - статистику (сколько объединено объектов). p.s. В PL-CSE (pltools) то же было бы неплохо "загрипсовать объект".
__________________
Лень - великий двигатель прогресса! |
|||
![]() |
|
||||
Регистрация: 21.03.2008
Сообщений: 1
|
Спасибо авторам за ОЧЕНЬ нужные программы!
![]() А возможно ли такое? Сгруппировать полилинию с пересекающими ее объектами (отрезками, блоками). при этом разворачивая углы полилинии на 180 (очень бы помогло для построения развернутого плана трубопроводов). |
|||
![]() |
|
||||
В №121 обновил команду CSS. По моему получилось неплохо. Можно рассатривать как кандидат на замену PL-CSE.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
>Tonic см. #124. Я пока ориетнируюсь на Автокад.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
>>VVA
А где _VXGRDRAW? Выбрать линию в цепи :; error: no function definition: _VXGRDRAW Добавьте, пожалуйста! p.s. Опции устраивают. p.p.s. А когда будет обновление сборки pltools. Народ любит обновления любимых программ.
__________________
Лень - великий двигатель прогресса! |
|||
![]() |
|
||||
_vxgrdraw mip_grdraw добавил в #121. Если устраивают опции, их содержание и вид, то обновлю функционал PL-CSE.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Лично меня PL-CSE устраивает больше.
1. CSS прекращает соединять элементы в цепочку после соединения "разрыва". 2. В CSS очень муторно высматривать куда ткнуть мышой чтоб угадать ближайшую вершину в отрезке, в PL-CSE просто указываешь первый и все. |
||||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
>> VVA (не сочтите занудой, но...)
Теперь потерялась функция pl(двоеточие)DTR (извини, вставил сам для просмотра) 1. По умолчанию лучше дать опцию "Обе" 2. Строить цепочку от ближайшей точки [Ближайшая/Противоположная/Обе] <Ближайшая>: - здесь чуть-чуть не по русски. Может так: Соединять от ближайшей точки [Ближайшей/Противоположной/Все] 3. Застарелая проблема. Пока 2 раза не нажмешь U - действие команды не отменится. 4. Строить цепочку от ближайшей точки [Ближайшая/Противоположная/Обе] <Ближайшая>: Нажимае Esc, далее: *Cancel* ; error: Function cancelled Это уже лишнее, пользователь и так ее явно прервал. 5. Выбрать линию в цепи : Строить цепочку от ближайшей точки [Ближайшая/Противоположная/Обе] <Ближайшая>: G Invalid option keyword. (Но тем не менее все идет далее...) Значение допуска < 0.01 >: 6. Значение допуска лучше задать 0.0 (будем приучать пользователей к точности). 7. Рисуем несколько линий, у одних задаем в общем узле отметку Z отличную от 0. Запускаем программу по опции "Обе". Грипсы по всей цепочке линий (пользователь думает, что соединено!), но соединяет, естественно только линии с Z=0. 8. И наконец, было бы неплохо, если последняя опция, выбранная пользователем, сохраналась, например, он выбрал "Ближайшая", вот и пусть при повторном запуске программы ему и была предложена эта опция.
__________________
Лень - великий двигатель прогресса! |
|||
![]() |
|
||||
VVA, По поводу #121. У меня не работает.
Запускаю команду CSS Цитата:
Я путаю что должна делать CSS, а что DTR. При команде DTR Цитата:
Как я понял основная задумка в том, чтобы нажав скажем на линию, все объекты которые концами образуют с ней цепочку соединялись. Я правильно понял? У меня так не выходит. |
||||
![]() |
|
||||
> Red Nova Я добавил эти ф-ции в #121. А вообще они все есть в pltools, поэтому достаточно вызвать любую команду pltools, а затем CSS. У меня все грузится автоматом, поэтому кое-какие библиотечные ф-ции вечно забываю.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
VVA, Ты меня только запутал.
Цитата:
Что должна делать команда CSS? У меня pltools есть, вызываю любую команду потом CSS, и нечего Цитата:
|
||||
![]() |
|
||||
Новая версия CSS. С учетом замечаний KAI кроме №7 и Red NOva #145
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 09.04.2008 в 13:48. Причина: Новая версия |
||||
![]() |
|
||||
инженер Регистрация: 03.04.2008
СПб
Сообщений: 45
![]() |
![]() Мне нужно преобразовать полилинию в дуговой сегмент. ПРоги я отсюда скачала, сделала, как написано в сопроводиловке txt, но что значит "активировать панель" я не поняла. Раньше я программированием и 3D не занималась, но теперь диплом делаю, так что приходится осваивать.. |
|||
![]() |
|
||||
>nastasja "активировать панель" - значит сделать панельку с кнопками видимой.
Цитата:
>Cfytrr Кинь примерчик на почту.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
VVA, Есть пожелание по поводу CSS. Обычно когда соединяют объект к другому, то свойства первого передаются второму. Только что пробовал соединить дугу к полилиние (первый объект - дуга). Так в этом случае соединенная полилиния принимает свойства второго объекта. Лучше бы было если бы тут все было как в обычном join.
|
||||
![]() |
|
||||
Здесь обсуждаются предложения. Это не значит что я немедленно брошусь все исправлять/дописывать. У меня тоже есть работа. Предложения берутся на заметку и исправляются/доделываются в следующей версии. Если это действительно очень важно, то обновил код в #140 с учетом твоих пожеланий и замечаний KAI #135, кроме №7
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Не стреляй, здаюсь.
![]() Удалил постыдное сообщение, раз оно тебя так разозлило. ![]() Лисп опробовал, все работает. Большое спасибо. Последний раз редактировалось Red Nova, 10.04.2008 в 12:34. |
||||
![]() |
|
||||
Nikolays,
1. Что выдает при попытке вызвать команду? 2. Попробуй в командной строке набрать _appload и загрузить pltools.fas из папки PLTOOLS, потом вызвать какую-либо команду 3. Тоже самое по п.2, только загрузи файл pltools.lsp из подпапки LISP папки PLTOOLS
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
INJENER Регистрация: 03.05.2007
Kazakhstan
Сообщений: 161
|
это всё я сделал,но при выполнении команд выдаёт сообщение:ERRNO # 0: no function definition: nil,Выберите Полилинию, Сплайн или Отрезок для реверса <хватит>:ERRNO # 2: no
function definition: VLAX-ENAME->VLA-OBJECT,*error* functionAutoCAD variable setting rejected: "CMDECHO" nil |
|||
![]() |
|
||||
В PLTOOLS (vl-load-com) грузится автоматом при загрузке файла.
Nikolays, 1. Скопируй или набери в командной строке (vl-load-com) 2. Затем (vlax-get-acad-object) Должно возвращать что-то типа #<VLA-OBJECT IAcadApplication 00c2eb8c> А у тебя что пишет?
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
INJENER Регистрация: 03.05.2007
Kazakhstan
Сообщений: 161
|
при запуске команды"vl-load-com"выдаёт сообщение:Команда: vl-load-com
Unknown command "VL-LOAD-COM". Press F1 for help при запуске команды"vlax-get-acad-object":выдаёт сообщение:Unknown command "VLAX-GET-ACAD-OBJECT". Press F1 for help. |
|||
![]() |
|
||||
Что еще могу посоветовать:
1. Попробуй скачай последнюю версию 2. Создай новую учетную запись и попробуй в ней 3. попробуй pltools на другой машине
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
Мистика, однако!
__________________
Лень - великий двигатель прогресса! |
|||
![]() |
|
||||
VVA,
Цитата:
__________________
Блог |
||||
![]() |
|
||||
Red Nova, см. пост #1
Nikolays, Еще пара советов в порядке предпостения: 1. Попробуй на своей машине завести новую учетную запись и попробывать там pltools (рекомендация #154 №2) 2. Попробывать удалить Автокад и поставить снова.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Offtop: Теперь 1-й пост прикрепляется вверху каждой страницы. Удобно
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
А п.2 из #158 ?
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
джедай Регистрация: 31.01.2005
Магадан
Сообщений: 460
![]() |
а такое добавить не хотите?
бывает нужно провести часть полилинии по уже существующему контуру/контурам хотелось бы нечто очень юзер-френдли - рисую полилинию стандартной командой, нужно провести по существующему контуру, запускаю команду, тыкаю начальную точку, тыкаю конечную, продолжаю рисовать полилинию. Будете такое добавлять?) |
|||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
Забыл ТУ:
Координаты начала новой полилинии по первой точке исходной полилинии (координаты в UCS). Далее точки новой полилинии должны идти в плоскости UCS, естественно, что если прежняя полилиния не находится в этой плоскости, то ее точки должны проецироваться на плоскость UCS. Для нас дуги на исходной полилинии можно игнорировать, но лучше их сохранять, мало-ли кому это важно. Начало не мешало-бы пометить крестиком. Привязка при указании 1-й и 2-й точки на исходноий полилинии по умолчанию - END, но возможны и другие, выбираемые пользователем (NEA, MID и др.)
__________________
Лень - великий двигатель прогресса! |
|||
![]() |
|
||||
Димас, KAI, Вычлинить из готовой полилинии набор сегментов не проблема. По принципу PL-CLONE, только там выделяешь сегменты, а здесь начало и конец. Я пока не знаю как "скрестить" стандартную команду рисования полилинии, возможность добавления некоторого количеста вершин и затем опять продолжения рисования полилинии ?
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 22.06.2008 в 11:04. Причина: Орфография |
||||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
>>VVA
А если немного упростить вышесказанное (кстати, на это и указывал Димас): 1. Начинаем на исходной полилинии. 2. Задаем 2-ю точку на исходной полилинии. 3. Дальнейшее указание точек новой полилинии (опции команды PLINE не нужны, показ новой виртуальной полилинии весьма приветствуется), то есть только прямые сегменты для новой полилинии , + опция 'Замкнуть'. 4. При отказе от новой точки или по Close отрисовывается новая полилиния (сначала от 1-й до 2-й точки исходной, а затем, по заданным пользователем точкам). Можно по Esc (+ опция Exit) сделать так, чтобы новая полилиния не отрисовывалась.
__________________
Лень - великий двигатель прогресса! |
|||
![]() |
|
||||
инженер Регистрация: 13.12.2004
Минск
Сообщений: 496
|
VVA сейчас в отпуске отвечу за него.
1. Мое мнение всунуть эту возможность в именно в стандартную команду отрисовки полилинии не получется, я видел как это работает в другой программе, там собственная команда создания полилиний (контуров) с возможностью трассировки по другому контуру. 2. Скорее всего прийдется писать заменитель стандартной команды. Выглядеть он будет примерно так: - Будут запрашиватся точки вершин будущей полилинии, с опциями полилинии, но в место полилинии создавть временную геометрию (отрезки, дуги) с включением их в набор - Будет опция трассировки по существующему контуру, т.е. от точки начала трассировки по контуру до точки конца трассировки по контуру - В случае замкнутого контура дополнительно прийдется задать сторону по которой пройдет трассировка, создается временное построение трассировки по контуру включаемое в набор - далее продолжаем ввод координат вершин полилинии с опциями полилинии или трассировку по другому контуру, опять же со временными построениями с включениями в набор. - по окончанию построений все объединяется в одну полилинию. В качетсве настроек цвет временных построений и толщина (вес) линий для визуального наблюдения. Сложности будут при переходе трассировки с одного контура на другой в точке их пересечения (может быть точкой пересечения множества контуров), возможно дополнительно прийдется указать тот контур по которому будет осуществлятся трассирование далее. Кроме того возможно понадобится трассировка по контуру блока, сплайна и т.п. Но в общем цель ясна, покожу VVA на примерах. Кто хочет или знает как лучше дополняйте. |
|||
![]() |
|
||||
Do$, Спасибо, выйду из отпуска - исправлю. А пока можно делать так, как написано в readme.txt:
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
Цитата:
Код:
Пример ниже показывает, что это возможно. Акцентирую внимание - это пример, а не готовая функция, т.к. в нем пока не решен вопрос, какую часть полилинии брать если точка выбрана в пересечении сегментов полилинии, ну и не стал заморачиваться с выбором первой точки - новая полилиния строиться от начала и до точки указанной пользователем с продолжением рисования... Код:
|
|||
![]() |
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
Решил внести в PLTOOLS и свой вклад...
Прошу потестировать программу, сделанную по мотивам #162 : Код:
Последний раз редактировалось CB, 01.09.2008 в 16:00. Причина: Теперь можно работать и в UCS, а не только в WCS... |
|||
![]() |
|
||||
Это мой тестовый чертеж для pltools. Прислал в свое время KAI. Ругается на синюю полилинию, что точка не на ней.
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 01.09.2008 в 16:08. |
||||
![]() |
|
||||
сегодня заметил что в 2009 Акаде x64 не работают команды:
PL-VxAdd, ConvTo3d, пишет: ; warning: unwind skipped on unknown exception. Остальные команды вроде работают... На 32 битной версии все работает нормально |
||||
![]() |
|
||||
К сожалению пока не на чем проверить, но возьму на заметку.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
>> VVA
А помнится, кто-то обещал "намедни" выложить обновленный pltools с исправленными багами и дополнениями? Переписку напомнить? Народ ждет давно. Это семейство программ им очень нравится. p.s. А командировки только в Москву? А в Магадан? Готов поделиться комнатой и даже сдать в аренду Мурзика (для сугрева и сняния напряжения).
__________________
Лень - великий двигатель прогресса! |
|||
![]() |
|
||||
Про PL-VxAdd
Единственное что мне в этой команде раньше казалось неправильным было то что привязка во время работы команды отключалась, по моему это создает лишнее неудобство, но со временем, освоив азы лиспа, я это у себя подправил, поменяв в коде строку с osmode на ("osmode" 16383), чего всем и рекомендую, в таком случае будут включены все привязки. Ну или можно вообще не трогать привязки, и удалить соответствующие строки из кода. Хотелось бы чтобы код изначально был таким.
__________________
Блог |
||||
![]() |
|
||||
Sleekka, Ты файлик покажи (или пришли на почту) где эта ошибка появляется.
2. Помсмотрю
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
VVA, а вот скажи, 3D полилинию в сплайн переделывать надо? В смысле с радиусами в вершинах? Я тут сплайны расковырял и в принципе уже могу и дуги и прямолинейные участки делать через entmake сплайнами. Погрешность очень не велика и ее можно сокращать увеличением количества точек на дугах. Вот сижу и ломаю голову, надо это, или не надо.
|
||||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,458
|
Вообще-то конвертация полилинии в сплайн решает задачу сглаживания, но сколько я не глядел как отцы подходят к этой задаче, они получают точки как для сплайна а потом по ним все равно полилиния делается видимо обосновано простотой примитивов.
|
|||
![]() |
|
||||
Supermax, Это у народа нужно спрашивать. Но раз ты расковырял сплайн, то может будет интересна еще и задача апроксимации сплайна полилинией с дуговыми сегментами.
Sleekka, Да, сплайн "тяжелый" для Автокада примитив.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Cfytrr, Скоро на работе поставят поставят Висту 64 для ананализа работоспособности наших программ по ней. Тогда посмотрю в чем там дело.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
VVA, перевести сплайн в 3D полилинию можно, поскольку имея представление как строится сплайн Автокадом, можно высчитать ряд точек и провести но ним 3D полилинию, но вот имея ряд точек, определить нужна ли там дуга или нет? -
![]() Короче, с дугами затык. Потом, сплайн очень коварная штука. В любой момент может выскочить "холмик", который можно описать только очень большим количеством точек, а все остальное может быть просто прямой. Но, мне кажеться, я где-то уже видел такую прогу. |
||||
![]() |
|
||||
Денис Флюстиков, Спасибо, посмотрю.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Регистрация: 24.03.2005
Сообщений: 317
|
Сложный прямоугольник
Может это под автокад возможно заточить: « При создании объекта способом "Сложный прямоугольник" вначале вводятся две точки - самая длинная боковая сторона создаваемого объекта, а затем - остальные вершины прямоугольника (через одну). Точки указываются на экране курсором и вводятся нажатием левой кнопки мыши. Промежуточные точки создаются автоматически на пересечении прямой, параллельной первой линии (и проходящей через текущую точку) и перпендикуляра к первой линии, проходящего через предыдущую точку. Таким образом, перпендикулярность всех граней создаваемого объекта (в том числе и последней, замыкающей) отслеживается автоматически.» Я так и не понял, как замыкать этот прямоугольник, вероятно после клика №4 должен следовать правый клик, который задаёт удаление грани «А» от первоначальной грани |
|||
![]() |
|
||||
Neznayka,
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Регистрация: 24.03.2005
Сообщений: 317
|
C точкой 5 имхо плохо, т.к точности не будет (ну если только объектное отслеживание включить).
По принципу "облака" то же хорошо, но будет лишний клик (по т.1) и точка 5 будет "плавать", т.е. её привязкой точно не посадишь, ведь точка 5 все равно будет на перпендикуляре к стороне 1-2. Я чётко излагаю или надо детальный чертеж в районе т.5. Надо реализовать вариант незамкнутости, и что делать с методом т.5 если надо чтоб продолжить полилинию за грань 1-5, т.е полигон будет с самопересечением (это для тех кто не только домики рисует) И самый главный вопрос: ВОЗЬМЁТЕСЬ за это? |
|||
![]() |
|
||||
zamtmn, Уже исправил. Постараюсь на днях выложить новую версию.
Neznayka, Буду думать
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Neznayka, В качестве первого приближения
Код:
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Регистрация: 24.03.2005
Сообщений: 317
|
Ура!!! Вот счастье-то какое.
Пока оттестировать досконально нечем, серьёзных замечаний я не вижу, так только по мелочи: 1. Нажатие на esc во время выполнения команды УДАЛЯЕТ ВСЕ ранее созданное. А не прерывает команду. 2. Очень желательно чтоб во время отрисовки перекрестье было временно повернуто согласно грани 1-2. 3. Не помешало бы видеть саму полилинию во время создания «колена», а не наблюдать её появления как свершившийся факт после клика. 4. Почему Вы решили, что замыкание по нажатию на пробел более удобно чем просто правый клик, если потому что реализовать программно правый клик труднее, то у меня вопросов нет. Впрочем правый клик это на любителя Последний раз редактировалось Neznayka, 02.04.2009 в 22:27. |
|||
![]() |
|
||||
Цитата:
Кстати правый клик тоже обрабатыватся. И что делать тогда по нажатию на пробел.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Вариант 2
Код:
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Neznayka, Тогда не будет опции Отмени.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Neznayka, Ctrl+Z будет. Не будет отмены, если не устраивает указанная вершина.
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Еще один вариант: замкни пробелу или выбор опции по ПКМ, ESC - выход (на предыдущий уровень).
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 06.04.2009 в 17:03. Причина: Изменено по предложению #206 |
||||
![]() |
|
||||
Регистрация: 24.03.2005
Сообщений: 317
|
Все супер, но тут сейчас коллега вносит предложение…
(я конечно понимаю, что наглость второе счастье ![]() Короче коллега говорит, а нельзя ли сделать, чтоб можно было дуги рисовать и или произвольные (неортогональные линии) рисовать. Типа кликнул правой и выбрал в контекстном меню пункт «дуга», нарисовал её и дальше в прежнем режиме или нажал шифт и рисуй линии под любыми углами , а как отпустил снова автоматом включается нормальная работа лиспа. p/s по-русски drec это вкус СПАСИБО!!! |
|||
![]() |
|
||||
Neznayka, Изменил #205
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Регистрация: 24.03.2005
Сообщений: 317
|
Все. У меня и придраться не к чему.
![]() ОГРОМНОЕ ВАМ СПАСИБО! p/s помните, я просил лисп для отрисовки прямоугольника по 3 точкам. так этот новый лисп заменяет тот старый, только на пробел придется жать. добавлю после активного юзанья лиспа: во-первых (извиняюсь за фразу) я "кипяточком писаю" от drec, но вплыло пару мелких недочетов. 2. в лиспе нужно предусмотреть "реверс" иногда он "колено" не в ту сторону заворачивает, типа нажал клавишу и "колено" перевернулось. Если непонятно о чём я. то могу скриншот выложить. 3. лисп во время отрисовки любит прятать полилинию под растр, неудобно когда не контролируешь что чертишь. 4 иногда (когда еще не понял) создаются полилинии нулевой длинны еще раз спасибо. Последний раз редактировалось Neznayka, 08.04.2009 в 23:36. |
|||
![]() |
|
||||
MeshIN, Все зависит, настколько полно BricsCad поддерживает vla-методы и объектную модель. Пока что я знаю, что именно при использовании VLA-* были проблемы. Хотя в BricsCad V9 заявляют
Быстрое ядро LISP с поддержкой более 450 VLAX функций Но все равно нужно пробовать
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Изыскания и САПР Регистрация: 05.07.2008
Ижевск
Сообщений: 295
|
Цитата:
|
|||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 207
|
В 2010-м автокаде под вистой 64х проблема-не вставляются панели и кнопки, команды обрабатывается только при их тупом вводе в командной строке после тупой же загрузки исходного лиспа.
В 2009-м была проблема с установкой, но там надо было влоб ткнуть на фас-приложение при загрузке и потом выбрать уже в настройках меню и команд, и все встало на свои места кроме файла помощи. Кто-нибудь сталкивался с такой проблемой? И второе, в версии автокада Lite будут работать эти команды или там табу на лисп-приложения? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,746
|
Первое. См. http://forum.dwg.ru/showthread.php?p=398240#post398240
Второе. Не будет. LISP в AutoCAD LT не поддерживается и поддерживаться не будет.
__________________
|
|||
![]() |
|
||||
VVA, привет! Официяльное обращение.
Нужна функция, которая делает обратное CVPOLY, превращает 2D полилинию в 3D полилинию. И еще нужна функция, добавляющая в 3D полилинию вертикальный участок. Вот есть на 3D полилинии узел, надо ткнув в него и определив знак "+" или "-" добавить либо со строны конца 3D полилинии, либо со стороны начала еще один узел. Его координаты по X и Y такие же как и у прежнего узла, а по Z строится отрезок заданной длинны. Если смотреть на план с геоподосновой, то ткнув в узел как-бы ничего не произойдет, просто в этом месте появится вертикальный участок, где два узла окажутся друг над другом. Данная функция нужна всем, кто прокладываетнаружные сети. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,746
|
Supermax, ты только уточни - а какая-нибудь часть полилинии поднимается / опускается или нет? И если да, то как определять?
__________________
|
|||
![]() |
|
||||
Цитата:
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Ну, дык, я ж написал про "+" и "-"
VVA, так не честно! С утра в первом посте совсем другой список был, а лезть в библиотеку функций мне было лень, понадеялся на соответствие. Кулик Алексей aka kpblc, Цитата:
Последний раз редактировалось Supermax, 20.05.2009 в 18:18. |
||||
![]() |
|
||||
Давай так. Есть 3d полилиния с началом в т. 0,0,0 и координатами вершин: (0 0 0) (10 10 10) (30 20 0)
Я указал 2 вершину (10 10 10) и набрал +30. Получаем полилинию с координатами вершин (0 0 0) (10 10 10) (10 10 40) (30 20 0) Я указал 2 вершину (10 10 10) и набрал -30. Получаем полилинию с координатами вершин: ?
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,746
|
VVA, возможны варианты: при вводе хоть "+", хоть "-" можно получить разные значения:
'((0. 0. 0.) (10. 10. 10.) (10. 10. 40.) (30. 20. 0.)) '((0. 0. 0.) (10. 10. 10.) (10. 10. 40.) (30. 20. 30.)) Какой из них будет верным?
__________________
|
|||
![]() |
|
||||
Цитата:
Все правильно. Добавляем точку только вперед по ходу полилинии. |
||||
![]() |