명령: !copy_path
“D:\PROJECT25\원가절감\2-DV000B00-0000D\p_list.txt”
명령: (open copy_path “r”)
#<file “D:\PROJECT25\원가절감\2-DV000B00-0000D\p_list.txt”>
명령: (open copy_path “w”)
nil
오픈함수 읽기 모드로하면 값을 반환하는데
쓰기모드로하면 nil값으로 반환해서 기존 잘쓰던 프로그램이 안되네요.
오토캐드 2026버전입니다.
챗 gpt로 질문하니까.
✅ 1. 파일 쓰기 권한 문제
파일이 읽기 전용 속성으로 설정되어 있거나,
해당 경로에 대해 AutoCAD 또는 사용자가 쓰기 권한이 없는 경우
nil
반환조치:
p_list.txt
파일의 속성을 확인 → 마우스 우클릭 → [속성] → “읽기 전용” 체크 해제또는 해당 폴더(
D:PROJECT25원가절감...
)에 쓰기 권한이 있는지 확인✅ 2. 이미 열려 있는 파일 (Lock 상태)
같은 파일이 **이미 열려있는 상태(opened)**이면 쓰기 모드로 다시 열 수 없습니다.
조치:
(setq fp (open copy_path "w")) ; 전에 열려 있으면 nil 반환
AutoCAD 또는 다른 앱(메모장, 에디터 등)에서 이미 열려 있는 경우 닫고 다시 시도
✅ 3. 경로 또는 파일명에 한글 포함 → 인코딩/접근 문제
AutoLISP에서는 한글 경로/파일명 사용 시 버전별 차이로 인식이 안 되는 경우 존재
특히
"원가절감"
같은 폴더명에서 문제 발생 가능조치:
아래처럼
vl-filename-*
함수로 안전하게 경로 설정 후open
시도(setq copy_path (vl-filename-make-absolute "D:\PROJECT25\원가절감\2-DV000B00-0000D\p_list.txt"))
(setq fp (open copy_path "w"))
또는 경로를 영문 경로로 복사해서 테스트해보세요
✅ 4. 파일이 존재하지 않아 생성 불가
(open <경로> "w")
는 존재하지 않는 폴더 또는 생성 불가능한 경로이면nil
반환조치:
해당 폴더가 존재하는지 확인, 경로 중간 디렉토리가 빠지면 자동 생성 안됨
경로 테스트:
(if (findfile copy_path)
(princ "n파일 있음")
(princ "n파일 없음 또는 경로 문제")
)
✅ 5. AutoCAD 2026 LISP 환경 변화
AutoCAD 2026에서 일부 LISP 샌드박싱 또는 보안 정책 강화로 인해
사용자 문서/응용프로그램 외 경로로의 접근이 제한될 수 있습니다.
Trusted path 또는 Trusted folder 등록이 안된 경우
(open "w")
실패할 수 있음조치:
AutoCAD 명령창에
OPTIONS
→ [파일] 탭 → “신뢰할 수 있는 경로”에D:PROJECT25...
폴더 추가또는
SECURELOAD
변수를0
으로 일시 설정하여 LISP 보안 완화(setvar "SECURELOAD" 0)
✅ 대체 코드 예시 (쓰기 가능한지 테스트)
(defun c:test_write_path ( / copy_path fp)
(setq copy_path "D:\PROJECT25\원가절감\2-DV000B00-0000D\p_list.txt")
(if (and (findfile copy_path)
(setq fp (open copy_path "w")))
(progn
(write-line "테스트 문자열입니다." fp)
(close fp)
(princ "n파일 쓰기 성공!")
)
(princ "n파일 쓰기 실패! 경로, 권한, 락 상태를 확인하세요.")
)
)
✳️ 요약 정리
open "w"
실패필요하시면 경로 자동 검사 + 파일 쓰기 가능한지 확인하는 디버깅 리습 만들어드릴 수 있어요.
경로/파일명/사용 예시도 알려주시면 더 맞춤 지원 드릴게요!