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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Изменение значения системной переменной с помощью окна (Autocad 2008)

Изменение значения системной переменной с помощью окна (Autocad 2008)

Ответ
Поиск в этой теме
Непрочитано 09.10.2016, 15:48 #1
Изменение значения системной переменной с помощью окна (Autocad 2008)
olga87
 
Регистрация: 28.05.2007
Сообщений: 208

Здравствуйте Уважаемые программисты!
Научите пожалуйста, как написать лисп (AutoCAD 2008) для изменения значения системной переменной, например, laylockfadectl, но хотелось бы осуществить следующее: после вызова лиспа появляется небольшое окошко, куда следует ввести новое значение переменной, с кнопкой "ОК" для подтверждения.

Не хотелось бы создавать две кнопки с кодом:

Код:
[Выделить все]
(defun c:laylock0 ()
	(setvar "laylockfadectl" 0)
)
Код:
[Выделить все]
(defun c:laylock50 ()
	(setvar "laylockfadectl" 50)
)
Хочется создать макрос с окошком для ввода нужного значения пользователем.

Заранее спасибо за любые советы!

Последний раз редактировалось olga87, 09.10.2016 в 15:56.
Просмотров: 2562
 
Непрочитано 09.10.2016, 16:22
#2
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,327


Зачем две кнопки.
Создаем команду с таким именем: "$(if,$(eq,$(getvar,laylockfadectl),50),!.)laylockfadectl 50"
На нее вешаем примерно такой макрос: "$M=$(if,$(eq,$(getvar,laylockfadectl),50),^C^C_laylockfadectl 0,^C^C_laylockfadectl 50) "
Вешаем на кнопку или в меню. Все.

P.S. Лучше в меню. Там будет пункт с галочкой если laylockfadectl равно 50
AlexCondor вне форума  
 
Автор темы   Непрочитано 09.10.2016, 16:46
#3
olga87


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


Спасибо за макрос!
Дело в том что он как переключатель с 0 на 50 и наоборот.
Мне бы хотелось чтобы пользователь сам вводил нужное ему число для переменной, например, через появляющееся окошко:

Нажмите на изображение для увеличения
Название: окно.png
Просмотров: 33
Размер:	2.0 Кб
ID:	177428

----- добавлено через ~30 мин. -----
Нашла в интернете код:
Код:
[Выделить все]
(defun c:test (/ *error* oce)    
  (setq *error* myer)                                               
  (*new_setvar*)
  (vl-load-com)
  (*create_dialog*)
  (*load*)
  (*inject_list*) 
  (*set_tile*)
  (*mode_tile*)
  (*action_tile*)                      
  (setq ans (start_dialog)) 
  (if
    (= ans 2)
    (progn
      (alert (strcat "\nAre you sure to want try again"
		     "\nplease type test...and hit enter"))
      (unload_dialog dcl_id)
      (exit)
      )                                                       ; progn
    (progn                                                    
      (put here your code)
      )                                                       ; progn
    )                                                         ; if 
  
  (*return_setvar*)
  (setq *error* nil)
  (princ)
  )                                                ; end of program

(defun myer (msg)
  (setvar "osmode" oom)
  (setvar "cmdecho" oce)
  (setq att "***Resetting system variable was done***")
  (princ att)
  )

(defun *new_setvar* ()
  (setq oom (getvar "osmode"))                                      ; get osmode setting
  (setvar "osmode" 0)                                               ; osmode set to 0
  (setq oce (getvar "cmdecho"))                                     ; get cmdecho setting
  (setvar "cmdecho" 0)                                              ; cmdecho set to 0
  )

(defun *return_setvar* ()
  (setvar "osmode" oom)                            ; return setting
  (setvar "cmdecho" oce)                           ; return setting
  )

(defun *create_dialog* ()
  (setq fname (vl-filename-mktemp "dcl.dcl"))
  (setq fn (open fname "w"))
  (write-line "temp : dialog {label = \"L BOLT SELECTION\";
                              width = 20;
                              height = 15;
                    : list_box {label = \"Select Type of Bolt\";
                                key = \"typ\";
                                height = 8;
                                allow_accept = true;
                                value = 4;}
                    : radio_column {label = \"Select Metric/Inch :\";
                    : radio_button {label = \"Metric Type\";
                                    key = \"met\";
                                    value = 1;}
                    : radio_button {label = \"Inch Type <not yet available>\";
                                    key = \"inc\";}}
                    : button {label = \"Click location for Object\";
                              key = \"loc\";
                              alignment = right;
                              edit_width = 5;
                              fixed_height = true;
                              fixed_width = 5;
                              height = 1;}                  
                    : edit_box {label = \"Length of Bolt (mm)\";
                                key = \"len\";
                                edit_width = 5;
                                allow_accept = true;
                                value = 50;}
                                ok_cancel ;
                    : text_part {label = \"Designed and Created\";}
                    : text_part {label = \"By                 : Adesu\";}
                    : text_part {label = \"Home Page  : http://www.yuasa-battery.co.id\";}
                    : text_part {label = \"Email            : [email protected]\";}
                    }" fn)
  (close fn)
  )                                                            ;defun

(defun *load* ()
  (setq dcl_id (load_dialog fname))
  (if
    (not (new_dialog "temp" dcl_id))
    (exit)
    )
  )

(defun *inject_list* ()
  (setq names '("M4x0.7" "M5x0.8" "M6x1" "M8x1.25"
		    "M10x1.5" "M12x1.75" "M14x2" "M16x2"
		    "M20x2.5" "M24x3"))  
  (start_list "typ")		                ; start the list box 
  (mapcar 'add_list names)		        ; fill the list box  
  (end_list)
  )

(defun *set_tile* ()
  (set_tile "ty" "5")
  (set_tile "le" "50")
  )

(defun *mode_tile* ()
  (mode_tile "ty" 2)
  (mode_tile "inc" 1)                          ; to set off
  (mode_tile "le" 2)
  )
  
(defun *action_tile* ()
  (action_tile "ty" "(setq tip (get_tile \"ty\"))")                             
  (action_tile "met" "(setq met 1)")                             
  (action_tile "inc" "(setq inc 0)")           
  (action_tile "le" "(setq len (atoi $value))")                             
  (action_tile "accept" "(done_dialog 1)")
  (action_tile "cancel" "(done_dialog 0)")
  )
Хотелось бы что-то подобное с одним окошком для ввода значения переменной.

----- добавлено через ~1 ч. -----
Помогите пожалуйста исправить код ниже, чтобы при вводе значения в edit_box, это значение назначалось переменной laylockfadectl:
Код:
[Выделить все]
(defun c:test ()
(defun run_dcl (fname / )
  (if (<= (setq dcl_id (load_dialog fname)) 0)
      (alert "Error loading DCL file.")
      )
    (if (not (new_dialog "CHAN" dcl_id))
      (alert "Error loading  dialog.")
      )
  )
  (defun create_dialog ()
  (setq fb (vl-filename-base (getvar "dwgname")))
  (setq fname (strcat (getvar "dwgprefix") fb  ".dcl"))
  (setq fn (open fname "w"))
  (write-line 
"CHAN : dialog {
        label = \"111\";
	 : edit_box {label = \"222\";
        value = 50;}
     :row {
     ok_cancel;
      }
     :text_part {
         label = \"333\";
      }
     :text_part {
         label = \"444\";
      }
     }
     " fn)
    (close fn)
    (princ)
    )
  (create_dialog)
  (run_dcl fname)
      (action_tile "cancel" "(done_dialog 0)")
      (setq res (start_dialog))
   (unload_dialog dcl_id)
  
  (if (= res 1)
    (progn
    (setvar "laylockfadectl" edit_box) 
    (vl-file-delete fname)
(princ))
(prin1)))

Последний раз редактировалось olga87, 09.10.2016 в 17:17.
olga87 вне форума  
 
Непрочитано 10.10.2016, 17:22
1 | #4
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,327


Я тоже не программист, но попробую ...
Нет проверки значений, ну и выбора, как у вас на рисунке.
Но в принципе, задачу поставленную в топике, решает.

Последний раз редактировалось AlexCondor, 29.01.2018 в 14:28.
AlexCondor вне форума  
 
Автор темы   Непрочитано 10.10.2016, 19:13
#5
olga87


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


Спасибо большое!
olga87 вне форума  
 
Непрочитано 10.10.2016, 20:08
#6
Кулик Алексей aka kpblc
Moderator

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


Делать целый диалог ради одной переменной... Да еще и прямо в код прописывать все. ИМХО нерационально.
На работе оставил код, надо будет попробовать - завтра выложу что-то поинтереснее.

----- добавлено через ~12 ч. -----
Во, если охота заморачиваться именно с диалогом:
Код:
[Выделить все]
 (vl-load-com)
(setq *kpblc-adoc* (vla-get-activedocument (vlax-get-acad-object))
      *kpblc-ver*  "0.1"
      ) ;_ end of setq

(defun make-sysvars (lst / fun_callback _kpblc-conv-value-to-string _kpblc-eval-value-round _kpblc-list-add-or-subst dcl_file dcl_handle dcl_id dcl_lst dcl_res err_lst err)
                    ;|
*    Выводит диалог с перечнем системных переменных и их возможными значениями
*    Параметры вызова:
  lst    список переменных вида
     '((("name" . "SysVarName") ("min" . <Минимальное значение>) ("max" . <Максимальное значение>))
       (("name" . "SysVarName") ("min" . <Минимальное значение>) ("max" . <Максимальное значение>))
       <...>
       (("name" . "SysVarName") ("min" . <Минимальное значение>) ("max" . <Максимальное значение>))
       )
|;
  (defun fun_callback (key value ref-lst / tmp)
    (setq tmp (getvar key))
    (set ref-lst
         (_kpblc-list-add-or-subst (eval ref-lst)
                                   key
                                   (cond ((= (type tmp) 'int) (atoi value))
                                         ((= (type tmp) 'real) (atof value))
                                         (t value)
                                         ) ;_ end of cond
                                   ) ;_ end of _kpblc-list-add-or-subst
         ) ;_ end of set
    ) ;_ end of defun
  (defun _kpblc-list-add-or-subst (lst key value)
    (if (not value)
      (vl-remove-if (function (lambda (x) (= (car x) key))) lst)
      (if (cdr (assoc key lst))
        (subst (cons key value) (assoc key lst) lst)
        (cons (cons key value) (vl-remove-if (function (lambda (x) (= (car x) key))) lst))
        ) ;_ end of if
      ) ;_ end of if
    ) ;_ end of defun
  (defun _kpblc-conv-value-to-string (value /)
    (cond ((= (type value) 'str) value)
          ((= (type value) 'int) (itoa value))
          ((and (= (type value) 'real)
                (equal value (_kpblc-eval-value-round value 1.) 1e-6)
                (equal value (fix value) 1e-6)
                ) ;_ end of and
           (itoa (fix value))
           )
          ((and (= (type value) 'real)
                (equal value (_kpblc-eval-value-round value 1.) 1e-6)
                (not (equal value (fix value) 1e-6))
                ) ;_ end of and
           (rtos value 2)
           )
          ((= (type value) 'real) (rtos value 2 14))
          ((not value) "")
          (t (vl-princ-to-string value))
          ) ;_ end of cond
    ) ;_ end of defun
  (defun _kpblc-eval-value-round (value to)
    ;; http://forum.dwg.ru/showthread.php?p=301275
    (if (zerop to)
      value
      (* (atoi (rtos (/ (float value) to) 2 0)) to)
      ) ;_ end of if
    ) ;_ end of defun
  (if lst
    (progn (setq dcl_file   (strcat (vl-string-right-trim "\\"
                                                          (cond ((= (type (setq _tmp (vl-registry-read "HKEY_CURRENT_USER\\Environment" "Temp"))) 'list)
                                                                 (strcat (getenv "USERPROFILE") (vl-string-left-trim "%USERPROFILE%" (strcase (cdr _tmp))))
                                                                 )
                                                                ((= (type _tmp) 'str) _tmp)
                                                                (t (getenv "TEMP"))
                                                                ) ;_ end of cond
                                                          ) ;_ end of vl-string-right-trim
                                    "\\dlg.dcl"
                                    ) ;_ end of strcat
                 lst        (vl-remove-if-not (function (lambda (x) (and (getvar (cdr (assoc "name" x))) (apply 'and (mapcar (function cdr) x)))))
                                              (mapcar (function
                                                        (lambda (x) (list (cons "name" (strcase (cdr (assoc "name" x)) t)) (assoc "min" x) (assoc "max" x)))
                                                        ) ;_ end of function
                                                      lst
                                                      ) ;_ end of mapcar
                                              ) ;_ end of vl-remove-if-not
                 dcl_handle (open dcl_file "w")
                 dcl_lst    (mapcar (function (lambda (x) (cons (cdr (assoc "name" x)) (getvar (cdr (assoc "name" x)))))) lst)
                 ) ;_ end of setq
           (foreach item (append (list (strcat "dlg:dialog{label=\"Установка переменных v." *kpblc-ver* "\";"))
                                 (apply (function append)
                                        (mapcar (function
                                                  (lambda (x)
                                                    (append (list ":row{"
                                                                  (strcat ":edit_box{key=\"" (cdr (assoc "name" x)) "\";label=\"" (cdr (assoc "name" x)) "\";}")
                                                                  ) ;_ end of list
                                                            (mapcar (function (lambda (a)
                                                                                (strcat ":text{label=\""
                                                                                        (car a)
                                                                                        "\";value=\""
                                                                                        (cdr a)
                                                                                        " "
                                                                                        (_kpblc-conv-value-to-string (cdr (assoc (car a) x)))
                                                                                        "\";}"
                                                                                        ) ;_ end of strcat
                                                                                ) ;_ end of lambda
                                                                              ) ;_ end of function
                                                                    '(("min" . "От") ("max" . "до"))
                                                                    ) ;_ end of mapcar
                                                            '("}")
                                                            ) ;_ end of append
                                                    ) ;_ end of lambda
                                                  ) ;_ end of function
                                                lst
                                                ) ;_ end of mapcar
                                        ) ;_ end of apply
                                 '("ok_cancel;" "}")
                                 ) ;_ end of append
             (write-line item dcl_handle)
             ) ;_ end of foreach
           (close dcl_handle)
           (setq dcl_id (load_dialog dcl_file))
           (new_dialog "dlg" dcl_id "(fun_callback $key $value 'dcl_lst)")
           (foreach item dcl_lst (set_tile (car item) (_kpblc-conv-value-to-string (cdr item))))
           (action_tile "accept" "(done_dialog 1)")
           (action_tile "cancel" "(done_dialog 0)")
           (setq dcl_res (start_dialog))
           (unload_dialog dcl_id)
           (if (= dcl_res 1)
             (progn (vla-startundomark *kpblc-adoc*)
                    (foreach item dcl_lst
                      (if (vl-catch-all-error-p
                            (setq err (vl-catch-all-apply (function (lambda () (setvar (car item) (cdr item))))))
                            ) ;_ end of VL-CATCH-ALL-ERROR-P
                        (setq err_lst (cons (strcat "SetVar : "
                                                    (car item)
                                                    " set to "
                                                    (_kpblc-conv-value-to-string (cdr item))
                                                    " error : "
                                                    (vl-catch-all-error-message err)
                                                    ) ;_ end of strcat
                                            err_lst
                                            ) ;_ end of cons
                              ) ;_ end of setq
                        ) ;_ end of if
                      ) ;_ end of foreach
                    (if err_lst
                      (princ (apply (function strcat) err_lst))
                      ) ;_ end of if
                    (vla-endundomark *kpblc-adoc*)
                    ) ;_ end of progn
             ) ;_ end of if
           ) ;_ end of progn
    ) ;_ end of if
  (princ)
  ) ;_ end of defun

(defun c:set-sysvars ()
  (make-sysvars '((("name" . "blipmode") ("min" . 0) ("max" . 1))
                  (("name" . "filedia") ("min" . 0) ("max" . 1))
                  (("name" . "laylockfadectl") ("min" . -90) ("max" . 90))
                  )
                ) ;_ end of make-sysvars
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.10.2016, 12:32
#7
frostmourn


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


Так не всегда все поля видно. Как минимум, можно группировку в колонку сделать...
frostmourn вне форума  
 
Непрочитано 11.10.2016, 12:48
#8
Кулик Алексей aka kpblc
Moderator

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


Можно. Делай.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.10.2016, 13:07
#9
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,327


Кулик Алексей aka kpblc,
Просто ради интереса попробовал... В диалоговом окне не отображается надпись "-90" для laylockfadectl (От до 90).

P.S. Если дальше усовершенствовать получится новая версия редактора переменных из ET.
Или диалог для, кажется вашей же, программы сравнения списков переменных
AlexCondor вне форума  
 
Непрочитано 11.10.2016, 20:52
#10
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
 (vl-load-com)
(setq *kpblc-adoc* (vla-get-activedocument (vlax-get-acad-object))
      *kpblc-ver*  "0.1"
      ) ;_ end of setq

(defun make-sysvars (lst / fun_callback _kpblc-conv-value-to-string _kpblc-eval-value-round _kpblc-list-add-or-subst dcl_file dcl_handle dcl_id dcl_lst dcl_res err_lst err)
                    ;|
*    Выводит диалог с перечнем системных переменных и их возможными значениями
*    Параметры вызова:
  lst    список переменных вида
     '((("name" . "SysVarName") ("min" . <Минимальное значение>) ("max" . <Максимальное значение>))
       (("name" . "SysVarName") ("min" . <Минимальное значение>) ("max" . <Максимальное значение>))
       <...>
       (("name" . "SysVarName") ("min" . <Минимальное значение>) ("max" . <Максимальное значение>))
       )
|;
  (defun fun_callback (key value ref-lst / tmp)
    (setq tmp (getvar key))
    (set ref-lst
         (_kpblc-list-add-or-subst (eval ref-lst)
                                   key
                                   (cond ((= (type tmp) 'int) (atoi value))
                                         ((= (type tmp) 'real) (atof value))
                                         (t value)
                                         ) ;_ end of cond
                                   ) ;_ end of _kpblc-list-add-or-subst
         ) ;_ end of set
    ) ;_ end of defun
  (defun _kpblc-list-add-or-subst (lst key value)
    (if (not value)
      (vl-remove-if (function (lambda (x) (= (car x) key))) lst)
      (if (cdr (assoc key lst))
        (subst (cons key value) (assoc key lst) lst)
        (cons (cons key value) (vl-remove-if (function (lambda (x) (= (car x) key))) lst))
        ) ;_ end of if
      ) ;_ end of if
    ) ;_ end of defun
  (defun _kpblc-conv-value-to-string (value /)
    (cond ((= (type value) 'str) value)
          ((= (type value) 'int) (itoa value))
          ((and (= (type value) 'real)
                (equal value (_kpblc-eval-value-round value 1.) 1e-6)
                (equal value (fix value) 1e-6)
                ) ;_ end of and
           (itoa (fix value))
           )
          ((and (= (type value) 'real)
                (equal value (_kpblc-eval-value-round value 1.) 1e-6)
                (not (equal value (fix value) 1e-6))
                ) ;_ end of and
           (rtos value 2)
           )
          ((= (type value) 'real) (rtos value 2 14))
          ((not value) "")
          (t (vl-princ-to-string value))
          ) ;_ end of cond
    ) ;_ end of defun
  (defun _kpblc-eval-value-round (value to)
    ;; http://forum.dwg.ru/showthread.php?p=301275
    (if (zerop to)
      value
      (* (atoi (rtos (/ (float value) to) 2 0)) to)
      ) ;_ end of if
    ) ;_ end of defun
  (if lst
    (progn (setq dcl_file   (strcat (vl-string-right-trim "\\"
                                                          (cond ((= (type (setq _tmp (vl-registry-read "HKEY_CURRENT_USER\\Environment" "Temp"))) 'list)
                                                                 (strcat (getenv "USERPROFILE") (vl-string-left-trim "%USERPROFILE%" (strcase (cdr _tmp))))
                                                                 )
                                                                ((= (type _tmp) 'str) _tmp)
                                                                (t (getenv "TEMP"))
                                                                ) ;_ end of cond
                                                          ) ;_ end of vl-string-right-trim
                                    "\\dlg.dcl"
                                    ) ;_ end of strcat
                 lst        (vl-remove-if-not (function (lambda (x) (and (getvar (cdr (assoc "name" x))) (apply 'and (mapcar (function cdr) x)))))
                                              (mapcar (function
                                                        (lambda (x) (list (cons "name" (strcase (cdr (assoc "name" x)) t)) (assoc "min" x) (assoc "max" x)))
                                                        ) ;_ end of function
                                                      lst
                                                      ) ;_ end of mapcar
                                              ) ;_ end of vl-remove-if-not
                 dcl_handle (open dcl_file "w")
                 dcl_lst    (mapcar (function (lambda (x) (cons (cdr (assoc "name" x)) (getvar (cdr (assoc "name" x)))))) lst)
                 ) ;_ end of setq
           (foreach item (append (list (strcat "dlg:dialog{label=\"Установка переменных v." *kpblc-ver* "\";"))
                                 (apply (function append)
                                        (mapcar (function
                                                  (lambda (x)
                                                    (append (list ":row{"
                                                                  (strcat ":edit_box{key=\"" (cdr (assoc "name" x)) "\";label=\"" (cdr (assoc "name" x)) "\";}")
                                                                  ) ;_ end of list
                                                            (mapcar (function (lambda (a)
                                                                                (strcat ":text{label=\""
                                                                                        (strcat (cdr (assoc "name" x)) (car a))
                                                                                        "\";value=\""
                                                                                        (cdr a)
                                                                                        " "
                                                                                        (_kpblc-conv-value-to-string (cdr (assoc (car a) x)))
                                                                                        "\";}"
                                                                                        ) ;_ end of strcat
                                                                                ) ;_ end of lambda
                                                                              ) ;_ end of function
                                                                    '(("min" . "От") ("max" . "до"))
                                                                    ) ;_ end of mapcar
                                                            '("}")
                                                            ) ;_ end of append
                                                    ) ;_ end of lambda
                                                  ) ;_ end of function
                                                lst
                                                ) ;_ end of mapcar
                                        ) ;_ end of apply
                                 '("ok_cancel;" "}")
                                 ) ;_ end of append
             (write-line item dcl_handle)
             ) ;_ end of foreach
           (close dcl_handle)
           (setq dcl_id (load_dialog dcl_file))
           (new_dialog "dlg" dcl_id "(fun_callback $key $value 'dcl_lst)")
           (foreach item dcl_lst (set_tile (car item) (_kpblc-conv-value-to-string (cdr item))))
           (action_tile "accept" "(done_dialog 1)")
           (action_tile "cancel" "(done_dialog 0)")
           (setq dcl_res (start_dialog))
           (unload_dialog dcl_id)
           (if (= dcl_res 1)
             (progn (vla-startundomark *kpblc-adoc*)
                    (foreach item dcl_lst
                      (if (vl-catch-all-error-p
                            (setq err (vl-catch-all-apply (function (lambda () (setvar (car item) (cdr item))))))
                            ) ;_ end of VL-CATCH-ALL-ERROR-P
                        (setq err_lst (cons (strcat "SetVar : "
                                                    (car item)
                                                    " set to "
                                                    (_kpblc-conv-value-to-string (cdr item))
                                                    " error : "
                                                    (vl-catch-all-error-message err)
                                                    ) ;_ end of strcat
                                            err_lst
                                            ) ;_ end of cons
                              ) ;_ end of setq
                        ) ;_ end of if
                      ) ;_ end of foreach
                    (if err_lst
                      (princ (apply (function strcat) err_lst))
                      ) ;_ end of if
                    (vla-endundomark *kpblc-adoc*)
                    ) ;_ end of progn
             ) ;_ end of if
           ) ;_ end of progn
    ) ;_ end of if
  (princ)
  ) ;_ end of defun

(defun c:set-sysvars ()
  (make-sysvars '((("name" . "blipmode") ("min" . 0) ("max" . 1))
                  (("name" . "filedia") ("min" . 0) ("max" . 1))
                  (("name" . "laylockfadectl") ("min" . -90) ("max" . 90))
                  )
                ) ;_ end of make-sysvars
  ) ;_ end of defun

Но дальше заниматься как-то интереса особого нет
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.10.2016, 12:30
#11
frostmourn


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


На примере BLIPMODE - позволяет вводить и 5, и -5, и всё что хочешь, о результате остаётся догадываться... lastpoint, по-моему, вообще не поменять.
frostmourn вне форума  
 
Непрочитано 12.10.2016, 12:45
#12
Кулик Алексей aka kpblc
Moderator

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


frostmourn, я привел пример кода, не более.. Если хочется дорабатывать - пожалуйста, никто не запрещает. Контролируй, проверяй, выводи сообщения.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.10.2016, 01:22
#13
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Афтар, ты определись, переключетель тебе нужен или что?
http://help.autodesk.com/view/ACD/20...0-760CB4A7AC20

а вообще туториал по DCL здесь ==> http://web2.airmail.net/terrycad/Tut.../MyDialogs.htm

Последний раз редактировалось gomer, 13.10.2016 в 01:30.
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Изменение значения системной переменной с помощью окна (Autocad 2008)

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа лиспа в AutoCAD 2007 и AutoCAD 2008 olga87 LISP 6 10.10.2016 17:06
dwg по умолчанию не открыть с помощью AutoCAD 2007 EASports AutoCAD 42 15.01.2010 05:56
AutoCAD 2007: ФАТАЛЬНАЯ ОШИБКА..at 69621fadh astim AutoCAD 2 05.02.2009 15:28
Команда _scene в AutoCAD 2007 Alexander_Liseev AutoCAD 2 10.11.2008 12:30
Появление в AutoCAD 2005 новой системной переменной OLEFRAME Георгий AutoCAD 4 03.05.2004 03:34