원 중심선 그리는 lisp

반응형
반응형

마우스로 원을 선택하면
십자 중신선이 마우스따라 늘었다 줄었다 합니다.
마우스로 다시 적정한 위치에 클릭하면 그려집니다.

 

아래는 LISP전(全)문입니다.(아주 간단합니다)
기호에 따라 변경(보라색 글씨)하여 사용하세요(첨부 파일 참조)

 

(defun crosscen ()
(initget 1)
 (setvar "osmode" 4) ;; 일시적으로 osmode를 CEN으로 바꿉니다.
 (setq cen1(getpoint "\n > Center point: "))
(initget 1)
 (setvar "osmode" 0)
 (setq cen2(getpoint cen1 "\n > Center line endpoint: "))
 (setq ang(angle cen1 cen2)
       dst(distance cen1 cen2))
 (command "layer" "s" "2" "" ;; Layer 지정->여기서는 2번으로 지정
          "line" (polar cen1 ang dst)(polar cen1 (+ ang pi) dst) ""
          "array" "l" "" "p" cen1 2 90 "")
 (command "layer" "s" "1" "") ;; Layer 지정->중심선 작도 후 원하는 Layer로 감->여기서는 1번으로..
 (setvar "osmode" 32) ;; 원하는 osmode로 되돌립니다.
 (princ))
(defun c:CC () (crosscen)) ;;실행 명령어 CC 원하시는대로 바꾸시면 됩니다.(파일명이랑 같이 바꾸시는것이 편할겁니다)
(princ "\n = Cross Center line lisp loaded...Command : CC =") ;;lisp load 시 보여질 문구 (없어도 됩니다)
(princ)


주) 위 소스를 사용하실떈 붉은 색은 지우고 사용하세요

메모장에 옮기셔서 저장하시고 확장자만 .lsp로 바꾸시면 됩니다.


osnap 모드 다시 되돌릴려면...어떻게 하나요?...



하단부에서...

(defun c:CC ()
(setq os_mode (getvar "osmode")) ;<--추가 하시고-실행전 모드를 기억시키기
(crosscen)
(setvar "osmode" os_mode);<- 추가 하시면 실행후 실행전 모드로 되돌립니다.

)
(princ "\n = Cross Center line lisp loaded...Command : CC =")
(princ)




아니면 리습 마지막에 있는
(setvar "osmode" 32) 에서 32는 INT 모드인데...
여러모드 쓰실려면 모드코드를 합산해서 넣으시면 되구요...(예:INT+CEN =>32+4=>..36..을)
아래는 모드 코드입니다.
mid->2, tan256, cen->4, near->512, end->1, per->128, int->32, qua->16, none->0

반응형
사업자 정보 표시
(주)메카피아 | 노수황 | 서울 금천구 가산디지털1로 145, 2004 (가산동, 에이스하이엔드타워3차) | 사업자 등록번호 : 140-81-29454 | TEL : 02-2624-0896 | Mail : mechapia@mechapia.com | 통신판매신고번호 : 제 2014-서울금천-0444호호 | 사이버몰의 이용약관 바로가기

댓글

Designed by JB FACTORY