|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
16.06.2011, 11:48 | #1 | |
Аutocad 2011 "извлечение данных" из полилинии
Регистрация: 14.06.2011
Сообщений: 2
|
||
Просмотров: 38752
|
|
||||
инженер-электрик Регистрация: 12.08.2005
Иркутск
Сообщений: 523
|
Я поражен! Первым же вопросом новичок приятно порадовал глубиной проникновения в Акад.
Действительно, у полилинии при извлечении данных нет координат ее вершин... Что, впрочем и понятно, 1 полилиния = 1 примитив, хотя и составной. Тут смотря какая цель стоит, так и надо действовать. Для одной полилинии и одноразовой работы - List, как уже сказали. Для автоматизации надо доработать. 1. Расставить блоки или точки в каждой вершине полилинии (кажется, есть такой лисп) 2. Извлекать инфо для расставленных блоков. Как-то так...
__________________
В MEP моя буква - Е Последний раз редактировалось Andi55, 16.06.2011 в 12:42. |
|||
|
||||
Оснащение проходки горных выработок, ПОС, нормоконтроль, КР, АР Блог Регистрация: 30.01.2008
Ленинград
Сообщений: 18,687
|
Не сочтите некрофилом, но помогите разобраться поподробнее, пожалуйста...
Точки я научился ставить по полилинии, а как таблицу с координатами получить ? И у меня почему то дикие координаты... Сделал новую пользовательскую систему (верх Х вправо y) в точке с координатой 0;0. Но всё равно в "Редактор точек " координаты видимо пишутся из системы мировой МСК. Пишутся : Восточное положение Северное положение А Восточное положение в координатах сетки и Северное положение в координатах сетки не пишутся
__________________
"Безвыходных ситуаций не бывает" барон Мюнхаузен |
|||
|
||||
Цитата:
Point Manager Geo_Export
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
архитектура Регистрация: 31.07.2011
Москва
Сообщений: 12
|
Уважаемый, VVA, давно и с большим удовольствием пользуюсь Вашим скриптами из серии Coord (CoorN и ECoor), спасибо за Ваш труд! Но тут вдруг задача возникла нетипичная и кроме как с этим Лиспом решить не получается, что собственно и причина моего обращения. Если Вам не особо сложно, подскажите пожалуйста, в каком месте кода надо подправить, чтоб для COORT и COORNP можно было возвратить в результате нечто похожее на это:
Код:
обычно это сильно не беспокоило, но сейчас такая задача, что надо работать со своими чертежами, а они обычно 1:1, но в файл надо выводить в метрах. И ещё, если не трудно посмотрите пожалуйста, что можно сделать, чтоб последняя точка на замкнутом POLYLINE не отрисовывалась в чертеж, но в списке присутствовала и в файл выводилась как первая точка? Спасибо! Последний раз редактировалось baleew, 31.07.2011 в 19:14. Причина: зы |
|||
|
||||
baleew, Там все очень просто.
Берем за основу ECoor. Там все сделано функциями. Для COORN Было Код:
Код:
Код:
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 02.08.2011 в 20:38. |
||||
|
||||
архитектура Регистрация: 31.07.2011
Москва
Сообщений: 12
|
Спасибо, VVA, с масштабом вроде всё понятно, хотя в случае с COORNP рекомендованный способ не вполне срабатывает, т.е. задача с выводом списка в файл решается, но отрисовки нет. В общем я немного поправил код в самой функции vva-export-point, в месте где было:
Код:
Код:
С новым вариантом ECoor.LSP проблема! Скрипт завершается (похоже аварийно) после ввода step. Т.е., что вводится -- значения не имеет, просто ломается на этой процедуре. |
|||
|
||||
baleew, Обновил #9. Забыл добавить библиотечную функцию. Тестируй
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
архитектура Регистрация: 31.07.2011
Москва
Сообщений: 12
|
VVA, теперь работает, _.-TEXT вводит так как и хотелось -- на 1 раз меньше чем в списке, вернее чем должно быть в списке. С отрисовкой в чертёж всё в порядке.
Но теперь в списке на 1 элемент больше чем надо: Код:
Код:
ps. ну с этим я тоже вроде разобрался, там в строчках: (rtos (cadr ln) 2 12) -- это можно отрегулировать и по аналогии с первым вариантом ECoor.LSP, если без двух последних аргументов, то используются текущие значения LUNITS и LUPREC. Если так, то этот вопрос тоже снят. Последний раз редактировалось baleew, 02.08.2011 в 12:29. Причина: ps |
|||
|
||||
baleew, Обновил #9 Пробуй. Я считал, что нужно выводить в отчет все точки полилиний. Получается, что нужно выводить в отчет все различные точки?
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
архитектура Регистрация: 31.07.2011
Москва
Сообщений: 12
|
VVA, да в отчёт надо выводить все точки полилиний, но в случае если полилиния замкнута (т.е. координаты первой и последней точек совпадают), в отчете последняя точка тоже присутствует, но не как №4 (в случае с треугольником), а как №1 и со своими координатами (или координатами №1, что собственно без разницы). Другими словами, в отчете должно всё выглядеть так же как и в самом первом варианте ECoor.lsp, с той только разницей, что в колонке "N" для последней точки должно использоваться имя первой точки, они должны выглядеть как будто бы это одна и та же точка. По сути первый вариант скрипта делает всё правильно, надо только в отчете переименовать последнюю точку на первую. Ну и в чертеже сейчас выглядит всё так как надо.
ps/ для наглядности привожу результат исполнения последнего варианта ECoor.LSP Код:
Код:
Последний раз редактировалось baleew, 02.08.2011 в 13:30. |
|||
|
||||
Обновил еще раз #9. Надеюсь последний
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
архитектура Регистрация: 31.07.2011
Москва
Сообщений: 12
|
VVA, да, спасибо большое, всё работает! А со своими чертежами, так вообще -- красота, скрипт теперь можно считать совсем близким к идеальному.
Но, Владимир, я наверное сразу невнятно обрисовал задачу. Мне хотелось Моя проблема состояла в том, что сейчас вот пришлось разбираться с чужим планом, который во-первых был нарисован в 1000 раз мельче моих и во-вторых "грязный". Все многоугольники нарисованы так, что количество сегментов полилинии равно количеству сторон (если честно, я сам не сразу увидел), т.е. не как обычная замкнутая поллиния, а такая которая если даже не замкнута выглядит в чертеже как многоугольник (замкнутая полилиния). И если даже точки у неё "дотянуты", но их всё равно на одну больше, чем должно быть, а координаты двух последних совпадают с первой. К примеру для прямоугольного треугольника, где a,b =10, в свойствах полилинии получается такое: Код:
Код:
Потому я и попросил тебя, чтоб ты научил скрипт приводить такие (кадастровые) варианты к виду: Код:
А вообще-то я иногда очень жалею, что я не кодер, на базе одного твоего ECoor можно было бы собрать великолепную утилиту, которая бы решила абсолютно все геодезические проблемы. Спасибо, Владимир. |
|||
|
||||
Обновил #9 Раньше обрабатывались варианты:
- начало/конец совпадают, полилиния незамкнутая - начало/конец не совпадают, полилиния замкнутая В варианте начало/конец совпадают, полилиния замкнутая появлялась лишняя точка. В принципе такое так же может быть в середине полилинии, если пару раз подряд ткнули в одну точку. Добавил функцию удаления из списка одинаковых (до 1e-6) подряд идущих точек. Тестируй
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
архитектура Регистрация: 31.07.2011
Москва
Сообщений: 12
|
VVA, да, это кажется именно то, что надо, только желательно такую же процедуру наверное и к ptLst применить тоже, ибо сейчас из отчёта номер точки удаляется, а X,Y,Z остаются.
в варианте -- начало/конец почти совпадают, полилиния замкнутая: Код:
Код:
ps/ оба варианта с "грязным" многоугольником, в случае с нормальным построением к скрипту претензий никаких. Понимаю, что в идеале надо было бы "почистить" весь план, удалить из всех полилиний последние (и очень близко лежащие) вершины и замкнуть полилинии, но если бы их было поменьше о скрипте и мысль бы не возникла. В общем я не знаю уже, что тут проще, может быть даже нет смысла различать их по свойству замкнуто/незамкнуто, а просто в обоих случаях удалять из списка последнюю точку (с координатами очень близкими к началу) и вместо неё записывать первую. То есть список для отчета формировать так же как и список для отрисовки точек. Т.е. если последняя точка очень близка к первой (с допуском определенной точности, от 1e-2 и менее) то в результате она просто не появляется в списках и в отчете полилиния описывется так: Код:
Последний раз редактировалось baleew, 02.08.2011 в 20:17. Причина: зы |
|||
|
||||
Эта проблема решается задание точности. Раньше я точки сравнивал с точность до 1e-6. Теперь (в #9 новый вариант) я сделал этот параметр настраиваемым. Пока что в лиспе через переменную *FUZZ*
Код:
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Где можно применить "Извлечение данных"(_.dataextraction)? | wetr | AutoCAD | 120 | 07.05.2020 13:39 |
AutoCAD 2011 не находит acdb17.dll | ALFMario | AutoCAD | 16 | 20.02.2014 12:14 |
Вопросы по рендерингу. 2008, 2011 автокад | DENLaDEN | AutoCAD | 27 | 22.01.2013 01:53 |
Удаление/Установка АutoCad 2011 | Sierone | AutoCAD | 3 | 26.05.2011 16:25 |
AutoCAD 2011 и ошибка при изменении Z координаты 3D полилинии, через палитру свойств | gomer8 | AutoCAD | 9 | 16.12.2010 13:12 |