SketchUp Make v17/Ruby > 직육면체의 크기를 지정의 사이즈(mm) 작게 한다 > v0.1-v0.2

운영 환경
SketchUp Make v17.1.173
MacOS X El Capitan

직육면체를 줄이고 싶다.

「척도 툴」에서는 상대적인 값으로 확대 축소할 수 있지만, 구체적인 사이즈(mm)로 확대 축소하고 싶었다.
(이어서 Ruby의 공부도)

v0.1



faceAnalysis161229.rb
require 'sketchup.rb'

def face_analyze()
    model = Sketchup.active_model
    my_selection = model.selection

    my_selection.each do |ent|
        if ent.is_a? Sketchup::Face
            print("face:",ent.normal,"\n")
        end
    end
end

def face_shrink(distance_mm)
    model = Sketchup.active_model
    my_selection = model.selection

    my_selection.each do |ent|
        if ent.is_a? Sketchup::Face
            xvec = ent.normal()[0]
            yvec = ent.normal()[1]
            zvec = ent.normal()[2]
            # 0.1: arbitrary (should be more than 0.0 and less than 1.0)
            if xvec > 0.1 or yvec > 0.1 or zvec > 0.1 then
                print("shrink\n")
                ent.pushpull(-distance_mm)
            end
        end     
    end
end

위의 스크립트를 Ruby 콘솔에서 읽습니다.
(스크립트 위치는 여기 참조)
> load "faceAnalysis161229.rb"
true

실행 절차
  • 직육면체 만들기
  • 평면 작성
  • 푸시 풀 도구

  • 직육면체 (그룹화되지 않은 것)를 트리플 클릭
  • 6면 선택

  • Ruby 콘솔에서 "face_shrink(5)"를 실행합니다.

  • 이상으로 직육면체의 각 방향으로 5mm 작아진다.

    사이즈 변경 전





    사이즈 축소 후



    아래에 놓고 있는 입방체를 Width, Depth, Height에 관해서 5mm씩 축소해 보았다.


    face_shrink(-5) 그러면 5mm씩 확대할 수 있다.

    축소 사이즈가 실패했을 때는 Ctrl+z를 3회 실행하면 원래의 사이즈로 돌아온다.

    푸시 풀 툴 3회라도 실행할 수 있지만, 시간을 단축할 수 있다.

    x, y, z 각 방향으로 크기를 지정할 수있는 것이 편리하게 좋을지도 모른다.

    v0.2



    x, y, z 각 방향으로 크기를 지정할 수 있도록 했다.

    faceShrink161229.rb
    require 'sketchup.rb'
    
    def face_shrink(dist_x_mm, dist_y_mm, dist_z_mm)
        model = Sketchup.active_model
        my_selection = model.selection
    
        my_selection.each do |ent|
            if ent.is_a? Sketchup::Face
                xvec = ent.normal()[0]
                yvec = ent.normal()[1]
                zvec = ent.normal()[2]
                # 0.1: arbitrary (should be more than 0.0 and less than 1.0)
                if xvec > 0.1 then
                    ent.pushpull(-dist_x_mm)
                end
                if yvec > 0.1 then
                    ent.pushpull(-dist_y_mm)
                end
                if zvec > 0.1 then
                    ent.pushpull(-dist_z_mm)
                end         
            end     
        end
    end
    

    좋은 웹페이지 즐겨찾기