def DrawLedge(self): vs.BeginXtrd(0, self.__fWindowWidth * kLedgeOutWindow) hLedgePoly = self.__DrawLedgePoly() vs.EndXtrd() hLedgePoly = vs.LNewObj( ) # without that line there is a bug : multiple insertion of the object leads to whole window (oall abojects) offset hLedgePoly = self.__MoveLedge(hLedgePoly) vs.Rotate3D(0, 0, 90) vs.Rotate3D(0, 90, 0) hLedgePoly = self.__SetMaterial()
def __DrawCurtainPiece(self, startPoint, endPoint, step): vs.BeginXtrd(self.__fOriginPoint.z, self.__fHeight) self.__DrawCurtainPoly(startPoint, endPoint, step) vs.EndXtrd() return vs.LNewObj()
def Draw(self): if self.leafType == kTypeNone: vs.BeginGroup() glassWidth = self.width glassHeight = self.height glassThikness = self.__glassThikness glassOrigin = (0, 0) pathDirection = (0, -1) vs.DSelectAll() vs.BeginXtrd( 0, glassThikness) vs.RectangleN( glassOrigin, pathDirection, glassWidth, glassHeight ) hGlass = vs.LNewObj() vs.EndXtrd() vs.Set3DRot(hGlass, 0, 40, 0, 0, 0, 0) vs.EndGroup() hLeaf = vs.LNewObj() #position at origin with needed orientation vs.Set3DRot(hLeaf, 0, -90, 0, 0, 0, 0) vs.Move3DObj(hLeaf, self.__frameThickness/2, 0, 0) vs.Set3DRot(hLeaf, 0, 0, 90, 0, 0, 0) if self.leafType != kTypeNone: vs.BeginGroup() #Prepare Extrude Path pathWidth = self.width + self.__frameOverlap*2 pathHeight = self.height + self.__frameOverlap*2 pathOrigin = ( -self.__frameOverlap, self.__frameOverlap ) pathDirection = (0, -1) vs.RectangleN( pathOrigin, pathDirection, pathWidth, pathHeight) hFramePath = vs.LNewObj() vs.SetPlanarRefIDToGround(hFramePath); hFramePath = vs.ConvertToNURBS(hFramePath, False) #Prepare Extrude Profile frameProfile = ( self.__frameOverlap, 0, self.__frameWidth, 0, self.__frameWidth, self.__frameThickness, 0, self.__frameThickness, 0, self.__frameInsideThinckness, self.__frameOverlap, self.__frameInsideThinckness ) vs.ClosePoly() vs.Poly(*frameProfile) hFrameProfile = vs.LNewObj() hFrameProfilePolyline = vs.MakePolyline(hFrameProfile) vs.DelObject(hFrameProfile) hFrameProfile = hFrameProfilePolyline hLeafFrame = vs.ExtrudeAlongPath(hFramePath, hFrameProfile) vs.DelObject(hFramePath) vs.DelObject(hFrameProfile) #insert glass glassWidth = self.width - 2*self.__frameMainWidth glassHeight = self.height - 2*self.__frameMainWidth glassThikness = self.__glassThikness glassOrigin = (self.__frameMainWidth, -self.__frameMainWidth) vs.DSelectAll() vs.BeginXtrd(self.__frameThickness/2, self.__frameThickness/2 + glassThikness) vs.RectangleN( glassOrigin, pathDirection, glassWidth, glassHeight ) hGlass = vs.LNewObj() vs.EndXtrd() vs.EndGroup() hLeaf = vs.LNewObj() #position at origin with needed orientation vs.Set3DRot(hLeaf, 0, -90, 0, 0, 0, 0) vs.Set3DRot(hLeaf, 0, 0, 180, 0, 0, 0) vs.Move3DObj(hLeaf, 0, -self.width, 0) vs.Set3DRot(hLeaf, 0, 0, 90, 0, 0, 0) #move to required position vs.Move3DObj(hLeaf, self.position[0], self.position[1], self.position[2], ) if self.isGlassTrue == True: vs.SetFillBack(hGlass, 11) vs.SetOpacity(hGlass, 50) else: vs.SetFillBack(hGlass, 8) vs.SetOpacity(hGlass, 100) self.hLeaf = hLeaf
def Draw(self): vs.BeginXtrd(0,self.thickness) vs.Rect(-self.width/2.0, self.height/2.0, self.width/2.0, self.height/2.0-self.thickness) r1 = vs.LNewObj() vs.Rect(-self.width/2.0, self.height/2.0-self.thickness, -self.width/2.0+self.thickness, -self.height/2.0+self.thickness) r2 = vs.LNewObj() r2 = vs.AddSurface(r1, r2) vs.Rect(self.width/2.0-self.thickness, self.height/2.0-self.thickness, self.width/2.0, -self.height/2.0+self.thickness) r3 = vs.LNewObj() r3 = vs.AddSurface(r2,r3) vs.Rect(-self.width/2.0, -self.height/2.0+self.thickness, self.width/2.0, -self.height/2.0) r4 = vs.LNewObj() r4 = vs.AddSurface(r3,r4) if (self.wingsNum == 2): vs.Rect(-self.thickness/2.0, self.height/2.0-self.thickness, self.thickness/2.0, -self.height/2.0+self.thickness) r5 = vs.LNewObj() r4 = vs.AddSurface(r4,r5) vs.EndXtrd() vs.SetRot3D(vs.LNewObj(), 90, 0, 0, 0, -self.height/2.0, 0) vs.Move3DObj(vs.LNewObj(), 0, self.height/2.0+self.thickness/2.0, 0) vs.Move3DObj(vs.LNewObj(), 0, 0, self.elevation) #instert leafs upi = vs.GetPrefReal(152) / 25.4 leafPosOffsetY = self.thickness - leaf.Leaf.kFrameThicknessNotUPI*upi posFirstLeaf = (-self.width/2.0+self.thickness, -self.thickness/2.0+leafPosOffsetY, self.elevation+self.thickness ) if self.wingsNum == 0: wingsWidth = self.width - 2.0*self.thickness wingsHeight = self.height - 2.0*self.thickness firstLeaf = leaf.Leaf(wingsWidth, wingsHeight, posFirstLeaf) firstLeaf.SetType(leaf.kTypeNone, self.isGlass) firstLeaf.Draw() elif self.wingsNum == 1: wingsWidth = self.width - 2.0*self.thickness wingsHeight = self.height - 2.0*self.thickness firstLeaf = leaf.Leaf(wingsWidth, wingsHeight, posFirstLeaf) firstLeaf.SetType(leaf.kTypeLeft, self.isGlass) firstLeaf.Draw() firstLeaf.SetOpening(self.openingAngle) elif self.wingsNum == 2: wingsWidth = (self.width - 3.0*self.thickness)/2.0 wingsHeight = self.height - 2.0*self.thickness firstLeaf = leaf.Leaf(wingsWidth, wingsHeight, posFirstLeaf) firstLeaf.SetType(leaf.kTypeLeft, self.isGlass) firstLeaf.Draw() firstLeaf.SetOpening(self.openingAngle) posSecondLeaf = (self.thickness/2.0, -self.thickness/2.0+leafPosOffsetY, self.elevation+self.thickness) secondLeaf = leaf.Leaf(wingsWidth, wingsHeight, posSecondLeaf) secondLeaf.SetType(leaf.kTypeRight, self.isGlass) secondLeaf.Draw() secondLeaf.SetOpening(self.openingAngle)