|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Расстояние от начала полилинии до опеделенной точки
проектирование дорог
Riga
Регистрация: 18.10.2006
Сообщений: 25
|
||
Просмотров: 19563
|
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
это вам в соседнюю ветку, где про среднюю линию, непосредственно к господам VVA и Лентяй, ибо в строках ихних прог видятся мне ростки решения
единственно уточните, что для вас является началом полилинии - точка с которой вы начинали построение этой самой полилинии или, в общем случае, одна из двух точек которые, если они в паре традиционно называют концами линии поли-ли или непили-ли |
|||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
>> VVA
Для достаточно больших координат объектов в WSC, например: X=22685606.13397148 Y=5431154.563627330 Z=0.0000000000 Наблюдается следующая картина: 1. для линий и 2d и 3d полилиний Acad иногда не может найти параметры, особенно это проявляется в UCS, и соответственно программа вываливаетя. 2. сглаженные 2d и 3d полилинии дают меньше ошибок. 3. если координаты близки к 0,0.0 все работае как часы.
__________________
Лень - великий двигатель прогресса! |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
> KAI
Когда здесь мы пытались заставить PL-DIV работать в UCS, то там глючила vlax-curve-getDistAtPoint. Пямятуя об этом в DST использовал vlax-curve-getDistAtParam. Мыслей никаких. Пришли почтой рисунок, посмотрю, что вылетает. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Сбоила vlax-curve-getParamAtPoint, причем на каком-то участке возвращает параметр, на на каком-то нет
![]() Пока выход нашел такой: line ,3d polyline, 2d и LW polyline не сглаженные и без дуговых сегментов обрабатываю по правилам геометрии (принадлежность точки прямой). Код:
Последний раз редактировалось VVA, 19.09.2015 в 21:09. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Не смог разобраться, какая переменная из #9 хранит в себе значение длины полилинии от начала до указанной точки (указанная точка в данном случае хранится в переменной a)? Мне нужно создавать мультивыноску, содержащую имя слоя, на котором расположена полилиния и длину. Как выяснить имя слоя? Есть мысль проверять принадлежность точки полилинии и затем запрашивать имя ее слоя. Или можно проще?
Код:
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
(vla-get-layer crv) Обновленный вариант команды DST Чертит текущим стилем мультивыноски Код:
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 19.09.2015 в 21:11. Причина: Добавлена ссылка |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
VVA, а можно отдельно фрагмент этого кода, который просто спросит точку на кривой, а затем выдаст переменную со значением длины, чтоб я мог использовать этот фрагмент в своем коде #10? Плюс если можно, фрагмент, который даст мне переменную с именем слоя выбранной полилинии. Вообще, можно ли так смешивать командный метод с vl?
Странно....не смог найти переменную dsl Последний раз редактировалось skkkk, 06.12.2010 в 19:14. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Спасибо, VVA, то, что надо. Осталось три вопроса(пока):
1) Как сделать разделителем в (rtos (car tmp) 2 3) запятую? 2) Как из названия слоя (cadr tmp) отсечь первые n символов? Offtop: 3) Какая функция (если она есть) округляет число до целого меньшего |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,402
|
1) (vl-string-subst "," "." (rtos (car tmp) 2 3))
2) substr 3) fix
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Можно. Нужно найти строку
Код:
Код:
По поводу округления до 0.5 нужно уточнить. Оно должно произойти по правилам арифметики? Т.е. 1.2->1.0 (или просто 1); 1.3->1.5; 1.7->1.5; 1.8->2.0. Или в большую сторону? Или еще как-то? |
|||
![]() |
|
||||
Регистрация: 14.08.2014
Сообщений: 4
|
skkkk, спасибо за быстрый ответ. Вы совершенно точно заметили насчет специфики работы. В моем случае она и есть. Округление до 0,5 в ближайшую сторону, как вы и написали. А что касается деления на 2, что заменить в варианте с пикетами из (#11)??
Код:
|
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Цитата:
По теме: нужно вместо ds1 написать (/ ds1 2). Но чтобы в случае, когда значение пикетажа соответствует самому пикету, не выдавалась надпись вида ПК3+0.0, надо строки из #23 заменить на: Код:
Насчет округления смогу посмотреть позже, когда - не знаю - большой завал. |
|||
![]() |
|
||||
Регистрация: 14.08.2014
Сообщений: 4
|
Работает. Еще раз спасибо, очень выручили.
Offtop: Ага, трасса газопровода. Съемка изыскателей в 500-ом масштабе. Съемку мы не масштабируем, в каком масштабе пришла на той и чертим в модели, после выставляя в листах требуемый масштаб видового экрана. |
|||
![]() |
|
||||
Геодезист Регистрация: 23.05.2012
Ухта
Сообщений: 1,377
|
Практически во всех геодезических программах экспорт в dxf/dwg по умолчанию выполняется в масштабе 1:1000 (пространство модели).
__________________
Как-то так. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,402
|
Зачем так сложно? Можно значительно быстрее и проще!
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Offtop: Эх, Алексей, где ж ты был пару дней назад?
![]() Человек по ходу два дня сидел разбирался, осилил, понял где и что нужно поменять (хоть я код и не тестил, но уважение вызывает), а ты ему мол, можно проще и быстрее. За десять минут ему решение родил, вроде как когда уже и не надо. ![]() alex101000, в жизни пригодится ![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,402
|
skkkk, пару дней назад я занимался другой работой.
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
|
|||
![]() |
|
||||
Регистрация: 25.06.2019
Сообщений: 13
|
Цитата:
а если не сложно предоставить пример функции присвоения значения перемеренной выбранному объекту. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Lumpy, для проектировщика ТЗ могло бы быть более обширным.
Если всё правильно понял, то вот (без проверки на пустой клик, т.е, если попасть куда-либо мимо атрибута, то будут ошибки). Но поскольку ТЗ - хз, то и обработчик ошибок еще рановато делать. Да, и атрибут при этом должен быть многострочным, иначе, результат не очень порадует. Разумеется, как готовая программа использоваться не может. Прототип, типа. Код:
Последний раз редактировалось skkkk, 07.07.2019 в 01:25. |
|||
![]() |
|
||||
Регистрация: 25.06.2019
Сообщений: 13
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 15.11.2020
Сообщений: 5
|
|
|||
![]() |
|
||||
Регистрация: 05.06.2014
Сообщений: 77
|
Код из #37. Если не выбрать атрибут, то:
Цитата:
![]() |
|||
![]() |
|
||||
Регистрация: 25.06.2019
Сообщений: 13
|
Цитата:
Добрый день. В продолжение данной темы возник вопрос. Возможно ли как-нибудь соединить 2 кода в один. Код:
Суть идеи в то чтобы всем блокам попадающим на данную линию в атрибут(можно конкретно названый) попадало значение расстояния от начала линии до точки их пересечения. Интересно просто даже возможно ли это реализовать или я совсем замечтался. |
|||
![]() |
|
||||
Странно, что эта ветка не в программировании...
Цитата:
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы... |
||||
![]() |