티스토리 뷰
리습에 관해 몇가지...
리습에 대한 내용은 VBA 사용에 필요한 몇가지만 정리하고 넘어가야 할것 같아 시작합니다.
지난글 2018/02/05 - [CAD/VBA] - CAD VBA 시작
지난시간 단축키 만들기에 사용한 코드 내용과 몇가지 간단한 사용법만 하겠습니다.
지난시간 리습코드:
(defun c:test()(command “-vbarun” ”Test”)(princ))
VBA 코드를 캐드에서 바로 사용할수 있게 연결시켰던 리습입니다.
위 코드에 대해 설명 드리고 넘어가야할것 같아 다시 가져왔습니다.
첫 문장부터 하나씩 설명드리겠습니다.
- defun
- VB의 Sub 와 같은 계념으로 함수 선언 시작을 알리는 구문입니다.
- c:test()
- 함수 이름부분입니다
- 첫 부분에 c: 붙으면 캐드에서 바로 사용 할수 있습니다.
- test() 이름과 변수 정의 부분입니다.
- command
- 캐드 명령줄.
실제 캐드의 명줄을 사용하는 명령. - -vbarun 엔터,
- Test(VB의 Sub 이름) 엔터와 동일.
- princ
- 이 부분이 없으면 캐드 화면에 nil이라는 메시지가 표시됩니다
리턴값이 없기 때문에 자동 표시 되는데 nil 메시지 표시를 안보이게 하기위해 사용됩니다.
간단한 프로그램은 리습이 편하니 문법 몇가지만 알아두시면 요긴하게 사용할수 있습니다.
몇가지 간단한 리습을 더 보겠습니다
(defun c:CT6 () (command "LEADER" pause pause "" "M6 TAP DP15" "")(princ))
;지시선 생성후 텍스트 자동입력하는 리습.
;pause : 사용자 입력.
(지시선 생성 순서를 생각해보면 시작점과 텍스트의 위치라는걸 알수 있습니다)
;M6 TAP DP15'라는 문자를 클릭 두번으로 생성 합니다.
(defun c:1()
(ssget)
(command "layer" "s" "0" "")
(command "chprop" "p" "" "la" "CEN" "lt" "bylayer" "c" "bylayer" "")
(princ)
)
; 현재 레이어를 0으로 바꾸고
; ssget : 객체 선택
; 선택한 객체를 CEN 레이어로 바꾸고 스케일과 색상을 bylayer 로 설정.
- 리습에선 레이어 변경하는 코드는 사실 두줄이 끝인데 이 내용을 VBA에서 하려면 조금 복잡합니다. 그렇기때문에 간단한 리습 문법 정도는 알아두시면 편하게 쓰실수 있습니다.
그럼 다시 VBA 프로그램 이야기를 하겠습니다.
위 리습 1‘이란 프로그램은 객체를 선택한 후 혹은 프로그램이 실행된 후 객체를 가져와 수정하는 구조입니다.
- 여기서 생각 해볼것이 있는데, VBA에서 프로그램이 실행된 후 객체를 가져오는건 쉬운데
실행 전 객체를 프로그램 내부로 가져오는건 어렵습니다. - 앞에서 사용한 프로그램명을 다시 보면 Sub test() 와 같이 함수명뒤 "( )"처럼 매개변수 없이 사용하는게 대부분입니다. 그럼 매개변수로 오브젝트를 쓰게되면 해결될것 같지만 그렇게되면 객체 선택 없이 프로그램이 시작될 경우 오류가 발생 하게 되므로 별개의 프로그램을 만들어야 사용할수 있게 됩니다. (C#에선 오버로딩1)이 가능합니다.)
- 그래서 아래 비주얼 리습을 이용하면 그 문제를 해결할수 있습니다.
(defun c:test()
(vl-load-com)(vla-runmacro (vlax-get-acad-object) "Test")
(princ)
)
사용법은 리습과 비슷합니다.
- c:test
- 캐드 명령어
- Test
- VBA 명령어
- vlax-get-acad-object
- 캐드 오브젝트 가져오기
- vl-load-com
- 비주얼 리습 로드
- vla-runmacro
- 매크로 실행
리습에 관한내용은 여기까지만 하셔도 VBA하는데 무리가 없습니다.
그럼 VBA로 넘어가겠습니다.
1. 오버로딩 : 똑같은 메소드(함수명)이지만 매개변수 유형, 갯수에 따라 다르게 동작되게 하는 기술
'프로그래밍 > CAD' 카테고리의 다른 글
자동출력 VBA - 출력 블럭 설정 (0) | 2018.02.09 |
---|---|
자동출력 VBA - 프린터 설정 (0) | 2018.02.09 |
자동출력 VBA - 출력순서 (0) | 2018.02.09 |
자동출력 VBA (1) | 2018.02.08 |
CAD VBA 시작 (1) | 2018.02.05 |