캐드(AutoCAD)에서 AutoLisp 강좌 예제 - 선택한 원들을 폴리선으로 변환하기

 캐드(AutoCAD)에서 AutoLisp 강좌 예제 - 선택한 원들을 폴리선으로 변환하기



캐드 (AutoCAD)에서 AutoLisp을 이용하여, 원(들)을 선택하여, 폴리선으로 변환하는 Lisp 프로그램입니다.

다음은 AutoLISP 코드를 이용한 CtoP(Circle to Polyline)를 작성하는 예제입니다:

예제코드:

;원을 선택하여 폴리선으로 변환해 주는 LISP

(defun C:CtoP()

  (PRINC "폴리선으로 변환할 원을 선택합니다.\n")

  (setq circleGroup (ssget '((0 . "CIRCLE")))) ;원 객체 선택

  (if circleGroup 

    (progn

      (setq count 0)

      (repeat (sslength circleGroup)

;원의 정보를 취득합니다.

        (setq CEnt (ssname circleGroup count)  CirList (entget CEnt)

              CCen  (cdr (assoc 10 CirList))  CRad  (cdr (assoc 40 CirList))

              CLa  (cdr (assoc  8 CirList))  CLin  (cdr (assoc  6 CirList))

              CClr  (cdr (assoc 62 CirList))  CLts  (cdr (assoc 48 CirList))

              )

;폴리선의 정보를 List로 만듭니다.

        (setq PEnt (list '(0 . "LWPOLYLINE")

                         '(100 . "AcDbEntity")

                          (cons 8 CLa)

                         '(100 . "AcDbPolyline")

                         '(90 . 2)

                         '(70 . 1)

                         '(43 . 0.0)

                         '(38 . 0.0)

                         '(39 . 0.0)

                          (cons 10 (polar CCen (* pi) CRad))

                         '(40 . 0.0)

                         '(41 . 0.0)

                         '(42 . 1.0)

                          (cons 10 (polar CCen (* pi 2.0) CRad))

                         '(40 . 0.0)

                         '(41 . 0.0)

                         '(42 . 1.0)

                         '(210 0.0 0.0 1.0)

                         )

              )

        (if CLin (setq PEnt (append PEnt (list (cons 6 CLin)))))

        (if CClr (setq PEnt (append PEnt (list (cons 62 CClr)))))

        (if CLts (setq PEnt (append PEnt (list (cons 48 CLts)))))

        (entmake PEnt)

        (entdel CEnt)

        (setq count (1+ count))

        )

      )

    )

  (PRINC (strcat "\n"(itoa count) " 선택한 원들을 폴리선으로 변환완료!"))

  (PRINC)

  )


설명:

1. ssget을 이용하여 원(들)을 선택합니다.

2. entget를 이용하여 선택한 원(들)의 정보를 취득합니다.

3. list 함수를 이용하여, 폴리선의 정보를 만듭니다.

4. entmake함수를 이용하여 폴리선(Polyline)으로 변환하고, entdel을 이용하여 기존의 원을 삭제합니다.




사용 방법 1:

1. 이 코드를 AutoCAD의 VisualLISP 편집기에서 입력하고, 저장 후 로드합니다.

2. 명령창에 CtoP를 입력 합니다.

3. 원(들)을 선택하고 Enter 입력시, 원(들)을 폴리선으로 변환됩니다.


사용 방법 2:

1. 원하는 이름.lsp 파일을 만들고, 위의 코드를 작성합니다.

2. Appload 명령을 이용하여 (원하는 이름.lsp)파일을 선택하여 load 합니다.

2. 명령창에 CtoP를 입력 합니다.

3. 원(들)을 선택하고 Enter 입력시, 원(들)을 폴리선으로 변환됩니다.

캐드(AutoCAD)에서 AutoLisp을 예제와 함수를 연습할 수 있습니다.