안녕하세요. 자동치수 문의 입니다. 블럭선택만으로 블럭의 가로세로 치수 뽑는 리습 찾고있는데요.
페이지 정보
작성자 서 댓글 5건 조회 169회 작성일 24-12-10 20:03본문
블럭선택만으로 블럭의 가로세로 치수 뽑는 리습이 필요하여 여기저기 수소문 중인데
해당 기능은 구현이 안되는건지 제가 못찾는건지... 찾을수가 없네요..
구현이 안되는거면 찾는걸 포기하려 합니다. ㅎㅎ
구현이 안되서 없는걸까요?
댓글목록
이자더님의 댓글
이자더 작성일xicad 를 사용하시나요?
서님의 댓글
서 작성일네 xicad 사용중입니다.
서님의 댓글
서 작성일
어떤분께서 챗지피디로 물어본 코드인데요.
에러가 떠서 사용이 불가합니다.
염치불구하고 리습작동이 되도록 좀 봐줄수 있을까요?
(defun c:BlockDimensions ()
(setq sel (car (entsel "\n블럭을 선택하세요: "))) ; 블럭을 선택
(if sel
(progn
(setq obj (entget sel)) ; 선택한 객체의 데이터를 가져옴
(setq blkInsert (cdr (assoc 10 obj))) ; 블럭의 Insert Point
(setq blkName (cdr (assoc 2 obj))) ; 블럭 이름
(setq blkRef (vlax-ename->vla-object sel)) ; 블럭 레퍼런스를 VLA 객체로 변환
(setq blkBoundingBox (vlax-get-property blkRef 'GetBoundingBox)) ; Bounding Box 가져오기
(setq minPt (car blkBoundingBox)) ; Bounding Box의 최소점
(setq maxPt (cadr blkBoundingBox)) ; Bounding Box의 최대점
; 치수 계산 (가로, 세로, 높이)
(setq width (abs (- (car maxPt) (car minPt)))) ; X 방향 크기
(setq height (abs (- (cadr maxPt) (cadr minPt)))) ; Y 방향 크기
(setq depth (if (> (length minPt) 2)
(abs (- (caddr maxPt) (caddr minPt))) ; Z 방향 크기 (3D 블럭)
0)) ; 2D 블럭의 경우 Z 크기 0
; 결과 출력
(princ (strcat "\n블럭 이름: " blkName))
(princ (strcat "\n가로 (X 방향): " (rtos width 2 2)))
(princ (strcat "\n세로 (Y 방향): " (rtos height 2 2)))
(if (> depth 0)
(princ (strcat "\n높이 (Z 방향): " (rtos depth 2 2)))
(princ "\nZ 방향 크기는 없습니다. (2D 블럭)"))
)
(princ "\n블럭을 선택하지 않았습니다.") ; 블럭을 선택하지 않은 경우 메시지 출력
)
(princ)
)
이자더님의 댓글
이자더 작성일PBS 로 블럭 영역을 그리고, DPL 로 치수를 넣으면 되세요.
섲님의 댓글
섲 작성일아! 감사합니다.