SketchUp Make v17/Ruby > 여러 그룹 정렬 > X 방향

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

관련 ぃ tp // m / 7, f9 / ms / f5921cf65b5f88d9311

NIC direct로 프레임 주문할 예정인 laundry rack의 디자인. 

프레임의 폭을 변경했을 때의 정렬이 번거롭다.

API/Ruby의 공부 김에에 실장해 보았다.

code



align161230.rb
require 'sketchup.rb'

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

    my_selection.each do |ent|
        if ent.is_a? Sketchup::Group
        tr = ent.transformation
        org = tr.origin # :Point3d
        pnt = Geom::Point3d.new(-org[0], -org[1], -org[2])
        mve = Geom::Transformation.new(pnt)
        ent.transform! mve
        end
    end
end

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

    firstGroup = true
    center0 = 0.0 # set 0.0 for placeholder of double type (not good coding)
    my_selection.each do |ent|
        if !(ent.is_a? Sketchup::Group) then
             continue
        end

        # calculate x center of group[0]
        tr = ent.transformation
        org = tr.origin # :Point3d
        cnt = org[0] + ent.bounds.width / 2.0 # center in x direction

        if firstGroup then
            # store x center of group[0]
            firstGroup = false
            center0 = cnt
        else
            # move groups according to saved info
            xshift = center0 - org[0] - ent.bounds.width / 2.0
            pnt = Geom::Point3d.new(xshift, 0, 0)
            mve = Geom::Transformation.new(pnt)
            ent.transform! mve
        end
    end
end

align_groups_center_xdirection()을 사용한다.

실행 절차


  • 여러 그룹 선택
  • Ruby 콘솔에서 align_groups_center_xdirection () 실행

  • 정렬 전



    정렬 후



    좌표 계산 정보


  • center0: group[0]의 중심 좌표(X 방향)

  • group[1..]의 이동에 대해서는 다음과 같다.
  • org와 center0 사이의 차이를 계산하고 group [0]의 0에 맞추십시오.
  • group[1..]의 width/2분만 보정하여 group[1..]의 중심에 맞춘다

  • 위의 1,2를 맞춘 것이 이하.xshift = center0 - org[0] - ent.bounds.width / 2.0

    평가판 1



    왼쪽 구조물의 X축을 맞출 수 있었다.

    좋은 웹페이지 즐겨찾기