3월, 2025의 게시물 표시

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