더운 날씨에 수고가 많으십니다.
제목 그대로 3d face 객채를 polyline으로 바꾸는 방법을 알고 싶습니다.
LISP / VBA 쪽에 [ 번호:5510 ‘nickjs’님 ]이 올린 질문에 cadori‘님이 아주 잘 해결하여 주셨지만…..
저의경우 같은 문제 이기는 한데…
3D face와 폴리가 같으 섞여 있어서
cadori님의 리습을 쓰면 대부분의 폴리객체가 지워져서 …..
혹시 3d face만 레이어 온오프 하듯이 볼수 있는 방법이나 아니면 3d face객체만 골라서
수정하는 방법이 없을런지요…
부탁드립니다. 꾸벅
공유
(defun C:3DFtoPL(/ ss1 sl i)
(setq ss1 (ssget “X” (list (cons ‘0 “3DFACE”))))
(setq sl (sslength ss1))
(setq i 0)
(setvar “cmdecho” 0)
(command “undo” “be”)
(while (< i sl)
(setq ent1 (entget (setq e1 (ssname ss1 i))))
(setq pt1 (cdr (assoc ’10 ent1)))
(setq pt2 (cdr (assoc ’11 ent1)))
(setq pt3 (cdr (assoc ’12 ent1)))
(setq pt4 (cdr (assoc ’13 ent1)))
; Plain 2D Polylines
;(command “PLINE” pt1 pt2 pt3)
; 3dPolylines ->
(command “3DPOLY” pt1 pt2 pt3)
(if (/= pt3 pt4) (command pt4 “c”) (command “c”) )
(entdel e1)
(setq i (1+ i))
)
(command “undo” “e”)
(setvar “cmdecho” 1)
(setq ss1 nil)
(princ)
)
빠른 답변에 감사드립니다.
그런데…
왜 안되죠….ㅡ,.ㅡ; 에러가… 혹 뭔가 제가 잘못한…
도면에 3DFACE가 없을 경우, 에러 메시지가 나타날 뿐입니다….^^
(setq sl (sslength ss1)) 구문 다음을 아래와 같은 형식으로 바꾸시면 됩니다만…^^
(if (> sl 0)
(progn
;
;
)
(princ “이 도면에는 3DFACE가 없습니다”)
)