pythonCascade Sample Problems

Animation

 

    def VisualizeStructure(self):

#       initial visualization       

        if self.visualized:

            return

        self.Initialize()

        self.interactive_context.EraseAll(0,1)

 

        self.myDeviation = 0.0008

        self.thread = 4

        self.myAngle = 0

 

        B = BRep_Builder()

        flag1,self.CrankArm = BRepTools().Read("d:\\awork\\demo\\Data\\CrankArm.rle",B)

        flag2,self.CylinderHead = BRepTools().Read("d:\\awork\\demo\\Data\\CylinderHead.rle",B)

        flag3,self.Propeller = BRepTools().Read("d:\\awork\\demo\\Data\\Propeller.rle",B)

        flag4,self.Piston = BRepTools().Read("d:\\awork\\demo\\Data\\Piston.rle",B)

        flag5,self.EngineBlock = BRepTools().Read("d:\\awork\\demo\\Data\\EngineBlock.rle",B)

 

        if flag1 == 0 or flag2 == 0 or flag3 == 0 or flag4 == 0 or flag5 == 0:

            print "Shape(s) not found.\nCheck the Data directory path!"

 

        self.interactive_context.SetDeviationCoefficient(self.myDeviation)

 

        self.myAisCrankArm     = AIS_Shape (self.CrankArm)

        self.interactive_context.SetColor(self.myAisCrankArm,Quantity_NOC_HOTPINK,0)

        self.interactive_context.SetMaterial(self.myAisCrankArm,Graphic3d_NOM_PLASTIC,0)

        self.interactive_context.Display(self.myAisCrankArm,1,-1,0,0)

 

        self.myAisCylinderHead     = AIS_Shape (self.CylinderHead)

        self.interactive_context.SetColor(self.myAisCylinderHead,Quantity_NOC_WHITE,0)

        self.interactive_context.SetMaterial(self.myAisCylinderHead,Graphic3d_NOM_PLASTIC,0)

        self.interactive_context.Display(self.myAisCylinderHead,1,-1,0,0)

 

        self.myAisPropeller     = AIS_Shape (self.Propeller)

        self.interactive_context.SetColor(self.myAisPropeller,Quantity_NOC_RED,0)

        self.interactive_context.SetMaterial(self.myAisPropeller,Graphic3d_NOM_PLASTIC,0)

        self.interactive_context.Display(self.myAisPropeller,1,-1,0,0)

 

        self.myAisPiston     = AIS_Shape (self.Piston)

        self.interactive_context.SetColor(self.myAisPiston,Quantity_NOC_WHITE,0)

        self.interactive_context.SetMaterial(self.myAisPiston,Graphic3d_NOM_PLASTIC,0)

        self.interactive_context.Display(self.myAisPiston,1,-1,0,0)

 

        self.myAisEngineBlock     = AIS_Shape (self.EngineBlock)

        self.interactive_context.SetColor(self.myAisEngineBlock,Quantity_NOC_WHITE,0)

        self.interactive_context.SetMaterial(self.myAisEngineBlock,Graphic3d_NOM_PLASTIC,0)

        self.interactive_context.Display(self.myAisEngineBlock,1,-1,0,0)

 

        self.visualized = 1

 

        self.view.FitAll(0.01,0)

        self.view.ZFitAll(0.01)

        self.view.Redraw()

 

    def AnimationOnRestart(self,event):

 

        self.timer.Start(1)

 

    def AnimationOnStop(self,event):

 

        self.timer.Stop()

 

    def AnimationOnThread(self,event):

 

        windial = wxDialog(self.parent,-1,"Change the animation thread",wxPoint(30,50),wxSize(340,230))

        wxButton(windial,wxID_OK," OK ",wxPoint(50,120),wxDefaultSize)

        wxButton(windial,wxID_CANCEL," Cancel ",wxPoint(200,120),wxDefaultSize)

        wxStaticText(windial,-1,"Angle increment",wxPoint(50,25))

        sc = wxSpinCtrl(windial,-1,`self.thread`,wxPoint(50,50),wxSize(80,-1))

        sc.SetRange(1,100)

       

        val = windial.ShowModal()

        if val == wxID_OK:

            self.thread = sc.GetValue()

           

    def AnimationOnDeviation(self,event):

 

        windial = wxDialog(self.parent,-1,"Deviation coefficient",wxPoint(30,50),wxSize(340,230))

        wxButton(windial,wxID_OK," OK ",wxPoint(50,120),wxDefaultSize)

        wxButton(windial,wxID_CANCEL," Cancel ",wxPoint(200,120),wxDefaultSize)

        wxStaticText(windial,-1,"Fine                 Default                          Unpolished",wxPoint(50,25))

        dev = int( (self.myDeviation-0.00003)/0.00003)

        sc = wxSlider(windial,100,dev,1,100,wxPoint(40,50),wxSize(260,-1),wxSL_HORIZONTAL | wxSL_AUTOTICKS)

        sc.SetTickFreq(5,1)

       

        val = windial.ShowModal()

        if val == wxID_OK:

            self.myDeviation = 0.00003 + 0.00003 * sc.GetValue()

            self.interactive_context.SetDeviationCoefficient(self.myDeviation)

            Propeller = self.myAisPropeller.Shape()

            BRepTools().Clean(Propeller)

            self.myAisPropeller.Set(Propeller)

            self.interactive_context.Deactivate(self.myAisPropeller)

            self.interactive_context.Redisplay(self.myAisPropeller)