반응형

AutoLisp 10

AutoLisp 강좌 예제 - 현재 레이어 (Layer) 이름 비교하기

AutoCAD에서는 작업 중인 객체들이 특정 레이어에 속해 있으며, 이 레이어의 이름에 따라 도면 요소를 분류하거나 제어할 수 있습니다. 때로는 특정 접두어로 시작하는 레이어만을 대상으로 특정 작업을 수행하고자 할 때가 있습니다. 예를 들어, 이름이 "test"로 시작하는 모든 레이어에서만 작업을 하거나, 해당 레이어가 활성화되어 있을 때만 명령을 실행하도록 제한할 수도 있습니다. 이런 조건을 확인하기 위해 AutoLISP을 사용할 수 있습니다.다음은 현재 활성화된 레이어의 이름(현재 레이어 cLayer)이 "test"로 시작하는지를 확인하는 간단한 AutoLISP 함수입니다. 이 코드를 통해 사용자는 현재 어떤 레이어가 활성화되어 있는지를 확인하고, 그 레이어가 특정 규칙(여기서는 "test"로 시작하..

AutoLisp 2025.04.14

AutoLisp 강좌 예제- AutoCAD에서 선택한 객체 Layer로 현재(Current) 레이어로 변경하기

오토캐드(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)))  ; 객체의 레이어 이름을 추출   ..

AutoLisp 2025.02.01

오토캐드 AutoLisp 강좌 예제 - 객체에서 레이어(Layer)명을 가져온다.

AutoCAD에서 AutoLISP를 사용하여 객체의 레이어를 가져오는 예제를 설명합니다. 다음은 코드 예제와 설명을 작성하였습니다. 코드 예제:(defun c:GetLayer ( / ent layer)   ; 사용자에게 객체 선택을 요청합니다.   (setq ent (car (entsel "\n객체를 선택하세요: ")))   ; 객체가 선택되었는지 확인합니다.   (if ent     (progn       ; 선택한 객체의 레이어를 가져옵니다.       (setq layer (cdr (assoc 8 (entget ent))))       ; 레이어를 출력합니다.       (princ (strcat "\n선택한 객체의 레이어: " layer))     )     ; 객체가 선택되지 않았을 경우 메시지..

AutoLisp 2025.01.26

[AutoLisp]오토캐드 AutoLisp 강좌 예제 - 선택한 블럭(Block)들의 위치를 출력하기

AutoLISP를 사용하여 선택한 블록의 위치 출력합니다.AutoCAD에서 AutoLISP 실행:명령줄에서 VLISP를 입력하여 Visual LISP 편집기를 열어 아래의 코드를 작성합니다.LISP 코드 작성: 아래의 코드는 선택한 블록의 위치를 가져와 출력하는 간단한 예입니다.코드(defun C:GetBlockPosition ( / selSet blkName blkHandle blkEnt blkInsertPt) ;; 선택한 블록 집합 만들기 (setq selSet (ssget "_I" '((0 . "INSERT")))) ;; INSERT는 블록을 의미 (if selSet (progn ;; 선택한 블록 정보 가져오기 (setq blkEnt (ssname selSet 0)) ;; 선택된 첫 번째 블록 가져..

AutoLisp 2024.10.09

[AutoLisp]오토캐드 AutoLisp 강좌 예제 - 오토리습을 이용한 사각형(Rectang) 만들기 예제

AutoLisp을 공부하는 분들께 도움이 되고자, 사각형(Rectang)을 그리는 Lisp 예제를 만들어 보았습니다.아래의 내용을 이해해 주시고, 문법 및 함수는 [AutoLisp 문법 설명 참조]를 확인바랍니다.Rectang 사각형 그리기를 Lisp으로 구현함. (defun c:rec1() (setq ptLB(getpoint "\n좌측 하단점:")) (setq ptRT(getcorner ptLB "\n우측 상단점:")) (setq ptLT(list (car ptLB) (cadr ptRT) 0)) (setq ptRB(list (car ptRT) (cadr ptLB) 0)) (command "pline" ptLB ptLT ptRT ptRB "c") (princ) )코드 설명 :1. GetPoint : 사용..

AutoLisp 2024.05.25

[AutoCAD]AutoLisp 강좌 예제 - AutoCAD DXF 객체정보 확인하기

AutoCAD의 모든 객체는 DXF 정보를 가지고 있다.AutoLisp으로 객체의 DXF 정보를 가져올 수 있는 방벙은명령: (entget(car(entsel "메시지 입력")))  이와 같이 사용할 수 있다.그렇다면, Line, Arc, Circle, Text, Polyline 등의 DXF 정보를 확인해 본다. AutoCAD Command에 아래와 같이 입력하여 각 객체들을 선택한다.명령: (entget(car(entsel "객체선택:"))) 폴리선 (Polyline 선택)객체선택:((-1 . ) (0 . "LWPOLYLINE") (330 . ) (5 . "2D2") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (62 . 2) (100 . "AcD..

AutoLisp 2024.02.23

[AutoCAD]오토캐드 AutoLisp 강좌 예제 - AutoLisp으로 단축키를 만들기

*단축키를 함 만들어 보기단축키를 설정하는 파일은 Acad.PGP파일로 설정을 하는데..파일의 위치는 Support폴더에 있으며,AutoCAD 2024에서는 컴퓨터 로그인이름아래에C:\Users\사용자\AppData\Roaming\Autodesk\AutoCAD 2024\R24.3\kor\Support\acad.pgp가 존재한다.이것은 로그인하는 사람에 따라서 각종 정보를 달리 사용할 수 있도록하는 설정보조기능이다. PGP파일로 단축키를 설정하며, AutoLisp으로는 프로그램을 작성하여 명령어 이름을 입력하여 사용한다.다만, 간단하게 연습할 수 있어 사용해봅니다. 1. Line 명령의 단축키아래의 글을 Notepad.exe 나 기타 텍스트에디터로 하나 만들어서원하는 이름으로 저장하고 (예:test1.ls..

AutoLisp 2024.02.23

[AutoCAD]오토캐드 AutoLisp 강좌 예제 - 폭이 존재하는 폴리선 만들기

AutoCAD에서는 폴리선(Polyline)을 이용하여 다양한 기능과 프로그램에 응용할 수 있다.폴리선을 작성하여 길이와 위치, 다음 포인트등을 활용하여 간격, 위치등 다양하게 활용할 수 있다.메모장 및 텍스트 편집기에서 아래와 같이 작성하고 test.lsp파일을 만든다.AutoCAD를 실행하여 appload명령을 이용하여 해당 리습파일을 올린다. poly1 라는 명령을 Command 상에서 실행한다.명령은 poly1을 사용자가 원하는 명령어 이름으로 변경하여 사용할 수 있다.실행을 완료하면 zoom all을 이용하여 그려진 폴리선을 확인한다.결과 : 폭이 있는 노란 폴리선을 확인한다.응용 : 각 정보를 이용하여 변형해서 확인해 본다.(defun c:poly1()    ;vertex list    (Se..

AutoLisp 2024.02.23

[AutoCAD] 오토캐드 AutoLisp 간단한 문법설명 1

지금부터 AutoLisp의 규칙을 알아보도록 합니다.1. 숫자정수와 실수로 나뉜다.정수는 1,2,3,4,5….. 실수는 1.2345 등정수는 32bit범위를 갖는다. ( -2147483648 ~ +21474883647)(참고, 일부의 정수는 -32768 ~ +32767의 16Bit 범위) 2. 문자열Lisp에서는 사용자에게 전달을 하거나 데이터값으로 문자열을 사용한다.“” 을 이용하여 표현하며 다음과 같이 사용한다.예) “ABC” “홍길동”문자열은 대소문자를 구분하지 않는다.다만, 사용자에게 보여질 Prompt는 문자열 그대로를 보여주며, 변수와 상수는 구분하지 않는다. 3. () 괄호AutoLisp은 반드시 괄호를 통하여 정의 시작부터 끝까지 표현한다.표현식 : (함수 변수1 값1 변수2 값2 . . ..

AutoLisp 2024.02.23

[AutoCAD] 오토캐드 에서 AutoLisp 강좌 예제 - 오토리습으로 길이를 구하기

AutoCAD를 사용하다 보면, 객체의 길이를 알아야 할 때가 있는데, 필요할 때 마다 객체를 선택하고 속성의 정보를 보거나, 하나하나씩 길이를 측정해야 할 때가 있습니다.명령을 실행하고, 원하는 객체를 선택하면 길이를 출력하는  Lisp입니다.Pline, Line, arc, circle 모두 가능합니다.(defun c:getlength() (vl-load-com) (setq x_object (entsel)) (setq x_object (vlax-Ename->Vla-Object (car x_object)))  (setq x_length (vlax-curve-getdistatparam x_object (vlax-curve-getendparam x_object ))) (princ (rtos x_length)..

AutoLisp 2024.02.21
반응형

/* 코드복사 버튼 */ pre { position: relative; overflow: visible; } pre .copy-button { opacity: 0; position: absolute; right: 8px; top: 4px; padding: 6px 18px; color: rgb(255, 255, 255); background: rgba(255, 223, 0, 0.6); border-radius: 5px; transition: opacity .3s ease-in-out; } pre:hover .copy-button { opacity: 1; } pre .copy-button:hover { color: #eee; transition: all ease-in-out 0.3s; } pre .copy-button:active { color: #33f; transition: all ease-in-out 0.1s; } .copy-message:before { content: attr(copy-message); position: absolute; left: -95px; top: 0px; padding: 6px 18px; color: #fff; background: rgba(255, 223, 0, 0.6); border-radius: 5px; } /* 코드복사 버튼 END */