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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как в grread получить параметры из командной строки (2013 и выше) - аналогично initget?

Как в grread получить параметры из командной строки (2013 и выше) - аналогично initget?

Ответ
Поиск в этой теме
Непрочитано 20.09.2013, 10:46 #1
Как в grread получить параметры из командной строки (2013 и выше) - аналогично initget?
gavgav
 
Регистрация: 17.09.2013
Сообщений: 3

GRREAD при выборе мышью любого параметра из командной строки ВСЕГДА выдает (11 -1).

(princ "\nNew angle of TEXT [Previus/Multiple]: ")

Как определить, Previus или Multiple???
Просмотров: 2447
 
Непрочитано 20.09.2013, 10:51
#2
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
(initget 128 "Previous Multiple _ P M")
(getangle "\nNew angle [Previous/Multiple] : ")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 20.09.2013, 11:52
#3
gavgav


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


(initget 128 "Previous Multiple _ P M")
(getangle "\nNew angle [Previous/Multiple] : ")
Это здорово! Однако, вопрос: Как в GRREAD получить параметры из командной строки при выборе параметра мышью?
Код:
[Выделить все]
      (princ "\nNew angle of ATTRIB [Previus/0.0/Multiple]: ")
      (while Loop
         (setq po (grread T (+ 1 2 4 8) 0))
         (if (not po) (exit))
         (cond
            ((= 25 (car po))                 ; Mouse - right button
               (vla-put-Rotation ev an)
               (setq Loop nil)
            )
            ((= 3 (car po))                  ; Mouse - left button
               (setq Loop nil)
            )
            ((=  2 (car po))                 ; Keyboard
               (cond
                  ((= 13 (cadr po))          ; Enter
                     (vla-put-Rotation ev an)
                     (setq Loop nil)
                  )
                  ((= 32 (cadr po))          ; Space
                     (vla-put-Rotation ev an)
                     (setq Loop nil)
                  )
                  ((or (= 77  (cadr po))     ; M or m
                       (= 109 (cadr po)) 
                   );or
                   ;select multiple
                     (vla-put-Rotation ev AR:an)
                     (setq RM:AttTag (dxf 2 ed)
                           BName (GetBlockName ev)
                     )
                     (setq Loop nil)
                  )
                  ((or (= 80  (cadr po))     ; P or p
                       (= 112 (cadr po)) 
                   );or
                     (vla-put-Rotation ev AR:an)
                     (setq Loop nil)
                     (princ "P")
                  )
                  ((or (= 48 (cadr po))      ; 0 or )
                       (= 41 (cadr po))  
                   );or
                     (vla-put-Rotation ev (- (getvar "VIEWTWIST")))
                     (setq Loop nil)
                     (princ "0.0")
                  )
                  (T (vla-put-Rotation ev an)
                     (setq Loop nil)
                  )
               );cond
            )
            ((and (= 11 (car po)) (= -1 (cadr po)))   ; CommandLine  
               (vla-put-Rotation ev AR:an)                ; Previus
               (setq Loop nil)
               (princ "P")
            )
            ((= 5 (car po))
               ;(setq pt (trans (osnap (cadr po) snp) 1 0))
               (setq pt (trans (cadr po) 1 0))
               (vla-put-Rotation ev (angle ipt pt))
               (vla-put-EndPoint ln (vlax-3D-point pt))
            )
            (T (vla-put-Rotation ev an)
               (setq Loop nil)
            )
         );cond
      );while

Последний раз редактировалось Кулик Алексей aka kpblc, 20.09.2013 в 12:02.
gavgav вне форума  
 
Непрочитано 20.09.2013, 12:06
#4
Кулик Алексей aka kpblc
Moderator

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


Не советую динамически менять примитив - прилично ресурсов будет сожрано впустую.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 20.09.2013, 12:08
#5
gavgav


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


Извините, не понял: "динамически менять примитив "?
gavgav вне форума  
 
Непрочитано 20.09.2013, 17:18
#6
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Наверняка задача получать что-то из командной строки с помощью grread надумана. Из командной строки вообще незачем что-то получать - надо использовать функции ввода.
Функция grread нужна очень редко, именно тогда, когда надо что-то менять именно динамически.
Вот, например динамическое стирание:
Код:
[Выделить все]
 (defun rubber (/ key mode point selection *error*)

  (defun *error* (msg)
;;    (ru-obj-undo-end)
    (vl-cmdf  "_.U")
    (princ "\nСтирание отменено\n")
    (princ)
  ) ;_ end of defun

 ;; (ru-obj-undo-begin)
  (setq key 3
        mode t
  )
  (while (or (= key 3) (= key 5))
    (cond ((= key 3)
           (princ
             (if (setq mode (not mode))
               "\nРежим ЛАСТИК (клик = приостановить стирание) <Выход>"
               "\nУкажи точку для запуска режима ЛАСТИК <Выход>"
             )
           )
          )
          ((not mode))
          (t
           (if (setq selection (ssget (cadr point)))
             (entdel (ssname selection 0))
           ) ;_ end of if
          )
    ) ;_ end of cond
    (setq key (car (setq point (grread t 4 2))))
  ) ;_ end of while
  (princ "\nРабота команды завершена.")
 ;; (ru-obj-undo-end)
  (princ)
) ;_ end of defun
"Динамика" в том, что можно не выбирать примитивы, а просто "смахивать" их мышкой.
ShaggyDoc вне форума  
 
Непрочитано 20.09.2013, 23:07
#7
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


grread - довольно устаревшая функция. В те времена, когда ее придумали, никто и представить не мог, что параметры из комстроки можно будет мышкой выбирать.Так что, вряд ли что то толковое получится из этой затеи.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как в grread получить параметры из командной строки (2013 и выше) - аналогично initget?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить значение командной строки shprot Программирование 2 29.04.2012 22:51