AutoCAD

[AutoCAD / LISP] 오토캐드 (블럭 이름 변경) 리습 분석 해보기

Kim.Sung 2021. 2. 11. 15:46
728x90

※ 오토캐드에 리습이라는 확장명 과 그걸 가지고 다양한 기능을 만들 수 있는걸 어제 처음 알게 되었다.

※ 한가지 기능 변경 요청으로 하루 파악 및 나름 분석을 하여 제작 하였다.

※ 기존 LISP(리습) 기능 중에 블록(Block) 명(name) 개별로 변경 해주는 것이 있다.

※ 하나의 창이 생성되면서 블록 이름을 입력하여 변경하는 것은 찾을 수 없어 그것을 제작 해보았다.

※ 이 기록은 제작하면서 파악 한 부분을 추후을 위해 남겨 놓는다.

 

1. 형태 

※ 아래와 같이 창이 나와 기존 이름을 변경 하면 선택한 블록만 변경 되는 형태 이다.

2. 분석

※ 여러가지 리습을 보고 나름 분석 한 것이니 틀릴 수도 있습니다. 참고만 해주세요.

(1) (defun c:cln(/ myerror os list enlist1 blist old new ins dclid  fn fname)

    ※ c:cln : 명령어 등록 현재 명령어 "cln"

    ※ list ...: TEST 해보니 변수 선언 같이 활용 하는거 같음   

(2) (setq ins (cdr (assoc 10 (entget enlist1))))

    ※ enlist1 : 현재 선택한 블록 

    ※ ins .. assoc10 : assoc 10 이 좌표 값을 불러 온다고 한다. 그 값을 선택한 블록의 좌표값을 ins 한테 넘긴다. 

(3) (command "explode" list

    ※ 선택한 블록을 파괴(해체) 한다. 실제 테스트 결과 선택한 블록이 해체 됨

(4) (command "_.block" new ins "P" "") 

     ※ 원래 있던 좌표에 새로운 이름으로 블록을 생성 한다.    

(5) (command "_.insert" nbn ins "" "" "")

     ※ 원래 있던 좌표에 블록을 넣는다 ?    

 

※ 여기까지 리습(LISP)에 대해 파악한 것을 기록 추후 변경점은 추가로 기록 예정

728x90