找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: aage

[转贴]:SU4做窗户的插件!!!(极力推举)

[复制链接]

已领礼包: 194个

财富等级: 日进斗金

发表于 2005-4-7 20:13:56 | 显示全部楼层
这里有很多SKETCHUP的插件,1楼楼主提供一个插件就可以得10个金币,这里的插件有很多很多,看来我要发了!
切记,要想下载先要注册一下,而且这里还有很多有关SU方面的知识、组件、专业作品等等
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-11 13:56:07 | 显示全部楼层
真是感谢亚,在也不用一根根的建窗户了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-11 15:32:19 | 显示全部楼层
唉,,好是好,,可惜就是不能下载,谁让俺是新来的呢,,可是这样欺负新来的也不太好意思吧,,,,,,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-12 10:18:48 | 显示全部楼层
楼主,不错嘛,如果搞到山地建摸,就好了!等你!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-14 22:40:29 | 显示全部楼层
这个要支持的啊!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-15 13:07:34 | 显示全部楼层
今天做图时还在想有没有这个插件呢!上来找找就给找到了,真是谢谢楼主了!!支持!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-16 10:48:41 | 显示全部楼层
刚注册,还不能下,支持一下先~~~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-16 15:49:55 | 显示全部楼层
我把这个插件汉化一下并把原来的英寸单位改面毫米,安装后在“绘图”菜单最下面增加一个“参数开窗”。

上传不了附件!!下面是源文件 :

#=========================================


require 'sketchup.rb'

def find_face(face1,face2,discard)
#        UI.messagebox("Got this far")
        face1edges=face1.edges
        face2edges=face2.edges
        0.upto(3) do |a|
                0.upto(3) do |b|
                        if ((face1edges[a] != face2edges) and (face1edges[a].common_face(face2edges) != discard ))
                                if ((face1edges[a].common_face(face2edges) != face1) and (face1edges[a].common_face(face2edges) != face2))
                                        if (face1edges[a].common_face(face2edges))
                                                @face = face1edges[a].common_face(face2edges)
                                        end
                                end
                        end
                end
        end
end

def find_lowPoints(face)
        fVerts=face.vertices
        low1=fVerts[0]
        low2=low1
        0.upto(3) do |a|
                fVertsZ1=fVerts[a].position[2]
                if (fVertsZ1 <= low2.position[2])
                        low2=fVerts[a]
                end
                if (fVertsZ1 <= low1.position[2])
                        low2=low1
                        low1=fVerts[a]
                end
        end
        0.upto(3) do |a|
                edge=face.edges[a]
                if ((edge.used_by?(low1)) && (edge.used_by?(low2)))
                        @lowE=a
                end
        end
end

def insetPaint(face)
        faceEdges = face.edges                                        #Select edges so we know where we've been
        face.pushpull (-@glassinset)                                #Inset the glass
        discard=faceEdges[0].faces[0]                                #These lines find the new inset face
        face1=faceEdges[0].faces[1]                                # |
        face2=faceEdges[1].faces[1]                                # |
        face=nil                                                        # |
        find_face(face1,face2,discard)                        #_V____
        @face.material=@glasscolor                                #Paint the new inset face

end

def do_window
#        CHECK THE SELECTIONS!
        model = Sketchup.active_model
        @item = model.selection
        entities = model.active_entities
        materials=model.materials


#        ALLOW ONLY ONE SELECTED FACE
        if (((@item.length != 1) || (@item.first.class != Sketchup::Face)) || (@item.first.edges.length != 4))
                @item.clear
                UI.messagebox("请选择一个独立的4边面!")
        end
        return if @item.empty?

#        ALLOW ONLY FACE-IN-A-FACE
        if ((model.selection.first.edges[0].faces != model.selection.first.edges[1].faces) && (model.selection.first.edges[1].faces != model.selection.first.edges[2].faces) && (model.selection.first.edges[2].faces != model.selection.first.edges[3].faces) && (model.selection.first.edges[3].faces != model.selection.first.edges[0].faces))
                @item.clear
                UI.messagebox("请选择一个未与其它面关联的独立4边面!")
        end
        return if @item.empty?

        if (@framecolor == nil)
                @vPanes = 2
                @hPanes = 2
                @framewidth = 50.mm
                @frameheight = 50.mm
                @frameinset = 80.mm
                @glassinset = 20.mm
                @framecolor = "DimGray"
                @glasscolor = "abu_Glass"
        end
#        Prompt the user for the Windowizer settings
        prompts = ["行数     ", "列数     ", "窗框宽度  ", "窗框高度  ", "窗框深度  ", "玻璃深度  ", "窗框颜色  ", "玻璃颜色  "]
        values = [@vPanes, @hPanes, @framewidth, @frameheight, @frameinset, @glassinset, @framecolor, @glasscolor]
        results = inputbox prompts, values, "参数     "
        return if not results
        @vPanes = results[0]
        @hPanes = results[1]
        @framewidth = results[2]
        @frameheight = results[3]
        @frameinset = results[4]
        @glassinset = results[5]
        @framecolor = results[6]
        @glasscolor = results[7]

        @vPanes = 1 if @vPanes < 1
        @hPanes = 1 if @hPanes < 1
        @frameinset = 1 if @frameinset == 0
        @glassinset = 1 if @glassinset == 0

        model.start_operation "Windowizer"

#        ADD THE GLASS PAINT
        if (materials["abu_Glass"] == nil)
                glass=materials.add("abu_Glass")
                glass.color=[176,224,230]
                glass.alpha=0.75
        end

        face = @item.first
        @faceEdges = face.edges                                        #Select edges so we know where we've been
        face.pushpull (-@frameinset)                                #Inset the frame
        faceEdges = []
        0.upto(3) do |a|
                faceEdges[faceEdges.length]=@faceEdges[a] if (@faceEdges[a].valid?)        #Pass valid edges to new handler
        end
        if (faceEdges.length < 2)                                #Not enough edges to determine where we need to go
                UI.messagebox("Sorry, cannot continue - need 2 old edges left from push-pull")
#                model.commit_operation
                return
        end

        discard=faceEdges[0].faces[0]                                #These lines find the new inset face
        face1=faceEdges[0].faces[1]                                # |
        face2=faceEdges[1].faces[1]                                # |
        find_face(face1,face2,discard)                        #_V____
        @face.material=@framecolor                                #Paint the new inset face
        discard = nil
        discard = @face                                                #the inset face is now the discard for the window panes

        find_lowPoints(@face)

        @edge1=@face.edges[@lowE]                                #Put the face edges in a usable order
        @edge2=@face.edges[@lowE-3]
        @edge3=@face.edges[@lowE-2]
        @edge4=@face.edges[@lowE-1]

        @hLength1=((@edge1.length-@framewidth)/@hPanes)-@framewidth                #Glass length, bottom edge
        @hLength2=((@edge3.length-@framewidth)/@hPanes)-@framewidth                #Glass length, top edge
        @vLength1=((@edge4.length-@frameheight)/@vPanes)-@frameheight        #Glass length, left edge
        @vLength2=((@edge2.length-@frameheight)/@vPanes)-@frameheight        #Glass length, right edge

        if (@edge4.used_by?(@edge1.start))
                @hpt1=Geom::Point3d.new(@edge1.start.position)
        else
                @hpt1=Geom::Point3d.new(@edge1.end.position)
        end

        0.upto(3) do |a|
                if (@face.vertices[a].position == @hpt1)
                        @hpt2=Geom::Point3d.new(@face.vertices[a-3].position)
                        @hpt3=Geom::Point3d.new(@face.vertices[a-1].position)
                        @hpt4=Geom::Point3d.new(@face.vertices[a-2].position)
                end               
        end
       
        if (@edge1.start.position == @hpt1)
                @hVec1=@edge1.line[1]
        else
                @hVec1=@edge1.line[1].reverse
        end
        if (@edge3.start.position == @hpt4)       
                @hVec2=@edge3.line[1].reverse
        else
                @hVec2=@edge3.line[1]
        end
        if (@edge4.start.position == @hpt3)
                @vVec1=@edge4.line[1].reverse
        else
                @vVec1=@edge4.line[1]
        end
        if (@edge2.start.position == @hpt2)
                @vVec2=@edge2.line[1]
        else
                @vVec2=@edge2.line[1].reverse
        end


        1.upto(@vPanes) do |n|
                1.upto(@hPanes) do |m|
                        @hpt1x=@hpt1.offset(@hVec1, ((@framewidth*m)+(@hLength1 * (m-1))))
                        @hpt2x=@hpt1.offset(@hVec1, ((@framewidth*m)+(@hLength1 * m)))
                        @hpt3x=@hpt3.offset(@hVec2, ((@framewidth*m)+(@hLength2 * (m-1))))
                        @hpt4x=@hpt3.offset(@hVec2, ((@framewidth*m)+(@hLength2 * m)))

                        @vpt1x=@hpt1.offset(@vVec1, ((@frameheight*n)+(@vLength1 * (n-1))))
                        @vpt2x=@hpt1.offset(@vVec1, ((@frameheight*n)+(@vLength1 * n)))
                        @vpt3x=@hpt2.offset(@vVec2, ((@frameheight*n)+(@vLength2 * (n-1))))
                        @vpt4x=@hpt2.offset(@vVec2, ((@frameheight*n)+(@vLength2 * n)))

                        @line1=[Geom::Point3d.new(@hpt1x), Geom::Point3d.new(@hpt3x)]
                        @line2=[Geom::Point3d.new(@hpt2x), Geom::Point3d.new(@hpt4x)]
                        @line3=[Geom::Point3d.new(@vpt1x), Geom::Point3d.new(@vpt3x)]
                        @line4=[Geom::Point3d.new(@vpt2x), Geom::Point3d.new(@vpt4x)]

                        @pt0=Geom.intersect_line_line(@line1, @line3)
                        @pt1=Geom.intersect_line_line(@line2, @line3)
                        @pt2=Geom.intersect_line_line(@line2, @line4)
                        @pt3=Geom.intersect_line_line(@line1, @line4)

                        pts = []
                        pts[0] = @pt0
                        pts[1] = @pt1
                        pts[2] = @pt2
                        pts[3] = @pt3

                        face = entities.add_face pts
                        insetPaint(face)
                end
        end

        model.commit_operation

end


if( not file_loaded?("cwindowizer.rb") )

    # This will add a separator to the menu, but only once
    add_separator_to_menu("Draw")
   
    # To add an item to a menu, you identify the menu, and then
    # provide a title to display and a block to execute.  In this case,
    # the block just calls the create_box function
    UI.menu("Draw").add_item("参数开窗  ") { do_window }

end

#-----------------------------------------------------------------------------
file_loaded("cwindowizer.rb")

#-----------------------------------------------------------------
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-16 17:21:27 | 显示全部楼层
谢谢啦,肯定能用得到
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-16 17:21:27 | 显示全部楼层
谢谢啦,肯定能用得到
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-16 17:21:27 | 显示全部楼层
谢谢啦,肯定能用得到
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-18 15:20:38 | 显示全部楼层
太好了~我一直为开窗而烦恼这下可是帮了大忙了~谢谢拉~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-20 22:36:13 | 显示全部楼层
好東西
謝了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-21 16:19:05 | 显示全部楼层
不错不错,非常好用,感谢分享~~

希望有天sketchup能够有max那么丰富的插件资源~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-5-3 20:51:47 | 显示全部楼层
晕啊,单位是英制的啊。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-20 19:57 , Processed in 0.448857 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表