리습 수정 문의<br>리습 수정 문의<br>리습 수정 문의
컨텐츠 정보
- 276 조회
- 4 댓글
- 0 추천
- 0 비추천
- 목록
본문
드림을 사용하고 있지 않아서요…
리습 초보입니다.. 아래 리습실행중..구하는점을 클릭하게 되면 다중지시선이 직각방향으로만 출력이 되는데…
첫번째 구하는점을 클릭후 두번째 클릭을 어느 위치나 방향으로 해도 다중지시선이 표시 될수 있도록 수정부탁드리겠습니다.(ps.좌표구하는 리습 처럼 지시선을 표시하고 싶네요)
(defun draw_txt()
(setvar "osmode" 0)
(setq txt_len (strlen (rtos next_elev 2 2)))
(setq txt (strcat "EL:" (rtos next_elev 2 2)))
(setq drw1_len (* text_size 4))
(setq drw2_len (* text_size 5))
(setq drw1_point (polar pick (* pi 0.5) drw1_len))
(setq drw2_point (polar drw1_point (* pi 2) drw2_len))
(setq txt_point (polar drw1_point (* pi 0.25) (/ text_size 3)))
(setq arrow (polar pick (* pi 0.5) text_size))
(setq arrow1 (polar arrow (* pi 2) (* text_size 0.25)))
(setq arrow2 (polar arrow (* pi 1) (* text_size 0.25)))
(command "pline" pick drw1_point drw2_point "")
(command "solid" pick arrow1 arrow2 "" "")
(command "text" txt_point text_size "" txt)
)
(defun run_FH()
(setq base_y (cadr pick))
(setvar "osmode" old_osm)
(setq pick (getpoint "nPick Next point :"))
(while pick
(setq next_y (cadr pick))
(cond
((> base_y next_y)
(setq ch_y (- base_y next_y))
(setq next_elev (- base_elev ch_y))
(draw_txt)
(setq base_elev next_elev)
)
((< base_y next_y)
(setq ch_y (- next_y base_y))
(setq next_elev (+ base_elev ch_y))
(draw_txt)
(setq base_elev next_elev)
)
((= base_y next_y)
(setq next_elev base_elev)
(draw_txt)
(setq base_elev next_elev)
)
)
(setq base_y (cadr pick))
(setvar "osmode" old_osm)
(setq pick (getpoint "nPick Next point :"))
)
)
(defun c:FH(/ base_elev ch_y drw1_point drw2_point base_y next_y)
(setvar "cmdecho" 1)
(setq old_osm (getvar "osmode"))
(setq height (getvar "textsize"))
(setq msg (strcat "Text size <" (rtos height 2 1) "> : "))
(princ "n") (princ msg)
(setq text_size (getreal))
(if text_size
(setvar "textsize" text_size)
(setq text_size height)
)
(setq pick (getpoint "nPick Base point : "))
(if pick
(progn
(setq base_elev (car (entsel "nSelect Base elevation Text : ")))
(if base_elev
(progn
(setq base_elev (atof (cdr (assoc 1 (entget base_elev)))))
(run_FH))))))
부탁드립니다. .
(setq ent (ssget '((0 . "text")))) ;; text 만 선택된다….
(if ent ;; text 선택된것이 있다면.
(progn
(setq n 0)
;; select set 을 ename 리스트로 만든다.
(repeat (sslength ent)
(setq entapp (append entapp (list (ssname ent n)))
n (1+ n)
)
)
;; text x 좌표를 기준으로 오름차순으로 리스트를 sort 한다.
;; 만약 y 좌표를 기준으로 오름차순으로 sort 하려면 (caddr (assoc 10 (entget e1))) 로 바꾸어 주면 된다.
(setq entapp (vl-sort entapp '(lambda (e1 e2) (< (cadr (assoc 10 (entget e1))) (cadr (assoc 10 (entget e2)))))))
;; 순서대로 문자를 수정한다.
(foreach x entapp
(command "ddedit" x "")
)
)
)
(setq osm(getvar "osmode"))
(princ)
)
해치된 부분의 외곽 테두리를 그려주는 리습을 가지고 있는데요.
외곽선이 전부 PL선이 아닙니다. PL선으로 그려 주도록 리습 수정을 부탁드려도 될런지요?