| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Экспорт координат выбранных точек в *.txt

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

Ответ
Поиск в этой теме
Непрочитано 14.05.2008, 16:06
Экспорт координат выбранных точек в *.txt
slan.ru
 
Регистрация: 13.05.2008
Сообщений: 6

Добрый день, уважаемые знатоки!

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

Я работаю в дорожном строительстве. С недавнего времени моя организация приобрела электронный тахеометр. На данный момент ось дороги выносим в натуру с помощью него. Координаты 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 у меня нет, , да и не требуется пока мне выполнение задач отличных от этой. Поэтому надеюсь на Вашу помощь в написании такого скрипта. А уж за описание процедуры - буду безгранично благодарен.

P.S> Если требуются еще исходные данные - готов в найкротчайшие сроки предоставить их.
Просмотров: 233842
 
Непрочитано 02.08.2019, 08:49
#161
bengan777


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


Всем большое спасибо. Буду ковырять.
bengan777 вне форума  
 
Непрочитано 02.08.2019, 09:56
#162
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 888


Цитата:
Сообщение от Boxa Посмотреть сообщение
ИМХО, алгоритм то там простой
Offtop: А если расставлять номера точек в вершины подобной фигуры? Т.е. есть какой-то контур, строим его подобие во внешнюю сторону, расставляем номера точек в вершины новой фигуры, удаляем новую фигуру. Сходу не соображу есть ли подводные камни у такого варианта
kacugu вне форума  
 
Непрочитано 02.08.2019, 09:59
1 | #163
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,960


Цитата:
Сообщение от kacugu Посмотреть сообщение
Offtop: А если расставлять номера точек в вершины подобной фигуры? Т.е. есть какой-то контур, строим его подобие во внешнюю сторону, расставляем номера точек в вершины новой фигуры, удаляем новую фигуру. Сходу не соображу есть ли подводные камни у такого варианта
Цитата:
Сообщение от VVA Посмотреть сообщение
В этой реализации программы такой возможности нет. Можно только отредактировать смещение для всех точек.
Если программа не гарантирует размещение номеров внутри контура...
Сергей812 вне форума  
 
Непрочитано 02.08.2019, 11:56
1 | #164
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,587


kacugu, ну вычислять то направление оффсета все равно придется, плюс при оффсете могут вырождаться грани, про накладные расходы на создание доп объекта и последующая чистка: тут надо смотреть на конкретных примерах, где то выиграете, где то нет...
а вообще экспериментируйте
Boxa вне форума  
 
Непрочитано 05.09.2019, 15:13
#165
alexx_z25


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


Спасибо VVA за такой классный lisp! А нельзя ли сделать, так, чтобы в файле txt можно было выбрать разделитель между координатами, у Вас идёт 6 пробелов, а мне до зарезу нужна просто запятая?!

Последний раз редактировалось alexx_z25, 05.09.2019 в 15:25.
alexx_z25 вне форума  
 
Непрочитано 05.09.2019, 16:48
#166
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,960


если фиксированные 6 пробелов - то легко заменой в любом текстовом редакторе делается
Сергей812 вне форума  
 
Непрочитано 05.09.2019, 16:50
#167
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772


Я полагаю, что там на самом деле символ табуляции стоит (код не смотрел).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.09.2019, 10:34
#168
alexx_z25


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
если фиксированные 6 пробелов - то легко заменой в любом текстовом редакторе делается
Спасибо! Действительно, легко и быстро 6 пробелов меняются на одну запятую, но если бы такая возможность была в лиспе - было бы ещё быстрее
alexx_z25 вне форума  
 
Непрочитано 09.09.2019, 13:45
#169
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,960


Цитата:
Сообщение от alexx_z25 Посмотреть сообщение
но если бы такая возможность была в лиспе - было бы ещё быстрее
искать, где ссылка на лисп - лень) Если там 6 пробелов, то ищите в коде конструкцию вида
Код:
[Выделить все]
 (setq %Какая то переменная% "      ")
по строковой константе в 6 пробелов
Цитата:
" "
и заменяете их на нужный разделитель вместо пробелов внутри кавычек.

----- добавлено через ~4 мин. -----
или в аргументах strcat может быть строковая константа в коде, например
Сергей812 вне форума  
 
Непрочитано 09.09.2019, 13:51
#170
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от alexx_z25 Посмотреть сообщение
у Вас идёт 6 пробелов, а мне до зарезу нужна просто запятая?!
Сохраняй как csv файл, разделитель будет точка с запятой. Или настраивай программу импорта на разделитель ; или меняй в редакторе ; на ,
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.10.2019, 14:40
#171
probkoball


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


Как отделаться от введения prefix и suffix при вводе команды coorn. Ввожу пробел, как там написано, а он не воспринимается.
probkoball вне форума  
 
Непрочитано 14.10.2019, 15:22
#172
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


У меня воспринимается. Только что проверил версию ECoorE rev11c.zip отсюда

----- добавлено через ~2 мин. -----
Если они пустые и не нужны, просто жми Enter на запросы

Цитата:
Type prefix: (If you want to delete prefix type ' ' (press SPACE key on keyboard) <> :
Type suffix: (If you want to delete prefix type ' ' (press SPACE key on keyboard) <> :
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.10.2019, 15:29
#173
probkoball


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


Цитата:
Сообщение от VVA Посмотреть сообщение
У меня воспринимается. Только что проверил версию ECoorE rev11c.zip отсюда

----- добавлено через ~2 мин. -----
Если они пустые и не нужны, просто жми Enter на запросы
Перезапустил автокад и заработало. Спасибо большое.
probkoball вне форума  
 
Непрочитано 06.11.2019, 21:53
#174
Valeranna


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Я полагаю, что там на самом деле символ табуляции стоит (код не смотрел).
В Notepad++ с табуляцией можно работать в режиме замены (расширенный поиск). Подходящее сочетание — \t.
Valeranna вне форума  
 
Непрочитано 04.12.2019, 13:25
#175
bengan777


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


Цитата:
Сообщение от Boxa Посмотреть сообщение
Надеюсь помог.
Очень помог)
Этот кусок я реализовал.
Осталось понять как это все в эксель теперь запихать)
Когда доделаю, выложу что получилось.
bengan777 вне форума  
 
Непрочитано 05.12.2019, 17:38
#176
bengan777


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


Код:
[Выделить все]
 (defun C:Nplne (/ pt pt1 pt2 pt4 ent ent2 lst_point sys_var htxt mysset counter n coun2 temp)
  (vl-load-com)
  (setq Htxt 2) ;_Высота текста
  (setq sys_var (mapcar 'getvar '("osmode" "cmdecho")))	; Сохранение значений системных переменных
  (setvar "osmode" 0)
  (setvar "cmdecho" 0)
  (if (not (numberp *NPoint*))(setq *NPoint* 1))	; Проверка, пуста ли глобальная переменная *NPoint*
  (princ "\nНачальный номер <")(princ *NPoint*)(princ ">: ")
  (if (null (setq n (getint)))(setq n *NPoint*))	; Возможность ввести начальный номер руками
 (setq mysset (ssget))	; Выбор набора объектов
 (setq counter 0)
 (while (< counter (sslength mysset))	; Начало перебора объектов набора
    (setq ent (ssname mysset counter))	; Получение координат вершин списком
  (setq  lst_point (mapcar 'cdr				
        (vl-remove-if-not
          '(lambda (x) (= (car x) 10))
          (entget ent)
        ) ;_ end of vl-remove-if-not
      		   ) ;_ end of mapcar
  ) ;_ end of setq
(setq coun2 0)
   (while (< coun2 (length lst_point))
     (setq pt (nth coun2 lst_point))
	(if (= coun2 (- (length lst_point) 1)) (setq pt1 (nth 0 lst_point))
	  (setq pt1 (nth (1+ coun2) lst_point))); координаты следующей вершины
     	 (if (= coun2 0) (setq pt2 (nth coun2 (reverse lst_point)))
	   (setq pt2 (nth (- coun2 1) lst_point))) ; координаты предыдущей вершины
     
       	    (setq pt4 (polar pt (- (angle pt2 pt) (/ (- (angle pt2 pt) (angle pt1 pt)) 2)) 1)); получаем координату смещения на 1 нашего узла к середине внутреннего угла
	(vl-cmdf "_ray" pt4 "@5<90" "") ; Проводим луч из pt2 к северу
	(setq ent2 (entlast)) ; пишем в переменную имя луча
	(setq temp
         (vla-intersectwith
          (vlax-ename->vla-object ent)
          (vlax-ename->vla-object ent2)
          acExtendnone
          )
	 )
	(setq temp
	 (vlax-safearray-get-u-bound
	 (vlax-variant-value temp) 1)
	) ; Получаем количество пересечений (-1 если их нет, 2 если одно, 5 если 2 итд.)
	     (if (= (abs (rem temp 2)) 1)
     		(vl-cmdf "_text" "_none" (polar pt (angle pt pt4) (+ 2 Htxt)) Htxt 0 (itoa n) "")
     		(vl-cmdf "_text" "_none" (polar pt (- (angle pt pt4) 3.1415) (+ 2 Htxt)) Htxt 0 (itoa n) "")
	     ) ; вставляем текст учитывая внутри, или снаружи фигуры находится точка луча
     (vl-cmdf "_erase" ent2 "") ; стираем луч
    (setq coun2 (1+ coun2))
    (setq n (1+ n))
   ); end while
     (setq *Npoint* n)
   (setq counter (+ counter 1))
 );_end of while
  (mapcar 'setvar '("osmode" "cmdecho") sys_var)
  (princ)
) ;_ end of defun
(princ "\nНаберите Nplne в командной строке")
Извиняюсь если накосячил с форматом кода. Пока реализовал подписывание узлов. Разберусь с экселем, тоже выложу что получилось.
bengan777 вне форума  
 
Непрочитано 25.12.2019, 12:30
#177
miha_1k


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



Идея классная, но в программе закралась ошибка.
Полигоны нумеруются не совсем корректно((
miha_1k вне форума  
 
Непрочитано 15.01.2020, 13:21
#178
bengan777


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


Прошу помощи у знающих людей.
Вот координаты фигуры:

4364751.528,5006349.857
4364772.986,5006353.912
4364774.609,5006369.05
4364776.683,5006353.912
4364795.166,5006352.019
4364776.412,5006349.676
4364775.962,5006335.078
4364771.814,5006349.406
Здесь 5 точка оказывается внутри фигуры((

луч в этом случае попадает внутрь фигуры и имеет одно пересечение с ней, однако, программа почему то считает что пересечений 2
(setq temp
(vlax-safearray-get-u-bound
(vlax-variant-value temp) 1)
) выдает в этом случае значение 5
bengan777 вне форума  
 
Непрочитано 15.01.2020, 13:25
#179
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772


И как этот вопрос связан со стартовым постом темы?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.01.2020, 13:35
#180
bengan777


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


Извиняюсь, думал что будет удобнее в одной той же теме обсудить. Если нужно, создам отдельную тему.
bengan777 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Экспорт координат выбранных точек в *.txt

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт координат из dxf в txt eilukha Вертикальные решения на базе AutoCAD 14 26.04.2008 21:53
Нумерация точек на плане и вывод их координат в полярной системе kukuikar Программирование 1 17.02.2008 11:15
Получение текстового массива координат точек. Камыч AutoCAD 5 30.07.2007 12:28
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47
простановка реальных ординатных размеров (координат точек) AnnaT AutoCAD 7 15.06.2005 17:56