이미지
  도면을 작성하다보면 레이어, 블럭 등 사용하지 않는 데이터가 존재할 경우 도면이 무거워 집니다. Command 명령을 이용하여 Purge 기능을 이용하여 불필요한 Block을 삭제하는 Lisp을 만들어 보겠습니다. ;;; 블록 제거 프로그램 ;;; ------------------------------------------------------------------- ;;; c : PurgeUnusedBlocks 명령 정의 (defun c :PurgeUnusedBlocks () (vl-load-com) ; COM 기능을 사용하지 않아도 습관적으로 Load (princ "\n사용하지 않는 블록들을 도면에서 제거합니다." ) ;; AutoCAD의 -PURGE 명령을 비대화형으로 실행 ;; "B" 는 Blocks (블록) 유형을 의미합니다. ;; "*" 는 모든 블록 이름을 의미합니다. ;; "N" 은 각각의 항목을 확인할지 묻는 질문에 "아니오" 를 의미합니다 (비대화형). (command "-PURGE" "B" "*" "N" ) (princ "\n사용하지 않는 블록 제거가 완료하였습니다." ) (princ) ; 마지막 값 출력 방지 ) ;;; 프로그램 로드 시 메시지 (princ "\n'PurgeUnusedBlocks' 명령어가 로드되었습니다." ) (princ) 가.사용 방법 파일 저장 : 위 코드를 복사해서  purgeblocks.lsp  같은 이름으로 저장해주세요.  오토캐드에서 로드 : 오토캐드를 실행하세요. 명령 프롬프트에  APPLOAD 를 입력하고 Enter를 누르세요. (또는 '응용프로그램 로드' 메뉴를 찾으세요.) '응용프로그램 로드/언로드' 대화 상자가 뜨...

오토캐드 (AutoCAD) AutoLisp으로 (메뉴바)Menubar, (리본)Ribbon, (상태바)Statusbar 설정하기

이미지
  오토캐드 (AutoCAD) AutoLisp으로 (메뉴바)Menubar, (리본)Ribbon, (상태바)Statusbar 설정하기 AutoLisp을 사용하다보면 메뉴바, 리본, 상태바를 설정할 경우가 생깁니다. 각 설정별로 ON/OFF를 구현합니다. 1. 오토캐드 (AutoCAD) UI 토글 AutoLisp 코드 ;;; 오토캐드 UI 토글 프로그램 (메뉴바, 리본, 상태바) ;;; ------------------------------------------------------------------- ;;; 1. 메뉴바 토글 (켜기/끄기) (defun c:ToggleMenuBar ()   (vl-load-com) ; ActiveX 지원 로드 (필요한 경우)   (if (= (getvar "MENUBAR") 1) ; 현재 메뉴바가 켜져 있다면     (progn       (setvar "MENUBAR" 0) ; 끄기       (princ "\n메뉴바 (Menubar OFF)")     )     (progn       (setvar "MENUBAR" 1) ; 켜기       (princ "\n메뉴바 (Menubar ON)")     )   )   (princ) ; 마지막 값 출력 방지 ) ;;; 2. 리본 토글 (켜기/끄기) (defun c:ToggleRibbon ()   (vl-load-com)   (if (= (getvar "RIBBONSTATE") 1) ; 현재 리본이 켜져 있다면 (1: 켜짐, 0: 꺼짐)     (progn       (command "_.RIBBONCLOSE") ; 리본 끄기 명령       (princ "\n리본바 끄기"...

오토캐드 (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 - 포인터 입력사용 체크박스 해제 (꺼짐) 포인터 입력, 치수 입력, 동적 프롬프트 및 제도 툴팁의 모양을 조정합니다. 포인터 입력 사용 체크박스를 끄면 동적 입력 포인트가 꺼집니다. 포인터 입력 사용이 켜져 있을 때, 사용할 수 있는 치수 입력사용과 동적 프롬프트, 툴팁 모양을 사용자에 따라 옵션으로 선택하여...