AutoLISP 호환성 정보

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

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

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

일반 정보

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

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

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

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

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

AutoCAD 2020 기반 제품

INSERT 명령

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

(initdia)
(command "insert")

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

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

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을 반환합니다.