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

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

AutoLisp.Как определить с помощью Lispa, текущие автопривязки.

Ответ
Поиск в этой теме
Непрочитано 08.02.2011, 11:25 #1
AutoLisp.Как определить с помощью Lispa, текущие автопривязки.
lastloch
 
Регистрация: 23.12.2010
Сообщений: 65

Может кто подскажет, как получить Lisp-ом список включенных в данный момент объектных привязок?
Просмотров: 3954
 
Непрочитано 08.02.2011, 11:26
#2
Лиспер


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


osmode разбирать по составляющим.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 08.02.2011, 11:39
#3
lastloch


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


Цитата:
Сообщение от Лиспер Посмотреть сообщение
osmode разбирать по составляющим.
Тогда уж подскажите, если не трудно, как ковыряться в энтой цифири?
lastloch вне форума  
 
Непрочитано 08.02.2011, 11:47
#4
Лиспер


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


osmode
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 08.02.2011, 13:02 Программно изменить OSMODE
2 | #5
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Цитата:
Сообщение от lastloch Посмотреть сообщение
Тогда уж подскажите, если не трудно, как ковыряться в энтой цифири?
Это степень двойки. Пока что задействовано 13 битов (2^13 степени)
Ковырять так
По ссылке выше смотрим, что конточка имеет значение 1
Код:
[Выделить все]
(if (= 1 (logand (getvar "OSMODE") 1))(alert "Конточка включена"))
По ссылке выше смотрим, что квадрант имеет значение 16
Код:
[Выделить все]
(if (= 16 (logand (getvar "OSMODE") 16))(alert "Квадрант включен"))
и т.д
Еще пример
Код:
[Выделить все]
(defun osmcheck ( / OsmList ret)
(setq OsmList (list
'("ENDPOINT" 1)
'("MIDPOINT" 2)
'("CENTER" 4)
'("NODE" 8)
'("QUADRANT" 16)
'("INTERSECTION" 32)
'("INSERTION" 64)
'("PERPENDICULAR" 128)
'("TANGENT" 256)
'("NEAREST" 512)
'("APPARENT" 2048)
'("EXTENSION" 4096)
'("PARALLEL" 8192)
)
)
  (foreach x OsmList
    (if (= (cadr x)(logand (getvar "OSMODE")(cadr x)))
      (setq ret (cons (car x) ret))
           )
    )
  ret
  )
Использование
Цитата:
Команда: (osmcheck)
("NEAREST" "NODE" "MIDPOINT" "ENDPOINT")
Теперь еще один пример: как добавить/удалить нужную привязку к уже включенным
Код:
[Выделить все]
;;;Программно включаем привязку NODE, не трогая остальные
  (setvar "OSMODE" (boole 7 (getvar "OSMODE") 8)) ;;_Код NODE=8
;;;Программно выключаем привязку NEAREST, не трогая остальные
  (setvar "OSMODE" (boole 2 (getvar "OSMODE") 512)) ;;_Код  NEAREST=512
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 29.11.2011 в 12:03. Причина: добавление
VVA вне форума  
 
Автор темы   Непрочитано 08.02.2011, 14:02
#6
lastloch


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


Спасибо VVA, увы, не знал о существовании logand. А если бы и знал, все равно не понял бы, что эта функция делает.

Последний раз редактировалось lastloch, 08.02.2011 в 14:07.
lastloch вне форума  
 
Непрочитано 14.05.2012, 16:39
#7
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,992


Цитата:
Сообщение от VVA Посмотреть сообщение
(if (= 1 (logand (getvar "OSMODE") 1))(alert "Конточка включена"))
Цитата:
Сообщение от VVA Посмотреть сообщение
(if (= 16 (logand (getvar "OSMODE") 16))(alert "Квадрант включен"))
Цитата:
Сообщение от VVA Посмотреть сообщение
;;;Программно включаем привязку NODE, не трогая остальные
(setvar "OSMODE" (boole 7 (getvar "OSMODE") 8)) ;;_Код NODE=8
;;;Программно выключаем привязку NEAREST, не трогая остальные
(setvar "OSMODE" (boole 2 (getvar "OSMODE") 512)) ;;_Код NEAREST=512
Товарищи!!! Помогите с аналогичным кодом на VBA.
Nike вне форума  
 
Непрочитано 14.05.2012, 19:19
#8
gomer

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


Цитата:
Сообщение от Nike Посмотреть сообщение
Товарищи!!! Помогите с аналогичным кодом на VBA.
Код:
[Выделить все]
Sub test()
 If 16 And ThisDrawing.GetVariable("OSMODE") Then
   MsgBox "Квадрант включен"
 Else
   MsgBox "Квадрант не включен"
 End If
End Sub
gomer вне форума  
 
Непрочитано 16.05.2012, 13:16
#9
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,992


gomer, спасибо, а
Цитата:
(setvar "OSMODE" (boole 7 (getvar "OSMODE") 8)) ;;_Код NODE=8
и
Цитата:
(setvar "OSMODE" (boole 2 (getvar "OSMODE") 512)) ;;_Код NEAREST=512
сляпать на VBA можно?
Nike вне форума  
 
Непрочитано 16.05.2012, 16:07
#10
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


судя по описанию boole boole 7 = OR
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 16.05.2012, 19:00
#11
gomer

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


Цитата:
Сообщение от VVA Посмотреть сообщение
судя по описанию boole boole 7 = OR
XOR
http://visualbasic.about.com/od/usin...bitops01_3.htm
http://support.microsoft.com/kb/113476
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > AutoLisp.Как определить с помощью Lispa, текущие автопривязки.

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как с помощью lisp'a открыть чертеж, на который поставлен пароль? annt LISP 2 09.03.2010 21:41
Подскажите, как с помощью гибкости элемента определить коэф. продольного изгиба центрально-сжатых элементов!!! Владимир чувашия Конструкции зданий и сооружений 2 13.01.2010 16:32
Можно ли определить физико-механические свойтсва грунта с помощью геофизики? poligraph Основания и фундаменты 15 03.09.2009 22:06
Выбор стиля мультивыноски с помощью Lispa E-degtyarev LISP 2 14.07.2009 11:18