반응형
한점의 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 |