/
romost
/
flange
Обзор
Документация
Войти
/
romost
/
flange
Код
Запросы
0
Пакеты
0
Релизы
1
Аналитика
Безопасность
master
src/main.lua
251 строка
13 KB
romost
add port zShifting
11 мар 2025, 11:48
11 мар 2025, 11:48
888275c
Код
Авторство
О чём код?
require("flange") require("sealing_surface") require("metalware") local function SetVisibleVariablesByTableIndex(parametersGroup, parametersTable, parametersIndexTable, isVisible) local paramsCache = {} for _, index in ipairs(parametersIndexTable) do local paramName = parametersTable[index].name paramsCache[paramName] = Style.GetParameter(parametersGroup, paramName) end for paramName, param in pairs(paramsCache) do param:SetVisible(isVisible) end end local parameters = Style.GetParameterValues() local flangeParams = parameters.FlangeDimensions local sealingParams = parameters.SealingSurfaceDimensions local metalwareParams = parameters.MetalwareDimensions --General parameters local flangeType = parameters.General.flangeType local sealingSurfaceType = parameters.General.sealingSurfaceType --FlangeDimensions parameters local flangeSolid local flangeDiameterOuter = flangeParams.flangeDiameterOuter local flangeDiameterInner = flangeParams.flangeDiameterInner local flangeThickness = flangeParams.flangeThickness local betweenHolesDiameter = flangeParams.betweenHolesDiameter local holesCount = flangeParams.holesCount local holesDiameter = flangeParams.holesDiameter local weldingRingDiameterOuter = flangeParams.weldingRingDiameterOuter local weldingRingDiameterInner = flangeParams.weldingRingDiameterInner local weldingRingThickness = flangeParams.weldingRingThickness local sleeveDiameter = flangeParams.sleeveDiameter local sleeveWallThickness = flangeParams.sleeveWallThickness local sleeveLength = flangeParams.sleeveLength local clampDiameterDocking = flangeParams.clampDiameterDocking local clampDiameterWideBase = flangeParams.clampDiameterWideBase local clampDiameterOuter = flangeParams.clampDiameterOuter local clampWallThickness = flangeParams.clampWallThickness local clampDockingThickness = flangeParams.clampDockingThickness local clampLengthStraightPart = flangeParams.clampLengthStraightPart local clampLengthFull = flangeParams.clampLengthFull local flangeDiameterWideBase = flangeParams.flangeDiameterWideBase local flangeDiameterStraightPart = flangeParams.flangeDiameterStraightPart local flangeLengthStraightPart = flangeParams.flangeLengthStraightPart local flangeLengthFull = flangeParams.flangeLengthFull local flangeRectangleIsSet = flangeParams.flangeRectangleIsSet local flangeRectangleLength = flangeParams.flangeRectangleLength local flangeTable = { {name = "flangeType", value = flangeType}, --[1] General parameter {name = "flangeDiameterOuter", value = flangeDiameterOuter}, --[2] {name = "flangeDiameterInner", value = flangeDiameterInner}, --[3] {name = "flangeThickness", value = flangeThickness}, --[4] {name = "betweenHolesDiameter", value = betweenHolesDiameter}, --[5] {name = "holesCount", value = holesCount}, --[6] {name = "holesDiameter", value = holesDiameter}, --[7] 2-7 for type01 {name = "weldingRingDiameterOuter", value = weldingRingDiameterOuter}, --[8] {name = "weldingRingDiameterInner", value = weldingRingDiameterInner}, --[9] {name = "weldingRingThickness", value = weldingRingThickness}, --[10] 2-10 for type02 {name = "sleeveDiameter", value = sleeveDiameter}, --[11] {name = "sleeveWallThickness", value = sleeveWallThickness}, --[12] {name = "sleeveLength", value = sleeveLength}, --[13] 2-7, 11-13 for type03 {name = "clampDiameterDocking", value = clampDiameterDocking}, --[14] {name = "clampDiameterWideBase", value = clampDiameterWideBase}, --[15] {name = "clampDiameterOuter", value = clampDiameterOuter}, --[16] {name = "clampWallThickness", value = clampWallThickness}, --[17] {name = "clampDockingThickness", value = clampDockingThickness}, --[18] {name = "clampLengthStraightPart", value = clampLengthStraightPart}, --[19] {name = "clampLengthFull", value = clampLengthFull}, --[20] 2-7, 14-20 for type04 {name = "flangeDiameterWideBase", value = flangeDiameterWideBase}, --[21] {name = "flangeDiameterStraightPart", value = flangeDiameterStraightPart}, --[22] {name = "flangeLengthStraightPart", value = flangeLengthStraightPart}, --[23] {name = "flangeLengthFull", value = flangeLengthFull}, --[24] 2-7, 21-25 for type11 and type21 {name = "flangeRectangleIsSet", value = flangeRectangleIsSet}, --[25] {name = "flangeRectangleLength", value = flangeRectangleLength} --[26] 25-26 for flangeRectangle } SetVisibleVariablesByTableIndex("FlangeDimensions", flangeTable, {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26}, false) --SealingSurfaceDimensions parameters local sealingSurfaceSolid local sealingSurfaceDeepeningSolid local sealingThickness = sealingParams.sealingThickness local sealingDiameterOuter = sealingParams.sealingDiameterOuter local sealingDiameterInner = sealingParams.sealingDiameterInner local sealingDeepening = sealingParams.sealingDeepening local grooveDiameterOuter = sealingParams.grooveDiameterOuter local grooveDiameterInner = sealingParams.grooveDiameterInner local grooveDiameter = sealingParams.grooveDiameter local grooveWidth = sealingParams.grooveWidth local sealingSurfaceTable = { {name = "sealingSurfaceType", value = sealingSurfaceType}, --[1] General parameter {name = "sealingThickness", value = sealingThickness}, --[2] {name = "sealingDiameterOuter", value = sealingDiameterOuter}, --[3] 2-3 for typeB, typeE {name = "sealingDiameterInner", value = sealingDiameterInner}, --[4] 2-4 for typeK {name = "sealingDeepening", value = sealingDeepening}, --[5] 2-5 for typeCL, typeF {name = "grooveDiameterOuter", value = grooveDiameterOuter}, --[6] {name = "grooveDiameterInner", value = grooveDiameterInner}, --[7] 2-3, 5, 6-7 for typeDM {name = "grooveDiameter", value = grooveDiameter}, --[8] {name = "grooveWidth", value = grooveWidth} --[9] 2-3, 5, 8-9 for typeJ } SetVisibleVariablesByTableIndex("SealingSurfaceDimensions", sealingSurfaceTable, {2,3,4,5,6,7,8,9}, false) --MetalwareDimensions parameters local metalwareSolid local metalwareIsVisible = metalwareParams.metalwareIsVisible local metalwareType = metalwareParams.metalwareType local metalwareNominalDiameter = metalwareParams.metalwareNominalDiameter local boltsLength = metalwareParams.boltsLength local studLength = metalwareParams.studLength local mountingDistance = metalwareParams.mountingDistance local nutsCount = metalwareParams.nutsCount local metalwareTable = { {name = "metalwareIsVisible", value = metalwareIsVisible}, --[1] {name = "metalwareType", value = metalwareType}, --[2] {name = "metalwareNominalDiameter", value = metalwareNominalDiameter}, --[3] {name = "boltsLength", value = boltsLength}, --[4] {name = "studLength", value = studLength}, --[5] {name = "mountingDistance", value = mountingDistance}, --[6] {name = "nutsCount", value = nutsCount} --[7] } SetVisibleVariablesByTableIndex("MetalwareDimensions", metalwareTable, {2,3,4,5,6,7}, false) --1/6 Create flange if flangeType == "type01" then SetVisibleVariablesByTableIndex("FlangeDimensions", flangeTable, {2,3,4,5,6,7}, true) flangeSolid = CreateFlangeSolidType01(flangeTable) --flange.lua end if flangeType == "type02" then SetVisibleVariablesByTableIndex("FlangeDimensions", flangeTable, {2,3,4,5,6,7,8,9,10}, true) flangeSolid = CreateFlangeSolidType02(flangeTable, sealingSurfaceTable) --flange.lua end if flangeType == "type03" then SetVisibleVariablesByTableIndex("FlangeDimensions", flangeTable, {2,3,4,5,6,7,11,12,13}, true) flangeSolid = CreateFlangeSolidType03(flangeTable, sealingSurfaceTable) --flange.lua end if flangeType == "type04" then SetVisibleVariablesByTableIndex("FlangeDimensions", flangeTable, {2,3,4,5,6,7,14,15,16,17,18,19,20}, true) flangeSolid = CreateFlangeSolidType04(flangeTable, sealingSurfaceTable) --flange.lua end if flangeType == "type11" or flangeType == "type21" then SetVisibleVariablesByTableIndex("FlangeDimensions", flangeTable, {2,3,4,5,6,7,21,22,23,24}, true) flangeSolid = CreateFlangeSolidType11(flangeTable, sealingSurfaceTable) --flange.lua end if flangeRectangleIsSet then SetVisibleVariablesByTableIndex("FlangeDimensions", flangeTable, {26}, true) holesCount = 4 Style.GetParameter("FlangeDimensions", "holesCount"):SetEnabled(false) flangeSolid = Intersect( flangeSolid, CreateRectangleSolid(flangeTable) --flange.lua ) end --2/6 Create sealing surface if sealingSurfaceType == "typeB" then SetVisibleVariablesByTableIndex("SealingSurfaceDimensions", sealingSurfaceTable, {2,3}, true) sealingSurfaceSolid = CreateSealingSurfaceSolidTypeB(flangeTable, sealingSurfaceTable) --sealing_surface.lua end if sealingSurfaceType == "typeCL" then SetVisibleVariablesByTableIndex("SealingSurfaceDimensions", sealingSurfaceTable, {2,3,4,5}, true) sealingSurfaceSolid = CreateSealingSurfaceSolidTypeCL(sealingSurfaceTable) --sealing_surface.lua sealingSurfaceDeepeningSolid = CreateSealingDeepeningSolidTypeCL(sealingSurfaceTable) --sealing_surface.lua end if sealingSurfaceType == "typeDM" then SetVisibleVariablesByTableIndex("SealingSurfaceDimensions", sealingSurfaceTable, {2,3,5,6,7}, true) sealingSurfaceSolid = CreateSealingSurfaceSolidTypeB(flangeTable, sealingSurfaceTable) --sealing_surface.lua sealingSurfaceDeepeningSolid = CreateSealingDeepeningSolidTypeDM(sealingSurfaceTable) --sealing_surface.lua end if sealingSurfaceType == "typeE" then SetVisibleVariablesByTableIndex("SealingSurfaceDimensions", sealingSurfaceTable, {2,3}, true) sealingSurfaceSolid = CreateSealingSurfaceSolidTypeE(flangeTable, sealingSurfaceTable) --sealing_surface.lua end if sealingSurfaceType == "typeF" then SetVisibleVariablesByTableIndex("SealingSurfaceDimensions", sealingSurfaceTable, {2,3,4,5}, true) sealingSurfaceSolid = CreateSealingSurfaceSolidTypeB(flangeTable, sealingSurfaceTable) --sealing_surface.lua sealingSurfaceDeepeningSolid = CreateSealingDeepeningSolidTypeCL(sealingSurfaceTable) --sealing_surface.lua end if sealingSurfaceType == "typeJ" then SetVisibleVariablesByTableIndex("SealingSurfaceDimensions", sealingSurfaceTable, {2,3,5,8,9}, true) sealingSurfaceSolid = CreateSealingSurfaceSolidTypeB(flangeTable, sealingSurfaceTable) --sealing_surface.lua sealingSurfaceDeepeningSolid = CreateSealingDeepeningSolidTypeJ(sealingSurfaceTable) --sealing_surface.lua end if sealingSurfaceType == "typeK" then SetVisibleVariablesByTableIndex("SealingSurfaceDimensions", sealingSurfaceTable, {2,3,4}, true) sealingSurfaceSolid = CreateSealingSurfaceSolidTypeB(flangeTable, sealingSurfaceTable) --sealing_surface.lua sealingSurfaceDeepeningSolid = CreateSealingDeepeningSolidTypeK(flangeTable, sealingSurfaceTable) --sealing_surface.lua end --3/6 Create metalware if metalwareIsVisible then SetVisibleVariablesByTableIndex("MetalwareDimensions", metalwareTable, {2,3,6,7}, true) if metalwareType == "bolts" then SetVisibleVariablesByTableIndex("MetalwareDimensions", metalwareTable, {4}, true) metalwareSolid = CreateMetalwareBoltSolid(flangeTable, metalwareTable) --metalware.lua else SetVisibleVariablesByTableIndex("MetalwareDimensions", metalwareTable, {5}, true) metalwareSolid = CreateMetalwareStudSolid(flangeTable, metalwareTable) --metalware.lua end end --4/6 Create main solid for detailed geometry local mainSolid if sealingSurfaceType ~= "typeA" then mainSolid = Subtract( Unite(flangeSolid, sealingSurfaceSolid), sealingSurfaceDeepeningSolid ) else mainSolid = flangeSolid end if metalwareIsVisible then mainSolid = Unite(mainSolid, metalwareSolid) end Style.SetDetailedGeometry(ModelGeometry():AddSolid(mainSolid)) --5/6 Create ports local zShift = 0 if flangeType == "type03" then zShift = sleeveLength end if flangeType == "type04" then zShift = clampLengthFull - clampDockingThickness end if flangeType == "type11" or flangeType == "type21" then zShift = flangeLengthFull end if sealingSurfaceType ~= "typeA" then zShift = zShift - sealingThickness end Style.GetPort("PortFlange") :SetPlacement(Placement3D(Point3D(0, 0, zShift), Vector3D(0, 0, 1), Vector3D(1, 0, 0))) :SetPipeParameters(PipeConnectorType.Flange, flangeDiameterInner) --6/6 Create symbol and symbolic geometry Style.SetSymbolGeometry(ModelGeometry() :AddGeometrySet2D(GeometrySet2D() :AddCurve(CreateLineSegment2D(Point2D(0, -1.25), Point2D(0, 1.25))), Placement3D(Point3D(0, 0, 20), Vector3D(0, 0, 1), Vector3D(1, 0, 0)) ) ) Style.SetSymbolicGeometry(ModelGeometry() :AddGeometrySet2D(GeometrySet2D() :AddCurve(CreateLineSegment2D(Point2D(0, -flangeDiameterOuter / 2), Point2D(0, flangeDiameterOuter / 2))), Placement3D(Point3D(0, 0, flangeThickness), Vector3D(0, 0, 1), Vector3D(1, 0, 0)) ) )