12. 입력 함수

 

 

1. initget (INITial GET)

    (1) 기능 :

      "GETxxx 명령들이 받아들이는 조건을 입력의 오류를 방지하는 함수

      "GETSTRING"과 "GETVAR"는 제외

    (2) 사용법

      (INITGET 조건인수 "키워드")

    (3) 예제

      (initget 1 "yes no")

      (initget 2)

       

    (4) 예제 프로그램

      Getkword 참조

    ** 참고

    인 수

    내                  용

           1

      무응답(NULL)을 허용하지 않는다.

           2

      "0"의 입력을 허용하지 않는다.

           4

      음수값의 입력을 허용하지 않는다.

           8

      LIMITS값을 검사하지 않는다.

          16

      2D Point 대신 3D Point로 입력받는다.

          32

      Rubber-Band Line을 Dashed Line으로 변한시킨다.

          64

      Getdist에서 좌표의 Z값을 무시한다.

         128

      입력형태를 제한하지 않는다.

     

    함  수

    1

    2

    4

    8

    32

    64

    128

       GetInt

    ×

    ×

    ×

    ×

       GetReal

    ×

    ×

    ×

    ×

       GetKWord

    ×

    ×

    ×

    ×

       GetAngle

    ×

    ×

    ×

    ×

       Getpoint

    ×

    ×

    ×

    ×

       GetString

    ×

    ×

    ×

    ×

    ×

    ×

       GetDist

    ×

    ×

       GetCorner

    ×

    ×

    ×

    ×

     

    ** 참고

    InitGet함수는 Get함수 앞에서 한번만 동작하며 항상 nil을 반환한다.

 

 

2. GETINT (GET INTeger)

    (1) 기능

      입력되는 수치데이타를 정수형으로 입력받는 함수

      리스트 형태, 실수는 입력 받지 못하며, 오로지 키보드에서만 입력을 받는다.

    (2) 사용법

      (Setq Variable (Getint "message"))

    (3) 예제

      (setq number (getint "Enter Number : "))

    (4) 예제 프로그램

      Getint 명령을 사용해서 사각형을 그리는 프로그램을 만든다면 다음과 같이 만들 수 있으나

      뒤에 나오는 Getpoint를 사용해서 만드는 것이 훨씬 간단하고, 편하게 만들 수 있다.

       

       (defun c:gi()

          (setq point01 (getint "Enter X point : "))

          (setq point02 (getint "Enter Y point : "))

          (setq xy01 (list point01 point02))

          (setq base (getint "Enter width : "))

          (setq height (getint "Enter height :"))

          (setq xy02 (list (+ point01 base) point02))

          (setq xy03 (list (+ point01 base) (+ point02 height)))

          (setq xy04 (list point01 (+ point02 height)))

          (command "line" xy01 xy02 xy03 xy04 "c")

          (princ)

       )

       

       

       Command: gi

       Enter X point : 100

       Enter Y point : 100

       Enter base : 200

       Enter height :100

       

 

 

3. GETREAL

    (1) 기능

      입력되는 수치데이타를 실수형으로 입력받는 함수

      Getint와 같이 리스트 형태, 정수를 입력받을 수 있으나 변수에는 실수로 저장되며

      오로지 키보드에서만 입력을 받는다.

    (2) 사용법

      (Setq Variable (Getreal "message"))

    (3) 예제

      (setq number (Getreal "Enter Number : "))

    (4) 예제 프로그램

      Getint 참조

     

     

4. GETPOINT

    (1) 기능

      사용자가 원하는 좌표를 마우스나, 키보드에 의해 입력할 수 있다.

      입력된 값은 List 형태로 저장된다.

    (2) 사용법

      (setq  Variable (GETPOINT point "message"))

    (3) 예제

      (setq pnt1 (getpoint "\n First point: "))

      (setq pnt2 (getpoint "\n Second point: "))

    (4) 예제 프로그램

      Getpoint 명령을 사용하면, Getint 명령을 사용해서 사각형을 그리는 프로그램보다 훨씬 쉽고

      간단하게 프로그램이 만들어 진다.

       

       (defun c:gp-01()

          (setq point01 (getpoint "\n Enter First point : "))

          (setq point02 (getpoint "\n Enter Second point : "))

          (setq point03 (getpoint "\n Enter Third point : "))

          (setq point04 (getpoint "\n Enter Fourth point : "))

          (command "line" point01 point02 point03 point04 "c")

          (princ)

       )

       

       (defun c:gp-02()

          (setq point01 (getpoint "\n Enter First point : "))

          (setq point03 (getpoint "\n Enter Third point : "))

          (setq point02 (list (car point01) (cadr point03)))

          (setq point04 (list (car point03) (cadr point01)))

          (command "line" point01 point02 point03 point04 "c" )

          (princ)

       )

       

       Command: gp-01

        Enter First point :

        Enter Second point :

        Enter Third point :

        Enter Fourth point :

       

       Command: !point01

       (146.135 130.031 0.0)

       Command: !point02

       (287.604 128.911 0.0)

       Command: !point03

       (277.525 233.757 0.0)

       Command: !point04

       (136.803 237.115 0.0)

       

 

 

5. GETCORNER

    (1) 기능

      기존의 지점을 이용하여 대각 방향의 좌표를 선택하는 함수

      기준점(첫번째 좌표)으로부터 사각 윈도우를 이용하여 다른 좌표를 입력받는다.

    (2) 사용법

      (setq  Variable (GetCorner  기준점  "message"))

    (3) 예제

      (setq pnt1 (getpoint "\n Enter First Point : "))

      (setq pnt4 (getcorner pnt1 "\n Enter corner point : "))

    (4) 예제 프로그램

       

       (defun c:gc()

          (setq point01 (getpoint "\n Enter First point : "))

          (setq point03 (getcorner point01 "\n Enter corner point : "))

          (setq point02 (list (car point01) (cadr point03)))

          (setq point04 (list (car point03) (cadr point01)))

          (command "line" point01 point02 point03 point04 "c")

          (princ)

       )

       

       Command: gc

        Enter First point : 100,100

        Enter corner point : 300,500

       

       Command: !point01

       (100.0 100.0 0.0)

       Command: !point02

       (100.0 500.0)

       Command: !point03

       (300.0 500.0 0.0)

       Command: !point04

       (300.0 100.0)

       

    ** 참고

    GetCorner 함수를 수행하기 전 반드시 "GETPOINT" 등에 의해 한점을 선택해야 함.

 

 

6. GETDIST (GET DISTance)

    (1) 기능

      임의의 길이를 설정하거나 특정 지점으로부터의 거리를 설정 시키는 함수

      두 점 사이의 거리를 계산하여 실수로 출력한다.

    (2) 사용법

      (setq  Variable (GETDIST   기준점  "message"))

    (3) 예제

      (setq point1 (getpoint " Enter base point : "))

      (setq PTDist (getdist "\n Second Point : "))

    (4) 예제 프로그램

       

       (defun c:gd()

          (setq point01 (getpoint "\n Enter First point : "))

          (setq PTDist (getdist point01 "\n Enter Second point : "))

          (princ "\n")

          (princ PTDist)

          (princ)

       )

       

       Command: gd

       Enter First point :

       Enter Second point :

       97.8139

       

       Command: !point01

       (144.642 118.837 0.0)

       Command: !PTDist

       97.8139

       

 

 

7. 예제 프로그램

    : 사각뿔을 그리는 프로그램

     

     ; RET.LSP

     (defun c:ret()

        (prompt " Loaded.. \n")

        (setq point01 (getpoint "\n Enter First Point : "))

        (setq point03 (getcorner point01 "\n Enter Second Point : "))

        (setq height (getdist point01 "\n Enter of Height : "))

        (setq point02 (list (car point01) (cadr point03)))

        (setq point04 (list (car point03) (cadr point01)))

        (setq xpoint (/ (+ (car point01) (cadr point04)) 2.0))

        (setq ypoint (/ (+ (cadr point01) (cadr point02)) 2.0))

        (setq point05 (list xpoint ypoint height))

        (command "3dface" point01 point02 point03 point04 "")

        (command "3dface" point01 point05 point04 "" "")

        (command "3dface" point01 point05 point02 "" "")

        (command "3dface" point02 point05 point03 "" "")

        (command "3dface" point03 point05 point04 "" "")

        (prompt "\n By PNP")

        (prompt "\n Copytight 2000")

        (princ)

     )

     

     

     Command: (load "c:/ret")

     C:RET

     Command: ret

      Loaded..

      Enter First Point :

      Enter Second Point :

      Enter of Height : 100

     Command:

      By PNP

      Copytight 2000

     

     Command: !point01

     (132.324 56.9001 0.0)

     Command: !point02

     (132.324 209.131)

     Command: !point03

     (314.852 209.131 0.0)

     Command: !point04

     (314.852 56.9001)

     Command: !point05

     (94.612 133.016 128.275)

     Command: !xpoint

     94.612

     Command: !ypoint

     133.016

     

 

 

8. GetKWord (GET Key WORD)

   (1) 기능 :

    [getstring] 함수와 유사한 기능이지만 [initget]에 의해 지정된 단일 문자만을 입력 받습니다.

    만약, 지정된 문자 이외의 입력을 시도하면 에러메시지를 출력하고 재입력을 요구합니다.

    ※ [getkword]에 의해 입력된 문자는 대소문자 구분없이 대문자로 입력됩니다.

    ** 주의

    [getkword]는 반드시 [initget] 함수가 선행되어야 합니다.

 

   (2) 사용법

    (GETKWORD Message)

 

   (3) 예제

     Command : (initget "Y N Q")

     

     Command : (setq kword (getkword "Yes/No/Quit : "))

     

     Yes/No/Quit : x

     <- 부적합 문자 입력

     Invalid option keyword.

     <- 에러메시지 출력

     Yes/No/Quit : q

     <- 재입력 요구 (소문자)

     Command : !kword

     

     "Q"

     <- 대문자

 

   (4) 예제 프로그램 :

    Rectangle, Circle, Triangle 중에서 하나를 선택하는 프로그램입니다.

    ;; File Name : expkword.LSP 

    (defun c:expkword(/ ans)

      (initget 1 "R C T Q")

      (setq ans (getkword "\n Rectangle/Circle/Triangle/Quit : "))

      (cond

        ((= ans "R") (rectangle_dmz))

        ((= ans "C") (circle_dmz))

        ((= ans "T") (triangle_dmz))

        ((= ans "Q") (bye_dmz))

      )

      (princ "\n By D.M.Z")

      (princ "\n Copyright 2000")

      (princ)

    )

    (defun rectangle_dmz(/ point01 point02 point03 point04 width height)

      (setq point01 (getpoint "\n Enter Point : "))

      (setq width (getdist point01 "\n Enter Width : "))

      (setq height (getdist point01 "\n Enter Height : "))

      (setq point02 (list (+ (car point01) width) (cadr point01)))

      (setq point03 (list (car point02) (+ (cadr point02) height)))

      (setq point04 (list (car point01) (cadr point03)))

      (command "line" point01 point02 point03 point04 "c")

    )

    (defun circle_dmz(/ point01 rad)

      (setq point01 (getpoint "\n Enter Point : "))

      (setq rad (getdist point01 "\n Enter Radius : "))

      (command "circle" point01 rad "")

    )

    (defun triangle_dmz(/ point01 point02 point03 width height)

      (setq point01 (getpoint "\n Enter Point : "))

      (setq width (getdist point01 "\n Enter Width : "))

      (setq height (getdist point01 "\n Enter Height : "))

      (setq point02 (list (+ (car point01) width) (cadr point01)))

      (setq point03 (list (+ (car point01) (/ width 2)) (+ (cadr point01) height)))

      (command "line" point01 point02 point03 "c")

    )

    (defun bye_dmz()

      (princ "\nCancel......")

      (princ)

    )

    (princ "\nLoaded.......")

    (princ)

     

 

 

9. GetString

   (1) 기능

    사용자로부터 [Enter]이 눌려지기 전까지 단일 문자 또는 문자열을 입력 받을 수 있습니다.

    132자까지 입력 가능하며, 더 많은 입력을 받고자 할 때는 [strcat] 함수를 사용하여 연결시켜야 합니다.

    선택적은 옵션으로는 띄어쓰기를 위한 [T]가 있습니다.

    옵션 [T]를 지정하지 않은 상태에서 Space Bar를 누르면 입력은 종료됩니다.

    ※ [getstring]은 [initget] 함수의 선행 지정은 선택적이므로 생략해도 무방합니다.

     

   (2) 사용법

    (getstring  Option  "message")

     

   (3) 예제 :
 

    Command : (setq txt01 (getstring "\nEnter string : "))

     

    Enter string : getstring

    <-  단일 문자 입력

    Command : !txt01

     

    "getstring"

    <- 대소 문자 구분

    (setq txt02 (getstring t "\nEnter string : "))

    <- [T] 옵션 지정

    Enter string : Sample   GetString

    <- Space Bar 입력

    Command : !txt02

     

    "Sample   GetString"

     

     

   (4) 예제 프로그램

       

    ; 옵션 [T]를 사용하지 않은 프로그램

    ; 옵션 [T]를 사용한 프로그램

     

    (defun c:expgstr(/ expstr point01)

      (initget 128)

      (setq expstr (getstring "\n Enter String : "))

      (setq point01 (getpoint "\n Enter Point : "))

      (Command "text" point01 "" "" expstr)

      (princ "\n By D.M.Z")

      (princ "\n Copyright 2000")

      (princ)

    )

    (princ "\nLoaded......")

    (princ)

     

    (defun c:expgstr(/ expstr point01 expsize )

      (initget 128)

      (setq expstr (getstring  t  "\n Enter String : "))

      (setq point01 (getpoint "\n Enter Point : "))

      (initget 4)

      (setq expsize (getreal "\n Text Size :"))

      (Command "text" point01 expsize "" expstr)

      (princ "\n By D.M.Z")

      (princ "\n Copyright 2000")

      (princ)

    )

    (princ "\nLoaded......")

    (princ)

     

     

     

     

10. GetAngle

   (1) 기능 :

    [UNITS] 또는 시스템 변수 [ANGBASE]에 의해 지정된 각도를 기준으로 입력된 점의 라디안 각도를 구합

    니다. 옵션 [point]가 지정되면 이 점을 기준으로 레버 밴드에 의한 각도를 입력받고, [point]가 생략되면

    기준점의 입력 기다립니다.

    AutoCAD에서는 동쪽, 즉 오른쪽 수평선이 기준 0도로 설정되어 있습니다.

    기준 0도를 변경하고자 할 때는 아래의 그림과 같이 [UNITS] 명령 또는 시스템 변수 [ANGBASE]를

    사용하면 됩니다.(기준 0도를 변경하는 것은 결코 바람직하지 않습니다)

     

    [ANGBASE]

    [Units]

 

   (2) 사용법

    (getangle point Message)

     

   (3) 예제 :
 

    Command : (setq ang1 (getangle "\n기준점 입력 :"))

     

    기준점 입력 :

    <- 기준점 입력 대기

    두번째 점을 지정: 1.56417

    <- 두번째 점을 입력하면 라디안 값 반환

     

     

    Command : (setq point1 (getpoint "\n기준점 입력 :"))

     

    (-228.164 -23.244 0.0)

    <- 기준점 입력

    Command : (setq ang2 (getangle point1 "angle 입력:"))

     

    angle 입력: 1.5708

    <- 두번째 점을 입력하면 라디안 값 반환

     

     

     

 

 

11. GetOrient

   (1) 기능 :

    [GETANGLE] 기능과 유사한 기능이나 [UNITS]나 [ANGBASE]의 기준 각도에 영향을 받지 않고 반시계

    방향으로 각도를 증가 시킨다.

     

   (2) 사용법

    (GETORIENT point Message)

     

   (3) 예제 :

    [getangle] 참고

     

     

     

12. grread

 

 

 

 

13. getfiled

   (1) 기능

    표준 AutoCAD 파일 대화 상자를 열어 사용자가 지정한 확장자를 가진 사용 가능한 파일 리스트를 지정된

    디렉토리에 표시하여 사용자는 파일 이름을 선택하거나 생성할 수 있도록 하고, 선택된 파일 이름과 경로

    를 리턴합니다. 

    [getfiled] 함수 호출에는 그 대화상자의 제목,경로,확장자,읽·쓰기를 결정하는 네 개의 인수가 사용됩니다.

 

 

   (2) 사용법 :

    (getfiled "Title" "Default" "Ext" Flags)

 

   (3) 예제 :

    (getfiled "Select a Lisp File" "c:/program files/ACAD2000/support/" "lsp" 1)

    (getfiled "Select a Lisp File" "c:/program files/ACAD2000/support/Acad2000.lsp" "lsp" 2)

    (getfiled "Select a Lisp File" "c:/program files/ACAD2000/support/Acad2000.lsp" "lsp" 4)

    (getfiled "Select a Lisp File" "c:/program files/ACAD2000/support/" "lsp" 8)

    (getfiled "Select a Lisp File" "c:/program files/ACAD2000/support/" "lsp" 16)

 

  

 

출력 함수

최초 작성일 2000.06.03

관계 연산자

최종 수정일 2006.04.10