본문 바로가기
728x90

캐드리습31

notepad++ cad lisp 적용 1. notepad++  설치https://notepad-plus-plus.org/downloads/v8.6.7/ Download Notepad++ v8.6.7 | Notepad++Download Notepad++ v8.6.7 Release Date: 2024-05-13 Download Notepad++ x64 Download 32-bit x86 Download ARM64 Download source code Download Notepad++ source code of current version and/or check sha-256 digests for binary packages on GitHub Integrity & Authenotepad-plus-plus.org 2. notepad++  설정   .. 2024. 7. 18.
캐드 매크로 규칙 매크로 기능 기타 ^C ESC _ 또는 - 대화 상자 억제 ex) -plot, -layer 등... ; 또는 공백(Space Bar) Enter 리습에서 "Y"를 매크로에서는 Y;로 표기 \ 사용자 입력 대기 리습 command에서의 pause * 다른 기능을 실행하거나, ESC를 눌러서 기능을 취소하기 전까지 현재 실행 중인 기능을 반복 실행 매크로 맨 앞에 넣어야 함 2024. 4. 6.
캐드 문자 검색 와일드카드 와일드카드 내용 # 숫자 @ 문자 . 기호 * 숫자/문자/기호 2024. 4. 6.
lisp 명령어 오토리습으로 도면 그리는 사람들도 이젠 칼퇴근 좀 해 봅시다!. 가정으로 돌아가 가정을 돌보자구요! autolisp은 단축키? '단축키를 만들어보자' 캐드의 Acad.pgp 는 사용자로 하여금 단축키를 정의할 수 있는 화일인데, 이를 통해서 우리가 쉽게 한글자 또는 한 단어로 쉽게 명령을 실행하는 것이다. 1. 'Line' 명령의 단축키 지금의 autocad상에서는 'vlide'란 명령어를 입력하면 화면이 하나 뜹니다. 아래와 같이 말이죠. 오토캐드에서 제공하는 lisp 편집기라고 보면 됩니다. 자, 이제 여러분의 생애 첫 리습을 만들어 봅시다. (defun c:Li() (command "LINE")) 위의 명령어는 "line"을 "Li" 라는 단축키로 정의해 둔 것입니다. 즉, c: 다음의 "Li" 가.. 2024. 3. 11.
오토캐드(AUTO CAD) 객체 선택 리습 LISP 1. 객체 선택 리습 LISP 만들기 AUTOCAD에서 객체(entity)는 dxf 코드로 구성되어 있습니다. 지난 시간에 다룬 DXF 코드에서 객체가 표현되는 방법에 대해서 다루었습니다. 오늘은 DXF 코드를 이용하여 Autolisp의 함수를 통해 객체를 선택하는 리습을 작성해 보겠습니다. 코드 작성은 메모장을 실행하고 코드를 입력 후 “파일명.LSP” 형식으로 저장합니다. 리습을 불러오는 방법과 DXF 코드에 관해서는 아래 남긴 포스팅을 참고하세요 오토캐드(AUTO CAD) DXF 코드 조회 리습 LISP 오토캐드(AUTO CAD) 리습 LISP 추가하기 블로그의 인기글 오토캐드(AUTO CAD) 리본메뉴 메뉴막대 설정하기 오토캐드(AUTO CAD) 복사/일정 간격 복사 – COPY 오토캐드(AUTO.. 2023. 12. 15.
[Lisp] Common Lisp 문자열(String) 관련 함수 정리 Common Lisp 문자열 관련 함수 사용법을 정리해보았습니다 문자열 자르기 & 치환 ; 문자열 자르기 (subseq "abcdef" 2) -> "cdef" (subseq "abcdef" 0 2) -> "ab" ; 문자열 치환 (defparameter str (string "abcdef")) (setf (subseq str 0 2) "AB") str -> "ABcdef" ; 치환시 변경 전의 길이보다 변경 후의 부분이 더 길 경우, 변경 전의 길이만큼만 바뀐다. (늘어나지 않음) (defparameter str (string "abcdef")) (setf (subseq str 0 2) "ABC") str -> "ABcdef" (setf (subseq "abcdef" 0 2) "AB") ; (X) 변수에.. 2023. 12. 15.
VL-remove (리스트에서 요소제거하기) (vl-remove 인수 리스트) 특정 리스트에서 어떤 요소를 제거할때 좋습니다. example) _$ (vl-remove "a" (list "a" "a" "a" "b" "c" "a")) ("b" "c") _$ (vl-remove "안녕" (list "안녕" "하이" "ㅋㅋ")) ("하이" "ㅋㅋ") 리스트안에 해당 인수는 모두 제거를 해주고 리스트로 응답이 됩니다. 문자열 공백제거 할대 쓰면 좋겟져.^^ (defun @TextGapDelete(txt / txt) (setq txt (apply 'strcat (mapcar 'chr (vl-remove 32 (vl-string->list txt))))) txt) 공백열 제거 서브루틴입니다. (vl-string->list txt) 로 하면.. ascii 코드.. 2023. 12. 15.
▷ActiveX 처음 시작하기전에 읽어보세요.. 하루님이 드디어 VLISP를 시작하시는군요.. 제가 ActiveX에 대해 궁금할때 리습과 ActiveX의 연관관계를 설명해준 글을 찾았고 서적도 찾아봤지만 만족할만하게 없었습니다. 따라서 노가다식으로 하나씩 공부했습니다. 물론 중간에 캐도리님의 도움을 받았기도 했구요.. 짧은 지식이지만 ActiveX에 입문하시는분에게 약간의 길잡이가 되었으면 합니다. 물론 제가 여기에 설명하는 글이 정답은 아닙니다. 참고만 하세요.. ActiveX는 함수 익히는것보다.. 개념을 먼저 알고나면 나머지는 현재 알고 있는 리습 지식으로도 충분히 헤쳐나갈수 있습니다. ActiveX는 응용프로그램간의 Object를 삽입하는 기술이라고 합니다. 캐드에서 VBA 도움말을 보면 설명도 잘 나와있고 예제도 많이 있습니다. 따라서 함수공.. 2023. 12. 15.
ssget ssget The following is a detailed reference for the AutoLISP ssget function, including information on undocumented mode strings and selection behaviour. The reference consists of information which has been collected from various sources & compiled by numerous contributors. Contents Function Format Selection Mode Strings Filter List Operators Relational Operators Logical Operators System Variable.. 2023. 12. 15.
(문자) VL-string-trim (지정된 문자열을 원본글자에서 앞 뒤 제거) (vl-string-trim char-set str) 문자열의 시작부터 끝까지 검색하여 지정된 문자열을 제거합니다. char-set : 제거될 문자열을 나열한 문자열 str : 제거할 문자열 즉. 원본 문자 직접해보니 설명이랑 약간은 상의한거 같습니다 제거될문자를 전부 제거해주는지 알았는데. 시작부터 끝까지 검색해서 지정된 문자열을 제거하는데 앞과 뒤만 제거를 해주네여^^ Example _$ (vl-string-trim "aa" "aa is aa aa aa") " is aa aa " ;; 지정된 문자열을 원본 글자에서 앞 뒤 부분을 제거합니다. _$ (vl-string-trim "안녕" "안녕하세요 안녕 안녕") "하세요 안녕 " ;; 한글도 가능하네여.^^ _$ (vl-string-trim " " " .. 2023. 12. 15.
Setvar 시스템 함수 정리 * 3DDWFPREC 3D DWF 게시의 정밀도를 제어합니다. * 3DCONVERSIONMODE 재료 및 조명 정의를 최신 제품 릴리즈로 변환하는 데 사용됩니다. * 3DSELECTIONMODE 3D 뷰스타일을 사용할 때 시각적으로 겹치는 객체의 선택 우선순위를 제어합니다. * ACADLSPASDOC acad.lsp 파일이 모든 도면에 로드될지 또는 세션에 열려 있는 첫 번째 도면에만 로드될지 여부를 제어합니다. * ACADPREFIX ACAD 환경 변수로 지정된 디렉토리 경로를 저장하고(있는 경우) 필요한 경우 경로 구분 기호를 추가합니다. * ACADVER AutoCAD 버전 번호를 저장합니다. 이 변수는 도면 데이터베이스 단계 번호가 들어 있는 DXF 파일 $ACADVER 헤더 변수와는 다릅니다. .. 2023. 11. 16.
리습강의 ------ 리습강의 (1) ------ ▶ 단축키를 만들어보자 ◀ 캐드의 Acad.pgp 는 사용자로 하여금 단축키를 정의할 수 있는 화일입니다. 하지만 다른 사람자리에 가서라던가 단축키 정의가 쉽게 안되는 분들 한번 읽어 보세요. 1. Line 명령의 단축키 아래의 글을 Notepad.exe 나 기타 텍스트에디터로 하나 만들어서 아무 이름이나 저장하고 (예:test1.lsp 확장자는 꼭 LSP) 캐드에서 load 하십시오. (defun c:Li() (command "LINE")) 위의 글은 "line"을 "Li" 라는 단축키로 바꾸어 놓은 것입니다. c: 다음의 "Li" 가 단축키로 사용될 글자죠 만약 단축키를 "aa" 로 하고 싶으면 (defun c:aa() (command "LINE")) 이렇게 .. 2023. 7. 29.
도곽블럭_선택하여_선축척변경 도곽블럭_선택하여_선축척변경.lsp ;;; 도곽선택하여 선축척,치수축척 변경 ;;; 2017-08-17, izzarder.com (defun c:xxx ( / blk ent scale) (setvar 'CMDECHO 0) (command "_.UNDO" "_BE") (if (and (setq blk (car (entsel "\n>> 기준 도곽 선택: "))) (setq ent (entget blk)) (= (cdr (assoc 0 ent)) "INSERT") ) (progn (setq scale (cdr (assoc 41 ent))) (setvar 'LTSCALE scale) (setvar 'DIMSCALE scale) ;;; 필요없으면 앞에 주석처리 ;;; (prompt (strcat "선축척이 " (.. 2023. 6. 27.
문자 또는 숫자 자동 증가 문자 또는 숫자 자동 증가 출처 : http://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/getstring-if-ascii-if-integer/td-p/4397555 (defun c:tag ( / fun ins ocs str uxa ) (while (not (or (= "" (setq str (getstring "\nSpecify grid line tag: "))) (wcmatch str "~*[~0-9]*") (wcmatch str "~*[~a-zA-Z]*") ) ) (princ "\n 숫자 또는 알파벳문자이어야 함...") ) (if (/= "" str) (progn (if (wcmatch str "~*[~0-9]*") (setq fun (l.. 2023. 6. 27.
SSGET 사용법 정리 ; 한번의 선택만 허용 ; 윈도우와 크로싱은 억제하지 않음. ; 위도우와 크로싱을 억제하기 위해서는 앞에 "+." 가 붙어야 함 (defun c:test1() (setq ss (ssget ":E:S" '((0 . "line")))) (command "erase" ss "") ) ; 블럭 내부 엔터티를 선택 ; 즉 nentsel 을 여러개 하는 것과 같음 (defun c:test2() (setq ss (ssget ":N" '((0 . "insert")))) (command "erase" ss "") ) ; 중복 선택 허용 ; 즉, 동일한 객체를 두 번 선택해도 선택 셋에 모두 포함됨 (defun c:test3() (setq ss (ssget ":D" '((0 . "insert")))) (sslength s.. 2023. 6. 27.
중심선 리습 (defun c:ce(/ os ss k ent elist cenp rad p1 p2 p3 p4 dam ext la) ;->*error* start (defun *error* (msg)(princ "error: ")(princ msg) (setvar "clayer" cla) (setvar "osmode" os) (princ)) ;- 2023. 2. 15.
멀티 회전복사 리습 ;멀티 회전복사 -> 입력각도다르게 (defun c:crr (/ os ss cn af en nang) (defun *error* (msg)(princ "error: ")(princ msg) (setvar "osmode" os) (princ)) (setq os (getvar "osmode")) (setq ss (ssget)) (SETVAR "OSMODE" 32) (setq cn (getpoint "\n > Base point : ")) (setq af (getstring 5 "\n > Rotate Angle : ")) (SETVAR "OSMODE" 0) (command "copy" ss "" cn cn "Rotate" ss "" cn af ) (while (setq Nang (getstring "\n > .. 2023. 2. 14.
일정간격 다중 복사 리습 MC : 수평 수직 입력 간격으로 연속 다중복사 CR : 다중 회전복사 각도 다르게 입력가능 (동일간격은 엔터 ) ;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ;MC.LSP..... 다중복사(방향 임의 지정) ;멀티 복사 -> 1 객체선택 2 방향 지정 3간격입력 4 연속 엔터 ;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (defun C:MC ( / os1 ent tdist pnt1 spt1 ang1 dist udist) ;->*error* start (defun *error* (msg)(princ "\n 오류내용 : ")(princ msg) (setvar "osmode" os1) (princ)) ;- 입력각도다르게 (동일 각도 반복은 엔터) ; by SuHa ;━━━━━━━━━.. 2023. 2. 14.
레이어 만들기 리습 ;레이어만들기 ;아래에 같은 형식으로 여러개 추가해서 만드세요 (defun C:ML () (if (= nil (tblsearch "layer" "T"))(COMMAND "layer""m""T""c""3""""l""continuous""""")) ;;T레이어명이 없으면 T레이어명 만들기, 3색상, continuous라인형태(실선) (if (= nil (tblsearch "layer" "C"))(COMMAND "layer""m""C""c""1""""l""center""""")) (if (= nil (tblsearch "layer" "H"))(COMMAND "layer""m""H""c""2""""l""hidden""""")) (setvar "clayer" "0") ;; 작업 완료 후 해당 레이어(0)를 현재로.. 2023. 2. 14.
블럭 제자리 만들기 , 블럭 이름 바꾸기 리습 ;[블럭이름바꾸기] ;블럭이름 묻지도,따지지도 않고 날자와시간을 이름으로 바꾸기 ;날자와시간은 10진법을 적용하여 실수로 표현됨 ;예) 2010년 02월 19일 오후 5시 45분 27초-> ABC-20100219.174527 ;by ysJeong 2010.02.19 (defun c:BRN(/ os ent elist ins date rname fn_date) (defun *error* (msg)(princ "error: ")(princ msg) (setvar "osmode" os) (princ)) (setvar "cmdecho" 0) (setq os (getvar "osmode")) (setq ent (car (entsel "\nBlock select:"))) (setq elist (entget ent)).. 2023. 2. 14.
문자, 치수 스타일 설정 리습 ;; 현 도면 문자들 스타일변경 (defun C:mystyle () (setvar "cmdecho" 0) (setvar "ltscale" 2) ; 라인타입 스케일 2 2023. 2. 14.
카운터보어 리습 ;카운터보어 치수기입 dcb (defun dtr(a)(* pi (/ a 180.0))) (defun C:dcb (/ cla osm dms l l1 l2 alen hd hd1 su def_hd def_su def_dp dp h7 sp ap txt txt1 arrang h1 h2 h3 h4 h5 h6) (setvar "CMDECHO" 0) (setvar "BLIPMODE" 0) (setq osm (getvar "osmode")) (setq cla (getvar "clayer")) (setvar "osmode" 544) (setq dms (getvar "dimscale")) (setq L (* 2.5 dms)) (setq L1 (* DMS 1.9)) (setq L2 (* DMS 2.1)) (setq alen .. 2023. 2. 14.
치수 레이어를 자동으로 바꿔주는 리습 ;이 리습은 치수뽑을때 자동으로 도면층이 사용자가 지정한 치수 레이어로 바뀝니다. 치수기입 끝나면 복귀... ;리습 로딩은 APPLOAD 명령으로 하시거나 메뉴-도구-오토리습-응용프로그램 로드 하시면 됩니다. ;주의하실 점은 경로지정된 폴더 안에 넣으시면 됩니다. ;아래 내용중 (setq laynam "치수선") 이부분은 사용자의 치수선 도면층 이름으로 넣으시면 됩니다. ;메모장에 아래 복사하셔서 저장하면 됩니다.확장자는 [ 아무이름.LSP ] (vl-load-com) (vlr-command-reactor nil '((:vlr-commandWillStart . start_Dimm))) (vlr-command-reactor nil '((:vlr-commandEnded . end_Dimm))) (vlr-co.. 2023. 2. 14.
DLC 포함 리습 샘플 (defun c:SAMPLE1() (sample1_create_dialog) (setq dcl (strcat "SAMPLE1.DCL")) (setq dcl_id (load_dialog dcl)) (if (not (new_dialog "sample1" dcl_id)) (exit)) (action_tile "li" "(done_dialog 1)") (action_tile "ci" "(done_dialog 2)") (action_tile "pl" "(done_dialog 3)") (action_tile "in" "(done_dialog 4)") (setq wn (start_dialog)) (unload_dialog dcl_id) (cond ( (= wn 1)(command "line")) ( (= wn 2)(.. 2023. 2. 14.
도면 양식 불러오기 리습 (defun c:A4 ( / osm scl inp) (setvar "cmdecho" 0) (setq osm (getvar "osmode")) ;(setvar "osmode" 0) (setq scl (getreal "\n Scale : ")) (setq inp (getpoint "\n Insert point : ")) (command "-insert" "c:/경로/A4.dwg" "s" scl "r" "0" inp) (setvar "osmode" osm) (princ) ) ;;end of defun ;--------------------------------------- (defun c:A3 ( / osm scl inp) (setvar "cmdecho" 0) (setq osm (getvar "osmode").. 2023. 2. 14.
빠른인쇄 윈도우범위 A4 리습 ; 빠른인쇄 윈도우범위 A4 (defun c:a4plt(/ lhlpnt rhhpnt) ;명령어 a4plt (setvar "cmdecho" 0) (princ "\n...A4 Window quick plot....") (setq lhlpnt (getpoint "\n 인쇄범위 선택 : ")) (setq rhhpnt (getcorner lhlpnt "\n 다음 선택 : ")) ;(command "zoom" lhlpnt rhhpnt) (command "-PLOT" "YES" ;상세한 플롯 구성 YES "" ;배치 이름 입력 또는 [?] "★HP LaserJet 5100 PCL 6★.pc3" ;★플롯터이름 2023. 2. 14.
레이어 변경 리습 (없으면 만들기) (defun c:CE() ; 메인 함수 (CE 는 캐드상에서 명령어로 사용- c: 부호가 없으면 (CE) 로 명령) (ssget) ; 객체선택을 요구함 ssget-다중선택가능, entsel-단일선택 (setq ly (tblsearch "layer" "center")) ; 레이어 테이블에서 CENTER 라는 레이어 이름 찾아서 ly라는 함수로 기억시킴 (if (= ly nil) ; (조건식) 만약 ly 로 기억시킬 CENTER라는 레이어가 없을 때 아래 라인 수행(있다면 if는 수행치 않음) (command "layer" "m" "center" "lt" "center" "" "c" "1" "" "" )) ; 조건식 if 끝 ;CENTER 레이어 만듬 ;....layer-명령어, m-만들기, center-레.. 2023. 2. 14.
제자리 블럭 만들기 이름지정 가능 리습 ;;일반객체를 카피클립으로 블럭 만들어서 제자리 붙이고 원본은 삭제함-블럭이름 지정가능 (defun c:MB (/ os ent bp blk_nme obn ins rnam byn byn2) (defun *error* (msg)(princ "error: ")(princ msg) (setvar "osmode" os) (princ)) (graphscr)(terpri) (setvar "CMDECHO" 0) (setq os (getvar "osmode")) (prompt "≫ 블럭으로 만들 객체를 선택을 하세요... ") (setq ent (ssget )) (setq bp (getpoint "\n≫ 삽입점 클릭하세요 : "))(terpri) (command "_copybase" bp ent "" "_pasteblo.. 2023. 2. 14.
선택점 중심에서 장공 그리기 리습 ;;선택점 중심에서 장공 그리기 (defun c:SL(/ os cla ort cp dia rad len hlen p1 p2 p3 p4 p5 p6) ; 지역변수와 defun 정의,명령어 JG ;아래 두줄은 명령 실행중 취소를 하거나 에러 발생시 에러 메세지를 띄우고 osmode, clayer, orthomode 를 초기값으로 되돌림 (defun *error* (msg)(princ "error: ")(princ msg) (setvar "osmode" os) (setvar "clayer" cla)(setvar "orthomode" ort) (princ) ) ;;에러 핸들러 끝 (prompt "\n 선택점 중심에서 장공 그리기") ; 화면에 보여질 문장 (setq os (getvar "osmode")) ; 현재.. 2023. 2. 14.
블럭 이름 일괄 변경 (날짜,시간 일련번호) 리습 (defun c:BN( / block nbn bn) (setvar "cmdecho" 0) (setq block (tblnext "block" T)) (while block (if (/= (substr (setq bn (cdr (assoc 2 block))) 1 1) "*") (progn (while (tblsearch "block" (setq nbn (rtos (getvar "cdate") 2 8)))) (command "rename" "b" bn nbn) ) ) (setq block (tblnext "block")) ) (princ) ) ========================================================= 아래는 각 줄의 코드 설명입니다. (defun c:BN( / b.. 2023. 2. 14.
728x90