ID:
PW:

     0 분
     5 분

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


AutoCAD 실행시 자동으로 실행되는 파일들은?
이석종  2020-02-19 10:46:35, 조회 : 143, 추천 : 11

아래의 오토캐드 공식 홈페이지에 나온 내용입니다.

이문서에 따르면 acad.lsp, acaddoc.lsp, acad<릴리즈>.lsp, 메뉴명.mnl이 자동으로 로드 된다고 나와있습니다.

[DJDG]의 경우 acad*.lsp파일들이 로드된 후 support방의 djdg.mnl이 로드되는 것입니다.

http://help.autodesk.com/view/ACD/2016/KOR/?guid=GUID-FDB4038D-1620-4A56-8824-D37729D42520

AutoLISP 루틴 자동 로드 및 실행 정보
시작 시 AutoLISP 루틴을 로드하고 도면 세션 동안 특정 시간에 명령 또는 함수를 실행합니다.

AutoCAD 기반 제품은 acad.lsp, acaddoc.lsp 및 현재 사용자화 파일과 함께 제공되는 MNL 파일 등 세 가지 사용자 정의 가능 파일의 컨텐츠를 자동으로 로드합니다.

기본적으로 acad.lsp 파일은 이 프로그램이 시작될 때 한 번만 로드되는 반면, acaddoc.lsp는 개별 문서(또는 도면)마다 로드됩니다. 따라서 acad.lsp 파일의 로드를 응용프로그램의 시작과 연관시키고, acaddoc.lsp 파일의 로드를 문서(또는 도면)의 시작과 연관시킬 수 있습니다. 이러한 시작 파일을 로드하는 기본 방법은 ACADLSPASDOC 시스템 변수의 설정을 변경하여 수정할 수 있습니다.

이러한 파일 중 하나가 특수한 유형의 함수인 S::STARTUP을 정의하는 경우, 이 루틴은 도면이 완전히 초기화되는 즉시 실행됩니다. 대안으로 APPLOAD 명령은 파일을 편집하지 않고도 지정된 응용프로그램을 로드하는 시작하기 세트 옵션을 제공합니다.

acad.lsp 및 acaddoc.lsp 시작 파일은 AutoCAD 기반 제품과 함께 제공되지 않습니다. 이들 파일은 사용자가 작성하고 유지할 수 있습니다.

주: AutoCAD 2014 기반 제품부터 사용자 응용프로그램은 SECURELOAD 시스템 변수가 1 또는 2로 설정되어 있는 보안 모드에서 작동해야 합니다. 보안 모드에서 작동할 경우 해당 프로그램은 신뢰할 수 있는 위치의 코드를 포함하는 파일을 로드 및 실행하도록 제한됩니다. 신뢰할 수 있는 위치는 TRUSTEDPATHS 시스템 변수로 지정됩니다.
명령 Autoloader
AutoLISP 파일을 로드하면 명령을 실제로 사용하는지 여부와 관계없이 파일의 명령 정의가 메모리를 차지합니다. AutoLISP autoload 함수는 전체 루틴을 메모리에 로드하지 않고 명령을 사용할 수 있게 합니다. 다음 코드를 acaddoc.lsp 파일에 추가하면 cmds.lsp 파일에서 명령 CMD1, CMD2 및 CMD3이, 그리고 newcmd.lsp 파일에서 NEWCMD 명령이 자동으로 로드됩니다.

(autoload "CMDS" '("CMD1" "CMD2" "CMD3"))
(autoload "NEWCMD" '("NEWCMD"))
자동으로 로드되는 명령을 처음 명령 프롬프트에서 입력하면 AutoLISP는 연관된 파일에서 전체 명령 정의를 로드합니다. AutoLISP는 ObjectARX 응용프로그램을 위해 autoarxload 함수도 제공합니다.

주: 명명된 AutoLISP 시작 파일이 수정된 날짜 시간 스탬프를 기준으로 로드되는 것처럼 전체 파일 이름(파일 이름 확장명 포함)을 지정하지 않으면 가장 최근 시간 스탬프가 있는 LSP 파일이 로드됩니다.
ACAD.LSP 파일
특정 AutoLISP 루틴을 정기적으로 사용하는 경우 acad.lsp 파일을 작성할 수 있습니다. AutoCAD를 시작할 때 acad.lsp 파일의 지원 파일 검색 경로가 검색됩니다. acad.lsp 파일을 찾으면 메모리에 로드합니다.

acad.lsp 파일은 응용프로그램 고유의 시작 루틴에 사용되도록 만들어졌기 때문에 acad.lsp 파일에 정의된 모든 함수와 변수는 첫 번째 도면에서만 사용 가능합니다. 사용자는 모든 문서에서 사용할 수 있는 루틴을 acad.lsp 파일에서 acaddoc.lsp 파일로 이동하려고 할 것입니다.

acad.lsp 및 acaddoc.lsp의 권장 기능은 ACADLSPASDOC 시스템 변수를 사용하여 재지정할 수 있습니다. ACADLSPASDOC 시스템 변수가 0(기본 설정)으로 설정되었으면 acad.lsp 파일은 응용프로그램 시작 시 한 번만 로드됩니다. 1로 설정한 경우 새 도면을 작성하거나 기존 도면 파일을 열면 acad.lsp 파일이 다시 로드됩니다.

acad.lsp 파일에는 하나 이상의 루틴에 대한 AutoLISP 코드 또는 일련의 load 함수 호출이 포함될 수 있습니다. 수정하기가 쉽기 때문에 두 번째 방법이 더 선호됩니다. 다음 코드를 acad.lsp 파일로 저장하면 프로그램을 시작할 때마다 mysessionapp1.lsp, databasesynch.lsp및 drawingmanager.lsp 파일이 로드됩니다.

(load "mysessionapp1")
(load "databasesynch")
(load "drawingmanager")
주: 예약된 acad<릴리즈>.lsp 파일은 수정하지 마십시오. Autodesk에서는 릴리즈별 필수 AutoLISP 정의 함수가 포함된 acad<릴리즈>.lsp 파일을 제공합니다. 이 파일은 acad.lsp 파일이 로드되기 직전에 메모리에 로드됩니다. <릴리즈>는 AutoCAD 기반 제품의 릴리즈를 나타냅니다. 예를 들어, acad2016.lsp는 AutoCAD 2016 기반 제품에 의해 로드되는 파일입니다.
acaddoc.lsp 파일
acaddoc.lsp 파일은 각 문서(또는 도면) 초기화와 연관시킬 목적으로 만들어졌습니다. 이 파일은 새 도면을 시작할 때마다(또는 기존 도면을 열 때마다) AutoLISP 루틴 라이브러리를 사용 가능한 상태로 로드하려는 경우에 유용합니다.

도면이 열릴 때마다 AutoCAD는 라이브러리 경로에 acaddoc.lsp 파일이 있는지 검색합니다. 하나의 파일을 찾으면 그 파일이 메모리에 로드됩니다. ACADLSPASDOC의 설정과 관계없이 각 도면마다 항상 acaddoc.lsp 파일이 로드됩니다.

대부분 사용자는 모든 문서 기반 AutoLISP 루틴에 대해 단일 acaddoc.lsp 파일을 갖습니다. 프로그램에서는 라이브러리 경로에 정의된 순서대로 acaddoc.lsp 파일을 검색합니다. 따라서 이 기능을 사용하면 각 도면 디렉토리에 각기 다른 acaddoc.lsp 파일을 가질 수 있습니다. 이 디렉토리는 특정 유형의 도면이나 작업에 대해 특정 AutoLISP 루틴을 로드합니다.

acaddoc.lsp 파일에는 하나 이상의 루틴에 대한 AutoLISP 코드 또는 일련의 load 함수 호출이 포함될 수 있습니다. 수정하기가 쉽기 때문에 두 번째 방법이 더 선호됩니다. 다음 코드를 acaddoc.lsp 파일로 저장하면 mydocumentapp1.lsp, build.lsp 및 counter.lsp 파일이 새 문서를 열 때마다 로드됩니다.

(load "mydocumentapp1")
(load "build")
(load "counter")
주: 예약된 acad<릴리즈>doc.lsp 파일은 수정하지 마십시오. Autodesk에서는 릴리즈별 필수 AutoLISP 정의 함수가 포함된 acad<릴리즈>doc.lsp 파일을 제공합니다. 이 파일은 acaddoc.lsp 파일이 로드되기 직전에 메모리에 로드됩니다. <릴리즈>는 AutoCAD 기반 제품의 릴리즈를 나타냅니다. 예를 들어, acad2016doc.lsp는 AutoCAD 2016 기반 제품에 의해 로드되는 파일입니다.
MNL 파일 및 AutoLISP 메뉴 사용자화
이 프로그램은 사용자화(CUI/CUIx) 파일을 로드할 때 파일 이름이 일치하는 MNL 파일을 검색합니다. 하나의 파일을 찾으면 그 파일이 메모리에 로드됩니다. 이 기능은 사용자 인터페이스 요소의 올바른 작동에 필요한 AutoLISP 함수가 로드되도록 합니다.

예를 들어 사용자화 파일 acad.cuix는 사용자화 파일의 사용자 인터페이스 요소에 사용되는 많은 AutoLISP 함수를 정의할 수 있는 acad.mnl 파일을 찾습니다. MNL 파일은 acaddoc.lsp 파일 다음에 로드됩니다.

주: 명령 "menu" "newmenu"와 유사한 구문으로 AutoLISP command 함수를 사용하여 사용자화 파일을 로드하면 전체 AutoLISP 루틴이 실행될 때까지 연관된 MNL 파일이 로드되지 않습니다.
(command "menu" "newmenu")

(princ "Newmenu utilities… Loaded.")
(Princ)
이 예제에서 princ 함수에 대한 호출을 사용하여 상태 메시지를 표시할 수 있습니다. princ를 처음 사용하면 명령 프롬프트에 다음과 같이 표시됩니다.

새 메뉴 유틸리티… 로드됨.

princ를 두 번째 호출하면 AutoLISP 함수가 종료됩니다. princ에 대한 두 번째 호출을 하지 않으면 메시지가 두 번 표시됩니다. 앞에서 설명한 대로 보다 신중한 사전 예방 조치를 위해 load 함수에 대한 호출에 onfailure 인수를 포함시킬 수 있습니다.

S::STARTUP Function: Postinitialization Execution
S::STARTUP 함수를 정의하여 도면이 초기화된 후에 임의의 필요한 설정 작업을 수행할 수 있습니다.

시작 LISP 파일(acad.lsp, acaddoc.lsp 및 MNL)은 도면이 완전히 초기화되기 전에 모두 메모리에 로드됩니다. 도면이 초기화된 후까지 올바르게 작동한다는 보장이 없는 command 함수를 사용하지만 않으면 일반적으로 이로 인해 문제가 발생하지 않습니다.

사용자 정의 함수 S::STARTUP이 acad.lsp, acaddoc.lsp 또는 MNL 파일에 포함되어 있을 경우, 새 도면을 입력하거나 기존 도면을 열 때 이 함수가 호출됩니다. 따라서 S::STARTUP의 정의를 AutoLISP 시작 파일에 포함시켜 설정 작업을 수행할 수 있습니다.

예를 들어, 메시지를 추가한 다음 BHATCH 명령으로 전환하여 표준 HATCH 명령을 재지정하려는 경우 다음이 포함된 acaddoc.lsp 파일을 사용하십시오.

(defun C:HATCH ( )
  (alert "Using the BHATCH command!")
  (princ "\nEnter OLDHATCH to get to real HATCH command.\n")
  (command "BHATCH")
  (princ)
)
(defun C:OLDHATCH ( )
  (command ".HATCH")
  (princ)
)
(defun-q S::STARTUP ( )
  (command "undefine" "hatch")
  (princ "\nRedefined HATCH to BHATCH!\n")
)
도면이 초기화되기 전에 defun 함수를 사용하여 HATCH 및 OLDHATCH의 새 정의가 정의됩니다. 도면이 초기화되고 난 후에는 S::STARTUP 함수가 호출되고 HATCH의 표준 정의가 해제됩니다.

주: S::STARTUP 함수를 추가하려면 defun 대신 defun-q 함수를 사용하여 정의했어야 합니다.
S::STARTUP 함수는 여러 위치(acad.lsp, acaddoc.lsp, MNL 파일 또는 이러한 파일로부터 로드된 다른 AutoLISP 파일)에 정의할 수 있기 때문에 이전에 정의된 S::STARTUP 함수를 덮어쓸 수 있습니다.

다음 예제에서는 시작 함수가 다른 함수와 함께 작동하게 해 주는 확실한 방법을 보여줍니다.

(defun-q MYSTARTUP ( )
... your startup function ...

)
(setq S::STARTUP (append S::STARTUP MYSTARTUP))
앞에 나온 코드는 기존의 S::STARTUP 함수에 시작 함수를 추가한 다음, S::STARTUP 함수를 재정의하여 시작 코드를 포함시킵니다. 이 작업은 S::STARTUP 함수가 존재하는지 여부에 관계없이 올바르게 작동합니다.


  추천하기   목록보기

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