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

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

Вывод координат точек на чертеже в виде однострочного текста

Ответ
Поиск в этой теме
Непрочитано 24.01.2018, 23:54
Вывод координат точек на чертеже в виде однострочного текста
sherw00d
 
Регистрация: 19.10.2010
Сообщений: 7

Уважаемые форумчане, help! Я уже весь сайт перекопал, не могу найти lisp'a который бы делал следующий порядок действий. Есть точка с координатами формата Х=123456.789 и Y=987654.321, также у меня рядом заготовлена таблица где есть столбец c координатами X и координат Y, но вместо координат там заготовлен однострочный текст в виде точек/нулей/чего угодно - просто там нужен однострочный текст. Так вот, я вызываю lisp, далее он предлагает мне выбрать объект, после того как мы выбрали объект(как правило это круг или точка, не важно), он предлагает выбрать однострочный текст, любой, как раз тот который у нас заготовлен в столбцах. Мы сначала выбираем текст в столбце X(программа автоматически вставляет координату X), а потом выбираем заготовленный текст в столбце Y(программа вставляет текст с координатой Y). Мне не нужно никуда экспортировать мои координаты, мне нужно выводить их здесь же, на чертеже. Стандартная автокадовская утилита мне не подходит. Помогите кто знает такой лисп.
Просмотров: 5932
 
Непрочитано 25.01.2018, 16:55
#21
Сергей812


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


Цитата:
Сообщение от Boxa Посмотреть сообщение
Но ведь блок может выглядеть как просто точка, с невидимыми атрибутами, а последовательность расстановки легко выясняется по хендлу блока при Attout
Просто расскопировать блок и получить координаты в таблице это намного быстрее, чем описанный автором алгоритм.
ну человеку так удобнее - может ему быстрее 300 точек в час не нужно, а подобный алгоритм будет создавать иллюзию напряженной работы. Но что ТС смотрит на текст лиспа и просить дать готовый файл...
Сергей812 вне форума  
 
Непрочитано 25.01.2018, 17:01
#22
Boxa

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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Но что ТС смотрит на текст лиспа и просить дать готовый файл...
Это нормально, т.к. с первых строчек темы было понятно, что автор сам ничеего не писал, впрочем он сам признался в этом позднее, а вот то, что kaMon потакает такого рода хотелкам, вот это грустно. Видимо молод и зуд на кончиках пальцев еще не прошел.
ИМХО, на SQL форуме сделали более правильно
Boxa вне форума  
 
Непрочитано 25.01.2018, 17:06
#23
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
да нет таблицы
Как же нет, когда сам автор темы пишет: "заготовлена таблица". Даже если она выполнена из отрезков, выглядеть она может как таблица. Далее. При делении области черчения на два видовых экрана придется сначала тыкать мышью куда-то для активации этого видового экрана, а потом уже на текст. При этом неизбежны сбои работы программы. Изначальные построения плохо поддаются автоматизации.
Setvar вне форума  
 
Непрочитано 25.01.2018, 17:15
#24
Сергей812


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


Offtop:
Цитата:
Сообщение от Boxa Посмотреть сообщение
kaMon потакает такого рода хотелкам, вот это грустно.
это личное дело каждого, и koMon не первый) Набор программок никогда не превратиться в законченный комплекс со сквозной обработкой информации, но многим фирмам это и не нужно. Мировое сообщество и Аутодеск сделали очень много для популяризации программирования, выложив информацию в свободный доступ - было бы желание облегчить свой труд.
Сергей812 вне форума  
 
Непрочитано 25.01.2018, 17:16
#25
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Интересно вообразить, ка АТ действует сейчас. Допустим, выделил точку (если она есть). Далее можно посмотреть в палитру свойств и скопировать в буфер значение координаты X. Найти соответствующий текст, два раза кликнуть на нем, текст перейдет в режим редактирования и окажется выделенным. В этот момент можно вставить содержимое буфера обмена и закончить редактирование. Ту же операцию надо провести с координатой Y. Но если точек нет, тогда надо ввести команду КООРД с привязкой Пересечение. Получим значения координат в командной строке. Далее скопировать значении координаты X в буфер обмена и... далее уже было расписано.
Setvar вне форума  
 
Непрочитано 25.01.2018, 17:22
#26
Boxa

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


Сергей812, не правильно меня понял, я не против делиться кодом и помогать, наоборот открыто делюсь и помогаю, участвую в open source проектах, но
мне не нравиться когда пытаются на чужом горбу в рай заехать и когда лгут, прося о помощи.
Boxa вне форума  
 
Непрочитано 25.01.2018, 17:32
#27
Сергей812


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


Цитата:
Сообщение от Setvar Посмотреть сообщение
Интересно вообразить, ка АТ действует сейчас. Допустим, выделил точку (если она есть). Далее можно посмотреть в палитру свойств и скопировать в буфер значение координаты X. Найти соответствующий текст, два раза кликнуть на нем, текст перейдет в режим редактирования и окажется выделенным. В этот момент можно вставить содержимое буфера обмена и закончить редактирование. Ту же операцию надо провести с координатой Y. Но если точек нет, тогда надо ввести команду КООРД с привязкой Пересечение. Получим значения координат в командной строке. Далее скопировать значении координаты X в буфер обмена и... далее уже было расписано.
Если для ТС 12 сек на точку - это хороший результат, то за чуть большее время можно просто вручную вбивать координаты по памяти)

Offtop:
Цитата:
Сообщение от Boxa Посмотреть сообщение
мне не нравиться когда пытаются на чужом горбу в рай заехать и когда лгут, прося о помощи.
это было всегда, сейчас просто более выраженное из-за смещения общества в сторону чистого потребления)
Сергей812 вне форума  
 
Автор темы   Непрочитано 25.01.2018, 19:20
#28
sherw00d


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


знаете, я пришел на форум с просьбой поделиться lisp'ом или ткнуть в него, т.к. таким алгоритмом уже пользовался, и я думал он здесь есть, просто у меня кривые руки и я не могу его найти. начались обвинения, да я этого, как тут подметили, и не скрывал в плане ТС лодырь, студенота ленивая и т.п. друзья, я не просил вас писать программу для меня, перечитайте мой пост, я просил помочь найти LISP, и всё. отдельно кричащих и уработавшихся товарищей, попрошу срочно отдохнуть, вашей помощи мне точно не требуется. мне казалось форум, это всегда добровольная бескорыстная помощь. отдельное спасибо kaMon за его труд, но к сожалению не смогу применить твой труд, дружище. спасибо за проявленное внимание к моему посту.
sherw00d вне форума  
 
Непрочитано 25.01.2018, 20:05
#29
ProjectMaster


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


https://youtu.be/b-cQg-vSkIY
Смотришь (2 мин). Скачиваешь. Устанавливаешь. Юзаеш.
ProjectMaster вне форума  
 
Непрочитано 25.01.2018, 20:24
#30
Сергей812


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


Цитата:
Сообщение от sherw00d Посмотреть сообщение
, но к сожалению не смогу применить твой труд,
Т.е. открыть блокнот, скопировать туда содержимое лиспа со страницы, убрать цифры строк впереди, сохранить и переименовать расширение на *.lsp - для вас является уже неопределимым препятствием? Обижаться вы можете только на вашу лень.
Сергей812 вне форума  
 
Непрочитано 25.01.2018, 23:08
#31
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Для sherw00d.
Вот тебе код от koMon без нумерации строк и собственно файл LSP.
При других исходных данных мог бы получить приличную программу, нет, надо отклячить губу и притвориться обиженным.
Код:
[Выделить все]
(defun c:XY_DText (/			entity_selented
		   vla_object		where_get_coordinates
		   X_Coordinate		Y_Coordinate
		   coordinate_change	is_continuing
		  )
  (setq is_continuing t)
  (while is_continuing
    (setq vla_object
	   (progn
	     (while
	       (or (not	(setq entity_selented
			       (entsel
				 "\nSelect Circle/Point to get Coordinates from: "
			       )
			)
		   )
		   (not
		     (member (vla-get-objectname
			       (setq vla_object
				      (vlax-ename->vla-object
					(car entity_selented)
				      )
			       )
			     )
			     (list "AcDbCircle" "AcDbPoint")
		     )
		   )
	       )
	     )
	     vla_object
	   )
	  where_get_coordinates
	   (if (= (vla-get-objectname vla_object)
		  "AcDbCircle"
	       )
	     'Center
	     'Coordinates
	   )
	  X_Coordinate
	   (vl-string-subst
	     ","
	     "."
	     (rtos
	       (car (vlax-get vla_object where_get_coordinates))
	     )
	   )
	  Y_Coordinate
	   (vl-string-subst
	     ","
	     "."
	     (rtos
	       (cadr (vlax-get vla_object where_get_coordinates)
	       )
	     )
	   )
	  vla_object
	   (progn
	     (while
	       (or (not	(setq entity_selented
			       (entsel
				 "\nXSelect DText to make it X Coordinate of Selected Circle/Point : "
			       )
			)
		   )
		   (not
		     (member (vla-get-objectname
			       (setq vla_object
				      (vlax-ename->vla-object
					(car entity_selented)
				      )
			       )
			     )
			     (list "AcDbText")
		     )
		   )
	       )
	     )
	     vla_object
	   )
	  coordinate_change
	   (vla-put-textstring vla_object X_Coordinate)
	  vla_object
	   (progn
	     (while
	       (or (not	(setq entity_selented
			       (entsel
				 "\nXSelect DText to make it Y Coordinate of Selected Circle/Point: "
			       )
			)
		   )
		   (not
		     (member (vla-get-objectname
			       (setq vla_object
				      (vlax-ename->vla-object
					(car entity_selented)
				      )
			       )
			     )
			     (list "AcDbText")
		     )
		   )
	       )
	     )
	     vla_object
	   )
	  coordinate_change
	   (vla-put-textstring vla_object Y_Coordinate)
    )
    (initget "No Yes")
    (if	(= (getkword "\nWant to Select Next Entity [No/Yes] <Yes>: ")
	   "No"
	)
      (setq is_continuing nil)
    )
  )
  (princ)
)
P.S. Не люблю программы с выходом по Esc.
Вложения
Тип файла: lsp xy-dtext.lsp (2.3 Кб, 11 просмотров)
Setvar вне форума  
 
Непрочитано 25.01.2018, 23:42
#32
Enik

ГИП
 
Регистрация: 07.06.2015
Сообщений: 1,254


Цитата:
Сообщение от Setvar Посмотреть сообщение
Допустим, выделил точку (если она есть). Далее можно посмотреть в палитру свойств и скопировать в буфер значение координаты X. Найти соответствующий текст, два раза кликнуть на нем, текст перейдет в режим редактирования и окажется выделенным. В этот момент можно вставить содержимое буфера обмена и закончить редактирование. Ту же операцию надо провести с координатой Y. Но если точек нет, тогда надо ввести команду КООРД с привязкой Пересечение. Получим значения координат в командной строке. Далее скопировать значении координаты X в буфер обмена и... далее уже было расписано.
Offtop: Как ППТшник, прочитал, задумался, перечитал, покурил, заплакал...
А на самом деле это очень удобный способ, когда из нескольких тысяч точек нужно передвинуть десяток и как-то быстро переделать все таблицы.
Enik вне форума  
 
Непрочитано 26.01.2018, 05:27
#33
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Цитата:
Сообщение от Enik Посмотреть сообщение
из нескольких тысяч точек
Ты всерьез допускаешь наличие на экране таблицу с несколькими тысячами строк? И надо скорректировать ее без нумерации точек (углов прямоугольников) и нумерации строк в таблице?

----- добавлено через ~2 ч. -----
Простейшая программа по условиям автора темы:
Код:
[Выделить все]
(defun C:XY-T ( / echo obj xyp xp yp str1 str2 sty1 sty2 tvt1 tvt2 ht1 ht2)
(setq echo (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(setq obj (car (entsel "\nУкажите круг: ")))
(if (and obj (= (cdr (assoc 0 (entget obj))) "CIRCLE"))
    (progn
    (setq xyp (cdr (assoc 10 (entget obj))))
    (setq xp (rtos (nth 0 xyp) 2 3) yp (rtos (nth 1 xyp) 2 3))
    (setq str1 (car (entsel "\nУкажите текст X: ")))
    (if (and str1 (= (cdr (assoc 0 (entget str1))) "TEXT"))
        (progn
        (setq sty1 (cdr (assoc 7 (entget str1)))) ; стиль текста X    
        (setq tvt1 (cdr (assoc 10 (entget str1)))) ; координаты точки вставки текста X    
        (setq ht1 (cdr (assoc 40 (entget str1)))) ; высота текста X    
        (vl-cmdf "_ERASE" str1 "")
        (vl-cmdf "_TEXT" "_s" sty1 tvt1 ht1 "0" xp)
        (princ xp)
        ) ; progn
    ) ; if
    (setq str2 (car (entsel "\nУкажите текст Y: ")))
    (if (and str2 (= (cdr (assoc 0 (entget str2))) "TEXT"))
        (progn
        (setq sty2 (cdr (assoc 7 (entget str2)))) ; стиль текста Y   
        (setq tvt2 (cdr (assoc 10 (entget str2)))) ; координаты точки вставки текста Y    
        (setq ht2 (cdr (assoc 40 (entget str2)))) ; высота текста Y    
        (vl-cmdf "_ERASE" str2 "")
        (vl-cmdf "_TEXT" "_s" sty2 tvt2 ht2 "0" yp)
        (princ yp)
        ) ; progn
    ) ; if
    ) ; progn
) ; if
(setvar "CMDECHO" echo)
(princ)
)
Setvar вне форума  
 
Непрочитано 26.01.2018, 07:14
#34
Boxa

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


Offtop: Парни красуются друг перед другом.
Boxa вне форума  
 
Непрочитано 26.01.2018, 07:38
#35
Enik

ГИП
 
Регистрация: 07.06.2015
Сообщений: 1,254


Цитата:
Сообщение от Setvar Посмотреть сообщение
Ты всерьез допускаешь наличие на экране таблицу с несколькими тысячами строк? И надо скорректировать ее без нумерации точек (углов прямоугольников) и нумерации строк в таблице?
Нет, немного не так. Несколько тысяч точек - это раскидано в модели (линейный объект, например). Через извлечение данных (из скрытых атрибутов блоков) они закидываются в эксель. А потом уже из экселя они перекочёвывают в различные таблицы в разных документах.

И, да, нумерация точек тут не летит, только координаты меняются:
а) либо количество точек умышленно делается такое, как было или
б) точки индексируются особым образом, чтобы можно было невозбранно добавить/выкинуть.

А за труд - спасибо! За себя и за ТС (если оный не появится).
Enik вне форума  
 
Непрочитано 26.01.2018, 08:36
#36
VVA

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


Цитата:
Сообщение от sherw00d Посмотреть сообщение
отдельное спасибо kaMon за его труд, но к сожалению не смогу применить твой труд, дружище. спасибо за проявленное внимание к моему посту.
Применить можешь. Подведи мышку к коду, дальше как на картинке
Миниатюры
Нажмите на изображение для увеличения
Название: lispcopyclipboard.png
Просмотров: 28
Размер:	67.2 Кб
ID:	198207  
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 26.01.2018, 14:07
1 | #37
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от sherw00d Посмотреть сообщение
koMon, я не могу проверить ваш код, я не пишу лиспы, вы можете выложить файл в формате LSP?
Не был здеся со вчерашнего дня, не знаю удалось ли вам загрузить лисп и как всё закончилось, но от себя хочу сказать буквально следующее:

меня, что уже хакнули kaMon???))))

sherw00d, не надо писаь лиспы, чтобы их пробовать. это простые текстовые файлы. всё что нужно для их использования - это сохранение их на какой-то носитель в виде *.lsp и дальнейшая загрузка в автокаде тем или иным способом. я думаю здесь, на форуме можно найти немеряно описалок как это сделать)) VVA кстати вполне доходчиво показал как это сделать с веб-страницы. выкладываю текстовый лисп на ВПЖ.

Offtop:
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Да вообще, koMon, разве так можно издеваться над человеком - съездите к нему в командировку, поставьте лисп на комп, проведите мастер-тренинг..

зачёт)))

Цитата:
Сообщение от Bаxa Посмотреть сообщение
а вот то, что kaMon потакает такого рода хотелкам, вот это грустно. Видимо молод и зуд на кончиках пальцев еще не прошел.
sherw00d попросил хелпа, я попытался помочь, из "домашних" заготовок "слепив" пп. 1-3 из шапки. Заняло это у меня макс 15 мин с ниписанием поста и т.д., но я всё-же надеялся услышать что-то подобно-близкое...)

Offtop:
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
это личное дело каждого, и koMon не первый) Набор программок никогда не превратиться в законченный комплекс со сквозной обработкой информации, но многим фирмам это и не нужно. Мировое сообщество и Аутодеск сделали очень много для популяризации программирования, выложив информацию в свободный доступ - было бы желание облегчить свой труд.

и наверное не крайний)))

Цитата:
Сообщение от Setvar Посмотреть сообщение
P.S. Не люблю программы с выходом по Esc.
я конечно же могу дописать выход по Esc без ошибки, но это не укладыва[лось][ется] в обозначенную тематику))) И кстати там можно выйти по ключевому слову.

Offtop:
Цитата:
Сообщение от Boxa Посмотреть сообщение
Парни красуются друг перед другом.

Offtop: знаешь, я начинаю серьзёзно подумывать о существовании Alter ego)))
Вложения
Тип файла: lsp XY_DText.lsp (2.0 Кб, 9 просмотров)

Последний раз редактировалось koMon, 26.01.2018 в 14:18.
koMon вне форума  
 
Непрочитано 26.01.2018, 14:31
#38
Boxa

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


Цитата:
Сообщение от koMon Посмотреть сообщение
знаешь, я начинаю серьзёзно подумывать о существовании Alter ego)))
Дык весна на улице =о))))) Хотя с другой стороны, выложено одно решение, в формате, которым автор темы не может воспользоваться, зачем выкладывать остальные решения в том же формате? Почему не приложить lsp файл? Вот, вывод, парни скилами мериются... =о)))
Boxa вне форума  
 
Непрочитано 26.01.2018, 14:49
#39
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от Boxa Посмотреть сообщение
Дык весна на улице =о)))))
Впору объявлять соцсоревнование)))
koMon вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Вывод координат точек на чертеже в виде однострочного текста

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт координат выбранных точек в *.txt slan.ru Программирование 184 23.03.2023 08:17
Можно ли каким-то образом выцепить имена слоёв файла в виде обычного текста? deema AutoCAD 3 18.09.2013 12:20
Импорт координат точек из файла съемки тахеометра Trimble M3 в AutoCAD Red Nova Программирование 33 17.05.2011 16:46
Извлечение координат точек кривых в текстовый файл Pollcher AutoCAD 2 20.04.2010 12:15
Экспорт координат привязки текста uamihanik Программирование 8 27.02.2010 11:50