Перейти к содержимому

Как узнать координаты полилинии в автокаде

  • автор:

Экспорт списка координат линии, контура из AutoCAD в текстовый файл V 1.3

Программа предназначена для экспорта списка координат отдельного объекта (линия, контур) из AutoCAD в текстовый файл.

В Проекте AutoCAD создать и выделить объект (линия, контур).
Открыть вкладку Сервис.
Нажать кнопку Список.
Скопировать (выделить мышкой в Списке и Ctrl+C) блок с координатами, вставить (Ctrl+V или кнопка «Вставка из буфера обмена») в окно «Исходный текст» программы.
Перевычислить в нужный(е) формат(ы).
Файлы сохранятся в папке, из которой была запущена программа.

ACAD_Coords_Akt.jpg

ACAD_Coords_Akt2.jpg

Rick Keisi, Dnl и Maverick нравится это.

Последние обнoвления

  1. Добавлена кнопка «Копировать в буфер обмена» 12 сен 2020
  2. Кириллица в названиях папок 29 апр 2020
  3. ACAD_Coord 22 апр 2020

Пoследние рецензии

Версия: v 1.0 (c) 2019

Замечательно!Спасибо!

Спасибо за отзыв! пока не особо замечательно, слепил по нужде на коленке.. думаю вот, может еще туда что-нибудь вкрячить. Ну и, коль мне понадобилось, пусть и тут полежит — может еще кому полезна окажется ))

Рекомендован

Информация

Автор: vsv Всего скачиваний: 414 Первый выпуск: 30 ноя 2019 Последнее обновление: 12 сен 2020 Категория: Вспомогательные программы и драйвера

Как получить координаты объектов в Autocad с помощью VBA\Python?

Есть ли какое-то свойство для получение координат любого объекта?
То есть координаты объекта в самом автокаде я могу посмотреть, но как получить мне координаты объекта с помощью VBA?

Я могу получить координаты, например, выбирая объект
cor = doc.Utility.GetEntity()

Неужели нет свойства, для получения координат любого объекта?

И есть ли какой-то метод, для получения объектов в выделенной области, а не только метод для получения единичного объекта (doc.Utility.GetEntity() ) ?
В чём суть. Я хочу получить объекты в выделенной области (те что выделю я сам, руками в автокаде) и получить их координаты, чтобы в дальнейшем обработать так, как хочется

Ковыряясь в документации не удалось найти чего-то похожего или просто я плохо ищу

  • Вопрос задан более двух лет назад
  • 309 просмотров

Аutocad 2011 «извлечение данных» из полилинии

Здравствуйте.
Пытаюсь извлечь данные из полилинии мне нужны координаты вершин X, Y, в мастере извлечения данных в «фильтре категорий» в свойстве «геометрия» этих данных для полилинии нет. Как можно решить мою задачу?

Просмотров: 37939
Регистрация: 29.10.2004
Сообщений: 16,310
команда _list
Регистрация: 14.06.2011
Сообщений: 2

Спасибо.
А нет возможности получить координаты в виде таблицы excel, или другой какой либо таблицы которую можно в excel вставить. Просто когда у полилинии три десятка вершин очень долго копировать поштучно 60 координат в excel таблицу.

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

Я поражен! Первым же вопросом новичок приятно порадовал глубиной проникновения в Акад.
Действительно, у полилинии при извлечении данных нет координат ее вершин. Что, впрочем и понятно, 1 полилиния = 1 примитив, хотя и составной.
Тут смотря какая цель стоит, так и надо действовать. Для одной полилинии и одноразовой работы — List, как уже сказали. Для автоматизации надо доработать.
1. Расставить блоки или точки в каждой вершине полилинии (кажется, есть такой лисп)
2. Извлекать инфо для расставленных блоков.
Как-то так.

__________________
В MEP моя буква — Е
Последний раз редактировалось Andi55, 16.06.2011 в 12:42 .
Регистрация: 02.09.2009
Тында, Дальний Восток
Сообщений: 404

В AutoCAD Civil 3d есть функция расстановки точек по узлам полилинии, с последующим выводом их в табличную форму, можно и в Эксель

Оснащение проходки горных выработок, ПОС, нормоконтроль, КР, АР

Регистрация: 30.01.2008
Сообщений: 18,490

Не сочтите некрофилом, но помогите разобраться поподробнее, пожалуйста.
Точки я научился ставить по полилинии, а как таблицу с координатами получить ?

И у меня почему то дикие координаты.
Сделал новую пользовательскую систему (верх Х вправо y) в точке с координатой 0;0.
Но всё равно в «Редактор точек » координаты видимо пишутся из системы мировой МСК.

Пишутся :
Восточное положение
Северное положение

А
Восточное положение в координатах сетки
и Северное положение в координатах сетки
не пишутся

__________________
«Безвыходных ситуаций не бывает» барон Мюнхаузен
Регистрация: 11.05.2005
Сообщений: 6,983
Сообщение от avax

А нет возможности получить координаты в виде таблицы excel, или другой какой либо таблицы которую можно в excel вставить

__________________
Как использовать код на Лиспе читаем здесь
Регистрация: 31.07.2011
Сообщений: 12

Уважаемый, VVA, давно и с большим удовольствием пользуюсь Вашим скриптами из серии Coord (CoorN и ECoor), спасибо за Ваш труд! Но тут вдруг задача возникла нетипичная и кроме как с этим Лиспом решить не получается, что собственно и причина моего обращения. Если Вам не особо сложно, подскажите пожалуйста, в каком месте кода надо подправить, чтоб для COORT и COORNP можно было возвратить в результате нечто похожее на это:

 
;(setq ptLst (mapcar '(lambda(x)(mapcar 'rtos x)) ptlst)) ;возвратить результат в ед. чертежа 1:1 (setq ptLst (mapcar '(lambda(x)(mapcar 'rtos (mapcar '(lambda(y)(* y 0.001)) x))) ptlst)) ;возвратить результат 1:1000

по аналогии с тем, как я поступал по Вашему совету с кодом COORN в таких случаях, но теперь я использую Ecoor и сам конечно же не могу разобраться с Lisp.
обычно это сильно не беспокоило, но сейчас такая задача, что надо работать со своими чертежами, а они обычно 1:1, но в файл надо выводить в метрах.

И ещё, если не трудно посмотрите пожалуйста, что можно сделать, чтоб последняя точка на замкнутом POLYLINE не отрисовывалась в чертеж, но в списке присутствовала и в файл выводилась как первая точка?
Спасибо!

Последний раз редактировалось baleew, 31.07.2011 в 19:14 . Причина: зы
Регистрация: 11.05.2005
Сообщений: 6,983
baleew, Там все очень просто.
Берем за основу ECoor. Там все сделано функциями.
Для COORN
Было

(defun c:COORN ( / ptLst) (vl-load-com) (if (setq ptLst (vva-get-final-points-list)) ;_В ptlst список полученных точек (vva-export-point ptLst t nil) ;_Экспорт списка ptlst ) (princ) )
(defun c:COORN ( / ptLst) (vl-load-com) (if (setq ptLst (vva-get-final-points-list)) ;_В ptlst список полученных точек (progn (setq ptLst(mapcar '(lambda(x)(mapcar '* x (list 0.001 0.001 0.001)))ptlst)) ;_Возвратить результат М 1:1000 (vva-export-point ptLst t nil) ;_Экспорт списка ptlst );_end of progn ) (princ) )

Для COORT найди строчки

(setq txtList (reverse txtList)) (princ "\n+++++++ Coordinates list +++++++\n")

И добавь после txtlist

(setq txtList (reverse txtList)) (setq ptLst(mapcar '(lambda(x)(mapcar '* x (list 0.001 0.001 0.001)))ptlst)) ;_Возвратить результат М 1:1000 (princ "\n+++++++ Coordinates list +++++++\n")

По поводу последней просьбы: внес изменения в Ecoor.lsp Пока выкладываю здесь. Потестируй и обязательно отпишись. Тогда обновлю по ссылке

ECoor.LSP (26.1 Кб, 533 просмотров)

__________________
Как использовать код на Лиспе читаем здесь
Последний раз редактировалось VVA, 02.08.2011 в 20:38 .
Регистрация: 31.07.2011
Сообщений: 12

Спасибо, VVA, с масштабом вроде всё понятно, хотя в случае с COORNP рекомендованный способ не вполне срабатывает, т.е. задача с выводом списка в файл решается, но отрисовки нет. В общем я немного поправил код в самой функции vva-export-point, в месте где было:

 
(setq ptLst (mapcar '(lambda (x) (mapcar 'rtos x)) ptlst))
 
(setq scale 0.001) ;_потом доделаю с вводом переменной (setq ptLst (mapcar '(lambda(x)(mapcar 'rtos (mapcar '(lambda(xx)(* xx scale)) x))) ptlst)) ;_возвратить результат M 1:scale

так пока всё работает, с этим вопросом решено, спасибо!

С новым вариантом ECoor.LSP проблема! Скрипт завершается (похоже аварийно) после ввода step. Т.е., что вводится -- значения не имеет, просто ломается на этой процедуре.

Регистрация: 24.09.2010
Сообщений: 215
Сообщение от Tyhig
как таблицу с координатами получить ?
Экспорт точек или групп точек в любом удобном Вам формате файла и порядком данных.
Регистрация: 11.05.2005
Сообщений: 6,983
baleew, Обновил #9. Забыл добавить библиотечную функцию. Тестируй
__________________
Как использовать код на Лиспе читаем здесь
Регистрация: 31.07.2011
Сообщений: 12

VVA, теперь работает, _.-TEXT вводит так как и хотелось -- на 1 раз меньше чем в списке, вернее чем должно быть в списке. С отрисовкой в чертёж всё в порядке.
Но теперь в списке на 1 элемент больше чем надо:

+++++++ Coordinates list +++++++ 41759.704,20823.350,0.000 67609.351,45879.144,0.000 66230.217,57772.704,0.000 75151.045,57713.885,0.000 75375.554,45050.840,0.000 91383.441,28535.769,0.000 61943.562,0.000,0.000 41759.704,20823.350,0.000 41759.704,20823.350,0.000 +++++++++ End of list +++++++++

и возникла ещё очень неприятная штука с выводом в файл, а именно -- на LUPREC вообще не обращает внимания, выводит после дес.точки всё подряд:

1;41759.70447416601;20823.35011575372;0.000000000000 2;67609.35080235823;45879.14403409230;0.000000000000 3;66230.21693950517;57772.70379885008;0.000000000000 4;75151.04496178588;57713.88493783308;0.000000000000 5;75375.55402835457;45050.84007264581;0.000000000000 6;91383.44074345006;28535.76929118578;0.000000000000 7;61943.56163667888;0.000000000007;0.000000000000 1;41759.70447416601;20823.35011575372;0.000000000000 1;41759.70447416601;20823.35011575372;0.000000000000

ps. ну с этим я тоже вроде разобрался, там в строчках: (rtos (cadr ln) 2 12) -- это можно отрегулировать и по аналогии с первым вариантом ECoor.LSP, если без двух последних аргументов, то используются текущие значения LUNITS и LUPREC. Если так, то этот вопрос тоже снят.

Последний раз редактировалось baleew, 02.08.2011 в 12:29 . Причина: ps
Регистрация: 11.05.2005
Сообщений: 6,983

baleew, Обновил #9 Пробуй. Я считал, что нужно выводить в отчет все точки полилиний. Получается, что нужно выводить в отчет все различные точки?

__________________
Как использовать код на Лиспе читаем здесь
Регистрация: 31.07.2011
Сообщений: 12

VVA, да в отчёт надо выводить все точки полилиний, но в случае если полилиния замкнута (т.е. координаты первой и последней точек совпадают), в отчете последняя точка тоже присутствует, но не как №4 (в случае с треугольником), а как №1 и со своими координатами (или координатами №1, что собственно без разницы). Другими словами, в отчете должно всё выглядеть так же как и в самом первом варианте ECoor.lsp, с той только разницей, что в колонке "N" для последней точки должно использоваться имя первой точки, они должны выглядеть как будто бы это одна и та же точка. По сути первый вариант скрипта делает всё правильно, надо только в отчете переименовать последнюю точку на первую. Ну и в чертеже сейчас выглядит всё так как надо.

ps/ для наглядности привожу результат исполнения последнего варианта ECoor.LSP

1;41759.704;20823.350;0.000 2;67609.351;45879.144;0.000 3;66230.217;57772.704;0.000 4;75151.045;57713.885;0.000 5;75375.554;45050.840;0.000 6;91383.441;28535.769;0.000 7;61943.562;0.000;0.000

но ожидается такое:

1;41759.704;20823.350;0.000 2;67609.351;45879.144;0.000 3;66230.217;57772.704;0.000 4;75151.045;57713.885;0.000 5;75375.554;45050.840;0.000 6;91383.441;28535.769;0.000 7;61943.562;0.000;0.000 1;41759.704;20823.350;0.000

Последний раз редактировалось baleew, 02.08.2011 в 13:30 .
Регистрация: 11.05.2005
Сообщений: 6,983
Обновил еще раз #9. Надеюсь последний
__________________
Как использовать код на Лиспе читаем здесь
Регистрация: 31.07.2011
Сообщений: 12

VVA, да, спасибо большое, всё работает! А со своими чертежами, так вообще -- красота, скрипт теперь можно считать совсем близким к идеальному.
Но, Владимир, я наверное сразу невнятно обрисовал задачу. Мне хотелось

Моя проблема состояла в том, что сейчас вот пришлось разбираться с чужим планом, который во-первых был нарисован в 1000 раз мельче моих и во-вторых "грязный". Все многоугольники нарисованы так, что количество сегментов полилинии равно количеству сторон (если честно, я сам не сразу увидел), т.е. не как обычная замкнутая поллиния, а такая которая если даже не замкнута выглядит в чертеже как многоугольник (замкнутая полилиния). И если даже точки у неё "дотянуты", но их всё равно на одну больше, чем должно быть, а координаты двух последних совпадают с первой. К примеру для прямоугольного треугольника, где a,b =10, в свойствах полилинии получается такое:

0.000,0.000,0.000 0.000,10.000,0.000 10.000,0.000,0.000 0.000,0.000,0.000

но в своих планах я обычно рисую не так (как это делают разные прилады у кадастровых инженеров, в пред. варианте), а просто, как делает ACAD

0.000,0.000,0.000 0.000,10.000,0.000 10.000,0.000,0.000

в этом случае и старый скрипт делал всё правильно в отчете, за исключением нумерации последней вершины.

Потому я и попросил тебя, чтоб ты научил скрипт приводить такие (кадастровые) варианты к виду:

1;0.000;0.000;0.000 2;0.000;10.000;0.000 3;10.000;0.000;0.000 1;0.000;0.000;0.000

Чистить все чужие полилинии или наоборот -- перерисовывать свои, сам понимаешь, весьма муторное занятие, поэтому огромное тебе спасибо за существенное облечение труда.
А вообще-то я иногда очень жалею, что я не кодер, на базе одного твоего ECoor можно было бы собрать великолепную утилиту, которая бы решила абсолютно все геодезические проблемы.
Спасибо, Владимир.

Регистрация: 11.05.2005
Сообщений: 6,983

Обновил #9 Раньше обрабатывались варианты:
- начало/конец совпадают, полилиния незамкнутая
- начало/конец не совпадают, полилиния замкнутая
В варианте начало/конец совпадают, полилиния замкнутая появлялась лишняя точка. В принципе такое так же может быть в середине полилинии, если пару раз подряд ткнули в одну точку. Добавил функцию удаления из списка одинаковых (до 1e-6) подряд идущих точек. Тестируй

__________________
Как использовать код на Лиспе читаем здесь
Регистрация: 31.07.2011
Сообщений: 12

VVA, да, это кажется именно то, что надо, только желательно такую же процедуру наверное и к ptLst применить тоже, ибо сейчас из отчёта номер точки удаляется, а X,Y,Z остаются.
в варианте -- начало/конец почти совпадают, полилиния замкнутая:

1;0.000;0.000;0.000 2;0.000;10.000;0.000 3;10.000;0.000;0.000 ;0.000;0.001;0.000 1;0.000;0.000;0.000

в варианте -- начало/конец почти совпадают, полилиния незамкнутая:

1;0.000;0.000;0.000 2;0.000;10.000;0.000 3;10.000;0.000;0.000 ;0.000;0.001;0.000

но отрисовка в чертеж в обоих случаях срабатывает великолепно!
ps/ оба варианта с "грязным" многоугольником, в случае с нормальным построением к скрипту претензий никаких. Понимаю, что в идеале надо было бы "почистить" весь план, удалить из всех полилиний последние (и очень близко лежащие) вершины и замкнуть полилинии, но если бы их было поменьше о скрипте и мысль бы не возникла. В общем я не знаю уже, что тут проще, может быть даже нет смысла различать их по свойству замкнуто/незамкнуто, а просто в обоих случаях удалять из списка последнюю точку (с координатами очень близкими к началу) и вместо неё записывать первую. То есть список для отчета формировать так же как и список для отрисовки точек.
Т.е. если последняя точка очень близка к первой (с допуском определенной точности, от 1e-2 и менее) то в результате она просто не появляется в списках и в отчете полилиния описывется так:

1;0.000;0.000;0.000 2;0.000;10.000;0.000 3;10.000;0.000;0.000 1;0.000;0.000;0.000

Как узнать координаты полилинии в автокаде

Учебник AutoCAD . Координаты в Автокад.

В программе autocad положение точек объектов можно задавать различными способами. Один из способов задания положения - работа с системами координат в autocad . В autocad существуют 2 типа систем координат: абсолютные и относительные.

Чем же отличаются абсолютные и относительные координаты в autocad ?

При использовании абсолютных координат положение точек задаётся относительно некоторой строго фиксированной точки - начала координат. Координаты в autocad вводятся с клавиатуры в командную строку. Записываются абсолютные координаты по следующему правилу. Вначале вводится координата точки по горизонтальной оси абсцисс X , затем ставится запятая и указывается координата по вертикальной оси ординат Y . При трёхмерном моделировании в autocad можно также указывать третью ось - ось апликат Z , поскольку рабочее пространство autocad трёхмерное. При задании координат нужно учитывать, что в числе координаты целая часть отделяется от дробной точкой, а не запятой. Например, если координата по X равна 16, а координата по Y 16 ,5 то вводить координаты нужно следующим образом: 16,16 .5 . Если указать 16, 16,5 , то autocad решит, что Вы указали расстояние по оси X - 16 , по оси Y - 16 , а по оси Z - 5 , и положение точки будет указано неверно.

Относительные координаты всегда откладываются от последней указанной точки, которая принимается за центр относительных координат. Такой точкой может быть, например, первая угловая точка прямоугольника. Относительные координаты в autocad записываются следующим образом: сначала вводится значок " собака " , потом координата по оси X , затем ставится запятая и вводится координата по оси Y . Ввод координат всегда завершается нажатием клавиши "Enter" . При использовании относительных координат в autocad также существует возможность указания третьей координаты по оси Z . При вводе относительных координат целая часть тоже отделяется от дробной точкой. Пример ввода относительных координат: @16, 16.5 .

При использовании относительных координат положение точки можно указывать как в декартовой прямоугольной системе координат, так и в полярной. При использовании полярной системы координат сначала указывают расстояние от центра относительных координат, затем указывается угол по отношению к горизонтальной оси абсцисс направленной вправо. Угол откладывается против часовой стрелки.

Подробнее познакомиться с координатами в autocad Вы можете скачав и изучив видео урок "Относительные и абсолютные координаты. Команды рисования в AutoCAD 2008". Урок можно скачать здесь.

Прямо Сейчас Подпишитесь На Рассылку!

И Получайте Бесплатные

Обучающие Видео Уроки

По AutoCAD На Ваш E-mail!

Просто Введите Ваши Данные В Форму!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *