CAFE

★ CAD/LISP/분과 Q&A

Re:블록 삽입시 내부블록의 축척을 DimScale로 할 수 있는 방법을 구하고 있습니다.

작성자행복한하루|작성시간10.06.22|조회수128 목록 댓글 7

아래 리습 참고하세여.

일반 리습으로 만들려고 하다가 늦은시간 시간이 오래걸려서.^^;;;; 일반리습으로는 고수님들이 부탁드립니다.^^

 

 

 

연습용 리습입니다. 블러관련은 VLA 로 하시는게 더 편한거 같더라구여.^^ 

 

(defun c:asd()
 (vl-load-com)
 (setq AcDoc (vla-get-activedocument (vlax-get-acad-object)))
 (cond ((= (vla-get-activespace AcDoc) 1) (setq oSpace (vla-get-modelspace AcDoc)))
       ((= (vla-get-activespace AcDoc) 0) (setq oSpace (vla-get-paperspace AcDoc)))
 )  ;; 기본적으로 요기까지는 받아오셔야합니다. 블럭삽입할때 ms 인지 ps 인지 판단을 해야되서여
(setq insertp (getpoint "\n삽입점클릭:"))

;; 블럭삽입포인트를 받고.
 (setq Inscale (getint "\n내부 블럭 스케일:"))

;; 내부 스케일 값을 입력받았ㅅ느데. 이걸 (getvar "dimscale") 로 하면됩니다.
 (vla-InsertBlock oSpace (vlax-3d-point insertp) "ASSY" 1 1 1 0)

;; 블럭을 삽입해주고여.
 (setq oBlock (vla-item (vla-get-blocks Acdoc) "ASSY"))

;; 해당 블럭의 정보를 받아와서.
 (vlax-for x oBlock (if (= (vla-get-ObjectName x) "AcDbBlockReference") (setq Inblock x)))

;; 안에 내부블럭을 가져옵니다. 블럭이 여러개라면 특정이름을 지정해야겠져. (vla-get-name 으로 특정이름과 같다면. 해당 객체를 가져오게여.  

(vla-put-XScaleFactor Inblock Inscale) ;;해당 블럭안에 있는 블럭의 크기를 조절합니다.
(vla-put-YScaleFactor Inblock Inscale)
)

 

 

첨부파일 asd.lsp

 

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 답댓글 작성자3:16 | 작성시간 10.06.22 누가 월드컵 기간 아니랄까봐... 골대앞에서 어스시트 해주시나요?^^;;;;
  • 작성자3:16 | 작성시간 10.06.22 음..저는요...

    블록의 블록을 오토리습으로 다루는걸 모르는데요? ㅠㅜ ;;;
  • 답댓글 작성자3:16 | 작성시간 10.06.22 깨서 해야 되나요?^^;;;
  • 작성자지배인 | 작성시간 10.06.22 늦은 시간에 올린 질문이라 하루 기다려야겠구나 생각했었는데 답변이 달려있어서 깜짝 놀랐습니다. @.@
    상세한 해설까지 달려있어서 학습에 큰 도움이 되겠습니다. 감사합니다.
  • 작성자회사원 신신애 | 작성시간 10.06.22 숙오하셨습니다..
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼