받은도면을 일부 수정하다가
Fillet이 안되서 살펴보던중 그냥 2d도면인데 z축이 0이 아닌게 너무많습니다.
일부는 properties에서 z축을 0으로 만들면서 수정하고있는데
혹시 z축 한방에 0으로 만들어주는 명령어 있지않나요?
들어본적 있는것 같은데 생각도 안나고 검색해도 안나와서 답답하네요.
2015버전입니다.
비밀번호를 잊으셨나요? 비밀번호를 재설정하려면 이메일 주소를 입력해주세요.
해당 질문을 신고하는 이유를 간단히 입력해주세요.
해당 답변을 신고하는 이유를 간단히 입력해주세요.
해당 유저를 신고하는 이유를 간단히 입력해주세요.
옛날부터 아주 잘 써먹고 있는 Z값 0 만드는 리습입니다.
명령어 FL 엔터 > 계속?Y 물어볼때 엔터 > 객체선택 (선택할거 드래그로 좍 긁고..) 엔터
하면 됩니다.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun C:FL (/ olderr oldcmd zeroz ss1 ss1len i
numchg numnot numno0 ssno0 ename elist etype
yorn vrt crz
)
;;Error handler
(setq olderr *error*)
(defun *error* (msg)
(if (= msg “quit / exit abort”)
(princ)
(princ (strcat “error: ” msg))
)
(setq *error* olderr)
(command “._UCS” “_Restore” “$FLATTEN-TEMP$”
“._UCS” “_Delete” “$FLATTEN-TEMP$”
)
(command “._UNDO” “_End”)
(setvar “CMDECHO” oldcmd)
(princ)
)
;;Function to change Z coordinate to 0
(defun zeroz (key zelist / oplist nplist)
(setq oplist (assoc key zelist)
nplist (reverse (append ‘(0.0) (cdr (reverse oplist))))
zelist (subst nplist oplist zelist)
)
(entmod zelist)
)
;;Setup
(setq oldcmd (getvar “CMDECHO”))
(setvar “CMDECHO” 0)
(command “._UNDO” “_Group”)
(command “._UCS” “_Delete” “$FLATTEN-TEMP$”
“._UCS” “_Save” “$FLATTEN-TEMP$”
“._UCS” “World”
) ;set World UCS
;;Get input
(prompt
(strcat
“nFLATTEN sets the Z coordinates of most objects to zero.”
)
)
(initget “Yes No”)
(setq yorn (getkword “nDo you want to continue <Y>: “))
(cond ((/= yorn “No”)
(graphscr)
(prompt “nChoose objects to FLATTEN “)
(prompt
“[press return to select all objects in the drawing]”
)
(setq ss1 (ssget))
(if (null ss1) ;if enter…
(setq ss1 (ssget “X”)) ;select all entities in database
)
;;*initialize variables
(setq ss1len (sslength ss1) ;length of selection set
i 0 ;loop counter
numchg 0 ;number changed counter
numnot 0 ;number not changed counter
numno0 0 ;number not changed and Z /= 0 counter
ssno0 (ssadd) ;selection set of unchanged entities
) ;setq
;;*do the work
(prompt “nWorking.”)
(while (< i ss1len) ;while more members in the SS
(if (= 0 (rem i 10))
(prompt “.”)
)
(setq ename (ssname ss1 i) ;entity name
elist (entget ename) ;entity data list
etype (cdr (assoc 0 elist)) ;entity type
)
;;*Keep track of entities not flattened
(if (not (member etype
‘(“3DFACE” “ARC” “ATTDEF”
“CIRCLE” “DIMENSION” “ELLIPSE”
“HATCH” “INSERT” “LINE”
“LWPOLYLINE” “MTEXT” “POINT”
“POLYLINE” “SOLID” “TEXT”
)
)
)
(progn ;leave others alone
(setq numnot (1+ numnot))
(if (/= 0.0 (car (reverse (assoc 10 elist))))
(progn ;add it to special list if Z /= 0
(setq numno0 (1+ numno0))
(ssadd ename ssno0)
)
)
)
)
;;Change group 10 Z coordinate to 0 for listed entity types.
(if (member etype
‘(“3DFACE” “ARC” “ATTDEF” “CIRCLE”
“DIMENSION” “ELLIPSE” “HATCH” “INSERT”
“LINE” “MTEXT” “POINT” “POLYLINE”
“SOLID” “TEXT”
)
)
(setq elist (zeroz 10 elist) ;change entities in list above
numchg (1+ numchg)
)
)
;;Change group 11 Z coordinate to 0 for listed entity types.
(if (member etype
‘(“3DFACE” “ATTDEF” “DIMENSION” “LINE” “TEXT” “SOLID”)
)
(setq elist (zeroz 11 elist))
)
;;Change groups 12 and 13 Z coordinate to 0 for SOLIDs and 3DFACEs.
(if (member etype ‘(“3DFACE” “SOLID”))
(progn
(setq elist (zeroz 12 elist))
(setq elist (zeroz 13 elist))
)
)
;;Change groups 13, 14, 15, and 16
;;Z coordinate to 0 for DIMENSIONs.
(if (member etype ‘(“DIMENSION”))
(progn
(setq elist (zeroz 13 elist))
(setq elist (zeroz 14 elist))
(setq elist (zeroz 15 elist))
(setq elist (zeroz 16 elist))
)
)
;;Change each polyline vertex Z coordinate to 0.
;;Code provided by Vladimir Livshiz, 09-Oct-1998
(if (= etype “POLYLINE”)
(progn
(setq vrt ename)
(while (not (equal (cdr (assoc 0 (entget vrt))) “SEQEND”))
(setq elist (entget (entnext vrt)))
(setq crz (cadddr (assoc 10 elist)))
(if (/= crz 0)
(progn
(zeroz 10 elist)
(entupd ename)
)
)
(setq vrt (cdr (assoc -1 elist)))
)
)
)
;;Special handling for LWPOLYLINEs
(if (member etype ‘(“LWPOLYLINE”))
(progn
(setq elist (subst (cons 38 0.0) (assoc 38 elist) elist)
numchg (1+ numchg)
)
(entmod elist)
)
)
(setq i (1+ i)) ;next entity
)
(prompt ” Done.”)
;;Print results
(prompt (strcat “n” (itoa numchg) ” object(s) flattened.”))
(prompt
(strcat “n” (itoa numnot) ” object(s) not flattened.”)
)
;;If there any entities in ssno0, show them
(if (/= 0 numno0)
(progn
(prompt (strcat ” [“
(itoa numno0)
” with non-zero base points]”
)
)
(getstring
“nPress enter to see non-zero unchanged objects… “
)
(command “._SELECT” ssno0)
(getstring “nPress enter to unhighlight them… “)
(command “”)
)
)
)
)
(command “._UCS” “_Restore” “$FLATTEN-TEMP$”
“._UCS” “_Delete” “$FLATTEN-TEMP$”
)
(command “._UNDO” “_End”)
(setvar “CMDECHO” oldcmd)
(setq *error* olderr)
(princ)
)
(prompt
“nFLATTEN version 2k.0 loaded. Type FLATTEN to run it.”
)
(princ)
expresstools 에 있는 flatten이 있죠.