캐드의 변수는 종종 비트의 합계로 나타낸다.

예를 들어 오스냅의 경우

 

1 : _end
2 : _mid
4 : _cen
8 : _nod
16 : _qua
32 : _int
64 : _ins
128 : _per
256 : _tan
512 : _nea
2048 : _app
8192 : _par

 

인데.. 오스냅을 [ _end + _cen + _int ] 를 한꺼번에 걸고 싶다면.. [ 1 + 4 + 32 ] = 37 이므로...

 

(setvar 'OSMODE 37) 또는 (setvar 'OSMODE (+ 1 4 32)) 로 입력하면 된다.

 

logand 함수는 이 속에 포함된 비트의 존재여부를 반환하게 된다.

예를 들어 37 이라는 숫자에 4 비트가 포함되었는지를 찾고자 한다면..

 

(logand 4 37) : 4 반환

이므로, 4가 포함되었다는 의미이다.

 

즉, 오스냅이 39 : [ _end + _mid + _cen + _int ]로 걸린 상태에서 cen 이 설정되었는지를 검사한 후, 이 cen 을 오스냅에서 빼고 싶다면...

 


(if (= (logand 4 (getvar 'OSMODE)) 4)
   (setvar 'OSMODE (- (getvar 'OSMODE) 4))
)

반환 : 35

 

를 하면, 오스냅에서 _cen 이 빠지게 된다.

만약 _cen 이 걸려 있지 않다면.. nil 을 반환하게 된다.

 

* 입력 숫자는 앞뒤의 숫자가 바뀌어도 결과는 같다.

 

'Lisp & Tips > Lisp' 카테고리의 다른 글

AutoCAD, BricsCAD, GstarCAD, ZWCAD,ZyxCAD 버전 정보  (0) 2023.02.25
도곽선택하여 선축척,치수축척 변경  (0) 2017.08.17
Getfiled 사용법  (0) 2016.12.25
시간과 관련된 함수  (0) 2016.12.04
vl-file-systime 의 사용법  (0) 2016.12.04