3월, 2025의 게시물 표시

오토캐드 (AutoCAD) 리습 (Lisp) 자동으로 로드하는 방법

이미지
  오토캐드 (AutoCAD) 리습 (Lisp) 자동으로 로드하는 방법 리습을 이용하여 리습파일을 만들어 사용하다보면, 자동으로 리습을 로드하는 방법 에 대해 많이 들 궁금해 하십니다. 물론, 사용하실 때마다 Appload로 사용해도 되지만, 오토캐드가 실행될 때, 자동으로 로드하여 편하게 사용할 수 있는 3가지 방법을 알려 드리겠습니다. 1. APPLOAD 응용프로그램 로드 방법 오토캐드 명령창에 Appload 입력 후 실행하면 다음과 같은 응용프로그램 로드 대화상자가 나타납니다. 위의 대화상자에서 작성된 이름.lsp 파일을 선택하여 <로드> 버튼 을 이용하시면, 오토캐드 종료시까지 사용이 가능합니다. 그러나, 다음 오토캐드를 실행했을 때는 다시 로드해야 합니다. 그래서, 지속적으로 리습을 이용하려면, 목차라는 항목에서 리습파일을 등록 해 주시면, 오토 캐드 실행 때마다 사용이 가능 합니다. ● 추가 순서 1. APPLOAD(명령)을 실행합니다. 2. 시작하기 세트에서 컨텐츠 버튼을 클릭합니다. 3. 추가 버튼을 클릭합니다. 4. LISP 파일의 위치를 찾아서 선택하고 열기 버튼을 클릭합니다. 5. 모든 LISP 루틴이 시작하기 세트에 추가되면 닫기 버튼을 클릭합니다. 6. 닫기를 다시 클릭하여 응용프로그램 로드/언로드 대화상자를 닫습니다.   2. CUI를 사용하는 로드 방법  오토캐드 (AutoCAD) 리습 (Lisp) 자동으로 로드하는 방법은 CUI 명령에서 사용할 수 있습니다. ● 추가순서 1. CUI(명령)를 실행합니다. 2. 'acad(lt).cuix'(또는 사용자 부분 .cuix)를 선택합니다. 3. LISP 파일을 선택하고 마우스 오른쪽 버튼을 클릭합니다. 4. 상황에 맞는 메뉴에서 LISP 로드를 선택합니다. 5. 추가할 LISP의 위치를 찾아서 파일을 선택합니다. 6. 적용 및 닫기를 클릭하여 CUI 편집기를 종료합니다.   3. acad.lsp / acaddoc.lsp 파일 사용 방...

오토캐드 (AutoCAD) AutoLisp 연습예제 - 선택한 객체 색상 변경하기

이미지
 오토캐드 (AutoCAD) AutoLisp 연습예제 - 선택한 객체 색상 변경하기 (색상 변경할 때 AutoCAD 색상 참조하세요.) 선택한 객체 색상 변경하기 AutoLisp을 사용하다 보면 객체의 색상을 변경해야 할 경우가 생깁니다. 이 코드는 단지 객체의 색상 변경을 이용하는 것이 아니라, 색상 변경을 하는 것을 배우기 위함입니다. 객체를 선택하고, 1 ~ 256 색상 (AutoCAD 색상)을 기준으로 색상 번호를 입력하여 변경하는 코드입니다. ➧ 주의 : 색상이 없는 객체는 안됩니다. 이 부분은 숙제로 해야 할 것 같습니다. (defun c:ChangeColor ()   (setq ent (car (entsel "\n색상을 변경할 객체를 선택하세요: "))) ; 객체 선택   (if ent     (progn       (setq newColor (getint "\n새 색상 번호를 입력하세요 (1-256): ")) ; 새 색상 번호 입력       (if (and (>= newColor 1) (<= newColor 256)) ; 색상 번호 유효성 검사         (progn           (entmod (subst (cons 62 newColor) (assoc 62 (entget ent)) (entget ent))) ; 색상 변경           (princ "\n객체의 색상이 변경되었습니다."))         (princ "\n유효하지 않은 색상 번호입니다. 1에서 256 사이의 값을 입력하세요."))     )     (princ "\n객체가 선택되지 않았습니다.")   )   (princ) ; 명령 종료 ) ...

오토캐드 (AutoCAD) AutoLisp 연습예제 - 선택한 원에 넘버링 작성하기

이미지
오토캐드 (AutoCAD) AutoLisp 연습예제 - 선택한 원에 넘버링 작성하기 AutoCAD를 사용하다 보면 원안에 넘버링 숫자를 작성해야 할 경우 있습니다. 선택한 원 순서대로 또는 원이 그려진 순서대로 선택하여 작성할 수 있으며, 넘버링의 시작 값을 입력하여 넘버링을 작성할 수 있습니다. 이 예제는 원을 기준으로 하였지만, 사용하실 경우 다른 객체를 기준으로 작성할 수 있습니다. (defun c:draw-circles ()   (setq draw-mode (getint "\n모드 선택: 1 (선택한 순서대로), 2 (그려진 순서대로): ")) ; 모드 선택   (setq num (getint "\n시작할 숫자입력<1>:"))   (if (not num) (setq num 1))  (if (or (= draw-mode 1) (= draw-mode 2)) ; 올바른 모드인지 확인     (progn       (setq ss (ssget '((0 . "CIRCLE")))) ; 원 선택       (if ss         (progn           (setq i 0)           (repeat (sslength ss)             (if (= draw-mode 1) ; 선택한 순서대로 그리기               (setq circle (ssname ss i))               (setq circle (ssname ss (1- (- (sslength ss) i) ) ) )) ; 그려진 순서대로 그리기 ...

오토캐드 (AutoCAD)에서 동적 입력 기능 켜기/끄기(DynMode) - 마우스 따라다니는 좌표 없애기

이미지
오토캐드 (AutoCAD)에서 동적 입력 기능 켜기/끄기 - 마우스 따라다니는 좌표 없애기 AutoCAD를 사용하다 보면 마우스를 따라다니는 동적입력 창(명령어, 좌표, 각도, 치수 등)이 있습니다. 초보자 또는 오래된 사용자라면, 약간 불편할 수 있는데, 이 동적입력 창을 끄고, 켤 수 있습니다. (동적 입력 창 화면) 방법 1 - DynMode  값 -3 입력 (꺼짐) 동적 입력 기능을 (위의 이미지 - 동적 입력 창 화면) 켜거나 끕니다. (동적 입력창 아이콘 - Dynmode) 모든 기능이 켜진 경우 표시되는 내용은 컨텍스트에 따라 결정됩니다. DYNMODE가 음수 값으로 설정된 경우에는 동적 입력 기능은 꺼져 있지만 설정은 저장됩니다.  값  설  명  0   동적 프롬프트를 비롯한 모든 동적 입력 기능을 끕니다.  1   포인터 입력을 켭니다.  2   치수 입력을 켭니다.  3   포인터 입력 및 치수 입력을 모두 켭니다. 동적 프롬프트가 켜져 있는 경우(DYNPROMPT가 1로 설정됨) DYNMODE를 1, 2 또는 3으로 설정하면 입력이 표시됩니다. 치수 입력이 켜진 상태에서(DYNMODE가 2 또는 3), 쉼표 또는 꺾쇠 괄호(<)를 입력하거나 다수의 그립 점을 선택하면 프로그램이 포인터 입력으로 전환됩니다. DYNMODE가 1, 2 또는 3으로 설정된 경우 임시 재지정 키인 F12 키를 누르고 있으면 모든 기능을 임시로 끌 수 있습니다. 방법 2 - _dsetting - 포인터 입력사용 체크박스 해제 (꺼짐) 포인터 입력, 치수 입력, 동적 프롬프트 및 제도 툴팁의 모양을 조정합니다. 포인터 입력 사용 체크박스를 끄면 동적 입력 포인트가 꺼집니다. 포인터 입력 사용이 켜져 있을 때, 사용할 수 있는 치수 입력사용과 동적 프롬프트, 툴팁 모양을 사용자에 따라 옵션으로 선택하여...

캐드 AutoCAD AutoLisp 강좌 예제 - 입력한 레이어(Layer) 객체 모두 선택하기

이미지
캐드 AutoCAD AutoLisp 강좌 예제 - 입력한 레이어(Layer) 객체 모두 선택하기 AutoCAD를 사용하다보면 간편하게 특정 레이어의 모든 객체를 선택하고 싶을 때가 있습니다. AutoCAD의 filter 명령을 이용하면 되지만 좀 복잡하지요? 간단하게 AutoLisp을 이용하여, 입력한 레이어의 객체를 모두 선택하는 기능을 만들어 보았습니다. AutoLisp 코드 (defun c:SelLayer()   (setq layerName (getstring "\n선택할 레이어 이름 입력: ")) ; 사용자로부터 레이어 이름 입력 받기   (setq ss (ssget "X" (list (cons 8 layerName)))) ; 입력받은 레이어 이름으로 객체 선택   (if ss     (progn       (command "_.select" ss) ; 선택한 객체를 선택 명령으로 전송       ;;(princ (strcat "\n" (itoa (sslength ss)) "개의 객체가 선택되었습니다.")) ; 선택된 객체 수 출력     )     (princ "\n선택된 객체가 없습니다.") ; 객체가 없을 경우 메시지 출력   )   (princ) ; 명령 종료 ) 코드설명 1. (defun c:SelLayer(): 새로운 명령어 SelLayer를 정의합니다.   사용자가 이 명령을 호출할 수 있습니다. 2. (setq layerName (getstring "\n선택할 레이어 이름을 입력하세요: ")):    getstring 함수를 사용하여 사용자로부터 레이어 이름을 입력받습니다.    입력된 문자열은 layerName 변수에 저장됩니다. 3. (setq ss (ssget "X" (list (cons 8 layerName)))): ssg...