Как выгрузить точки из автокада в txt

Обновлено: 04.07.2024

Здравствуйте. у меня вот такая проблемка. у меня есть текстовый файл с координатами. вот в примерно в таком виде:
68.54___87.93
03.9____02.08
69.55___61
19.74___159.66
мне нужно по этим координатам начертить полигон. но их очень много. может есть какое-нибудь приложение к autocad. в котором не нужно набирать координаты точек в ручную. или может кто подскажет каким образом это можно сделать.

Тут никаких приложений не надо, все просто. В текстовом редакторе (Ворд, Блокнот и т.д.) правкой заменяете (___) на (,), должно получиться что то вроде
68.54,87.93
03.9,02.08
69.55,61
19.74,159.66
Потом копируете все в буфер обмена. В Автокаде, в зависимости от того нужны точки или полилинии, запускаете point (точка) или pline (полилиния). На запрос командной строки о координатах делаете вставку из буфера обмена. Не забудьте при необходимости поменять местами Х и У (в текстовом файле). Если необходимо что-бы точки всавлялись с номерами из текста, проще всего открыть текст EXCELем, и сформировать в столбце команду типи dtext (координаты и имя точки), а в другом point (координаты). Скопировать их в буфер и кинуть в командную строку Автокада. Здесь нет сложностей, надо просто внимательно прочитать командную строку при выполнении этих команд "вручную" и добиться того же эффекта в тексте.

Экспорт точек в txt из чертежа autocad. Экспорт координат из CAD в txt

Выбор строк.

Если поставить галочку в чекбоксе, то будет доступен выбор строк из загруженного файла, если галочку убрать то будут загружены все данные из файла. К сожалению при ручном выборе строк есть ограничение, выбрать можно любое количество, но загрузятся не больше 256 строк.

Разделитель.

Выбираем что служит разделителем данных, доступно при расширении фала txt. Можно выбрать из предложенных либо ввести свой вариант, при выборе пункта "Другое"

Формат данных.

Возможна смены форматов данных, причём под X подразумевается направление на Север.

Создаваемые объекты.

Пикет. Выбираем объект, который будет построен(начерчен) по координатам из файла, доступны следующие объекты:

  • Точка
  • Блок
  • Круг
  • Полилиния
  • 3D полилиния
    При выборе объекта блок , будет предложено выбрать имя блока из списка существующих в чертеже.

Второстепенные объекты.

Возможно подписать номер , отметку и описание каждой точки, если в качестве основного объекта будет выбран блок, и он содержит атрибуты, то значение может быть записано в атрибуты.
Кроме данных, взятых из файла, можно задать новые:

Для каждого объекта можно выбрать слой из списка уже существующих в чертеже или создать новый, а так же задать цвет, задать высоту текста для подписей. Так же доступен выбор, учитывать или нет ПСК при построение объектов

В качестве разделителя дробной части может служить как точка, так и запятая.

Файл

Указываем куда будут записаны координат, можно создать как новый файл, так и открыть существующий, данные будут дописаны к уже имеющимся в файле.

Выбор объектов

Выбрать по… указываем образец объекта(примитива) данные которых необходимо получить, после этого будут выбраны все объекты(примитивы) в чертеже, подобные указанному в качестве образца, а именно того же типа, цвета и слоя, доступны следующие типы объектов(примитивов):

  • Отрезок,
  • Полилиния,
  • 3D Полилиния,
  • Млиния,
  • Сплайн,
  • Текст,
  • МТекст,
  • Блок,
  • Круг,
  • Точка.
  • Cogo точик (Civil)
  • (при необходимости список могу расширить…)

Выбрать из… позволяет выбрать объекты(примитивы) из выбранных ранее по образцу.
При этом для наглядности (а то ли вы выбрали) в диалоге будет отображаться: тип, слой, цвет и количество выбранных объектов.

Формат данных

Разделитель. Выбираем что будет служит разделителем данных, при записи в файл. Можно выбрать из предложенных либо ввести свой вариант, при выборе пункта "Другое"
Номер

Выбираем что будет записано в качестве Х(первой координаты), направление на Север (геодезическая СК) или на Восток (математическая СК)

Сортировка координат

Для сортировок "против\по часовой стрелки" и "радиальных", в качестве центральной точки вычисляется усреднённая между выбранных.
Чтобы отключить сортировку, уберите галочку (ещё раз кликните по чекбоксу с галочкой), в этом случаи нумерация точек будет происходить в порядке их выбора на чертеже, в случаи одновременного выбора группы точек, нумерация внутри группы будет соответствовать порядку их созданию в чертеже.

Вторичная сортировка

Если существуют координаты равнозначные для первичной сортировки, к ним применяется вторична.

Сортировать каждую группу отдельно

Для Полилиний сортировка будет применена к каждой полилинии в отдельности, при этом порядок нумерации полилиний при не интерактивном выборе (Выбрать по. ) будет в порядки их создания в чертежи, либо в порядке выбора при интерактивном выбор (Выбрать из. )
Для Блоков, Точек и Кругов, доступна только при интерактивном выборе (Выбрать из. ) сортировка и нумерация будет применена поочерёдно к каждой группе в соответствии с их выбором в чертеже.

Большинство настроек программы будет сохранено, между сеансами AutoCAD.

300 р. Возможна оплата по счёту\договору. Скидки именинникам и активным форумчанам.

Приложение устанавливается автоматически, в AutoCAD (и CIVL 3D) начиная с версии 2013. На Ленте, на вкладке "Надстройки" появится панель "Geo ▼▲"

Для более ранних версий, после установки, нужно загрузить файл с расширением VLX с помощью команды ЗАГПРИЛ и файл с расширением CUIX с помощью команды МЕНЮЗАГР
Файлы находятся тут: C:\ProgramData\Autodesk\ApplicationPlugins\BearDyugin_Coordinate_Import_Export.bundle

Если пробный период истёк и вы не зарегистрировали приложение, то после установки новой версии будет доступно ещё 10 дней на тестирование.

Удаление производится штатными методами Windows через Панель управления -> Установка\удаление программ​

Программа загружает (импортирует) координаты точек из файлов формата *.txt, *.csv, *. tsv в программу Autocad версии 2000-2013 .

Файл c координатами для импорта может быть сформирован вручную, или с помощью программы GroundArc TSP или другой программы.

Работа с программой:

1. Запустить программу Point2CAD:



По умолчанию, в Autocad не совпадает направление осей с геодезическими, для этого случая нужно установить флаг «Поменять местами X и Y (для корректного импорта в AutoCAD)».

2. Выбрать файлы для импорта:


3. Преобразовать данные, нажав кнопку «Преобразовать»:


В папке с исходными данными появятся документы с расширением *.src;

4. Для импорта в Autocad координат точек, нужно запустить Autocad и выбрать меню «Tool->Run Script»


Затем указать документ *.src с координатами, получившийся в результате работы программы


После чего нажать кнопку «Open» На экране появятся точки, с координатами из загруженного документа

Представляем Вашему вниманию дополнительные приложения для подключения к ПО AutoCAD.

Все приложения распространяются бесплатно

При установке инструментов стандартная палитра инструментов AutoCAD заменяется на палитры geo_tools, следует учитывать тем кто наполнил палитру своими инструментами или использует стандартную. Начиная с версии 2014.05.11 21-47 не заменяет, а добавляются в стандартные палитры.

Инструкция по установке:

1. Распаковать и разместить скачанные данные в папку "C :\Program Files\geo_tools\ "

(примечание: для AutoCAD 2014-2016 эту папку необходимо добавить в доверенные источники: ввести _options в консоли, в разделе Файлы -> Доверенные местоположения -> добавить строку " c:\Program Files\geo_tools. ")

2. В консоли ввести "_APPLOAD " -> зайти в папку "C :\Program Files\geo_tools\ " и выбрать файл "acaddoc.lsp " -> нажать "Загрузить "

2. Программа для загрузки точек в ПО AutoCAD.

Приложение позволяет загружать точки в текстовом формате и формате SDR.

_APPLOAD " -> выбрать скачанный файл и нажать "Загрузить ".

3. Программа для экспорта точек из ПО AutoCAD.

Приложение позволяет выгрузить точки в текстовом формате для последующей отправки в приборы.

Для загрузки приложения необходимо в консоли ввести "_APPLOAD " -> выбрать скачанный файл и нажать "Загрузить ".

4. Программа авто рисование отклонений AutoCAD

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

Предположим, что мы хотим экспортировать точки формата САПР, в список, разделенный запятыми, чтобы загрузить на общую станцию ​​и сделать ставку на сайте. Раньше мы видели, как импортировать их из excel или txt с AutoCAD y с Microstation , теперь давайте посмотрим, как их экспортировать.

Есть разные способы сделать это, например, подсчет коров, вы можете подсчитать ноги и разделить их на четыре, или вы можете больше не считать коров. Давайте посмотрим несколько способов:

1. Выполнение этого с помощью Microstation (dgn to txt)

В примере у меня есть график, который имеет пять вершин, и мне нужно экспортировать координаты в txt-файл.

Для этого я поставил точки в видимой толщине. Помните, что толщина линии в Microstation динамична, так что они сразу замечены.

Первый шаг: Активируйте инструмент экспорта координат (если он не активен), для этого мы выбираем

инструменты
ящики для инструментов
мы активируем последнюю команду (xyz)
затем мы закрыли панель и должны были быть активированы таким образом



Второй шаг: Выберите точки, которые мы хотим экспортировать, затем выберите команду «Экспорт координат», которая является стрелкой вверх, и заполните условия:

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

Конечным результатом является TXT-файл, который можно открыть из excel.

В моем случае я присвоил номер, отметив флажок, который находится справа

В случае, если файл уже существует, отображается окно, запрашивающее, хотите ли вы заменить или добавить (добавить или добавить).


Чтобы определить, какие точки, микростанция набирает числа в каждой точке, с цветом, типом строки и размером текста, который у вас активен.

2. Выполнение этого с помощью AutoCAD

Чтобы сделать точки видимыми, я изменил формат с форматом / формат точки / стиль точки. Чтобы толщина линий была видимой, вам нужно активировать «Lts», используя меньшее значение 1, пока мы не увидим разницу.


Первый шаг: Откройте проект или создайте новый

Второй шаг: Введите точки в базу данных: для этого существуют разные формы, в этом случае мы сделаем это автоматически: точки / задайте точки / автоматически, затем выберите каждую линию многоугольника.
Сигнал, который был введен, состоит в том, чтобы сделать точки / заданные точки / список доступных точек. Он должен показывать + 6, что означает, что в базу данных уже введены точки 5.

Третий шаг: экспорт точек.
Чтобы экспортировать пункты, которые мы делаем:


В случае, если точки написаны с большими размерами, вам нужно изменить метрические единицы, потому что по умолчанию приходят английские (AEC / setup drawing / unit angle / select métric)

По этому поводу точки не имели высоты, эта тема увидит в другом посте, когда мы будем говорить о контурных линиях.

Поверьте мою настойчивость, кто-нибудь знает макрос для atocad, который проще и свободнее?

Экспорт координат выбранных точек в *.txt

Сразу прошу, не пинайте ногами и не отправляйте в поиск. Все темы, в заголовках которых есть слово "координаты" и "координат" прочитал. Нашел много полезного для себя и практически то, что искал. Но многое остается в полутьме для моего мозга. Сама суть моего поста.

Я работаю в дорожном строительстве. С недавнего времени моя организация приобрела электронный тахеометр. На данный момент ось дороги выносим в натуру с помощью него. Координаты X и Y узловых точек по оси беру из CREDO_MIX, а координату Z подставляю по мере необходимости и вида выноса. Для фрезеровки, нижнего слоя, верхнего, и.т.п.

Возникла необходимость выноса в натуру кромок проезжей части. Но они не всегда соответствуют виду оси. В городских условиях могут быть примыкания, карманы для автобусных остановок и.т.п. Требуется (для начала) получить координаты узловых точек. Хочу начать с того, что бы получить координаты ВЫБРАННЫХ ТОЧЕК в текстовый файл. Последовательность:

Сразу прошу, не пинайте ногами и не отправляйте в поиск. Все темы, в заголовках которых есть слово "координаты" и "координат" прочитал. Нашел много полезного для себя и практически то, что искал. Но многое остается в полутьме для моего мозга. Сама суть моего поста.

Я работаю в дорожном строительстве. С недавнего времени моя организация приобрела электронный тахеометр. На данный момент ось дороги выносим в натуру с помощью него. Координаты X и Y узловых точек по оси беру из CREDO_MIX, а координату Z подставляю по мере необходимости и вида выноса. Для фрезеровки, нижнего слоя, верхнего, и.т.п.

Возникла необходимость выноса в натуру кромок проезжей части. Но они не всегда соответствуют виду оси. В городских условиях могут быть примыкания, карманы для автобусных остановок и.т.п. Требуется (для начала) получить координаты узловых точек. Хочу начать с того, что бы получить координаты ВЫБРАННЫХ ТОЧЕК в текстовый файл. Последовательность:

1. Проставляем токи в требуемых узлах.
2. Выбираем необходимые точки.
3. Запускаем макрос.
4. Макрос создает в каталоге текстовый файл c названием как у чертежа.
5. Туда записываются координаты примитивов (вроде бы так тут это называют) в формате:
Pt X Y Z <Space>, где
Pt - для начала просто нумерация точек по мере добавления в файл,
X Y Z - координаты,
<Space> - разделитель.

От Вас прошу помощи. В программировании мало понимаю, но для меня пока что ясно, что скрипты можно создать как макрос - VBA, и LISP - на собственном языке. Хотелось бы увидеть такой скрипт, я думаю он не будет громоздким, на удобном Вам языке, но с описанием. Начну разбираться - с чего-нибудь надо начинать. Для начала поставленная задача будет минимальной, в дальнейшем хочу усложнить задачу собственными силами, если потяну.

Сразу оговорюсь, возможности купить ToolPak, Express и уж тем более Civil у меня нет, , да и не требуется пока мне выполнение задач отличных от этой. Поэтому надеюсь на Вашу помощь в написании такого скрипта. А уж за описание процедуры - буду безгранично благодарен.

Предположим, мы хотим экспортировать точки из формата САПР в список, разделенный запятыми, чтобы загрузить их в тахеометр и выполнить разметку площадки. Ранее мы видели, как импортировать их из excel или txt. с AutoCAD y с Microstation, теперь давайте посмотрим, как их экспортировать.

Есть разные способы сделать это, например, подсчитать коров, вы можете сосчитать ноги и разделить их на четыре, или вы можете просто сосчитать коров. Давайте посмотрим на несколько способов:

1. Выполнение этого с помощью Microstation (dgn to txt)

В примере у меня есть график, который имеет пять вершин, и мне нужно экспортировать координаты в txt-файл.

Для этого я поставил точки такой толщины, чтобы они были видны. Помните, что веса линий в Microstation динамические, поэтому они сразу заметны.

dgn to txt

Первый шаг: Активируем инструмент экспорта координат (если он не активен), для этого выбираем

инструменты
ящики для инструментов
мы активируем последнюю команду (xyz)
затем мы закрыли панель и должны были быть активированы таким образом

xyz dgn

экспортные координаты

Второй шаг: Выберите точки, которые мы хотим экспортировать, затем выберите команду «Экспорт координат», которая является стрелкой вверх, и заполните условия:

-Data-файл
-Имя файла
-Изменение координат
-Университет
-Decimales
-Separador
-having
-Преобразование / суффикс
- Начальный номер

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

Конечным результатом является TXT-файл, который можно открыть из excel.

В моем случае я присвоил номер, отметив флажок, который находится справа

В случае, если файл уже существует, отображается окно, запрашивающее, хотите ли вы заменить или добавить (добавить или добавить).

координаты txt

Чтобы определить, какие точки, микростанция набирает числа в каждой точке, с цветом, типом строки и размером текста, который у вас активен.

2. Выполнение этого с помощью AutoCAD

Перед знакомством с CivilCAD (Softdesk) мы использовали приложение DOS, которое все еще называется dxf2csv. Можете попробовать, если любите мучить себя ностальгией, также есть приложения «нет бесплатного«И я уверен, что должно быть какое-то бесплатное, но в этом случае мы увидим, как это делается с Softdesk8, похоже на CivilCAD.

Чтобы точки были видны, я изменил формат на стиль формат / формат точки / точки. Чтобы толщина линий была видна, необходимо активировать «Lts», используя значение меньше 1, пока мы не увидим разницу.

dwg to txt

Первый шаг: Откройте проект или создайте новый

АЭК
Программы Softdesk (сначала сохранить файл)
Создать проект
Назначить имя проекта, затем ok
Мы выбираем число, в котором начинается нумерация
Хорошо, хорошо, тогда
выбираем «cogo», тогда ок

Второй шаг: Введите точки в базу данных: для этого существуют разные формы, в этом случае мы сделаем это автоматически: точки / задайте точки / автоматически, затем выберите каждую линию многоугольника.
Введенный сигнал - это сделать точки / уставки / список доступных точек. Он должен показать +6, что означает, что в базу данных уже введено 5 точек.

Третий шаг: экспорт точек.
Чтобы экспортировать пункты, которые мы делаем:

точки / точки импорта-экспорта / экспорт точек в файл
- Выберите формат экспорта, в этом случае PNE (точка, север, восток)
-Мы выбираем папку назначения файла и записываем имя
- В командной строке мы выбираем параметры экспорта (по выбору, по рангу . в этом случае мы используем все, все)
-Затем, файл исчез, в этом случае отделенный expacios, но равный может быть открыт с помощью excel

autocad txt

В случае, если точки написаны с большими размерами, вам нужно изменить метрические единицы, потому что по умолчанию приходят английские (AEC / setup drawing / unit angle / select métric)

По этому поводу точки не имели высоты, эта тема увидит в другом посте, когда мы будем говорить о контурных линиях.

Поверьте мою настойчивость, кто-нибудь знает макрос для atocad, который проще и свободнее?

Всем доброго времени суток! Кто-нибудь, подскажите ссылочку. Поиском смотрел, ничего подобного не нашел. Есть в чертеже точки 3D. Вручную их номерую (т.е. рядом с точкой ставлю номер). Как сбоку вывести табличку с четырьмя колонками - № точки,Х,Y,Z? Или вместо таблички экспортировать точки с номерами в Txt файл.

Всем доброго времени суток! Кто-нибудь, подскажите ссылочку. Поиском смотрел, ничего подобного не нашел. Есть в чертеже точки 3D. Вручную их номерую (т.е. рядом с точкой ставлю номер). Как сбоку вывести табличку с четырьмя колонками - № точки,Х,Y,Z? Или вместо таблички экспортировать точки с номерами в Txt файл.

Написал на скорую руку, подойдет?

Что-то не работает, почему не пойму. fixo, у вас работает код?

Что-то не работает, почему не пойму. fixo, у вас работает код?

У меня работает я просто забыл добавить привязку и текст для выбора точек
На экране тоже нужно отображать информацию?
Код исправил пробуй еще, ищи тестовый файл в той же папке с названием
соответствующим названию чертежа, иожешь изменить расширение на .CSV

Здорово! Очень благодарен вам! Но немного уточню, хорошо бы иметь возможность выбирать все точки с номерами разом. И те номера, которые попали соответственно в какой-то радиус от точки (который можно было бы задавать, т.к. масштабы у чертежей разные), привязывались к конкретной точке и выводились в таблицу.

Вот как например в коде, который написал Victor, как раз такой радиус действия от точки выбора на линии для выравнивания текста задается:

Другие идеи только приветствую
С Уважением.

Здорово! Очень благодарен вам! Но немного уточню, хорошо бы иметь возможность выбирать все точки с номерами разом. И те номера, которые попали соответственно в какой-то радиус от точки (который можно было бы задавать, т.к. масштабы у чертежей разные), привязывались к конкретной точке и выводились в таблицу

Перечитай свой изначальный вопрос, тут совсем другие пироги

Есть в чертеже точки 3D. Вручную их номерую (т.е. рядом с точкой ставлю номер). Как сбоку вывести табличку с четырьмя колонками - № точки,Х,Y,Z? Или вместо таблички экспортировать точки с номерами в Txt файл].

У меня нет столько времени чтобы плодить варианты без конца.
Вот вариант с одновремнной записью в файл если надо
Выдери сам то что надо - если мне не изменяет память ты уже
больше 5-ти лет на форуме, так что думаю в состоянии
сделать это сам :)

Спасибо! почти то, что нужно. Но может все таки кто-нибудь еще что-нибудь предложит?

Выдери сам то что надо - если мне не изменяет память ты уже
больше 5-ти лет на форуме, так что думаю в состоянии
сделать это сам

Спасибо! почти то, что нужно. Но может все таки кто-нибудь еще что-нибудь предложит?

Можно сразу учесть, что под номерами могут быть не только точки, но и блоки, и окружности. Текст однострочный и МТекст.Таблицу на чертеже показывать нет необходимости. Результат - Файл формата .txt (образец в архиве с чертежом)

А в Эксель не надо записывать?

Вот шаги:

Ссылка

Можно сразу учесть, что под номерами могут быть не только точки, но и блоки, и окружности. Текст однострочный и МТекст.Таблицу на чертеже показывать нет необходимости. Результат - Файл формата .txt (образец в архиве с чертежом)

И сам Чертеж

Вот вариант для работы с односточным текстом (для оствльных типов сделай сам)

На этом наши упражнения закончены,
переходим к водным процедурам

Владимир Азарко, - Спасибо за полезные ссылки.

fixo, - Спасибо за хороший пример для обучения, но AutoCAD после выбора текста мне пишет:

Error! Ошибка Automation. Отсутствует описание.

Владимир Азарко, - Спасибо за полезные ссылки.

fixo, - Спасибо за хороший пример для обучения, но AutoCAD после выбора текста мне пишет:

У меня 2009-й тоже (англ.) тоже
Попробуй добавить строчку в файл acad2009.lsp:
(vl-load-com)
Или может надо переустанавливать Acad(не уверен)

(defun C:PMARKER(/ *error* cnt datafile dimz elist filename osm p1 p2 p3 p4 pt ptlist px1 px2 px3 px4 start txtheight wid)

(defun *error* (msg)
(if datafile
(close datafile))
(if dimz
(setvar "dimzin" dimz))
(if osm
(setvar "osmode" osm))
(if msg
(princ (strcat "\nError! " msg)))
(if datafile
(close datafile))
(princ)
)

(defun get-elist(pt txt txtheight)
(list (cons 0 "TEXT")
(cons 100 "AcDbEntity")
(cons 67 0)
(cons 8 "0")
(cons 100 "AcDbText")
(cons 10 (list (car pt)(- (cadr pt)(/ txtheight 2.))(caddr pt)))
(cons 40 txtheight)
(cons 1 txt)
(cons 50 0.0)
(cons 41 1.0)
(cons 51 0.0)
(cons 7 (getvar "textstyle"))
(cons 71 0)
(cons 72 0)
(cons 11 pt)
(cons 100 "AcDbText")
(cons 73 2))
)

(defun emake-ml-text (pt txt txtheight)
(entmake (get-elist pt txt txtheight))
)

(while (setq pt (getpoint"\nSelect point or press Enter >>"))

(setq ptlist (cons pt ptlist))

(setq wid 0.0)
(setq p1 (list (+ (car pt) (/ txtheight 2))(cadr pt)(caddr pt))
elist (get-elist p1 (itoa cnt)txtheight)
wid (+ wid (get-width p1 (itoa cnt) txtheight)))
(emake-ml-text p1 (itoa cnt) txtheight)

(setq ptlist (reverse ptlist))

(setq datafile (open filename "W"))

(foreach pt ptlist
(write-line
(strcat (itoa cnt)
(chr 9)
(rtos (car pt) 2 3) ;<--precision 3 decimals
(chr 9)
(rtos (cadr pt) 2 3)
(chr 9)
(rtos (caddr pt) 2 3))
datafile)
(setq cnt (1+ cnt))
)
(close datafile)

(gc)
(alert (strcat "Data saved into the file:\n" filename ))
(princ)
)

(prompt "\nStart command with PMARKER")
(prin1)

Ели есть возможность и время внедрить в ниже вставленный LISP вставить в таблицу столбец со значением ОТМЕТКИ-Z

(defun c:geo_table ()
(initget 1 "Полилиния Точки")
(setq x (getkword "\nПостроить ведомость по [Полилиния/Точки]: "))
(if (= x "Полилиния") (ExportInExcel) (geo_point_table))
);_end defun

(defun geo-create-object (AppString)
(vlax-create-object AppString)
);_end defun

(defun geo_get_distance (pnt1 pnt2)
(setq pnt1 (list (car pnt1) (cadr pnt1)))
(setq pnt2 (list (car pnt2) (cadr pnt2)))
(distance pnt1 pnt2)
);_end defun

(defun geo_get_angle (pnt1 pnt2)
(setq pnt1 (list (car pnt1) (cadr pnt1)))
(setq pnt2 (list (car pnt2) (cadr pnt2)))
(angle pnt1 pnt2)
);_end defun

(defun geo-add-text (TextString InsertionPoint Height Alignment Rotation / obj)
(if (null Alignment) (setq Alignment acAlignmentLeft))
(setq obj (vla-addtext
(vla-get-modelspace (vla-get-activedocument(vlax-get-acad-object))) TextString
(if (or (= Alignment acAlignmentAligned)
(= Alignment acAlignmentFit))
(vlax-3d-point (car InsertionPoint))
(vlax-3d-point InsertionPoint)
) Height))
(cond
((= Alignment acAlignmentLeft) (vla-put-rotation obj Rotation))
((or (= Alignment acAlignmentAligned)
(= Alignment acAlignmentFit))
(vla-put-alignment obj Alignment)
(vla-put-textalignmentpoint obj (vlax-3d-point (cadr InsertionPoint)))
)
(T
(vla-put-alignment obj Alignment)
(vla-put-textalignmentpoint obj (vlax-3d-point InsertionPoint))
(vla-put-rotation obj Rotation)
)
(vla-update obj)
);_end cond

(defun geo-add-line (StartPoint EndPoint Lineweight / obj)
(setq obj (vla-addline
(vla-get-modelspace (vla-get-activedocument(vlax-get-acad-object)))
(vlax-3d-point StartPoint) (vlax-3d-point EndPoint)))

(cond
((vlax-write-enabled-p obj)
(if Lineweight (vla-put-lineweight obj Lineweight))
(vla-update obj)
))
);_end defun

(defun pline-list-vertex (ent / list_vertex tmp_ent type_ent)
(setq tmp_ent ent
ent (entget ent)
type_ent (cdr (assoc 0 ent))
) ;_ end of setq
(cond
((= "LWPOLYLINE" type_ent)
(list (list-massoc 10 ent) (= 1 (logand 1 (cdr (assoc 70 ent)))))
)
((= "POLYLINE" type_ent)
(reverse
(cons (= 1 (logand 1 (cdr (assoc 70 ent))))
(while (and (setq tmp_ent (entnext tmp_ent))
(/= (cdr (assoc 0 (setq ent (entget tmp_ent))))
"SEQEND"
) ;_ end of =
) ;_ end of and
(setq list_vertex (cons (cdr (assoc 10 ent)) list_vertex))
) ;_ end of while
) ;_ end of cons
) ;_ end of reverse
)
((= "LINE" type_ent)
(list (cons (cdr (assoc 10 ent)) (cons (cdr (assoc 11 ent)) nil)) nil)
)
(t nil)
) ;_ end of cond
) ;_ end of defun

(setq ent (car (entsel "\nУкажите полилинию: ")))
(setq lst (car (pline-list-vertex ent)))
(setq point_count (length lst))
(setq point_number 0)

(setq RangeN (strcat "A" (itoa (1+ point_number))));Диапазон ячеек для номера точки
(setq RangeX (strcat "B" (itoa (1+ point_number))));Диапазон ячеек для координаты X
(setq RangeY (strcat "C" (itoa (1+ point_number))));Диапазон ячеек для координаты Y
(setq RangeD (strcat "D" (itoa (1+ point_number))));Диапазон ячеек для расстояния
(setq RangeA (strcat "E" (itoa (1+ point_number))));Диапазон ячеек для угла

(setq g_r0 (vlax-get-property g_oex "Range" RangeN))
(setq g_r1 (vlax-get-property g_oex "Range" RangeX))
(setq g_r2 (vlax-get-property g_oex "Range" RangeY))
(setq g_r3 (vlax-get-property g_oex "Range" RangeD))
(setq g_r4 (vlax-get-property g_oex "Range" RangeA))

(vlax-put-property g_r0 "value2" (1+ point_number))
(vlax-put-property g_r1 "value2" (rtos Y 2 2))
(vlax-put-property g_r2 "value2" (rtos X 2 2))
(vlax-put-property g_r3 "value2" (rtos Dist 2 2))
(vlax-put-property g_r4 "value2" StAng)

(setq point_number (1+ point_number))
);end of repeat

(if (and g_r0 (not (vlax-object-released-p g_r0)))
(vlax-release-object g_r0))

(if (and g_r1 (not (vlax-object-released-p g_r1)))
(vlax-release-object g_r1))

(if (and g_r2 (not (vlax-object-released-p g_r2)))
(vlax-release-object g_r2))

(if (and g_r3 (not (vlax-object-released-p g_r3)))
(vlax-release-object g_r3))

(if (and g_r4 (not (vlax-object-released-p g_r4)))
(vlax-release-object g_r4))

(if (and g_csh (not (vlax-object-released-p g_csh)))
(vlax-release-object g_csh))

(if (and g_shs (not (vlax-object-released-p g_shs)))
(vlax-release-object g_shs))

(if (and g_cb (not (vlax-object-released-p g_cb)))
(vlax-release-object g_cb))

(if (and g_wbs (not (vlax-object-released-p g_wbs)))
(vlax-release-object g_wbs))

(if (and g_oex (not (vlax-object-released-p g_oex)))
(vlax-release-object g_oex))
;Обнуление использованных глобальных переменных
(setq g_r0 nil g_r1 nil g_r2 nil g_r3 nil g_r3 nil g_csh nil g_shs nil g_cb nil g_wbs nil g_oex nil)
;Сборка мусора
(gc)

(defun geo_point_table ()
(setq pnt nil)
(setq nline 0)
(setq rows nil);список для всех координат типа: ((x,y,z)(x,y,z). )

;Запрос на ввод точек
(while
(setq pnt (getpoint "\nУкажите координату: "))
(setq nline (1+ nline));увеличиваем количество строк на 1
;формируем список с координатами
(setq row pnt);списку row присваеваем список pnt с координатами выбранной точки
(setq rows (append rows (list row) ));добавляем список row c коорд. выбранной точки в список со всеми коорд. rows
);while

;Запрос на ввод коорд. левого верхнего угла таблицы
(setq InsertionPoint nil)
(setq InsertionPoint (getpoint "\nУкажите координаты левого верхнего угла таблицы: "))

;Запоминаем значения сист.переменных
(setq ORT (getvar "ORTHOMODE"));ORTHO
(setq SN (getvar "SNAPMODE"));SNAP
(setq OSN (getvar "OSMODE"));OSNAP
(setq DIMZ (getvar "DIMZIN"));DIMZIN
(setq TEXT (getvar "TEXTSTYLE"));TEXTSTYLE
(setq COLOR(getvar "CECOLOR"));CECOLOR
;Задаём значения сист.переменным
(setvar "ORTHOMODE" 0);ORTHO
(setvar "SNAPMODE" 0);SNAP
(setvar "OSMODE" 0);OSNAP
(setvar "DIMZIN" 0);DIMZIN
(setvar "CECOLOR" "251");CECOLOR

(DrawLines InsertionPoint nline);создаём линии таблицы
(setvar "CECOLOR" COLOR);CECOLOR
(DrawText InsertionPoint nline 2.0 rows);создаём текст в таблице

;возвращаем знач. сист.переменных в начальное состояние
(setvar "ORTHOMODE" ORT);ORTHO
(setvar "SNAPMODE" SN);SNAP
(setvar "OSMODE" OSN);OSNAP
(setvar "DIMZIN" DIMZ);DIMZIN
(setvar "TEXTSTYLE" TEXT);TEXTSTYLE

);_end defun geo-draw-table

(
defun DrawLines(InsertionPoint nline)
;InsertionPoint - точка вставки
;nline - количество строк
(setq width 104 h 4);ширина таблицы\высота строк\

;чертим гор.линии шапки таблицы
(setq xx (car InsertionPoint) yy (cadr InsertionPoint))
(geo-add-line (list xx yy) (list (+ xx width) yy) acLnWtByLayer);первая линия, с началом в точке InsertionPoint
(geo-add-line (list (+ xx 13) (- yy h)) (list (+ xx 57) (- yy h)) acLnWtByLayer);вторая линия
(geo-add-line (list xx (- yy 8)) (list (+ xx width) (- yy 8)) acLnWtByLayer);третья линия

;чертим гор. линии таблицы
(setq yy (- yy 12))
(repeat nline
(geo-add-line (list xx yy) (list (+ xx width) yy) acLnWtByLayer)
(setq yy (- yy h))
);_end repeat

;чертим вертикальные линии таблицы
(setq xx (car InsertionPoint) yy (cadr InsertionPoint))
(geo-add-line (list xx yy) (list xx (- yy 8 (* h nline))) acLnWtByLayer);первая линия
(geo-add-line (list (+ xx 13) yy) (list (+ xx 13) (- yy 8 (* h nline))) acLnWtByLayer);вторая линия
(geo-add-line (list (+ xx 35) (- yy h)) (list (+ xx 35) (- yy 8 (* h nline))) acLnWtByLayer);третья линия
(geo-add-line (list (+ xx 57) yy) (list (+ xx 57) (- yy 8 (* h nline))) acLnWtByLayer);четвёртая линия
(geo-add-line (list (+ xx 74) yy) (list (+ xx 74) (- yy 8 (* h nline))) acLnWtByLayer);пятая линия
(geo-add-line (list (+ xx 91) yy) (list (+ xx 91) (- yy 8 (* h nline))) acLnWtByLayer);шестая линия
(geo-add-line (list (+ xx 104) yy) (list (+ xx 104) (- yy 8 (* h nline))) acLnWtByLayer);седьмая линия

);_end defun DrawLines

(
defun DrawText(InsertionPoint nline h rows)
;InsertionPoint - коорд. левого верхнего угла таблицы
;nline - количество строк
;h - высота текста
;rows - список со всеми координатами типа: ((x,y,z)(x,y,z). )

;Шапка таблицы
;(command "_STYLE" "Table(Geocad)" "Times New Roman" 0.0 1.0 0.0 "N" "N");создаём новый текст.стиль "Table(Geocad)"
;(setvar "TEXTSTYLE" "Table(Geocad)");TEXTSTYLE

(setq xx (car InsertionPoint) yy (cadr InsertionPoint))
(geo-add-text "Номер" (list (+ xx 2.5) (- yy 3)) h acAlignmentLeft 0)
(geo-add-text "точки" (list (+ xx 3) (- yy 6)) h acAlignmentLeft 0)
(geo-add-text "К О О Р Д И Н А Т Ы" (list (+ xx 21) (- yy 3)) h acAlignmentLeft 0)
(geo-add-text "X" (list (+ xx 23) (- yy 7)) h acAlignmentLeft 0)
(geo-add-text "Y" (list (+ xx 44.5) (- yy 7)) h acAlignmentLeft 0)
(geo-add-text "Дир.углы" (list (+ xx 60) (- yy 4.5)) h acAlignmentLeft 0)
(geo-add-text "Меры" (list (+ xx 79) (- yy 3)) h acAlignmentLeft 0)
(geo-add-text "линий,м" (list (+ xx 77.5) (- yy 6)) h acAlignmentLeft 0)
(geo-add-text "На" (list (+ xx 96) (- yy 3)) h acAlignmentLeft 0)
(geo-add-text "точку" (list (+ xx 94) (- yy 6)) h acAlignmentLeft 0)

;Таблица
(setq i 1);счётчик
(setq nlist 0);список с коорд.(x,y,z) в списке со всеми коорд.
(repeat nline
;номера точек
(geo-add-text (rtos i 2 0) (list (+ xx 6.5) (- yy 11)) h acAlignmentCenter 0);выводим в перв. столбец номер точки

(if (= i nline) (setq i 0));если последняя точка, в последнем столбце для точек пишем начальную точку
(geo-add-text (rtos (1+ i) 2 0) (list (+ xx 97.5) (- yy 11)) h acAlignmentCenter 0);выводим в последний столбец номер точки

;координаты X и Y
(setq kx (nth 0 (nth nlist rows)));коорд. X
(setq ky (nth 1 (nth nlist rows)));коорд. Y
(geo-add-text (rtos ky 2 2) (list (+ xx 24) (- yy 11)) h acAlignmentCenter 0);выводим X\переворачиваем координаты
(geo-add-text (rtos kx 2 2) (list (+ xx 46) (- yy 11)) h acAlignmentCenter 0);выводим Y\переворачиваем координаты

;Дир.углы
(setq a1 (nth nlist rows));первая координата
(setq a2 (nth (rem (1+ nlist) nline) rows));вторая координата

(setq x1 (car a1) y1 (cadr a1));выбираем из списка координат а1 x и y
(setq x2 (car a2) y2 (cadr a2));выбираем из списка координат а2 x и y
(setq k1 (list y1 x1));меняем x и y и заносим в список
(setq k2 (list y2 x2));меняем x и y и заносим в список

;Расстояние
(setq pnt1 (nth nlist rows));первая координата
(setq pnt2 (nth (rem (1+ nlist) nline) rows));вторая координата
(setq dist (geo_get_distance pnt1 pnt2))
(geo-add-text (rtos dist 2 2) (list (+ xx 82.5) (- yy 11)) h acAlignmentCenter 0);выводим расстояние

(setq i (1+ i));увеличиваем i на 1
(setq yy (- yy 4));уменьшаем yy на 4
(setq nlist (1+ nlist));увеличиваем nlist на 1
)

Буду признателен если уделите время на внедрение столбца с ОТМЕТКОЙ-Z этот LISP мне более подходит.
Заранее спасибо за внимание.

Читайте также: