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

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

Помогите закончить макрос!

Ответ
Поиск в этой теме
Непрочитано 26.10.2018, 09:03 #1
Помогите закончить макрос!
ИН}|{ЕНЕР
 
Регистрация: 20.01.2010
Сообщений: 14

Здравствуйте. Есть задача проставить кучу координат на генплане. Для этих целей скачал lisp geo_koord_mleader. Все классно работает, но есть одно неудобство. Работаю на различных видовых экранах в произвольной ПСК, а координаты нужно проставить в мировой системе. Не люблю клацать каждый раз руками (очень я ленивый человек), решил попробовать макрос. Вот что сделал сам: ^C^C_ucs;м;;^C^C^P_geo_koord_mleader;. Сделал кнопку, при нажатии на которую, система координат меняется на МСК и запускается команда проставления координат. Но как я не крутил, не смог сделать так, чтобы по окончании простановки координат и выходе из команды система координат менялась на первоначальную ПСК. Если это возможно, то подскажите, как это сделать!
Просмотров: 3279
 
Непрочитано 26.10.2018, 10:03
#2
alex101000


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


Сохранение и восстановление именованных определений ПСК.
Возможно, стоит сначала сохранить первую ПСК, далее - выполнить требуемое, а затем восстановить сохраненную вначале ПСК ?
alex101000 вне форума  
 
Автор темы   Непрочитано 26.10.2018, 10:11
#3
ИН}|{ЕНЕР


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


Цитата:
Сообщение от alex101000 Посмотреть сообщение
Сохранение и восстановление именованных определений ПСК.
Возможно, стоит сначала сохранить первую ПСК, далее - выполнить требуемое, а затем восстановить сохраненную вначале ПСК ?
Это не совсем то. Мне-то не сложно нажать кнопку "Вид" на панели ПСК после того, как проставлены координаты, но хочется, чтоб за меня это сделала машина
ИН}|{ЕНЕР вне форума  
 
Непрочитано 26.10.2018, 10:23
#4
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,776


_ucs _p
engngr вне форума  
 
Автор темы   Непрочитано 26.10.2018, 10:43
#5
ИН}|{ЕНЕР


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


engngr, не все так просто. Координаты ставятся бесконечно, т.е. чтобы завершить команду, нужно нажать esc. В макросе нужно как-то это отразить.
ИН}|{ЕНЕР вне форума  
 
Непрочитано 26.10.2018, 11:05
#6
frostmourn


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


(command "_ucs" "_p") в конце программы?
frostmourn вне форума  
 
Непрочитано 26.10.2018, 11:13
#7
koMon


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


Цитата:
Сообщение от ИН}|{ЕНЕР Посмотреть сообщение
Работаю на различных видовых экранах в произвольной ПСК, а координаты нужно проставить в мировой системе.
вероятнее проще всего добавить в лисп пересчёт координат из ПСК в МСК -> заменить (setq koord (getpoint "\nТочка <Выход>")) на (setq koord (trans (getpoint "\nТочка <Выход>") 1 0))
хотя нужно код лиспа посмотреть, я увидел для leader. для mleader так же.
koMon вне форума  
 
Автор темы   Непрочитано 26.10.2018, 11:27
#8
ИН}|{ЕНЕР


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


koMon, идея хорошая, но в ПСК ставит выноску, начало которой уходит куда-то в бесконечность. Видимо в коде нужно что-то изменить
ИН}|{ЕНЕР вне форума  
 
Непрочитано 26.10.2018, 11:34
#9
koMon


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


этот код?

Код:
[Выделить все]
 (defun c:geo_koord_mleader (/ pod_z koord  xyz) 
(initget "Да Нет Lf Ytn _ Y N Y N") 
  (setq 
    pod_z (getkword "\nПодписывать Z [Да/Нет] <Нет>? : ") 
  ) 
  (while (and 
      (setq koord (getpoint "\nТочка <Выход>")) 
    ) 
    (setq 
      xyz   (strcat "Y=" (rtos (nth 0 koord) 2 3)"\nX=" (rtos (nth 1 koord) 2 3)(if 
     (= pod_z "Y") 
      (strcat "\nZ=" (rtos (nth 2 koord) 2 3)) 
      "" 
   )) 
    ) 
    (VL-cmdf "_mleader" koord pause  xyz "") 
  ) 
) 

(princ "Вызов фукции: geo_koord_mleader")
----- добавлено через ~5 мин. -----
так должно работать

Код:
[Выделить все]
 (defun c:geo_koord_mleader (/ pod_z koord  xyz)
(initget "Да Нет Lf Ytn _ Y N Y N")
  (setq
    pod_z (getkword "\nПодписывать Z [Да/Нет] <Нет>? : ")
  )
  (while (and
      (setq koord (getpoint "\nТочка <Выход>"))
    )
    (setq xyz (strcat "Y=" (rtos (nth 0 (trans koord 1 0)) 2 3)
	  	              "\nX=" (rtos (nth 1 (trans koord 1 0)) 2 3)
		  		      (if (= pod_z "Y")
					  		(strcat "\nZ=" (rtos (nth 2 (trans koord 1 0)) 2 3))
							""
					  )
			  )
    )
    (VL-cmdf "_mleader" koord pause  xyz "")
  )
)
(princ "Вызов команды: geo_koord_mleader")
(princ)

Последний раз редактировалось koMon, 26.10.2018 в 11:57. Причина: )
koMon вне форума  
 
Автор темы   Непрочитано 26.10.2018, 12:03
#10
ИН}|{ЕНЕР


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


Не пойму почему, но с таким кодом у меня вообще автокад ругается на неизвестную команду

----- добавлено через ~7 мин. -----
Ага, разобрался уже))

----- добавлено через ~15 мин. -----
koMon, спасибо тебе огромное, это даже лучше, чем я себе представлял! Все отлично работает!
ИН}|{ЕНЕР вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Помогите закончить макрос!

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос автоматической штриховки замкнутой полилинии MrBrown Программирование 16 29.04.2014 15:02
Автокад 2014 макрос для функции rEconcile. Valery Brelovsky Программирование 2 18.03.2014 10:44
Создать макрос для самостоятельного выбора элементов в чертеже rtyu Программирование 2 11.03.2014 14:57
Помогите написать макрос для разрыва отрезков и полилиний в AutoCad Green4x Программирование 2 01.12.2013 21:03
Прошу мастеров LISP сделать макрос, автоматически рисующий котлованы Малявка LISP 6 20.04.2013 12:06