본문 바로가기
728x90

LISP16

lisp 명령어 오토리습으로 도면 그리는 사람들도 이젠 칼퇴근 좀 해 봅시다!. 가정으로 돌아가 가정을 돌보자구요! autolisp은 단축키? '단축키를 만들어보자' 캐드의 Acad.pgp 는 사용자로 하여금 단축키를 정의할 수 있는 화일인데, 이를 통해서 우리가 쉽게 한글자 또는 한 단어로 쉽게 명령을 실행하는 것이다. 1. 'Line' 명령의 단축키 지금의 autocad상에서는 'vlide'란 명령어를 입력하면 화면이 하나 뜹니다. 아래와 같이 말이죠. 오토캐드에서 제공하는 lisp 편집기라고 보면 됩니다. 자, 이제 여러분의 생애 첫 리습을 만들어 봅시다. (defun c:Li() (command "LINE")) 위의 명령어는 "line"을 "Li" 라는 단축키로 정의해 둔 것입니다. 즉, c: 다음의 "Li" 가.. 2024. 3. 11.
중심선 리습 (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.
레이어 만들기 리습 ;레이어만들기 ;아래에 같은 형식으로 여러개 추가해서 만드세요 (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.
블럭 이름 변경 리습 (이름 앞,뒤 첨자 추가) 리습 설명 (defun c:renbl ( / key txt op oDocument ) (prompt "\n블럭이름 일괄변경하기 ...") (initget "Front Back") (setq key (getkword "\n앞에넣기(F)/뒤에넣기: ")) (if (= key nil) (setq key "Back")) (cond ((= key "Front") (setq op "앞에")) ((= key "Back") (setq op "뒤에")) ) (setq txt (getstring (strcat "\n" op " 추가할 이름 입력: "))) (setq oDocument (vla-get-activedocument (vlax-get-acad-object))) (vlax-for oBlock (vla-get-blocks oD.. 2023. 2. 14.
728x90