def __MoveLedge(self, hLedge): if self.__fType == LedgeType.AttachToWall: # to Wall vs.Move3DObj( hLedge, -(self.__fWindowWidth * kLedgeOutWindow) / 2.0, -self.__fLedgeWidth / 2.0 - self.__fFrameWidthOffset / 2.0, self.__fLedgeHeight + (self.__fWindowHeight * kLedgeOffsetFromWindow)) else: isSuccessful, objName, objHand, recHand, wallHand = vs.GetCustomObjectInfo( ) if isSuccessful and (vs.GetTypeN(wallHand) == 68 or vs.GetTypeN(wallHand) == 89 ): # not sure if correct (need wall to test) # to Window startTopHeight, startBotHeight, endTopHeight, endBotHeight = vs.GetWallHeight( wallHand) vs.Move3DObj( hLedge, -(self.__fWindowWidth * kLedgeOutWindow) / 2.0, -(kLedgeOffsetFromWall * self.__fLedgeWidth) / -self.__fLedgeWidth / 2.0 - self.__fFrameWidthOffset / 2.0, vs.Abs(endTopHeight - endBotHeight)) else: self.__fType = LedgeType.AttachToWall vs.Move3DObj( hLedge, -(self.__fWindowWidth * kLedgeOutWindow) / 2.0, -self.__fLedgeWidth / 2.0 - self.__fFrameWidthOffset / 2.0, self.__fLedgeHeight + (self.__fWindowHeight * kLedgeOffsetFromWindow)) return hLedge
def get(handle_or_name) -> int: """Gets the object type based on the handle or name. In VW, both are keys, but name isn't always provided. Also, some vs calls work with handles, others with names. :type handle_or_name: vs.Handle | str :returns: None if the handle or name doesn't references an actual object. """ return vs.GetTypeN( vs.GetObject(handle_or_name) if isinstance(handle_or_name, str ) else handle_or_name)
def change_attributes(h): object_class = vs.GetClass(h) rules = [ vs.GetTypeN(h) != 11, object_class != 'Lighting-Movement Radius', object_class != 'Lighting-Parts-Lense', object_class != 'Lighting-Input-3D', object_class != 'Lighting-Input-2D' ] if all(rules): vs.SetPenColorByClass(h) vs.SetClass(h, 'Lighting-Type-' + new_class)
def Reset(): width = vs.PWidth height = vs.PHeight elevation = vs.PElvInWall angle = vs.POpeningAngle leafType = vs.GetRField(gObjHandle, gObjName, 'Leaf') isOpened = vs.GetRField(gObjHandle, gObjName, 'OpenTheWindow') wallType = vs.GetTypeN(gWallHandle) if (wallType == 68 or wallType == 89): thickness = vs.WallWidth(gWallHandle) else: upi = vs.GetPrefReal(152) / 25.4 thickness = 100 * upi if isOpened == "False": angle = 0 frameObj = frame.Frame(width, height, thickness, elevation, leafType, angle) frameObj.Draw() #draw curtain####################### if vs.PHasCurts: objLedge = Ledge.LedgeObj(height / 20, height / 40, width, height + elevation, vs.PLedgeMaterial, vs.PLedgeType, thickness) objLedge.DrawLedge() hObject = vs.LNewObj() if objLedge.getMaterial() == "Wood": #if self.__fMaterial == LedgeMaterial.Wood: vs.SetFillBack(hObject, Constants.kColorIndexWood) elif objLedge.getMaterial() == "Metal": #elif self.__fMaterial == LedgeMaterial.Metal: vs.SetFillBack(hObject, Constants.kColorIndexMetal) else: vs.SetFillBack(hObject, Constants.kColorIndexPlastic) curtainPieces = int( vs.Str2Num(vs.GetRField(gObjHandle, gObjName, "Pieces"))) curtainStartZ = elevation + thickness / 2 curtainStartY = thickness / 2 - objLedge.getLedgeShaftWidth( ) * 1.5 + objLedge.getLedgeWidth() curtainHeight = objLedge.getLedgeHeight( ) - objLedge.getLedgeShaftHeight() curtainWidth = width * Ledge.kLedgeOutWindow curtainCurvesWidth = 2 if curtainCurvesWidth > objLedge.getLedgeShaftWidth(): curtainCurvesWidth = objLedge.getLedgeShaftWidth() curtainOpacity = int( vs.Str2Num(vs.GetRField(gObjHandle, gObjName, 'Opacity'))) distanceBetweenCurtainPieces = 30 curtainCurveStep = 30 curtainColor = vs.Str2Num( vs.GetRField(gObjHandle, gObjName, '__CustomColor')) # distanceBetweenCurtainPieces, curtainCurveStep and curtainCurveWidth are not neccessary to add in the creation of the object curtain = Curtain(Vector(0, -curtainStartY, curtainStartZ), curtainWidth, curtainHeight, curtainColor, curtainPieces, curtainOpacity, distanceBetweenCurtainPieces, curtainCurveStep, curtainCurvesWidth) if vs.PDrawTheCurts: curtain.DrawCurtain()
def CheckValues(): #We check the values each time the user enters new data in the OIP global winWidth fraction, display, format, upi, name, squareName = vs.GetUnits() col = vs.GetRField(gObjHandle, gObjName, 'CurtsColor') if col == 'White': vs.SetRField(gObjHandle, gObjName, '__CustomColor', 256) elif col == 'Black': vs.SetRField(gObjHandle, gObjName, '__CustomColor', 257) elif col == 'Custom Color' and vs.P__PrevCustomColor != 0: vs.SetRField(gObjHandle, gObjName, '__CustomColor', vs.P__PrevCustomColor) #################################### val = vs.GetRField(gObjHandle, gObjName, 'IDLabel') val = vs.Str2Num(val) if val < 0: val = 0 vs.SetRField(gObjHandle, gObjName, 'IDLabel', vs.Num2Str(0, val)) ################################################ val = vs.GetRField(gObjHandle, gObjName, 'Width') if (format == 2 or format == 3): inches = 0 index = val.find("'") if index > -1: splitVal = val.split("'") inches += vs.Str2Num(splitVal[0]) * 12.0 str = splitVal[1] index = str.find(name) if index > -1: str = str.replace(name, "") val = vs.Str2Num(str) inches += val else: index = val.find(name) if index > -1: val = val.replace(name, "") val = vs.Str2Num(val) inches += val if inches < 0: inches = 1 val = vs.Num2Str(2, inches) val = val + name else: val = CheckField(val, name) vs.SetRField(gObjHandle, gObjName, 'Width', val) val = val.replace(name, "") val = vs.Str2Num(val) winWidth = val ################################################ val = vs.GetRField(gObjHandle, gObjName, 'Height') if (format == 2 or format == 3): inches = 0 index = val.find("'") if index > -1: splitVal = val.split("'") inches += vs.Str2Num(splitVal[0]) * 12.0 str = splitVal[1] index = str.find(name) if index > -1: str = str.replace(name, "") val = vs.Str2Num(str) inches += val else: index = val.find(name) if index > -1: val = val.replace(name, "") val = vs.Str2Num(val) inches += val if inches < 0: inches = 1 val = vs.Num2Str(2, inches) val = val + name else: val = CheckField(val, name) vs.SetRField(gObjHandle, gObjName, 'Height', val) ################################################ val = vs.GetRField(gObjHandle, gObjName, 'ElvInWall') if (format == 2 or format == 3): inches = 0 index = val.find("'") if index > -1: splitVal = val.split("'") inches += vs.Str2Num(splitVal[0]) * 12.0 str = splitVal[1] index = str.find(name) if index > -1: str = str.replace(name, "") val = vs.Str2Num(str) inches += val else: index = val.find(name) if index > -1: val = val.replace(name, "") val = vs.Str2Num(val) inches += val if inches < 0: inches = 1 val = vs.Num2Str(2, inches) val = val + name else: val = CheckField(val, name) vs.SetRField(gObjHandle, gObjName, 'ElvInWall', val) ########################################################## val = vs.GetRField(gObjHandle, gObjName, 'OpeningAngle') val = vs.Str2Num(val) if val < 0: val = 0 elif val > 90: val = 90 vs.SetRField(gObjHandle, gObjName, 'OpeningAngle', vs.Num2Str(2, val)) ################################################ #In inches: maxPieces = winWidth(in inches) // (floor division) Max width of a pice inchesPerUnit = 1 / upi winWidth = inchesPerUnit * winWidth maxPieces = winWidth // Constants.kMaxWidthOfPieceInInches val = vs.GetRField(gObjHandle, gObjName, 'Pieces') val = vs.Str2Num(val) if val > maxPieces: val = maxPieces vs.SetRField(gObjHandle, gObjName, 'Pieces', vs.Num2Str(0, val)) ############################################################## val = vs.GetRField(gObjHandle, gObjName, 'Opacity') val = vs.Str2Num(val) if val > 100: val = 100 elif val < 0: val = 0 vs.SetRField(gObjHandle, gObjName, 'Opacity', vs.Num2Str(0, val)) width = vs.PWidth height = vs.PHeight upi = vs.GetPrefReal(152) / 25.4 wallType = vs.GetTypeN(gWallHandle) if (wallType == 68 or wallType == 89): thickness = vs.WallWidth(gWallHandle) else: thickness = 100 * upi leafType = vs.GetRField(gObjHandle, gObjName, 'Leaf') if (leafType == 'None'): twoWings = False elif (leafType == '1(no glass)'): twoWings = False elif (leafType == '1(glass)'): twoWings = False elif (leafType == '2(no glass)'): twoWings = True elif (leafType == '2(glass)'): twoWings = True if (width / 3 <= thickness and twoWings == True): width = 3 * thickness + 10 * upi vs.SetRField(gObjHandle, gObjName, 'Width', width) if (thickness >= height / 2): height = 2 * thickness + 10 * upi vs.SetRField(gObjHandle, gObjName, 'Height', height) if (thickness >= width / 2): width = thickness * 2 + 10 * upi vs.SetRField(gObjHandle, gObjName, 'Width', width)
def get_by_name(name: str): """OBSOLETE. Use ObjectRepository().get(handle_or_name) from object_base instead. """ obj_handle = vs.GetObject(name) obj_handle = obj_handle if vs.GetTypeN(obj_handle) == 16 else None # 16 = symbol definition. return SymbolDefinition(obj_handle) if obj_handle is not None else None