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

01BIM社区

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1749|回复: 2

Ruby程序架构

[复制链接]

145

主题

439

帖子

1724

积分

金牌会员

Rank: 6Rank: 6

积分
1724
发表于 2021-2-28 19:58:01 | 显示全部楼层 |阅读模式
module Tzbm_CadDraw
module PdTextLineCreate


class Main < Tzbm_Common::BaseMain_01KJ       
        attr_accessor :Interface, :shape;
        attr_accessor :m_Point1, :m_Point2, :m_Point3, :m_TextPoint;
       
        def initialize(dialog_title="施工图引线标注<01辅助工具>",\
                                                scrollable=true,\
                                                pref_key="PdTextLineCreate",\
                                                width=370,\
                                                height=908,\
                                                left=0,\
                                                top=105,\
                                                resizable=true)
                #创建界面
                super(dialog_title,scrollable,pref_key,width,height,left,top,resizable);
                #以下为新增内容......
               
                #path="E:/A1_IT/12212/TZBM_VER3/00_01工具集_V3/002_绘制/001DrawLine/drawLine.html"
                       
                $plan01siteurl_ = "E:/A1_IT/_01KJ/_01BIM/"
                path = $plan01siteurl_+ "html/CadDraw/_003Text/_003021PdTextCreate.html";


                set_url path;
                show;


                #回调函数
                add_action_callback("init") do |dlg, params|


                        initValue();
                       
                end


                add_action_callback("SetValues") do |dlg, params|
                        strArr = params.split("&");
                        p strArr;                       
                        @interface.m_Material=strArr[0];
                        @interface.m_Layer=strArr[1];
                        @interface.m_Depth=strArr[2].to_f.mm;


                        @interface.m_Text=strArr[3];
                        @interface.m_TextStyle=strArr[4];
                        @interface.m_NumeratorText=strArr[5];
                        @interface.m_DenominatorText=strArr[6];
                        @interface.m_TextHeight=strArr[7].to_f.mm;


                        @interface.m_LineWidth=strArr[8].to_f.mm;
                        @interface.m_OriginCategory=strArr[9].to_i;
                        @interface.m_OriginType=strArr[10].to_i;
                        @interface.m_OriginWidth=strArr[11].to_f.mm;                       
                end
                set_on_close do
                        Sketchup.active_model.select_tool nil
                end       
        end               
        def initValue()
                @interface = Interface.new self;
                @shape = Shape.new self;
        end       
        def deactivate view
                super(view);
                #以下为新增内容......


        end
        def onCancel(flag, view)
                super(flag, view);
                #以下为新增内容......


        end               
        def reset(view)
                super(view);
                #以下为新增内容......


        end
        def onMouseMove(flags, x, y, view)
                super(flags, x, y, view);
                #以下为新增内容......


                tmpStr=@pt2.x.to_i.to_s+","+@pt2.y.to_i.to_s+","+@pt2.z.to_i.to_s
                execute_script "$('#spCoord').val('#{@pt2}')";
        end
       
        def draw(view)
                super(view);
                #以下为新增内容......


        end       
        def onLButtonDown(flags, x, y, view)
                super(flags, x, y, view);
                #以下为新增内容......
                #setHtmlValue();


        end       
        def onRButtonUp(flags,x,y,view)
            super(flags, x, y, view);
                #以下为新增内容......
                @shape.createEntity();
                self.reset(view);
        end
        def onKeyDown(key, repeat, flags, view)
                super(key, repeat, flags, view);
                #以下为新增内容......
                #setHtmlValue();
                #Tab键
                if (key==9)
                        #puts("key=<"+key.to_s+">");
                        reset(view)
                elsif key==192
                        @shape.createEntity();
                        self.reset(view);
                end
               
        end       
        def onUserText(text, view)
                super(text, view);
                #以下为新增内容......
                #setHtmlValue();
        end
end



回复

使用道具 举报

145

主题

439

帖子

1724

积分

金牌会员

Rank: 6Rank: 6

积分
1724
 楼主| 发表于 2021-2-28 19:59:37 | 显示全部楼层
class Interface
        attr_accessor :main;
       
        attr_accessor :m_Material,:m_Layer,:m_Depth;
        attr_accessor :m_Text,:m_TextStyle,:m_NumeratorText,:m_DenominatorText,:m_TextHeight;
        attr_accessor :m_LineWidth,:m_OriginCategory,:m_OriginType,:m_OriginWidth;
       
        def initialize(main)
                @main=main;
                @model=Sketchup.active_model;


                init();
                setHtml();
                setHtmlValue();
        end
       
        def init()
                if $mPTC_Material.class!=NilClass
                        @m_Material=$mPTC_Material;
                else
                        @m_Material="Material0";
                        $mPTC_Material=@m_Material
                end
                if $mPTC_Layer.class!=NilClass
                        @m_Layer=$mPTC_Layer;
                else
                        @m_Layer="Layer0";
                        $mPTC_Layer=@m_Layer
                end               
                if $mPTC_Depth.class!=NilClass
                        @m_Depth=$mPTC_Depth;
                else
                        @m_Depth=0.mm;
                        $mPTC_Depth=@m_Depth
                end
               
                if $mPTC_Text.class!=NilClass
                        @m_Text=$mPTC_Text;
                else
                        @m_Text="详见施工图";
                        $mPTC_Text=@m_Text
                end               
                if $mPTC_TextStyle.class!=NilClass
                        @m_TextStyle=$mPTC_TextStyle;
                else
                        @m_TextStyle="Standard";
                        $mPTC_TextStyle=@m_TextStyle
                end               
                if $mPTC_NumeratorText.class!=NilClass
                        @m_NumeratorText=$mPTC_NumeratorText;
                else
                        @m_NumeratorText="2A";
                        $mPTC_NumeratorText=@m_NumeratorText
                end
                if $mPTC_DenominatorText.class!=NilClass
                        @m_DenominatorText=$mPTC_DenominatorText;
                else
                        @m_DenominatorText="6";
                        $mPTC_DenominatorText=@m_DenominatorText
                end               
                if $mPTC_TextHeight.class!=NilClass
                        @m_TextHeight=$mPTC_TextHeight;
                else
                        @m_TextHeight=300.mm;
                        $mPTC_TextHeight=@m_TextHeight
                end
               
                if $mPTC_LineWidth.class!=NilClass
                        @m_LineWidth=$mPTC_LineWidth;
                else
                        @m_LineWidth=30.mm;
                        $mPTC_LineWidth=@m_LineWidth
                end
        end


        def setHtml()
                #1、设置材质下拉列表
                        tmpMaterials=@model.materials
                        tmpMatArr=tmpMaterials.to_a;
                        tmpMatStrArr=Array.new();
                        tmpMatArr.each{|mMat|
                                tmpMatStrArr.push(mMat.name);
                        }
                        styleHtml="";
                        tmpMatStrArr.each{|strName|
                                styleHtml += "<option value='#{strName}'>#{strName}</option>"
                        }
                        @main.execute_script "$('#Material').html(\"#{styleHtml}\")"        #执行字符串
                #2、设置图层下拉列表
                        tmpLayers=@model.layers
                        tmpLayerArr=tmpLayers.to_a;
                        tmpLayerStrArr=Array.new();
                        tmpLayerArr.each{|mLayer|
                                tmpLayerStrArr.push(mLayer.name);
                        }
                        styleHtml="";
                        tmpLayerStrArr.each{|strName|
                                styleHtml += "<option value='#{strName}'>#{strName}</option>"
                        }
                        @main.execute_script "$('#Layer').html(\"#{styleHtml}\")"        #执行字符串
                #3、设置文字样式下拉列表
                        #打开字形名称文件
                        mTextFontFileStr = Sketchup.find_support_file "TextFont.01KJ", "Plugins/01BIM/style"
                        mTextFontFile = open(mTextFontFileStr,"r");
                        mStrArr=mTextFontFile.readlines;
                        mTextFontFile.close;
               
                        #添加新增字形名称下拉列表
                        styleHtml="";
                        mStrArr.each{|mStr|
                                tmpArr=mStr.chomp.split(",");
                                tmpStr1=tmpArr[0];
                                if (tmpStr1!="")
                                        styleHtml += "<option value='#{tmpStr1}'>#{tmpStr1}</option>"
                                end
                        }
                        @main.execute_script "$('#TextStyle').html(\"#{styleHtml}\")"        #执行字符串
        end
       
        def setHtmlValue()
                ###传递$plan01siteurl_ad变量值至Html界面
                @main.execute_script "initFrame('#{$plan01siteurl_ad}')";
               
                @main.execute_script "$('#Material').val('#{@m_Material}')";
                @main.execute_script "$('#Layer').val('#{@m_Layer}')";
                @main.execute_script "$('#Depth').val('#{@m_Depth}')";
        end


        #设置全局参数变量
        def setGobalParam()
                        $mPTC_Material=@m_Material
                        $mPTC_Layer=@m_Layer
                        $mPTC_Depth=@m_Depth


                        $mPTC_Text=@m_Text
                        $mPTC_TextStyle=@m_TextStyle
                        $mPTC_NumeratorText=@m_NumeratorText
                        $mPTC_DenominatorText=@m_DenominatorText
        end
end


回复 支持 反对

使用道具 举报

145

主题

439

帖子

1724

积分

金牌会员

Rank: 6Rank: 6

积分
1724
 楼主| 发表于 2021-2-28 20:04:54 | 显示全部楼层
本帖最后由 tzbm123456 于 2021-2-28 20:08 编辑

class Shape
        attr_accessor :m_Point1, :m_Point2, :m_Point3, :m_TextPoint;

        attr_accessor :m_Material,:m_Layer,:m_Depth;
        attr_accessor :m_Text,:m_TextStyle,:m_DenominatorText,:m_m_NumeratorText,:m_TextHeight;
        attr_accessor :m_LineWidth,:m_OriginCategory,:m_OriginType,:m_OriginWidth;
        def initialize(main)
                @main = main;


        end


        def setValueFromMain()
                @m_Point1=@main.m_Point1;
                @m_Point2=@main.m_Point2;
                @m_Point3=@main.m_Point3;
                @m_TextPoint=@main.m_TextPoint;

                @m_Material=@main.interface.m_Material;
                @m_Layer=@main.interface.m_Layer;
                @m_Depth=@main.interface.m_Depth;  

                @m_Text=@main.interface.m_Text;
                @m_TextStyle=@main.interface.m_TextStyle;
                @m_NumeratorText=@main.interface.m_NumeratorText;
                @m_DenominatorText=@main.interface.m_DenominatorText;
                @m_TextHeight=@main.interface.m_TextHeight;  

                @m_LineWidth=@main.interface.m_LineWidth;
                @m_OriginCategory=@main.interface.m_OriginCategory;
                @m_OriginType=@main.interface.m_OriginType;
                @m_OriginWidth=@main.interface.m_OriginWidth;

        end


        ##功能函数绘制直线


        def createEntity()
        #传值
                setValueFromMain();
        #绘制        

          end
end
end
end

Sketchup.active_model.select_tool Tzbm_CadDraw:dTextLineCreate::Main.new;
p 20210228

回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2021-8-2 21:01 , Processed in 0.043116 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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