2월, 2025의 게시물 표시

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

캐드(AutoCAD)에서 AutoLisp 강좌 예제 - 좌표값을 도면에 지시선으로 표시

이미지
 AutoLisp 강좌 예제 - 좌표값을 도면에 지시선으로 표시 AutoCAD에서 AutoLISP을 이용하여, 특정 위치의 좌표를 지시선으로 도면에 작성할 수 있습니다. 이 예제에서는 기본적인 좌표를 표시하는 Lisp 프로그램을 설명합니다. QLEADER를 활용하여 첫번째 지점의 좌표를 XY형식의 문자로 도면에 표시하는 구문이며, Command문을 이용하여 작성합니다. 다음은 AutoLISP 코드를 이용한 좌표값을 도면에 지시선으로 표시(xyt)을 작성하는 예제입니다: 예제코드: ;================================================ ; 좌표값을 도면에 지시선으로 표시 ;================================================ (defun c:xyt()   (princ "좌표값를 지시선으로 표시....\n")   (setq pt1 (getpoint "좌표 지점:"))      (setq pt2 (getpoint pt1 "다음점:"))      (setq px (car pt1))      (setq py (cadr pt1))   (setq pxtext (strcat "X:" (rtos px 2 2)))    ;x좌표값 문자 소숫점 2자리      (setq pytext (strcat "Y:" (rtos py 2 2)))    ;y좌표값 문자 소숫점 2자리   (command "QLEADER" pt1 pt2 "" "" pxtext pytext "");리더를 이용한 화살표 구현      (princ) ) 설명: 1. getpoint를 이용하여 기준점(문자로 표시될 좌표점)을 클릭합니다. 2. getpoint를 이용하여 좌표 문자표시 위치를 클립합니다. 3. car과 strcat, rtos를 활...

캐드(AutoCAD)에서 AutoLisp 강좌 예제 - 건축 문(door) 그리기

이미지
  AutoLisp 강좌 예제 - 건축 문(door) 그리기 AutoCAD에서 AutoLISP을 이용하여 사용자가 입력한 길이와 높이를 기준으로 건축 문(door)을 작성하는 프로그램을 작성할 수 있습니다.  이 예제에서는 기본적인 사각형 형태의 문을 그리는 방식으로 설명할 것입니다. 문을 그릴 때 기본적으로 기준점, 길이와 높이를 입력받고, 직사각형 형태로 문을 그린 후, Command문을 이용하여 폴리선(Pline)을 이용하여 형태를 그려줍니다. 다음은 AutoLISP 코드를 이용한 문(door)을 작성하는 예제입니다: 예제코드: (defun c:CrDoor()   (princ "\nCrDoor  명령이 로드되었습니다. 명령을 실행하려면 'CrDoor'를 입력하세요.")   (setq pt1 (getpoint "\n문(door)을 좌측위치의 시작점을 클릭하세요: "))   ;문(door) 배치 시작점 위치 선택   (setq dLength (getdist pt1 "\n문(door)의 가로 길이를 입력하세요: "))  ;문(door) 길이를 입력   (setq dHeight (getdist pt1 "\n문(door)의 세로 높이를 입력하세요: "))  ;문(door) 높이를 입력 (setq pt2 (polar pt1 0 dLength)) ;pt2 점을 polar를 이용하여 잡는다. (setq pt3 (polar pt2 (/ PI 2) dHeight)) ;pt3 점을 polar를 이용하여 잡는다. (setq pt4 (polar pt1 (/ PI ss2) dHeight)) ;pt4 점을 polar를 이용하여 잡는다. (setq pt5 (polar pt4 (/ PI 2) dLength)) ;pt5 점을 polar를 이용하여 잡는다. (Command "pline" pt4 pt1 pt2 pt3 pt4 pt5 "a"...

오토캐드(AutoCAD) 이름 변경하기(Rename) - Block, Layer, 명명된 이름들

이미지
오토캐드(AutoCAD)에서 Rename 이름 변경하기 - Block, Layer, 명명된 이름들 AutoCAD의 Rename (이름 변경하기)는 블럭, 레이어, 치수 스타일, 뷰 등 AutoCAD에서 명명된 이름을 변경하는 명령입니다.  블럭, 레이어, 치수 스타일, 뷰 등의  명명된 이름을 다시 변경할 수 있으며, 추후 정리하여 좀 더 표준화, 제도화를 완성할 수 있습니다. ■ Rename (명명된 이름 변경하기) 1. 레이어(Layer) 이름 변경하기 설명 : 레이어명 aaa를 Center로 변경하기 가. 임의의 레이어(Layer)를 만듭니다. (기존 도면의 레이어도 가능합니다.) 나. 이름 바꾸기 ( Rename ) 명령을 입력합니다. 다. 좌측의 명명된 객체 항목에서 도면층 을 선택합니다. 라. 우측 항목에서 변경하고자 하는 도면층의 이름을 선택합니다. 마. 변경할 레이어 이름에 Center라 작성합니다. 바. 바꿀 이름 버튼을 눌러 변경합니다. 2. 블럭(Block) 이름 변경하기    다음은 블럭(Block)의 명명된 이름을 변경하고자 합니다.    Command:Rename 설명: 블럭명 Donut을 Donut_Circle로 변경하기 가. 임의의 블럭을 만듭니다. (Donut) 나. 이름 바꾸기 ( Rename ) 명령을 입력합니다. 다. 좌측의 명명된 객체 항목에서  블럭 을 선택합니다. 라. 우측 항목에서 변경하고자 하는 블럭의 이름(Donut)을 선택합니다. 마. 변경할 블럭(Block) 이름에 (Donut_Circle)을 작성합니다. 바. 바꿀 이름 버튼을 눌러 변경합니다. - 명명된 객체 : 이름변경 할 객체 종류 선택 - 항목 : 명명된 객체들의 항목 들, 바꿀 항목 선택 - 바꿀 이름(R) : 이름 변경하기 외부 참조의 이름 충돌 정보 예를 들어, STAIR|STEEL로 참조된 도면층은 STAIR$0$STEE로 표시됩니다. 그런 다음,  RENAME  명령...

오토캐드(AutoCAD) - 레이어 (Layer) 명령2 - LAYDEL,LAYERP, LAYERPMODE, LAYERSTATE, LAYISO, LAYUNISO, LAYMCH, LAYMRG, LAYTRANS, LAYVPI

이미지
  오토캐드(AutoCAD) - 레이어(Layer) 명령을 자세하게 설명합니다.  -  LAYDEL,LAYERP, LAYERPMODE, LAYERSTATE, LAYISO, LAYUNISO,  LAYMCH, LAYMRG, LAYTRANS, LAYVPI ■ LAYDEL - 도면층의 모든 객체를 삭제하고 도면층을 소거합니다. 명령: LAYDEL 삭제할 도면층의 객체 선택 또는 [이름(N)]: (객체선택) 선택한 도면층: test   <선택된 객체의 레이어 삭제할 도면층의 객체 선택 또는 [이름(N)/명령 취소(U)]: ******** 경고 ******** 이 도면에서 "test" 도면층을 삭제합니다. 계속하시겠습니까? [예(Y)/아니오(N)] <아니오(N)>:  모형 재생성 중. 작업이 중단되었습니다. ■ LAYERP - 도면층 설정값에 대해 최근에 변경된 사항을 취소합니다.    이전 명령을  LAYDEL 사용하였다면、  LAYDEL를 취소합니다。 ■ LAYERPMODE - 도면층 설정에 대해 변경된 사항에 대한 추적을 켜거나 끕니다.    이전 도면층 모드가 켜지면 도면층 변경 사항의 유형 몇 가지가 추적됩니다. ■ LAYERSTATE - 명명된 도면층 상태를 저장, 복원 및 관리합니다. 도면층 상태라고 불리는 도면층 설정 세트를 저장하고, 복원하고, 관리합니다. 찾기 도면층 상태 관리자가 표시됩니다. 도면의 현재 도면층 설정을 도면층 상태로 저장합니다. ■ LAYISO - 선택한 객체의 도면층을 제외한 모든 도면층을 숨기거나 잠급니다. 세션 중에 도면층을 변경한 경우  LAYISO  명령을 입력하기 직전의 상태로 도면층을 복원하려면 LAYUNISO 명령을 사용합니다. ■ LAYUNISO - LAYISO 명령으로 숨기거나 잠근 모든 도면층을 복원합니다. 찾기 이전에 실행한  LAYISO  명령의 효과를 ...

오토캐드(AutoCAD) - 레이어 (Layer) 명령1 - LAYCUR,LAYMCUR,LAYOFF,LAYON,LAYFRZ, LAYTHW, LAYLCK, LAYULK, LAYWALK

이미지
오토캐드(AutoCAD) - 레이어(Layer) 명령을 자세하게 설명합니다.  - LAYCUR,LAYMCUR,LAYOFF,LAYON,LAYFRZ, LAYTHW, LAYLCK, LAYULK, LAYWALK ■  LAYCUR  - 선택한 객체(들)의 도면층을 현재 도면층으로 변경합니다. 찾기 잘못된 도면층에서 작성된 객체가 발견되면 신속하게 현재 도면층으로 옮길 수 있습니다. 방법1. 방법2. ■  LAYMCUR  - 선택한 객체의 도면층을 ( 현재 도면층 )으로 설정합니다. 찾기 특정 도면층의 객체를 선택하여 현재 도면층으로 만들 수도 있습니다. ■  LAYOFF  - 선택한 객체의 도면층을 끕니다. 찾기 선택한 객체의 도면층을 끄면 해당 객체가 보이지 않게 됩니다.  이 명령은 도면 작업 중 장애 없는 뷰가 필요하거나 참조선 등의 세부 사항을 플롯하지 않으려는 경우에 유용합니다. ■  LAYON  - 도면의 모든 도면층을 켭니다. 찾기 이전에 껐던 도면층이 모두 다시 켜집니다. 도면층을 동결하지 않았다면 다시 켜진 도면층의 객체를 볼 수 있습니다. ■  LAYFRZ  - 선택한 객체의...

캐드(AutoCAD)에서 AutoLisp 강좌 예제- 사각형(Rectangle) 그리기

이미지
 AutoLisp 강좌 예제- 사각형(Rectangle) 그리기 AutoCAD에서 AutoLISP을 이용하여 사용자가 입력한 길이와 높이를 기준으로 사각형을 작성하는 프로그램을 작성할 수 있습니다. 이 예제에서는 기본적인 사각형 형태의 사각형을 그리는 방식으로 설명할 것입니다. 사각형을 그릴 때 기본적으로 길이와 높이를 입력받고, 직사각형 형태로 사각형을 그린 후, 사각형에 대한 간단한 형태를 추가합니다. 다음은 AutoLISP 코드를 이용한 사각형(rectangle)을 작성하는 예제입니다: (defun c:Createrec ()   (setq doorLength (getdist "\n가로 길이를 입력하세요: "))  ; 사각형 길이 입력   (setq doorHeight (getdist "\n세로 높이를 입력하세요: "))  ; 사각형 높이 입력   (setq doorPosition (getpoint "\n사각형을 배치할 시작점을 클릭하세요: "))  ; 배치 시작점 선택   (if (and doorLength doorHeight)  ; 길이와 높이가 유효한 값일 때     (progn       ;;  외형을 그리기 위한 사각형을 생성       (command "RECTANGLE" doorPosition (list (+ (car doorPosition) doorLength) (+ (cadr doorPosition) doorHeight)))       (princ (strcat "\n길이 " (rtos doorLength 2 2) "와 높이 " (rtos doorHeight 2 2) "로 사각형이 생성되었습니다."))     )     (princ "\n길이 또는 높이가 유효하지 않습니다.")   )   (princ) (...

캐드(AutoCAD)에서 AutoLisp 강좌 예제- AutoCAD 객체 선택 현재(Current) Layer로 변경

이미지
오토캐드(AutoCAD)에서 AutoLISP을 사용하여 선택한 객체의 레이어로현재 레이어 변경하기. 아래는 해당 기능을 구현한 AutoLISP 코드입니다. 명령어 (c:ChangeLayerToSelectedObjectLayer)는 원하는 이름으로 변경하여 작성합니다. (defun c:ChangeLayerToSelectedObjectLayer ()   (setq selObj (car (entsel "\n객체를 선택하세요: ")))  ; 객체 선택   (if selObj     (progn       (setq objData (entget selObj))  ; 선택된 객체의 데이터를 가져옴       (setq objLayer (cdr (assoc 8 objData)))  ; 객체의 레이어 이름을 추출       (setvar 'clayer objLayer)  ; 현재 레이어를 객체의 레이어로 변경       (princ (strcat "\n현재 레이어가 " objLayer " 로 변경되었습니다....