2011년 8월 23일 화요일

command 함수

(command "circle" pause 50.0)

//command 함수뿐만이 아니라 lisp함수는 script file을 작성해서 쓸수있다.
//pause 사용자 입력대기

시험해본결과 idwgtap없이는 pause의사용이 제약적이다.
입력대기 에 다른 작성된 명령이 실행됌.
(substr "autolisp" 2 2)

//문자열의 왼쪽에서 2번째부터 2만큼을 리턴한다.
to

(substr "programming"  1 7)

program

2011년 8월 22일 월요일

차수높은 프로시져

(defun sum_i(a b)
// sum_i라는 함수를 정의하면서 인수로 a와b를 받아들인다.
  (if (> a b)
//조건함수
    0
    (+ a (sum_i (+ a 1) b)
//여기서 함수본인을 호출하면서 다른언어의 반복문 역활을 해낸다.
      )))

a와b 사이의 수들을 모두 더한다.

책에서는 차수높은프로시져를 정의하기를

"프로시져를 보통의 데이터처럼 사용하는 프로시져라 한다."

여기서는 재귀함수처럼 선언된 본인자채만을 호출하였지만
다르갰지.

2011년 8월 16일 화요일

(setq point_1(cdr(assoc 10 (entget(ssname(ssget "X" '((2 . "블럭이름")))0)))))

지정한 블럭을 선택해서 블럭삽입점을 좌표로서 point_1에 저장한다.
script로 활용 할수있다.

DCL

test_box : dialog{
label = "testbox";
:text{
label = "여기에 쓰인 test를 출력합니다.";
allow_accept = ture;
}
ok_cancel;
}
dcl 리습으로 작성한 프로그램을 관리를 더 잘할수있게해주는
알면 좋다. 모든게 그렇지만.


(defun  c:ree()
  (setq arc_size(getdist"\n"))
  (princ "\n")

  (if (= nil arc_size)
  (setq arc_size num1)
    )

  (command "rectang"
  (setq p1(getpoint))
  (setq p2(getcorner p1))
  )

  (command "revcloud" "a" arc_size arc_size "o"
  (setq ent (entlast))  ;마지막으로 그린 객체를 선택세트로
  "n"
  )

  (setq num1 arc_size)

  (princ)

  )

colud의 크기를 입력 받은후 rectang을 그리면 사각형의 구름이 그려진다.

2011년 8월 9일 화요일

선택세트의 엔티티를 바꾸는 방법

(setq a(ssget))
(setq b(ssname a n)) ;n은 선택세트 몇번째 인지 알리는것 하나의 객채만
선택할경우 0을 입력한다.
(setq c(entget b))
(setq d(subst (cons 40 ?)(assoc 40 c) c));subst로 엔티티속성을 변경한다.

;(subst  New-item  Old-item List-Name)
;(subst  New-item  Old-item  Entity-Name) or (subst  New-item  Old-item  Variable)
(entmod d) ;바뀐것을 화면에 출력(반영)        

               
(ssget "X")
도면의 모든것을 선택세트로 담아둔다
"X"인자가 지원하는 코드는 다음과 같다.

0 - 엔티티타입
ex) (ssget "X" '((0 . "text)))
     (ssget "X" (list(cons 0 "text")))  //(text를 지정하면 도면않의 text엔티티는 모두 선택된다.
2 - 블록
6 - 라인타입
7 - 택그트 스타일
8 - 레이어

38 - elevation - must be real number, e.g..: (38 . 2.5)
39 - thickness - must be real number, e.g..: (39 . 0.75)
62 - color (0 = "BYBLOCK", 256 = "BYLAYER")
66 - attributes follow flag, in insertion association lists
210 - 3D extrusion direction vector (list of 3 reals)








(ssget (list 1.75 4.0)) //주어진 지점 통과 엔티티로 구성된 선택 세트를 만듭니다
(ssget "L") //마지막으로그린 것을 선택세트에 담아둔다.
(ssget "W"(list 1) (list 4 4)) //윈도우선택
(ssget "W"(setq P1 (getpoint "첫 번째 지점 :")) (getcorner P1 "기타 지점 :")) 위와 동일하지만, 사용자가 포인터로 포인트를 찾을 수 있습니다
(ssget "C"(list 1) (list 4 4)) 걸치기 선택
(ssget "P")은 (SELECT 명령을 선택하여 방금 만든 설정, 예를 들면) 이전 선택 세트에서 단체로 구성된 선택 세트를 만듭니다