AutoLISP 호환성 정보

AutoLISP 프로그램을 최신 릴리즈에서 실행하기 위해 수행해야 할 변경 사항은 일반적으로 매우 적습니다.

그러나 AutoLISP 함수, AutoCAD 기반 제품 명령 또는 시스템 변수가 변경되거나 사용되지 않아 AutoLISP 프로그램이 최신 릴리즈에서 더 이상 제대로 실행되지 않을 수 있습니다.

주: AutoCAD 2014 기반 제품부터 SECURELOAD 시스템 변수가 1 또는 2로 설정된 경우 사용자 응용프로그램이 보안 모드에서 작동해야 합니다. 보안 모드에서 작동하는 경우 AutoCAD 기반 제품은 신뢰할 수 있는 위치의 코드가 포함된 파일을 로드 및 실행하는 것으로 제한됩니다. 신뢰할 수 있는 위치는 TRUSTEDPATHS 시스템 변수에 의해 지정됩니다. 자세한 내용은 "보안 및 바이러스 방지 정보"를 참고하십시오.

일반 정보

사용되지 않는 명령 및 시스템 변수

사용자 프로그램에서 사용되지 않음으로 지정된 명령 및 시스템 변수를 검토합니다. 경우에 따라, 사용되지 않는 명령 또는 시스템 변수를 명령 프롬프트에서 직접 입력할 수 없거나 사용자 인터페이스에서 액세스할 수 없더라도 사용자 프로그램에서 이러한 명령 또는 시스템 변수를 계속 사용할 수 있습니다.

주: 사용되지 않는 명령 또는 시스템 변수를 사용자 프로그램에서 계속 사용할 수 있다 하더라도 제품의 향후 릴리즈에서 계속해서 사용할 수 있으리라는 보장은 없습니다. 사용되지 않는 명령 또는 시스템 변수의 사용을 피하려면 사용자 프로그램을 다시 쓰는 것이 좋습니다.

사용자 프로그램에서 사용되지 않는 명령 또는 시스템 변수를 사용하려고 하는 경우 다음 기술이 유용할 수 있습니다.

  • 명령 이름 앞에 머리말로 마침표를 추가합니다. 예를 들어 .BLIPMODE로 수정하면 BLIPMODE 명령을 사용할 수 있습니다.
  • 사용되지 않는 시스템 변수를 COMMAND 함수와 함께 실행하지 마십시오. 그러면 알 수 없는 명령 오류 메시지가 표시될 수 있습니다. 대신에 GETVARSETVAR 함수를 사용하십시오. 예를 들어, (getvar "BLIPMODE")는 BLIPMODE 시스템 변수의 현재 값을 반환합니다.
주: 제품에서 제거된 명령 및 시스템 변수는 앞서 언급된 기술을 사용하여 복원할 수 없습니다.

AutoCAD 2021 기반 제품 이상

유니코드 지원

조작하는 데 사용되거나 문자열 값을 반환하는 함수에 영향을 주는 유니코드 문자를 지원하도록 AutoLISP 환경이 업데이트되었습니다. 유니코드 지원을 위해 업데이트된 함수에 대한 자세한 내용은 AutoLISP의 새로운 기능 또는 변경 사항을 참고하십시오.

프로그램에서 사용되는 함수에 따라, 유니코드 문자를 처리하기 위해 변경이 필요할 수도 있습니다. 예를 들어, 이전 릴리즈와 비교하면 이제 ASCII 함수의 반환 값이 255보다 클 수도 있고, 함수에 유니코드 문자가 전달되는 경우 다를 수도 있습니다. LISPSYS 시스템 변수를 사용하여 프로그램에 로드되는 기본 AutoLISP 환경을 식별 및 제어할 수 있습니다. 0 및 2는 MBCS 지원(기존 환경)을 나타내고 1은 유니코드 지원을 나타냅니다.

다음 코드 조각은 프로그램에 현재 로드되는 AutoLISP 환경을 확인하고 로드된 환경을 기준으로 코드 실행을 제어하는 방법을 보여 줍니다.

(if (= (getvar "LISPSYS") 1)
  (alert (strcat 
             "Unicode support enabled"
             "\n(ASCII \"€\") returns 8364"
         )
  )
  (alert (strcat 
             "MBCS (Legacy) support enabled"
             "\n(ASCII \"€\") returns 128"
         )
  )
)
주: VL IDE(Visual LISP 통합 개발 환경) 또는 MAKELISPAPP 명령으로 AutoLISP 원본(LSP) 파일을 컴파일할 때 LISPSYS 시스템 변수의 현재 값은 파일이 컴파일되는 형식을 제어합니다. LISPSYS 값을 1로 설정하여 컴파일한 파일은 AutoCAD 2020 및 이전 버전 기반 릴리즈에 로드할 수 없습니다. 파일을 컴파일하기 전에 LISPSYS 값을 0 또는 2로 설정하면 이전 릴리즈에서 해당 파일이 로드되도록 할 수 있지만 이렇게 하면 유니코드 지원이 제한됩니다.

AutoCAD 2020 기반 제품 이상

INSERT 명령

이제 INSERT 명령은 블록 팔레트를 표시하는 반면, 새 CLASSICINSERT 명령은 "기존" 삽입 대화상자를 표시합니다. AutoLISP 프로그램에서 삽입 대화상자를 사용하는 경우, 기존 프로그램을 변경해야 합니다. 이전에는 다음의 AutoLISP 문을 사용하여 삽입 대화상자를 표시했을 수 있습니다.

(initdia)
(command "insert")

AutoLISP 프로그램에서 삽입 대화상자를 계속 표시하려면, 다음 접근 방식 중 한 가지를 활용하도록 기존 프로그램을 변경해야 합니다.

  • (initcommandversion 2)
    (initdia)
    (command "insert")
  • (command "classicinsert")

AutoCAD 2019 기반 제품 이상

LOCALE 시스템 변수

이제 LOCALE 시스템 변수가 언어 및 하위 언어를 나타낸 3자의 약어 대신 현재 언어를 나타내는 2자 이상의 약어가 포함된 코드를 반환합니다. 2자 이상의 약어는 LOCALE_SISO639LANGNAME 상수를 사용하여 Windows GetLocaleInfo 함수를 기반으로 합니다.

AutoCAD 2019 기반 제품 이전에 이 코드는 LOCALE_SABBREVLANGNAME 상수를 사용하여 Windows GetLocaleInfo 함수에서 반환되는 3자의 약어였습니다. 3자의 약어는 두 가지 정보, 즉 2자의 언어 약어와 하위 언어를 표시한 3번째 문자를 기반으로 했습니다. 예를 들어, ENU는 영어(EN)와 하위 언어인 미국(U)의 조합을 나타냈습니다.

AutoCAD 2017 기반 제품 이상

CDATE, DATE 및 기타 날짜₩시간 관련 시스템 변수

CDATE 및 DATE 시스템 변수에 저장된 값은 더 이상 가장 가까운 밀리초 또는 100분의 1초로 내림된 현재 날짜₩시간을 나타내지 않습니다. 이제 이 두 시스템 변수의 값이 표현되는 가장 작은 시간의 단위는 초입니다 1초보다 작은 시간 간격을 추적해야 할 경우에는 워크스테이션이 밀리초 단위로 부팅된 이후의 시간 차이를 저장하는 MILLISECS 시스템 변수가 반환하는 값을 사용해 보십시오.

다음 날짜₩시간 관련 시스템 변수 또한 밀리초가 제거된 것에 영향을 받습니다.

  • TDCREATE
  • TDINDWG
  • TDUCREATE
  • TDUPDATE
  • TDUSRTIMER
  • TDUUPDATE

기존 프로그램에서 가장 가까운 밀리초로 내림된 시간 차이를 요구할 경우 MILLISECS 시스템 변수에 저장된 값의 마지막 2 또는 3자릿 수를 가져와 CDATE 시스템 변수가 반환하는 값에 추가하면 AutoCAD 2016 기반 제품 및 이전 제품의 CDATE 시스템 변수가 반환하는 값에 필적하는 값을 생성할 수 있습니다. 다음 코드 샘플은 대상 AutoCAD 버전을 기준으로 밀리초를 포함하는 날짜\시간 값을 가져오는 방법을 보여줍니다.

; Returns a CDATE value that includes milliseconds based on release
; Usage: (CDate)
; Replaces (rtos (getvar "CDATE") 2 8)
(defun CDate ( / ms)
  ; Check to see which AutoCAD release is being used
  (if (<= (atof (getvar "ACADVER")) 22.0)
    (rtos (getvar "CDATE") 2 8)
    (progn
      ; Get the current milliseconds and append it to the CDATE value
      (setq ms (itoa (getvar "MILLISECS")))
      (strcat (rtos (getvar "CDATE") 2 6)(substr ms (- (strlen ms) 2)))
    )
  )
)
EPDFSHX 시스템 변수

AutoCAD 2016 Update 1에 도입된 EPDFSHX 시스템 변수 이름이 PDFSHX로 바뀌었습니다. 이 이름 변경에 따라 EPDFSHX 시스템 변수를 참조하는 모든 AutoLISP 문이 수정되어야 합니다. 다음은 사용자 프로그램에서 이러한 변경으로 인해 영향을 받을 가능성이 큰 함수입니다.

  • GETVAR - 정수 값 0 또는 1이 아닌 nil 값이 반환됩니다.
  • SETVAR - 프로그램 실행이 중단되고 오류 메시지 오류: AutoCAD 변수 설정이 거부됨: "epdfshx"가 생성됩니다.
  • COMMAND - 프로그램 실행이 중단되고 오류 메시지 EPDFSHX의 알 수 없는 명령 "EPDFSHX"가 생성됩니다.

AutoCAD 2016 기반 제품 이상

디지털 서명 파일

이제 AutoLISP 파일에 디지털 서명이 가능합니다. AutoLISP 파일을 디지털 서명하면 사용자에게 파일을 신뢰할 수 없다고 알리는 경고 없이 이 파일을 AutoCAD 도면 환경에 로드할 수 있습니다. 디지털 서명된 VLX 파일은 AutoCAD 2015 기반 또는 그 이전 제품에 로드할 수 없습니다.

객체 스냅 기능

osnap 함수는 빠른(qui) 객체 스냅 모드를 더 이상 지원하지 않습니다. AutoLISP 프로그램의 osnap 함수를 사용하는 모든 문에서 qui 모드에 대한 참조를 제거해야 합니다. 이 모드를 제거하지 않으면 osnap 함수가 도면 영역의 유효한 점에 대한 좌표 값이 아닌 nil을 반환합니다.