2011년 12월 12일 월요일


reverse
(reverse 리스트)
리스트를 역으로 배열하여 출력한다.

append
(append 리스트 리스트...)
리스트를 하나의 리스트로 합친다.

foreach
(foreach 변수 리스트 함수)
함수중 이름을 찾아서 리스트의 요소를 순서대로 하나씩 배당하여 실행.

nth
(nth 순차 리스트)
리스트중 지정순번+1번째값을 출력한다.

2011년 12월 3일 토요일













DocumentWindowCollection
모든 문서 창 개체 (DocumentManager의 각 문서 개체에 대한 문서 창 개체가)에 대한 컨테이너.


InfoCenter
InfoCenter 도구 모음에 대한 참조를 포함합니다.


MainWindow
AutoCAD의 응용 프로그램 창 개체에 대한 참조를 포함합니다.


MenuBar
AutoCAD에서 menubar에 대한 MenuBar의 COM 개체에 대한 참조를 포함합니다.


MenuGroups
각 로드된 CUIx 파일에 대한 사용자 지정 그룹 이름이 들어있는 MenuGroups COM 개체에 대한 참조를 포함합니다.


Preferences
당신은 옵션 대화 상자의 설정 중 많은 것들을 수정할 수있는 환경 설정 COM 개체에 대한 참조를 포함합니다.


Publisher
게시 도면에 사용되는 발행인 개체에 대한 참조를 포함합니다.


StatusBar
응용 프로그램 창의 상태 표시줄객체에 대한 참조를 포함합니다.


UserConfiguration
당신은 사용자가 저장한 프로필 작업 수있는UserConfiguration 개체에 대한 참조를 포함합니다.


AutoCAD .NET Developer's Guide 를 구글번역기 돌린거



AutoCAD .NET Developer's Guide 를 구글번역기 돌린거


CAD객체구조

http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer%27s%20Guide/index.html




2011년 11월 25일 금요일


(defun c:test()

  (vl-load-com)

  (setq fn(getvar "savename"));;savename현제파일의 경로와 이름을 저장한다.
  (setq fd(vl-filename-directory fn));;filename에서 경로만을 취한다.(filename는 경로와 이름합치거)
  (setq fdlist(vl-directory-files fd));;지정한 경로내의 파일의 이름 리스드를 만드다.

  (setq file1(strcat fd (nth  n fdlist)))
    (princ file1)
  (princ)
  )
(vl-string->list 문자열);;문자열을 구성하는 각문자의 아스키 코드값을 리스트로 반환한다.


2011년 11월 17일 목요일




DIMTEDIT 치수선

프린터 ip 192.168.0.8

"C:\Program Files\Autodesk\AutoCAD 2012 - Korean\UserDataCache\"

2008
"C:\Program Files\AutoCAD 2008\UserDataCache\"
2002
"C:\Program Files\AutoCAD 2002\"
(A)...ABOVE >도면용어

(B)...BELOW >도면용어

VERIFY
연세현장 이과장(010 2548 3331

DELETEGHOST

TEMPOVERRIDES >cad cui (임시재지정)

dsettings  >cad제도세팅창

PAUSE 입력대기 > auto lisp


WORKSPACELABEL

_WSCURRENT

*1 PIECES >도면용어

rememberfolders "0"

*EL.+VARIOUS >도명용어

*COLUMN ARRANGEMENT PLAN >도면용어

1) 높은버전에서 문제의 파일연다.
2) audit 명령을 실행한다.
3) purge 명령을 실행한다.
4) 낮은 버전의 .dxf로 저장을 한다.
5) 이 파일을 열고나서 다시 .dwg로 다시 저장을 한다.

VTENABLE =zoom속도
dsviewer(공중뷰)
CELTSCALE(선종류 축척)
JUSTIFYTEXT(정렬점변경)
vLLO   자물쇠 닫기
LUL   열기
LFR   선택만 동결
TJO   문자합치기
TTEE
LMA  레이어 일치
ART  문자정렬
VOL  선택한색만보이기
VEL   색택만보이기
-VIEW  뷰
DRH 해치를뒤로ㄷ
EDV
ESN
JU  문자정렬점변경
 ,2214,2125,2137,2146,
4411441
MVIEW >cad
VPORTS >cad
DIMANGULAR >cad 각도치수
*%%U밑줄 >cad

DTEXTED //TEXT BOX

*ELEVATION >도면용어

CTRL ; >EXCEL 날짜
SHIFT ; >excel시간

TODAY()
NOW()

CMDECHO  기본값1COMMAND함수동..
EXCEL SQRT(제곱근)


Gusset Plate >도면용어
Stiffener  >도면용어
GIRT FRAMING ELEVATION >용어


T-BAR 11
BASE 1047
빔서프라이스 75&10

cmd 상에서 딧크조각 모음 defrag c:

pl60 >pl70(lotte)

reinit  >pgp파일갱신

draworder >레이어순서 변경

"C:\Program Files\AutoCAD 2002\"

DIMBREAK  디맨션 치수 끊기
DIMASSOC "2" 연관치수 설정
visualStyles
GROUP 그룹작성및관리
PICKSTYLE 그룸켜고끄는 변수

속성문자
ATTDEF 작성
ATTMULTI 1
ATTIPE 1
ATTMODE 0끄기 1현제유지 2켜기
ATTDIA 대화상자 표시여부
BATTMAN 속성편집



CAD)TEXTTOFRONT 치수나 문자를 앞으로 가져온다.

CAD)PASTEBLOCK 불록으로 붙여넣기
CAD)chspase 배치로이동
CAD)wipeout >가리기

CAD) BOUNDARY 영역추출
CAD) VISRETAIN 외부참조 변수 초기값 "1"

CAD) OSMODE
0 없음
1 끝점
2 중간점
4 중심점
8 노드
16 사분점
32 교차점
64 삽입점
128 수직점
256 접선
512 근처점
1024 모든 객체 스냅을 지웁니다
2048 가상 교차점
4096 연장선
8192 평행

(●)
(■)
(▲)
(○)
(△)
(□)
CAD) CHPROP 선택개체 특성변경
cad) wipeout
CAD) DBLCLKEDIT 두번클릭으로 특성창 열기
excel)trim공백문자 제거

CAD) DWGPROPS
CAD)STATUS
CAD)TIME
CAD)DELOBJ(SWEEP의경로나 형상 원본의 삭제유무)
CAD)VISUALSTYLES
철골 )girth
A3(297x420mm)
A4(210x297mm)
DWG
http://idkay0.tistory.com/25

2011년 11월 9일 수요일


(DEFUN C:TEST()
  (SETQ A1(SSGET))
  (SETQ A2(SSNAME A1 0))
  (SETQ A3(ENTGET A2))
  (SETQ A4(ASSOC 1 A3))
  (SETQ STR(CDR A4))

  (SETQ FD(OPEN "D:/02_서브/good/TEST.TXT" "A"))
  (SETQ C1(STRLEN STR))
  (SETQ N 1)
  (REPEAT C1
    (SETQ C2(SUBSTR STR N 1))
    (SETQ C3(LIST C2))

    (PRINC C3 FD)
    (SETQ N(+ N 1))
    )
  (CLOSE FD)
  (PRINC)
  )


;;;문자열을 분리중
;;;원하는것은 선택한 문자열을 원하는데로 분리해서 리스트로 묶어서
;;;파일에 쓰는것인데...막혔다.





(DEFUN C:TEST()
  (SETQ A1(SSGET))
  (FILE_W (STRING_R A1 0))
  ;(PRINC)
  )
 

(DEFUN STRING_R(SELECTION N / ENT_NAME ENT ENT_CODE STR
             SELECTION N)
  ;;;;;객체이름,객체정보 ,지정코드 내용,문자열,선택세트,숫자
 
  (SETQ ENT_NAME (SSNAME SELECTION N))
  (SETQ ENT(ENTGET ENT_NAME))
  (SETQ ENT_CODE(ASSOC 1 ENT))
  (SETQ STR(CDR ENT_CODE))
  STR
)
;;;;;TEXT를 선택 넘겨받아서



(DEFUN FILE_W(STR / FILE_DIRECTORY STRING_LEN STRING_S N STR_LIST STR)
;;;;; 파일이름과 경로,문자열 길이,지정한위치의 문자,문자리스트,넘겨받은 문자열
  (SETQ FILE_DIRECTORY(OPEN "C:/hello/Programming/lisp/TEST.TXT" "A"))
  (SETQ STRING_LEN(STRLEN STR))
  (SETQ N 1)
  (REPEAT STRING_LEN
    (SETQ STRING_S(SUBSTR STR N 1))
    (SETQ STR_LIST(LIST STRING_S))

    (PRINC STR_LIST FILE_DIRECTORY)
    (SETQ N(+ N 1))
    )
  (CLOSE FILE_DIRECTORY)
  (PRINC)
  )
;;;C:\hello\Programming\lisp\
;;;"D:/02_서브/good/TEST.TXT"

;;;;함수단위를 나누어보았다.



2011년 11월 8일 화요일


;;;파일에서 읽어온문자를 도면의 글자와 대치해서 삽입

(defun c:ae(/ a1 a2 a3 num n a4 po1 tang ipt a5 text1 file_m);

  (setq val1(getvar "dimscale"))
  (setq val2(getvar "cmdecho"))
  (setq val3(/ val1 2))
 
  (setvar "cmdecho" 0)

  (setq file_m(file_name))
  (if (= file_m nil)
     (setq file_m file_i)
     (setq file_i file_m)
   )

  (prompt"\n 글자를 선택해주세요")
  (setq a1(ssget '((0 . "text"))))
  (setq num(sslength a1))
  (setq n 0)

  (repeat num
 
  (setq a2(ssname a1 n))
  (setq a3(entget a2))
  (setq a4(assoc 1 a3))
  (setq a5(cdr a4))
   
  (setq po1(cdr(assoc 10 a3)))
  (setq tang(cdr(assoc 50 a3)))
  (setq ipt(polar po1 (+ tang (+ pi(/ pi 2))) val1))
  (setq tang_t(* 180(/ tang pi)))
;;;----text의 삽입점과 회전추출----



  ;(setq text10(car(aaa a5)))
;;;  (setq text1(itoa(cadr(aaa a5))))
;;;  (setq text2(itoa(caddr(aaa a5))))
  (setq text1(car(edwg_mark a5 file_m)))
  ;(setq text2(aaa a5))
 ; (setq textval(strcat text1 "x" text2))
  (command "-text"  ipt val3 tang_t text1)

  (setq n(+ n 1))

 )

  (princ)
)


 
(DEFUN edwg_mark(a5 file_m / fd r1 r2 r3 r4 i);

   (setq i 0)
   (setq fd(open file_m "r"))
 
   (if(= fd nil)
      (alert "\n존재하지 않는파일입니다.")
    )

   (while (= i 0)

      (setq r1(read-line fd))

      (if (= r1 nil)
        (progn
           (setq r4 (list "000"))
  (setq i 1)
         )
(progn
  (setq r2(read r1))
           (setq r3(car r2))
         )
       )


      (if (= r3 a5)
        (progn
           (setq r4(cdr r2))
           (setq i 1)
)
       )
   
    )
   (close fd)
    r4
 )


;basic도면의 부재 싸이즈를 txt파일로



(defun c:ab( / stp1 edp1 stp10 edp10 stp2 edp2 v_len1 v_len2 v_len3 fd file_m)
;;;  stp~영역
;;;  edp~영역
;;;  v_len~선택영역교체용
;;;  fd 파일포인터
;;;  file_~파일이름
  (setq var_osmode(getvar "osmode"))
  (setvar "osmode" 33)

  (prompt"\n한줄의 영역을 지정해주세요.")
  (setq stp1(getpoint"\n시작점"))
  (setq edp1(getcorner stp1 "\n두번째점"))

  (prompt"\n문자열이 포함된 영역을 지정해주세요")
  (setq stp10(getpoint"\n시작점"))
  (setq edp10(getcorner stp10 "\n두번째점"))
 
  (setq file_m(file_name))
  (if (= file_m nil)
    (setq file_m file_i)
    (setq file_i file_m)
    )
 
;;;  파일입력시 이전 입력값 을 쓴다.
  (setvar "osmode" 0)
  (setq v_len1(abs(- (cadr stp1)(cadr edp1))))
  (setq v_len2(abs(- (cadr stp10)(cadr edp10))))
  (setq v_len3(atoi(rtos(/ v_len2 v_len1)2 0)))

  ;(while (<= (abs(cadr stp1))(abs(cadr edp10)))
  ;(while (/= rl nil)
   (repeat  v_len3
     (setq a1(ssget "w" stp1 edp1))
     (if(/= a1 nil)
        (progn
           (setq fd(open file_m "a"))
           (princ (basic_mark a1)fd)
           (princ "\n" fd)
           (close fd)
 )
       )
     ;;;선택영역에 텍스트가없으면 파일에 쓰지않음
     (setq stp2(polar stp1 (+ pi(/ pi 2)) v_len1))
     (setq edp2(polar edp1 (+ pi(/ pi 2)) v_len1))
     (setq stp1 stp2
  edp1 edp2)
     )
  (setvar "osmode" var_osmode)
  (princ)
  )
;;;text를 선택해서 파일로저장하는거

(defun basic_mark(a1 / num n a2 a3 a4 a5 b1 b2 b3 len_b1 len_b2 b6 b11 b22)
;;;a1~a5선택세트
;;;n 반복용
;;;len~ 길이를 이용한 정렬
;;;b~ 출력
                             
   ; (setq a1(ssget "w" stp1 edp1))
    (setq num(sslength a1))
    (setq n 0)

    (repeat  2
 
       (setq a2(ssname a1 n))
       (setq a3(entget a2))
       (setq a4(assoc 1 a3))
       (setq a5(cdr a4))

       (if (= n 0)
          (setq b1 a5)
          (setq b2 a5)
        )

       (setq n(+ n 1))
      )

     (setq len_b1(strlen b1))
     (setq len_b2(strlen b2))
       ;(setq b6 nil)

     (if (> len_b1 len_b2)
        (progn
           (setq b6 b1)
           (setq b1 b2)
           (setq b2 b6)
         )
      )
    (setq b11(strcat "\"" b1 "\""))
    (setq b22(strcat "\"" b2 "\""))
    (setq b3(list b11 b22))
   )
;;;선택세트에서 문자열을 정리해서 리턴

2011년 10월 24일 월요일

inters,textbox

inters 라인의 포인트를 이용해서 교차점은 얻는다.
(inters <point1> <point2><point3><point4> [flag])

flag 가nil 이면 무한상의 교차점 t 이면 아니고.


textbox <elist>
      text인 elist를 감싸는 box의 대각선 좌표를 두 점의 list로 출력한다.

2011년 10월 19일 수요일


(defun c:test()
  (setq select_set(ssget '((0 . "line"))))
  (setq setname(ssname select_set 0))
  (setq ent (entget setname))

  (setq xpon1(abs(nth 1(assoc 10 ent))))
  (setq xpon2(abs(nth 1(assoc 11 ent))))
  (setq ypon1(abs(nth 2(assoc 10 ent))))
  (setq ypon2(abs(nth 2(assoc 11 ent))))
  (setq len(rtos(distance
    (setq p2(cdr(assoc 10 ent)))
    (setq p2(cdr(assoc 11 ent)))
    )2 0))

  (if (> xpon1 xpon2)
    (setq xlen(rtos(- xpon1 xpon2)2 0))
    (setq xlen(rtos(- xpon2 xpon1)2 0))
    )

  (if (> ypon1 ypon2)
    (setq ylen(rtos(- ypon1 ypon2)2 0))
    (setq ylen(rtos(- ypon2 ypon1)2 0))
    )
  (setq p1(getpoint))
  (command "-insert" "vbal" p1 "" "" len ylen xlen)

  (princ xlen)
  (princ "\n")
  (princ ylen)

  (princ)
 )

선택한 라인의 길이를 써준다.

2011년 10월 18일 화요일

BOLT 그리기


(defun insert_bolt(bolts len bolt_d bolt_h bs / p1 p2 p3 pon1 pon2 pon3
  pon4 pon5 pon6 pon7 pon8 pon9 pon10 pon11 pon12 pon13 oldos)
  (setq oldos(getvar "osmode"))
  (setvar "osmode" 33)

  (setq p1(getpoint"\n\"첫번째점 지정\""));insert point
  (setq p2(getpoint"\n\"두번째점 지정\""));방향과 각도를 얻는다.

  (setvar "osmode" 0);그리기위해서 오스넵을 꺼둔다.

  (setq p3(angle p1 p2))

  (setq pon1(polar p1 (+ p3 (/ pi 2)) (/ bolts 2)))
  (setq pon2(polar pon1 p3 bs))
  (setq pon3(polar pon2 p3 len))
  (setq pon4(polar pon3 (- p3 (/ pi 2)) bolts))
  (setq pon5(polar pon4 (+ p3 pi) len))
  (setq pon6(polar pon5 (+ p3 pi) bs))
  (setq pon7(polar p1 p3 (+ bs len)))
  (setq pon8(polar pon7 (+ p3 (/ pi 2))(/ bolt_d 2)))
  (setq pon9(polar pon8 p3 bolt_h))
  (setq pon10(polar pon9 (- p3 (/ pi 2)) bolt_d))
  (setq pon11(polar pon10 (+ p3 pi) bolt_h))
  (setq pon12(polar pon7 p3 (+ bolt_h bolt_h)))
  (setq pon13(polar p1 (+ p3 pi) bolt_h))

  (command "color" "3" "" );볼트는 녹색
  (command "pline" pon1 pon2 pon5 pon6 pon1 "")
  (command "pline" pon2 pon3 pon4 pon5 pon2 "")
  (command "pline" pon8 pon9 pon10 pon11 pon8 "")

  (command "color" "1" "");중심선은 빨강색
  (command "line" pon13 pon12 "");center line

  (setvar "osmode" oldos)
  (command "color" "bylayer" "")

  );end



(defun c:ib();insert bolt(t.s bolt 규격참조)
  (initget 1 "16 20 22 24")
  (setq bolt_size (getkword"\n\"bolt size를 선택해주세요.(16 20 22 24)\""))
  (setq len(getint"\n\"길이를 입력해주세요.\""))
  (cond
    ((= bolt_size "16")(insert_bolt 16.0 len 27.0 10.0 15.0));볼트사이즈,길이,d(머리지름),h(머리두께),s(덜어져 나갈부분)
    ((= bolt_size "20")(insert_bolt 20.0 len 34.0 13.0 18.0))
    ((= bolt_size "22")(insert_bolt 22.0 len 39.0 14.0 19.0))
    ((= bolt_size "24")(insert_bolt 24.0 len 43.0 15.0 20.0))
    )
    (princ)
  )


규격화된 볼트를 그린다.
딴건 없고 서브 함수에 매게변수를 건네주는 것을 본격적으로 활용한것에 의의
상수와 변수 모두 잘 건네주었다.
지역변수 지정도 정상작동 돼었다.

2011년 10월 12일 수요일

2011년 10월 7일 금요일

용어

attributes 속성(P)
modifiers 수정자(P)
ide 비쥬얼스튜디오 통합개발환경(c#)

2011년 9월 28일 수요일

2011년 9월 27일 화요일



DIMBREAK  디맨션 치수 끊기

DIMASSOC "2" 연관치수 설정

visualStyles 화면 스타일 ex)와이어프레임 실제 x레이...


GROUP 그룹작성및관리
PICKSTYLE 그룸켜고끄는 변수

속성문자
ATTDEF 작성
ATTMULTI 1
ATTIPE 1
ATTMODE 0끄기 1현제유지 2켜기


TEXTTOFRONT 치수나 문자를 앞으로 가져온다.


region 닫힌 라인을이용해서 면적을 만든다.
union     region 을이용해 얻은 면적일경우 합집합
subtract   //                                      차집합
intersect                        //                 교집합

chspace  도면영역에서 모형객채를 가져온다.축척변환해서




2011년 9월 26일 월요일

(setq aa(open "경로" "옵션 r w a중 택")
파일을 오픈하는것인데 주의점이 경로 입력시 보통은"\"인데 "/"로 입력해야한다.
(write-line"aaa" aa)
(princ "aaa" aa)
princ 와 write-line 둘다 열려있는 파일에 쓰는것인데,
장단이 있겟지만 일단 리스트형식은 princ만 써지더라.

(close aa)
close로 닫은후에야 파일이 써지는것이다.


3D

revolve 축을 기준으로 회전하여 3d객채를 만듬
revsurf 마찬가지로 회전인데 면에 제한이 있는것 같다.

2011년 9월 14일 수요일

VBA



Sub text_1()

    Sheet1.Range(Range("a1"), Range("a1").End(xlDown)).Select

    Selection.Offset(1, 0).Select

    Selection.Resize(Selection.Rows.Count - 1, Selection.Columns.Count).Select

End Sub


excel vba 값이있는열의 마지막까지 선택  열의 맨위는 재목이 들어가기때문에
선택제외 하고 선택영역을 다시 설정

range.end(xldown)
    선택셀의 아래마지막 셀 선택

2011년 9월 11일 일요일

sumif(범위,조건,더할데이터가있는 범위)

숫자,조건식,택스트,와일드카드 등을 사용해서 원하는 데이터들의 합을 구한다.

택스트형식의 경우에 " "롭묶어주어야 한다.

2011년 9월 8일 목요일

VBA

Range 오브젝트
Range 범위에 접근하는 것같음.
Cells (행,열) 셀에접근한다.
둘다 셀에 접근하고 컨트롤하지만 뭔가 표현 방법이 다르고 약간의 쓰임세가 다르다.



Range 오브젝트는 VBA로 프로그래밍을 할 때 가장 빈번하게 사용되는 가장 중요한 오브젝트 입니다. 엑셀에 입력되는 대부분의 데이터들이 바로 Range 오브젝트에 보관됩니다
 Range 오브젝트는 워크시트 오브젝트의 하위 오브젝트로 시트 내에 한 개 또는 복수 개의 셀들로 이루어집니다.
Range 오브젝트에 접근하는 방법은 여러 가지가 있습니다. 다음은 대표적인 몇 가지 방법입니다.
   Range 속성을 사용하는 방법
   Cells 속성을 사용하는 방법
   Offset 속성을 사용하는 방법
   Union 메서드를 사용하는 방법


 -Exceller"s vba 입문강좌 중-


worksheets("sheet1").Range("a1").value = 100


sheet1의 range("a1")오브젝트의 value속성에 100을 대입한다.











2011년 9월 7일 수요일

VBA




Sub 안녕하세요()
    Msg = Application.UserName & "님 안녕하세요?" //application.username 은 사용자 컴퓨터의 이름을 가져온다.
    Answer = MsgBox(Msg, vbYesNo) //예 아니오 버튼을 만든다.


    If Answer = vbYes Then   //친숙한 if문 사영법 역시 같다.
        MsgBox "안녕하시다니 다행이네요!"
    Else
        MsgBox "저런, 무슨 일이 있었나요?"
    End If   // lisp의 괄호처럼 닫는다.
End Sub //메크로 닫기 


실행하면 이름과함께 안녕하세요라는 메세지 박스를 띄운다.
박스에는 예와 아니오의 버튼이 있고 이들중 선택하는것에 따라
다른 메세지를 띄우게된다.

sub 함수명 as 데이터형식
...
코드
...
end sub
비주얼 베이직

언제나 처럼 진작에 라는 탄식이 흘러나온다.
어쩨서 유행이 다지난 언어를  뒤늦게 하고 앉아있는가?
뒤처질까 이미 따라잡을수 없을만큼 멀어질가봐 두렵다.

2011년 9월 3일 토요일

샾을위한

Column의size를 입력받아 변수로 저장하고  선택한 point에 단면을 그린다.

두번째 point 와 Col 의치수를 입력받아 단면을 그리고 선택해 저장한 두 point 사이의 거리를 구해 p/p로, 그리고 main size를 구해 그린다.

간단한 detail임에도 입력이 많아 작업이 반복대면 없으니만 못하겠다.

2011년 9월 1일 목요일


using system;
 namespace aaa{
   class helloworld{
     public static void main(){
        console.writeline("hello world!");
      }
     }
   }
int 4바이트 정수
char 2바이트 문자
float 4바이트 실수
 c# 변수 이름 대소문자를 구분한다.
반드시 데이터 타입을 이용해서 만든다.

100 다른 명시가 없는상수일경우 int
100L long형상수

100.0  혹은 100.0D double 8바이트
100.0f float 4바이트
100.0M decimal 상수

정수형 : byte, char, int ,long
실수형 : float, double, decimal
불형 : bool

2007이상의 버젼cad에서는  xref창이 특성관리창으로 뜨게된다.
근데 이게 좀 불편해서 찾아봤지

classicxref

오토케드의 배려

c#은 CRL환경? 중간언어IL 로한번 컴파일 한후 CRL에서 실행 하게된다.
이리 이해하면 되는가?
아마 컴파일러로 컴파일을하면 어셈블리를 생성하게되는데
중간언어IL와 메타데이터 매니페스트 리소스를 생성하게되고 것들을 닷넷환경의 CRL로인해서 다시한번
JIT컴파일러에의해 기계어로 변환 실행하게 된다.
이리 이해하면 되는가?

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 명령을 선택하여 방금 만든 설정, 예를 들면) 이전 선택 세트에서 단체로 구성된 선택 세트를 만듭니다


2011년 7월 2일 토요일

입력된 두수사이의 수들의 합을 구하는 거



(defun c:asdf()
  (setq n1(getint"\n첫번째 정수를 입력해주세요"))
  (setq n2(getint"\n두번째 정수를 입력해주세요"))
  (setq  sum 0)

  (if(< n1 n2)
   
    (setq start n1 end n2)
    (setq start n2 end n1)
  )

  (while (< start  (- end 1))

    (setq sum (+ sum start))
    (setq start(1+ start))
    (princ start)
    (princ "+")

  )

  (princ "\t=")
  (princ sum)
  (princ)
)

반복문 while과 repeat를 중첩 입력한정수를 결과값으로 가지는 숫자들을 출력하면서 출력한 수를 알준다.

세번중첩했을뿐인데 괄호관리가 힘들다.
코드를 한번에 쓰는게아니라 그때그때 편집하는데 괄호관리하는거는 좀 난감하다.
오토리습 출력함수 c의 prlntf같은거 없을까?

(defun c:asdf()

  (setq num(getint"\n정수를 입력해주세요."))


  (setq i 0)
  (setq j 0)
  (setq k 0)
  (setq sum 0)

  (while (<= i 100)
    (setq j 0)
    (while (<= j 100)
      (setq k 0)
      (while (<= k 100)
;(setq k 0)
(if
 (= (+ i j k) num)
 (progn
   (princ "\n")
   (princ i)
   (princ "+")
   (princ j)
   (princ "+")
   (princ k)
   (princ "=")
   (princ (+ i j k))

            (setq sum (+ sum 1))
 
 );progn끝

         );if

(setq k (+ k 1))

      );while k
   
      (setq j (+ j 1))

     );while j
 
    (setq i (+ i 1))
 
   );while i

  (princ "\n num 의 합을나눈수는")(princ sum)
  (princ)
  )



(defun c:asdfa()

  (setq num(getint"\n정수를 입력해주세요."))

  (setq i 0)
  (setq sum 0)

  (repeat 100
    (setq j 0)
 
    (repeat 100
      (setq k 0)

      (repeat 100

(if (= (+ i j k) num)
 (progn
   (princ "\n")
 (princ i)
 (princ "+")
 (princ j)
 (princ "+")
 (princ k)
 (princ "=")
 (princ (+ i j k))
 (setq sum (1+ sum))
   )
 )
(setq k (1+ k))
)
      (setq j (1+ j))
      )
    (setq i (1+ i))
    )

  (princ "\n원하는숫자는")
  (princ sum)
 (princ)
  )