;2010.04.06.Edit by Kwon.(아키모아)
;; http://cafe.daum.net/archimore
(defun KS()
(setq gvar '("OSMODE" "CMDECHO" "CMDDIA" "CLAYER" "sdi"))
(setq svar (mapcar 'getvar gvar))
(mapcar 'setvar gvar '(0 0 0 "0" 1)))
(defun KE()
(mapcar 'setvar gvar svar)(princ))
(defun c2p1 (pt1 size / cxyl n pt)
(setq xyl nil
n 1)
(repeat 360
(setq pt (polar pt1 (dtr n) size)
cxyl (append cxyl (list pt))
n (+ n 1)))
cxyl
)
(defun c:vd1 (/ en1 en2 point ss parm point xyl point1-1 point1-2 point2-1 point2-2 newpoint)
(KS) (vl-cmdf "undo" "be")
(setq en1 (entsel "\n 없애고 싶은 부분을 선택하세요. "))
(if en1
(progn
(setq point (cadr en1)
en1 (car en1)
ss (ssadd)
ss (ssadd en1 ss)
point (vlax-curve-getclosestpointto en1 point)
parm (Vlax-Curve-GetParamAtPoint en1 point)
point (Vlax-Curve-GetPointAtParam en1 (atoi (rtos parm 2 0)))
point (list (car point) (cadr point))
xyl '())
(mapcar '(lambda (x) (if (= 10 (car x)) (setq xyl (append xyl (list (cdr x))) ) ) ) (entget en1))
(setq point1-1 (nth (- (vl-position point xyl) 2) xyl)
point1-2 (nth (- (vl-position point xyl) 1) xyl)
point2-1 (nth (+ (vl-position point xyl) 2) xyl)
point2-2 (nth (+ (vl-position point xyl) 1) xyl))
(if (and point1-1 point1-2 point2-1 point2-2)
(progn
(setq newpoint (inters point1-1 point1-2 point2-1 point2-2 nil))
(vl-cmdf "break" ss point1-2 point2-2)
(setq en2 (entlast))
(vl-cmdf "stretch" "cp")
(mapcar 'vl-cmdf (c2p1 point1-2 0.5))
(vl-cmdf "" "" point1-2 newpoint)
(vl-cmdf "stretch" "cp")
(mapcar 'vl-cmdf (c2p1 point2-2 0.5))
(vl-cmdf "" "" point2-2 newpoint)
(vl-cmdf "pedit" "m" en1 en2 "" "j" "" ""))
(princ "\n 정점 갯수가 다섯개가 안됩니다!!! ")))
(princ "\n 객체를 선택하세요. "))
(vl-cmdf "undo" "e") (KE)
)
VD1(폴리라인굴곡펴기).LSP
;급하게 만드느라 좀 허접합니다.^^;;;
;위 글에서 말햇듯이 정점의 갯수가 최소 다섯개 이상이어야 합니다.
![](https://t1.daumcdn.net/cfile/cafe/1723CB014BBAC61417)
첫댓글 후딱 해바야징...감사합니다
이상하게 잘 안되네요 ㅠ.ㅠ 쫙 펴지질 않고 자꾸 구멍이 생기네요 ㅠ.ㅠ
힘드네요.. ㅠ.ㅠ
안되요?? 2002하고 2010에서 테스트 했을때 잘 됐는데...;;;;
저도 2010인데 없애고 싶은 부분을 당겨서 피잔아요
근데 전부 당겨지질 않고 일부분만 당겨져서 자꾸 삐꾸나요 ㅠ.ㅠ
자꾸 선이 분리되는 현상은 왜 그런거예요?
권과장님 수고하셨습니다.^^
아..정점을 하나씩 빼신건가요?^^;
와우~~
권과장님 수고하셨습니당^^* ㅎㅎㅎ
본문 내용 및 첨부파일 수정했습니다. curve함수로 해결하려 했더니...파라미터 값이 문제네요...그냥 position함수를 사용했습니다.^^;;;;
그리고 선이 분리되는 현상은 정점이 한곳에 두개 이상 겹쳐 있어서 그렇습니다.
정점이 중복되어 있어서 위 그림과 같이 양쪽 네개의 정점을 가져와서 교차점을 찾아야 하고, 양쪽 정점에서 break를 해야 하는데 중복된 한 정점에서 break가 되다보니 선만 분리되는 현상이 생깁니다.
아~~~넹 감사합니다.
아~수고하셨습니당^^*
수고하셨습니다~!
허걱! 죄송요... 전 캐드 명령 이용해서 하는 방법 찾고 있었거든요... 누가 위와 같은 경우에 휘리릭 해 버리더라고요... SuHa님이 답 알려주셨어요...^^ 여러분 고맙습니다.
그 답이 모예여? 알고 싶어용..