请选择 进入手机版 | 继续访问电脑版

01BIM社区

 找回密码
 立即注册

扫一扫,访问微社区

查看: 214|回复: 2

人机交互实用案例

[复制链接]

118

主题

259

帖子

1059

积分

金牌会员

Rank: 6Rank: 6

积分
1059
发表于 2019-2-8 15:07:10 | 显示全部楼层 |阅读模式
本帖最后由 tzbm123456 于 2019-2-15 20:14 编辑

class Main < Tzbm_Common::BaseMain_01KJ
        attr_accessor :publicAttr, :shape
        def initialize(dialog_title="绘制电力管道",\
                                                scrollable=true,\
                                                pref_key="",\
                                                width=368,\
                                                height=975,\
                                                left=1,\
                                                top=40,\
                                                resizable=true)
                #创建界面
                super(dialog_title,scrollable,pref_key,width,height,left,top,resizable);
                #以下为新增内容......
               
                $plan01siteurl = "E:/A1_IT/_01KJ/_01BIM/";
                path =$plan01siteurl  + "html/Architectural/Electric/_001DesignEPX.html"
                set_url path;
                show;
                #初始化值
                @publicAttr = nil
                @shape = nil
                #回调函数
                add_action_callback("init") do |dlg, params|
                        init;
                end
                add_action_callback("change_floor") do |dlg, params|

                end
                add_action_callback("spSet_hz") do |dlg, params|

                end
                add_action_callback("spSet_xs") do |dlg, params|

                end
                add_action_callback("spSetValues") do |dlg, params|

                end
        end        
        def init
                @publicAttr = PublicAttr.new self;
                if !@publicAttr.init then close end;
                @shape = Shape.new self;
        end        
        def reset(view)
                super(view);
                #以下为新增内容......
               
                @shape.m_PtArr.clear;
        end               
        
        def onLButtonDown(flags, x, y, view)
                super(flags, x, y, view);
                #以下为新增内容......
               
                if (@shape.m_PtArr.size==0)
                        if (@shape.m_HzPickedOrJS==0)
                                tmpPt=@m_PtArr.last;
                            @shape.m_PtArr.push(tmpPt);
                        else
                                tmpPt=@m_PtArr.last;
                                tmpPt.z=@shape.m_LouMBG+@shape.m_RelativeElev;
                            @shape.m_PtArr.push(tmpPt);
                        end
                else
                        if (@shape.m_HzPickedOrJS==0)
                                tmpPt=@m_PtArr.last;
                            if (tmpPt.distance(@shape.m_PtArr.last)>1e-2.mm)
                                    @shape.m_PtArr.push(tmpPt);
                                    tmpArr=[@shape.m_DN,@shape.m_XiL,@shape.m_Type];
                                    @shape.m_AttrArr.push(tmpArr);
                        else
                                @m_PtArr.delete_at(-1);
                                puts("tmpPt与@shape.m_PtArr.last两点重叠,请重新选择绘制点");
                        end
                        else
                                tmpPt=@m_PtArr.last;
                                tmpPt.z=@shape.m_LouMBG+@shape.m_RelativeElev;
                                if (tmpPt.distance(@shape.m_PtArr.last)>1e-2.mm)
                                    @shape.m_PtArr.push(tmpPt);
                                    tmpArr=[@shape.m_DN,@shape.m_XiL,@shape.m_Type];
                                    @shape.m_AttrArr.push(tmpArr);
                        else
                                @m_PtArr.delete_at(-1);
                                puts("tmpPt与@shape.m_PtArr.last两点重叠,请重新选择绘制点");
                        end
                        end
                end


        end        
        def onRButtonUp(flags,x,y,view)
                super(flags, x, y, view);
                #以下为新增内容......
               
        end
        def onUserText(text, view)
                super(text, view);
                #以下为新增内容......
               
                if (@shape.m_HzPickedOrJS==0)
                        if (@shape.m_PtArr.empty?)
                                tmpPt=@m_PtArr.last;
                                if (tmpPt.class==Geom:oint3d)
                                        @shape.m_PtArr.push(tmpPt);
                                    tmpArr=[@shape.m_DN,@shape.m_XiL,@shape.m_Type];
                                    @shape.m_AttrArr.push(tmpArr);
                            else
                                    puts("@m_PtArr.last不是Geom:oint3d,不推入@shape.m_PtArr!");
                            end
                        else
                                tmpPt=@m_PtArr.last;
                            if (tmpPt.distance(@shape.m_PtArr.last)>1e-2.mm)
                                    @shape.m_PtArr.push(tmpPt);
                                    tmpArr=[@shape.m_DN,@shape.m_XiL,@shape.m_Type];
                                    @shape.m_AttrArr.push(tmpArr);
                        else
                                @m_PtArr.delete_at(-1);
                                puts("tmpPt与@shape.m_PtArr.last两点重叠,请重新选择绘制点");
                        end
                    end
                else
                        if (@shape.m_PtArr.empty?)
                                tmpPt=@m_PtArr.last;
                                if (tmpPt.class==Geom:oint3d)
                                        tmpPt.z=@shape.m_LouMBG+@shape.m_RelativeElev;
                                        @shape.m_PtArr.push(tmpPt);
                                    tmpArr=[@shape.m_DN,@shape.m_XiL,@shape.m_Type];
                                    @shape.m_AttrArr.push(tmpArr);
                            else
                                    puts("@m_PtArr.last不是Geom:oint3d,不推入@shape.m_PtArr!");
                            end
                        else
                                tmpPt=@m_PtArr.last;
                                tmpPt.z=@shape.m_LouMBG+@shape.m_RelativeElev;
                                if (tmpPt.distance(@shape.m_PtArr.last)>1e-2.mm)
                                    @shape.m_PtArr.push(tmpPt);
                                    tmpArr=[@shape.m_DN,@shape.m_XiL,@shape.m_Type];
                                    @shape.m_AttrArr.push(tmpArr);
                        else
                                @m_PtArr.delete_at(-1);
                                puts("tmpPt与@shape.m_PtArr.last两点重叠,请重新选择绘制点");
                        end
                end
                end

        end
end


回复

使用道具 举报

118

主题

259

帖子

1059

积分

金牌会员

Rank: 6Rank: 6

积分
1059
 楼主| 发表于 2019-2-8 15:08:39 | 显示全部楼层
本帖最后由 tzbm123456 于 2019-2-15 07:51 编辑

class PublicAttr
        attr_accessor :m_Project,:m_BuildingNo, :m_FloorStr, :m_LouMBG, :m_LouCCG, :m_ZeroElevation;
        attr_reader :mTotalElevation;
        def initialize(main)
                @main = main
                @m_BuildingNo = nil;#建筑栋号,String
                @m_FloorStr = nil;#楼层编码,String
                @m_LouMBG = nil;#楼面标高,Length
                @m_LouCCG = nil;#楼层的层高,Length
                @m_ZeroElevation = nil;#正负零标高,Length
                @m_Project=Tzbm_Architectural_Common::ArchProject_01KJ.new();#
        end
        def init()

        end
        def change_floor()

        end
end

回复 支持 反对

使用道具 举报

118

主题

259

帖子

1059

积分

金牌会员

Rank: 6Rank: 6

积分
1059
 楼主| 发表于 2019-2-8 15:11:38 | 显示全部楼层
本帖最后由 tzbm123456 于 2019-2-15 07:49 编辑

class Shape
        attr_accessor :m_PipeName,:m_BwcDepth,:m_XiT,:m_EngiMaterial,:m_LouMBG,:m_RelativeElev,:m_DN,:m_XiL,\
                        :m_GongCYL,:m_Type,:m_JoinStyle,:m_YjgStyle,:m_HzPickedOrJS,:m_XsPickedOrHz;
        attr_accessor :m_PtArr,:m_AttrArr;
        def initialize(main)
                @main = main;
                @m_PtArr=Array.new();
                @m_AttrArr=Array.new();
                initHtml();
        end
        def initHtml()

        end
        def change_floor()

        end
        def outCategory(mXiT)

        end
        def createWaterPipe()   

        end
end
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|01BIM社区 - 最专业的BIM技术交流平台 ( 渝ICP备15000873号

GMT+8, 2019-2-17 11:59 , Processed in 0.073470 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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