침실2_CAD

[LISP] 한점의 EL을 알고 있을 때 나머지 한점 EL 구하는 리습 작성

다식군! 2025. 4. 1. 10:03
반응형

한점의 EL을 알고 있을 때 나머지 한점의 EL을 구하는 리습 작성

 

사용법은 간단 하다. 

해당 리습을 로드한 후에

"elc" 입력

EL의 값을 알고 있는 점을 찍고 / 단면도 좌측이나, 우측에 친절히 보통 나와 있는 곳을 찍는다.

그리고,

알고자 하는 곳의 점을 찍으면,

 

명령행에 표시가 된다.

1째줄) 두점사이의 고저차 표시

2째줄) 알고자 하는 점의 EL 값이 표시 됨.

어디 EL 값을 알고 싶나요:
첫 번째 점에서 두 번째 점까지의 Y 좌표 차이 (m): -5.500
두 번째 점의 EL 값 (m): 45.000
명령:

 

친절한 챗GPT를 활용해서 작성 해보았다.

(defun c:elc (/) 
  (setvar "cmdecho" 1) ;; 첫 번째 점과 EL 값 입력
  (setq p1 (getpoint "\nEL 아는 점을 입력하세요: "))
  (setq EL1 (getreal "\n해당 EL 값을 입력하세요 (m): ")) 
  (setq p2 (getpoint "\n어디 EL 값을 알고 싶나요: ")) 
  (setq y1 (cadr p1)) 
  (setq y2 (cadr p2)) ;; Y 좌표 차이에 따른 EL 값 계산
  (setq dY (/ (- y2 y1) 1000.0)) ;; mm → m 변환
  (setq EL2 (+ EL1 dY)) ;; 결과 출력
  (princ (strcat "\n첫 번째 점에서 두 번째 점까지의 Y 좌표 차이 (m): " (rtos dY 2 3)))
  (princ (strcat "\n두 번째 점의 EL 값 (m): " (rtos EL2 2 3)))
  (princ) ;; LISP 프로그램 종료
)

 

------------------------------------------------------------------------------------------------------------------

한번 EL값을 입력한후

EL값을 계속 구하려 한다면,

 

1. 첫 번째 리습: c:setEL (첫 번째 점과 EL 값 입력)

(defun c:setEL (/ p1 EL1)
  (setvar "cmdecho" 1) ;; 명령어 에코 활성화
  (setq p1 (getpoint "\nEL 아는 점을 입력하세요: ")) ;; 첫 번째 점 입력
  (setq EL1 (getreal "\n해당 EL 값을 입력하세요 (m): ")) ;; 첫 번째 점의 EL 값 입력
  (setq *p1* p1) ;; 첫 번째 점을 전역 변수에 저장
  (setq *EL1* EL1) ;; 첫 번째 점의 EL 값을 전역 변수에 저장
  (princ (strcat "\n첫 번째 점의 EL 값 (" (rtos EL1 2 3) " m)이 설정되었습니다."))
  (princ)
)

 

2. 두 번째 리습: c:elc (두 번째 점의 EL 값 계산)

(defun c:elc (/ p2 y1 y2 dY EL2)
  (setvar "cmdecho" 1) ;; 명령어 에코 활성화
  (if (not *p1*)  ;; 첫 번째 점이 설정되지 않았다면
    (progn
      (princ "\n먼저 첫 번째 점과 EL 값을 설정하세요.")
      (exit)
    )
  )
  (setq p2 (getpoint "\n어디 EL 값을 알고 싶나요: ")) ;; 두 번째 점 입력
  (setq y1 (cadr *p1*)) ;; 첫 번째 점의 Y 좌표
  (setq y2 (cadr p2)) ;; 두 번째 점의 Y 좌표
  (setq dY (/ (- y2 y1) 1000.0)) ;; mm → m 변환
  (setq EL2 (+ *EL1* dY)) ;; 두 번째 점의 EL 값 계산
  (princ (strcat "\n두 번째 점의 EL 값 (" (rtos EL2 2 3) " m)"))
  (princ)
)

 

cmdecho : 리습이 실행되는 동안 출력되는 결과 값 표시 여부
0 - 명령이 입력되는 과정을 명령행에 보이지 않게 함. 1 - 명령이 입력되는 과정을 명령행에 보이게 함.
반응형

'침실2_CAD' 카테고리의 다른 글

CAD LISP- 블록 단위 출력  (0) 2022.10.07
Auto CAD- 플롯스타일(펜) CTB / STB  (0) 2022.07.17
캐드 배우기(최소한의 명령어)  (1) 2022.04.03
MSPACE vs. PSPACE  (0) 2022.02.20
CAD LISP- getvar / setvar  (0) 2022.01.23
CAD LISP- 좌표 추출 리습(수정)  (0) 2021.12.08
Auto CAD- 불필요한 Layer 삭제(LayDel)  (0) 2021.12.05
Auto CAD- DCL 미리보기  (0) 2021.11.21
Auto CAD- WIPEOUT(명령)  (1) 2021.03.14
Auto CAD- 동적 블록  (0) 2021.02.28