오토캐드 (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...

캐드(AutoCAD) AutoLisp 강좌 예제 - 문자 정렬 하기 (상하, 좌우 정렬)

이미지
캐드(AutoCAD) AutoLisp 강좌 예제 - 문자 정렬 (상하, 좌우 정렬) AutoCAD 도면을 작업하다보면, 문자 (Text, MText)의 상하, 좌우 정렬을 일괄적으로 할 때가 있습니다. 아래의 각 정렬을 위한 간단한 AutoLisp 코드 예제입니다. 좌측 정렬 프로그램 (명령 : left-align()) (defun c:left-align () (setq ref-text (car (entsel "\n기준이 되는 텍스트를 선택하세요: "))) ; 기준 텍스트 선택   (if ref-text     (progn       (setq ref-data (entget ref-text))       (setq ref-x (car (cdr (assoc 10 ref-data)))) ; 기준 텍스트의 X 좌표 가져오기       (setq ss (ssget '((0 . "TEXT,MTEXT")))) ; 정렬할 텍스트 선택       (if ss         (progn           (setq count (sslength ss))           (repeat count             (setq ent (ssname ss (setq count (1- count)))) ; 선택한 엔티티 가져오기             (setq ent-data (entget ent))             (if (and (not (= (cdr (assoc 0 ent-data)) "TEXT"))      ...

캐드(AutoCAD)에서 AutoLisp 강좌 예제 - font style (폰트 스타일) 변경하기

이미지
AutoLisp 강좌 예제 - font style (폰트 스타일) 변경하기 AutoCAD 도면을 작성하다보면, 폰트 (font style)이 각각 다른 경우가 종종 있습니다. 특히, 타사에서 도면을 작업하다가 회사에 없는 폰트체를 사용하는 경우도 많은데요. 이런 경우 원하는 Text, MText를 선택하여, 스타일(Style)에서 만들어 놓은 폰트 스타일을 변경하고자 할 경우, AutoLisp으로 쉽게 구현할 수 있습니다. 위의 도면 이미지는 좌측의 Standard 폰트 스타일로 작성되어 있는 폰트 스타일을 test 라는 폰트 스타일로 변경된 테스트 화면입니다. 1. 폰트 스타일 만들기 Style 명령을 이용하여 문자스타일을 명령에서 스타일을 만들어야 합니다. 1. 새로 만들기 (test 스타일명 입력) 2. 글꼴에서 "맑은 고딕"을 선택 합니다. (원하는 글꼴을 선택하시면 됩니다.) 3. 적용 버튼을 이용하여 만들기를 완료합니다.      Style 명령 (문자 스타일) 자세히 알아보기     2. AutoLisp 코드 작성 ChangeTextFont.lsp 다운로드 (defun c:ChangeTextFont ( / ss fontName)   ;; 사용자가 폰트 이름을 입력받음   (setq fontName (getstring "\n변경할 폰트 이름을 입력하세요: "))      ;; 현재 도면의 모든 텍스트 객체를 선택   (setq ss (ssget '((0 . "TEXT,MTEXT"))))      ;; 선택된 객체가 있는지 확인   (if ss     (progn       (setq count (sslength ss)) ; 선택된 객체 수를 저장            ...