※성심 성의껏 질문을 작성하여 주세요, 대충하시면 답변도 대충작성합니다.^^
① CAD 종류 : AutoCAD
② VERSION : 2002
③ 분 과 : 기계
④ 파일 첨부 :
⑤ 질문 내용 : 주말농부님께서 제작하신 리습인데요... 1년동안 너무 감사하게 잘 사용했습니다. 그런데 욕심히 과해서 그런지 불편한 부분을 감히 부탁드립니다.
이미 몇분이서 질문을 올리셨는데요. 직선에 가까운 스플라인을 변환시 선 자체가 지워져버리는 현상입니다.
특히 일러스트에서 작업한 파일을 dwg나 dxf로 저장한 후 stp 명령으로 스플라인을 아크로 변환하는 작업을 많이 하는데 직선에 가까운 선들이 많게는 수십개나 지워져버려 일일이 라인을 새로 그려줘야 합니다.
리습 명령어는 거의 문외한이라 고수님들의 손길을 부탁드립니다.
;;=========================================================================
; 스플라인을 아크로 (2007.6.1 주말농부)
; ->스플라인(spline)을 arc로 이루어진 폴리라인(pline)으로 바꾸기
;;------spline to pline----------------------------------------------------
(defun c:stp(/ os ss a ea n en en_dis dis dis1 point_list point tem cla la ed)
;->*error* start
(defun *error* (msg)(princ "error: ")(princ msg)
(setvar "osmode" os) (if la (setvar "clayer" cla))
(princ))
;-<*error* end
(vl-load-com)
(setq os (getvar "osmode"))
(setq cla (getvar "clayer"))
(setvar "osmode" 0)
(prompt " spline 을 pline<arc>으로...")(terpri)
(if (setq ss (ssget '((0 . "spline")))) (progn
(if (= cdw nil) (setq cdw 10))
(setq a (strcat "\n분할 갯수<" (rtos cdw 2 0) ">:"))
(setq ea (getint a))
(if (= ea nil) (setq ea cdw) (setq cdw ea) )
(setq n 0)
(repeat (sslength ss)
(setq en (ssname ss n))
(setq ed (entget en)
la (cdr (assoc 8 ed)))
(setvar "clayer" la)
(setq en_dis (vlax-curve-getDistAtPoint en (vlax-curve-getEndPoint en)))
(setq dis (/ en_dis (* ea 2.0)))
(setq dis1 dis point_list '())
(repeat (- (* ea 2) 1)
(setq point_list
(append point_list (list (vlax-curve-getPointAtDist en dis))))
(Setq dis (+ dis dis1))
)
(setq point_list (append point_list (list (vlax-curve-getEndPoint en))))
(command "pline" (vlax-curve-getstartPoint en) "a")
(repeat ea
(command "s")
(setq point (car point_list))
(command point)
(setq point_list (cdr point_list))
(setq point (car point_list))
(command point)
(setq point_list (cdr point_list))
)
(command "" )
(setq n (+ n 1))
)
(initget "Yes No")
(setq tem (getkword "\n원본을 지우시겠습니까? <Y>:"))
(if (or (= tem nil) (= tem "Yes")) (command "erase" ss "") )
))
(setvar "clayer" cla)
(setvar "osmode" os)
(prin1))
⑥ Screenshot :
※ 유의사항
- Screenshot : 이해를 돕기위해 삽입요망.
- 파일 첨부 : 상위버전에서 테스트할 파일이 아니면 가급적 하위버전으로 저장후 첨부.
해당리습도 같이 첨부하여 주세요.
- 제 목 : 질문 내용 반영(개략적인 내용), 예) 해치를 만들고 싶어요..
- 질문글 삭제금지 : 질문후 댓글이 달린글은 삭제금지.
여러 리플러들이 소중한 시간을 내어서 고민한후 댓글을 작성한 이상 "강력조치" 토록 하겠음.