리습으로 자동 작성된 요소들을 BLOCK 화하면 여러모로 편리합니다

 

작성된 다수의 객체들을 block 화하는 예제문 입니다

 

예제는 block 의 이름 bname 과 삽입점 pt 가 그리고 객체작성용 점들이 사전에 정의 되어 있어야 합니다

  (command "line" p2 p3 "")   (setq e1 (entlast))  
  (command "line" p3 p5 "")   (setq e2 (entlast)) 
  (command "line" p9 p14 "")  (setq e3 (entlast))  
  (command "line" p5 p7 "")   (setq e4 (entlast))  
  (command "line" p13 p14 "") (setq e5 (entlast)) 
  (command "line" p9 p8 "")   (setq e6 (entlast))   
  (command "line" p8 p2 "")   (setq e7 (entlast))    
  (command "line" p7 p2 "")   (setq e8 (entlast))   
  (command "line" p13 p8 "")  (setq e9 (entlast))  
  (command "-block" bname pt e1 e2 e3 e4 e5 e6 e7 e8 e9  "")

 

리습 자동작도 객체 블록화 다른 방법 입니다

 

 (setq elast(entlast))  ; 마지막 객체 기억
 (command "line" ps3 ps4 ^c)

 (command "chprop" "L" "" "C" "8" "") 
 (command "arc" pr2 phc pr1)
 (command "arc" pr1 "e" pd1 "a" 45) ; 자동 작성문
 (setq enext (entnext elast) ; 마지막 객체 다음 객체를 시작 객체로

            ss (ssadd))  ; 선택 셋트 시작

 (while enext (setq ss (ssadd enext ss) enext (entnext enext)) )  ; 객체 모음 종료

 (command "-block" blkname pt ss "") ; block 화

 

 

 

ssadd 참고

(setq ss (ssadd)) ;  null 인 선택집합 ss 정의. 

(ssadd e1 ss) ; ss 에 e1 추가

 

 

 

 

CADBOX  AUTOBOX 는 오토캐드에 강력한 기능들을 추가합니다

 

inters 는 두점이 이루는 각도와 또다른 두점이 이루는 각도로 교차되는 점을 찾아줍니다

 

결국 두선의 각 끝점으로 교차점을 찾는것과 같습니다

 

교차점을 찾기위해서는 네개의 점을 미리 정의해야합니다

 

aas  선 aa 의 시작점

aae  선 aa 의 끝점

bbs  선 bb 의 시작점

bbe 선 bb 의 끝점

ccc 교차점

 

 

t 옵션은 선에대한 연장을 하지 않습니다

(setq ccc (inters aas aae bbs bbe t))

직접 교차하지 않으면 nil 응답

 

 

 

nil 옵션은 선에대한 연장을 합니다

(setq ccc (inters aas aae bbs bbe nil))

 

 

선을 연장하여 교차점을 찾습니다

 

 

 

예제는 캐드 화면상의 두선을 선택하게하여 그 교차점 pt0 을 구합니다

 (setq ss1 (entsel "\n LINE 하나 선택 "))
 (setq pt11 (cdr (assoc 10 (entget (car ss1)))))
 (setq pt12 (cdr (assoc 11 (entget (car ss1)))))
 (setq ss2 (entsel "\n 다른 LINE 하나 선택 "))
 (setq pt21 (cdr (assoc 10 (entget (car ss2)))))
 (setq pt22 (cdr (assoc 11 (entget (car ss2)))))
 (setq pt0 (inters pt11 pt12 pt21 pt22 nil))

 

'i 함수' 카테고리의 다른 글

itoa 정수를 문자로 변환  (0) 2022.08.02

getpoint 는 사용자에게 점을 입력(클릭) 하도록 요구합니다

사용자가 점을 클릭시 점의 값을 변수에 저장합니다

(getpoint "요구메세지")


점클릭시 pt1 저장
(setq pt1 (getpoint "\n Point 1 "))


정의된 점 pt1 지정하면 캐드화면에서 점 pt2 를클릭을 위해 커서를 움직일때 pt1 에서 예상 pt2 점까지의 실시간 늘어나는 점선으로된 고무선을 표현해줍니다
(setq pt2 (getpoint pt1 "\n Point 2 "))
pt1 의 위치를 명확하게 하여 pt2 와의 거리감각에 도움을 줍니다








'G 함수' 카테고리의 다른 글

GRAPHSCR 캐드 화면창으로 복귀  (0) 2022.08.06

 

 

(setq zn (getint "\n 호칭 규격 정수 입력 ")) ; 사용자 호칭규격 정수 입력

 (cond 
   ((= zn 10)  (setq size '(25.4 34.0 1.2))) ; 입력 10 인경우 size
   ((= zn 15)  (setq size '(38.1 49.0 1.2)))
   ((= zn 20)  (setq size '(50.8 61.0 1.5)))
   ((= zn 25)  (setq size '(63.5 84.0 2.0)))
   ((= zn 30)  (setq size '(76.3 89.0 2.0))) ; 입력 30 인경우 size
   (t (exit)) 

  ) ;cond;
(setq

dd (nth 0 size) ; size list 중 첫째 

rr (nth 1 size)

tt (nth 2 size) ; size list 중 세번째 

) ; setq

 

 

  

입력할 규격표를 명령창에 보여줍니다

 

그다음 사용자가 입력을 하면 캐드화면(그래픽창)으로 변경합니다

 

(명령창과 그래픽창의 전환은 캐드에서 F2 키입니다)

 

 

 

직경 입력 창 전환 리습 예제

  (prompt "\nSPEC 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 28 29 30") ; 규격표 보여주기
  (prompt "\nSPEC 32 34 35 36 38 40 42 45 48 50 52 55 56 58 60 62 63 65 68 70")
  (prompt "\nSPEC 72 75 78 80 82 85 88 90 95 100 105 110 115 120 125")
  (textscr)  ; 명령창 보이기
  (if (null dd11)(setq dd11 10)) 
   (setq dd1(getdist (strcat "\n Input Diameter of Shaft or Enter key =<" (rtos dd11 2 0) ">: "))) ; 직경 입력 받기
   (graphscr) ; 그래픽창 보이기
 

 

 

 

 

삼각함수로 라디안각도를 구하거나 라디안 각도로 삼각형의 길이를 구합니다

 

 

(sin ang) ; 삼각함수 사인 ang 라디안각

 

(cos ang) ; 삼각함수 코사인 ang 라디안각

 

(atan aa bb) ; 역탄젠트 라디안각 응답, 탄젠트 bb/aa 에 해당하는 라디안각도 응답

 

 

 

 

 

 

 

princ는 따옴표 없이 문자열을 표시합니다.

 

prin1은 따옴표로 묶인 문자열을 표시합니다.

 

print는 따옴표로 둘러싸인 문자열을 표시하지만 식 앞에 빈 줄을 배치하고 뒤에 공백을 배치합니다.

 

 

 

'P 함수' 카테고리의 다른 글

PAUSE 사용자 입력 대기  (0) 2022.08.13
PROGN 연속실행문  (0) 2022.08.09
PI 원주율 고유함수  (0) 2022.08.08

사용자가 다수 선택한 다양한 객체들중에 특정 객체의 종류의 객체들을 따로 추출하여 저장하는 예제문입니다

 

 

블록들만 추출

    (ssget) ; 사용자가 다양한 방법으로 다수 객체 선택 선택완료후 엔터입력으로 선택완료
    (setq ssblock (ssget "p" '((0 . "INSERT") )) )    ; insert 는 블록을 의미  

 

원들만 추출

(ssget)

(setq sscir (ssget "p" '((0 . "CIRCLE"))) )

 

 

 

치수들만 추출

(ssget)

(setq ssdim (ssget "p" '((0 . "dimension"))) )

 

 

 

점들만 추출

(ssget)

(setq sspnt (ssget "p" '((0 . "point"))) )

 

 

 

문자들만 추출

(ssget)

(setq sstxt (ssget "p" '((0 . "text"))) )

 

 

 

치수리더들만 추출

(ssget)

(setq ssled (ssget "p" '((0 . "leader"))) )

 

 

공차들만 추출

(ssget) 

(setq sstol (ssget "p" '((0 . "TOLERANCE"))) )

 

 

 

 

라인들만 추출

(ssget) 

(setq ssline (ssget "p" '((0 . "LINE"))) )

 

 

 

 

sslength 는 선택된 다수의 객체 집합에서 그 객체의 수량을 응답하여 줍니다

 

 

 

 

 

(setq ss (ssget)) ; 객체 다수를 선택 ss에 저장

(setq ssno (sslength ss))     ; 선택한 ss 의 객체갯수를 ssno 저장

 

 

 

 

 

 

entdel 은 부여한 객체의 이름으로 삭제합니다

 

(entdel 객체이름)

 

객체이름 얻기는 entget 과 ssname 을 참조 바랍니다

 

 

예제는 erase 효과가 됩니다

(setq aaa (entsel)) ; 객체 하나 선택 aaa 저장
(setq ename (car aaa)) ; aaa의 리스트중 첫째인 객체이름을 ename 을 저장

(entdel ename) ; 객체 하나 삭제

 

 

 

 

 

'E 함수' 카테고리의 다른 글

*ERROR* 에러문 설정 원상복귀  (0) 2022.08.11

repeat 은 다음의 정수만큼 그다음의 문장들을 반복 실행합니다

 

(repeat 반복수 실행문)

 

 

예제 <청색 문장들이 반복됨>

(setq ss (ssget)) ; 객체 다수를 선택

필터로 희망하는 객체의 종류를 필터하는 과정<예제에서는 생략>

(setq ssno (sslength ss))     ; 선택한 ss 의 객체갯수를 ssno 저장
(setq no 0) ; 반복진행의 원점수 설정
(repeat ssno ; 객체수 ssno 만큼 반복선언

        (setq entname (ssname ss no))  ; 객체중 no번째 객체 호출 0은 첫번째 객체

        entname 객체를 다루는 문장들

         여러분둘 목적에 맞게 작성

 

 

 

        (setq no (1+ no)) ; 객체 다음순번 지정, ssno 반복시 객체 전체를 다루는 결과

) ;; end repeat

 

객체의 수량만큼 반복하므로 선택한 모든 객체를 빠짐없이 다루는 결과를 얻습니다

 

 

사용자 임의 변수 ss  ssno  no  entname

 

 

 

 

다음 예제는 lineno 정의가 nil 이 될때까지 계속 반복 실행합니다

사전 정의변수 객체집합 line 점 p1 p2 

     (setq no 0) 
     (repeat lineno (setq linename (ssname line no))  (command "break" linename p1 p2)  (setq no (1+ no))  ) ;; end repeat

반복마다 객체이름이 1 씩 증가하는 청색문장 응답이 nil이아니면 계속 반복 합니다

 


 

 

 

 

 

 

 

 

 

 

 

 

 

'R 함수' 카테고리의 다른 글

RTOS 실수를 문자로 변환  (0) 2022.08.04

서브리습의 괄호에 변수명을 넣고 추후 서브리습 호출시 실수값을 병기하면 그 값으로 연산한 값을 얻습니다



예제 서브리습은 1도를 라디안으로 환산합니다
사용자 임의 변수명 dorad ildo
(defun dorad (ildo) (* pi (/ ildo 180.00)))


다른 리습문에서 dorad 호출시 값을 병기하면 ildo 값으로 연산합니다

(dorad 15.0) ; 서브리습 dorad 를 호출하되 15.0 값을 ildo 로 하여 연산시킵니다
; 이 리습 진행은 15도를 라디안각도로 환산한 값을 응답합니다

다른리습에서 다른 각도의 연산값을 얻습니다
(dorad 45.0); 45도의 라디안값 얻기

반복되는 라디안 환산을 간편화 합니다







 

+ Recent posts