오토캐드 (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)) ; 선택된 객체 수를 저장            ...

AutoCAD 캐드에서 용량 정리 줄이기, Purge 알아보기 - block, layer, linetype 등

이미지
 AutoCAD 캐드에서 용량 정리 줄이기, Purge 알아보기 AutoCAD에서 Purge 명령어란? Purge 명령어는 AutoCAD에서 사용되지 않는 불필요한 요소(예: 블록, 레이어, 선종류 등)를 삭제하여 파일 크기를 줄이고 성능을 향상시키는 기능입니다 AutoCAD 캐드를 사용하시면서, 오류로 인한 저장문제!, 용량이 커지는 문제 가 있는 사용자 분들에게 도움이 되었으면 합니다. 목차 1. Purge 명령어 실행 방법 2. Purge 삭제 가능 요소 3. Purge 사용시 주의할 점 4. Purge로 삭제되지 않는 요소 해결 방법 5. Purge 단축 실행 매크로 6. 추가로 파일 정리할 수 있는 명령어 🔹 Purge 명령어 실행 방법 1. 명령어 입력으로 실행 명령 창에서 PURGE 입력 후 Enter 키 Purge 창이 나타나면 삭제할 요소 선택 "Purge All" 버튼을 클릭하여 모든 불필요한 요소 제거 "Close" 버튼을 눌러 종료 합니다. 2. 단축 명령어 사용 ( -PURGE ) -PURGE 입력 후 Enter 를 누르면 명령어 옵션을 텍스트 형식으로 실행 가능합니다. 옵션 선택하여 직접 삭제 가능 🔹 Purge를 사용하여 삭제할 수 있는 요소 요소 설명 블록(Block)     : 사용되지 않는 블록 정의 레이어(Layer)   : 객체가 없는 레이어 선종류(Linetype)   : 사용되지 않는 선 종류 문자 스타일(Text Style)   : 미사용 문자 스타일 치수 스타일(Dimension Style)   : 미사용 치수 스타일 그룹(Groups)   : 비어 있는 그룹 🔹 Purge 사용 시 주의할 점 사용 중인 요소는 삭제되지 않음 현재 도면에서 사용 중인 블록, 레이어 등은 삭제할 수 없습니다. XREF(외부 참조) 포함된 경우 주의 XREF가 포함된 경우 특정 요소를 삭제할 수 없습니다. 필요한 요소까...

캐드(AutoCAD)에서 AutoLisp 강좌 예제 - 선택한 원들을 폴리선으로 변환하기

이미지
 캐드(AutoCAD)에서 AutoLisp 강좌 예제 - 선택한 원들을 폴리선으로 변환하기 캐드 (AutoCAD)에서 AutoLisp을 이용하여, 원(들)을 선택하여, 폴리선으로 변환하는 Lisp 프로그램입니다. 다음은 AutoLISP 코드를 이용한 CtoP(Circle to Polyline)를 작성하는 예제입니다: 예제코드: ;원을 선택하여 폴리선으로 변환해 주는 LISP (defun C:CtoP()   (PRINC "폴리선으로 변환할 원을 선택합니다.\n")   (setq circleGroup (ssget '((0 . "CIRCLE")))) ;원 객체 선택   (if circleGroup      (progn       (setq count 0)       (repeat (sslength circleGroup) ;원의 정보를 취득합니다.         (setq CEnt (ssname circleGroup count)  CirList (entget CEnt)               CCen  (cdr (assoc 10 CirList))  CRad  (cdr (assoc 40 CirList))               CLa  (cdr (assoc  8 CirList))  CLin  (cdr (assoc  6 CirList))               CClr  (cdr (assoc 62 CirList))  CLts  (cdr (assoc 48 CirList))         ...