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

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

Включение полярного слежения через LISP

Ответ
Поиск в этой теме
Непрочитано 06.10.2011, 11:48
Включение полярного слежения через LISP
semvb
 
Инженер-технолог
 
Мурманск
Регистрация: 18.11.2003
Сообщений: 180

Многие утилиты переключают режим рисования в ортогональный "orthomode", по завершении функций утилиты приходится вручную включать полярное слежение (кнопкой или F10) - надоело, в литературе не нашел имени переменной, отвечающей за включение этого режима. Существует ли возможность включения режима полярного слежения через LISP?
Просмотров: 4063
 
Автор темы   Непрочитано 10.10.2011, 08:48
#21
semvb

Инженер-технолог
 
Регистрация: 18.11.2003
Мурманск
Сообщений: 180


Причина открытия ветки форума:
Когда-то нарыл (где-то) программку (одну из нескольких к которым привык и отказываться жалко), рисующую перпендикуляр к различным примитивам. После выполнения функции оставался включенным режим ОРТО, что само по себе несколько раздражало. Благодаря советам сделал так, может и неправильно, но работает!

Код:
[Выделить все]
(defun c:per(/ oldEcho oldOsm uPnt sSet oldOrt
        sCurve Dr Ang1 Ang2 pt1 pt2 *error*)

  (vl-load-com)

  (defun *error* (msg)
    (setvar "ORTHOMODE" oldOrt)
    (command "_.ucs" "_p")
    (command "_.ucs" "_p")
    (setvar "CMDECHO" oldEcho)
    (setvar "OSMODE" oldOsm)
    (princ)
    ); end of *error*
  
  (setvar "autosnap" 63)
  (setq oldEcho(getvar "CMDECHO")
        oldOsm(getvar "OSMODE")
        oldOrt(getvar "ORTHOMODE")
	oldpolar (getvar "autosnap") 
   ); end setq
  (setvar "CMDECHO" 0)
  (setvar "OSMODE" 819)
  (command "_.ucs" "_w")
  (if
    (and
    (setq uPnt(getpoint "\nУкажите точку на линии или кривой "))
    (setq sSet(ssget uPnt '((0 . "*LINE,ARC,ELLIPSE,CIRCLE,RAY,XLINE")
               (-4 . "<NOT")(0 . "MLINE")(-4 . "NOT>"))))
    (setq sCurve(vlax-ename->vla-object(ssname sSet 0)))
    (setq Dr(vlax-curve-getFirstDeriv sCurve
      (vlax-curve-getParamAtPoint sCurve uPnt)))
     ); end and
    (progn
      (if(=(cadr dr) 0.0)
  (setq Ang1 0.0)
  (setq Ang1(- pi(atan(/(car dr)(cadr dr)))))
  ); end if
      (setq Ang2(- Ang1(/ pi 2))
      pt1 (polar uPnt Ang1 1.0)
      pt2 (polar uPnt Ang2 1.0)
      ); end setq
      (setvar "OSMODE" 0)
      (command "_.ucs" "_3" uPnt pt1 pt2)
      (setvar "ORTHOMODE" 1)
      (princ "\nУкажите направление и длину перпендикуляра: ")
      (command "_.line" (trans uPnt 0 1) pause "")
      (command "_.ucs" "_p")
      (command "_.ucs" "_p")
      (setvar "ORTHOMODE" oldOrt)
      ); end progn
    ); end if
  (setvar "CMDECHO" oldEcho)
  (setvar "OSMODE" oldOsm)
  (setvar "autosnap" oldpolar) 
  (princ)
  ); end of c:per
semvb вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Включение полярного слежения через LISP



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как настроить выход в интернет с комуникатора через блютуз и ПК KonGo Разное 15 01.04.2010 18:46
Как получить цвет фона модели ACAD через LISP? EfremenkoDO LISP 3 24.03.2010 12:09
Hidden через lisp worlak LISP 1 03.09.2006 18:44
Как можно открыть чертеж через LISP на котором стоит пароль? ivspec LISP 7 10.02.2006 17:36
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19