안녕하세요.
저번에 만들던걸 마저 작성하던중에
while 내에서 grread 로 얻은 좌표로 스냅표시가 제대로 되지 않았습니다.
이리저리 구글링해서
http://www.theswamp.org/index.php?topic=12813.msg157794#msg157794
관련 해결법을 찾고 결국 리맥님의 DynOffV2-1 리습에서 정상적으로 동작하는걸 보고
http://www.lee-mac.com/dynamicoffset.html
초기화하는거랑
(setq doc (vla-get-ActiveDocument
(vlax-get-acad-object))
drft (vla-get-drafting
(vla-get-preferences
(vlax-get-acad-object)))
osGrv (osmode-grvecs-lst
(vla-get-AutoSnapMarkerColor drft)
(vla-get-AutoSnapMarkerSize drft)))
(setq ObjLst (mapcar ‘vlax-ename->vla-object
(setq EntLst (vl-remove-if ‘listp
(mapcar ‘cadr (ssnamex ss))))) oStr “”)
(defun clean (lst / lst)
(cond (lst (mapcar
(function
(lambda (object)
(if (not (vlax-erased-p object))
(vla-delete object)))) lst)
(setq lst nil))))
관련 사용되는 함수들을 리맥님의 리습에서 가져와서
(defun osMark (o / s)
(defun get_osmode nil ; by Evgeniy Elpanov
(defun osmode-grvecs-lst (col ass / -ASS ASS COL)
; By Evgeniy Elpanov (Modified by Lee Mac)
아래와 같이 cond 5 (마우스 움직이는중) 에 적용하였는데도
제대로 스냅표시가 보여지지 않고 있습니다.
(setq EntLst (vl-sort EntLst
(function
(lambda (a b)
(< (distance data (vlax-curve-getClosestPointto a data))
(distance data (vlax-curve-getClosestPointto b data)))))))
(setq cPt (vlax-curve-getClosestPointto (car entLst) data))
(setq eLst (clean eLst))
(if
(and
(< 0 (getvar “OSMODE”) 16384)
(setq oPt (vl-remove-if (function null)
(mapcar
(function
(lambda (x / o)
(if (setq o (osnap data x))
(list (distance data o) o x data)
)
)
)
(get_osmode)
)
)
)
)
(setq oPt (cdar (vl-sort oPt (function (lambda (a b) (< (car a) (car b)))))))
(setq oPt nil)
)
(and oPt (OsMark oPt))
무언가 놓쳐서 안되는거 같은데 원인을 모르겠습니다…ㅠ
현재 작성해놓은 리습파일을 참고용으로 첨부하겠습니다.
사용방법은 원을 하나 그려놓고 원내부에 첫번째 포인트를 찍은후
두번째포인트를 찍기전에 스냅이 표시되어야합니다..
클릭시 동작은 아직 작성안했지만 현재 마우스 무빙시에도 표시가 안되서
난감한 상태입니다.
고수님의 어드바이스 부탁드리겠습니다.
공유
Description was not provided. 오류 뜹니다 다른 리습과 공유하는 함수가 있나봐요…
수야님 말씀대로 제가 실수 했습니다…ㅜ
파일 재첨부하였습니다.
참고한 리맥님 리습도 DynOffV2-1.lsp 첨부드립니다.
여전히 오류 파일입니다 ㅠ.ㅠ;;
원인을 찾아서 댓글달려고 했는데 그사이에 지워서 다시 올려주셨군요.
동일하게 동작을 안해서 하나씩 확인하다보니
(redraw)를 하단에 놓으니 바로 그려지지 않더군요!…..
수야12님 덕분에 원인을 해결해서 기분이 좋네요!
그 찰나에 수야님도 확인하고 계셨을줄이야..
제 모자란 질문에 관심을 가져주셔서 정말 감사합니다!
수야님 천재! 최고! b