ID:
PW:

     0 분
     2 분

[다정다감] Q&A
[다정다감]에 관한 질문/답변을 올리는 곳입니다.


Q. AUTOLOAD가 안됩니다.
이석종  2020-02-21 06:47:19, 조회 : 44, 추천 : 4
- Download #1 : acad.lsp (3.9 KB), Download : 16

Q. [DJDG] 메뉴를 로드하면 이런 에러가 발생합니다.
; error: no function definition: AUTOLOAD
무가 문제인가요?


A. autoload함수가 작동 안한고 있는 것입니다. 첨부한 acad.lsp파일을 support방에 복사해 넣으세요.

[DJDG]은 autoload함수를 이용합니다.
이 함수는 acad.lsp, acad2020.lsp, acad2020doc.lsp 등 autocad가 실행될 때 자동으로 실행되는 파일에 정의되어있습니다.

만약 사용하고 계신 캐드환경에 위의 파일들이 없으면 autoload가 작동하지 않습니다.

이런 경우에는 첨부한 acad.lsp파일을 support방에 복사해 넣으시면 됩니다. 이 파일에는 (autoload함수가 정이되어 있습니다.)

만일 acad.lsp파일이 이미 존재한다면 이 파일이름을 acad<캐드버전>.lsp로 바꿔주세요.

예를 들어 캐드버전이 2016이라면 acad2016.lsp 이런 식으로요.

만일 acad2016.lsp파일도 이미 존재한다면 파일이름을 acad2016doc.lsp로 바꿔주세요.

[TIP] autoload 함수의 기능은 이렇습니다.

우리가 command상태에서 어떤 명령을 내리면 캐드는 이 명령이 등록된 명령인지 아닌지 확인한 후 실행합니다.

우선 원래 캐드명령이면 당연히 실행하겠죠. 하지만 lisp파일로 등록된 명령이라면 우선 lisp을 load해야 합니다. autoload명령은 명령을 등록하고 그 명령에 해당하는 lisp파일을 load해주는 역할을 합니다.

auto가 붙은 이유는 일단 명령만 등록해놨다가 명령이 실행될 때 load하기 때문입니다. 명령을 등록하면서 load하는 것이 아닙니다. 그렇게 load하면 메모리에 너무 많은 lisp파일들이 올라가기 때문입니다.

즉 명령이 실행될 때 lisp파일을 load하기 때문에 auto 가 붙은 것입니다.

[DJDG]작동 원리는 아래와 같습니다.

1.[DJDG]메뉴를 load하면 djdg.mnl이 실행됩니다. 이 파일은 lisp파일입니다. menu가 load될 때 자동으로 실행되는 파일이라 확장자가 mnl입니다. 아마도 menu lisp의 약자가 아닌가 싶습니다.

2. djdg.mnl파일에는 (prefix)함수가 정의되어 있습니다.
이 함수는 acad.exe파일이 존재하는 경로명을 알려줍니다.

3. (prefix)함수를 이용해서 acad가 설치된 경로 아래에서 djdg 폴더 안의 loadjdg.lsp파일을 실행시킵니다.

4. loadjdg.lsp파일에는 [DJDG]명령어들과 그 명령어가 실행되면 어떤 lisp파일을 실행시킬 것인지에 대한 정보가 들어있습니다.

5. 이제 command상태에서 [DJDG]명령을 내리면 해당 lisp파일이 load되고 실행됩니다.

6. 한번 load되면 unload되는 건 아닙니다. 한번 load되면 다시 load하지 않습니다.




  추천하기   목록보기

Copyright 1999-2020 Zeroboard / skin by zero
구조설계의 미래를 준비하는 모임 [구조설계미래포럼]