diff --git a/Icarus/Constants/Const3dPrint.vb b/Icarus/Constants/Const3dPrint.vb index 28c6c14..a8ec31a 100644 --- a/Icarus/Constants/Const3dPrint.vb +++ b/Icarus/Constants/Const3dPrint.vb @@ -90,6 +90,7 @@ Public Const MAC_LINKTYPE = "LinkType" Public Const MAC_LINKPARAM = "LinkParam" Public Const MAC_LINKZUP = "LinkZup" + Public Const MAC_INNERSHELLWIDTH = "InnerStrandW" Public Const MAC_OFFSETLEADPOINT = "OffsetLeadPoint" Public Const MAC_LEADIN = "LeadIn" Public Const MAC_LEADINTANGDIST = "LeadInTangDist" @@ -110,6 +111,7 @@ Public Const MAC_POSTFLOWDELAY = "PostFlowDelay" Public Const MAC_SCREWBACK = "ScrewBack" Public Const MAC_SLICINGHEIGHT = "SlicingHeight" + Public Const MAC_RIBSSTRANDWIDTH = "RibsStrandW" Public Const MAC_RIBSTYPE = "RibsType" Public Const MAC_RIBSOVERLAP = "RibsOverlap" Public Const MAC_RIBSSTRANDCOUNT = "RibsStrandCount" @@ -129,6 +131,7 @@ Public Const MAC_SHELLNBRCOASTING = "ShellNbrCoasting" Public Const MAC_SHELLNBRWIPE = "ShellNbrWipe" Public Const MAC_SHELLNBRWIPEDIR = "ShellNbrWipeDir" + Public Const MAC_AUXSOLIDSSTRANDWIDTH = "AuxSolidsStrandW" Public Const MAC_AUXSOLIDSOVERLAP = "AuxSolidsOverlap" Public Const MAC_AUXSOLIDSINFILL = "AuxSolidsInfill" Public Const MAC_AUXSOLIDSINFILLLINK = "AuxSolidsInfillLink" @@ -146,6 +149,7 @@ Public Const MAC_AUXSOLIDSCOASTINGLEN = "AuxSolidsCoastingLen" Public Const MAC_AUXSOLIDSWIPELEN = "AuxSolidsWipeLen" Public Const MAC_AUXSOLIDSWIPEDIR = "AuxSolidsWipeDir" + Public Const MAC_INFILLSTRANDWIDTH = "InfillStrandW" Public Const MAC_FLOORTYPE = "FloorType" Public Const MAC_CEILCOUNT = "CeilCount" Public Const MAC_CEILTYPE = "CeilType" diff --git a/Icarus/CurrMachiningPanel/CurrMachining.vb b/Icarus/CurrMachiningPanel/CurrMachining.vb index 9ebd765..5daeef4 100644 --- a/Icarus/CurrMachiningPanel/CurrMachining.vb +++ b/Icarus/CurrMachiningPanel/CurrMachining.vb @@ -224,12 +224,13 @@ Public Class CurrMachiningCathegory New CurrNumericMachiningParam(MachiningParam.Params.SLICINGHEIGHT, nPartId, nIndex, bForceFromDb, Me)}) Case Cathegories.LINK m_sName = "Shell" - m_MachiningParamList = New List(Of MachiningParam)({New CurrComboMachiningParam(MachiningParam.Params.LINKTYPE, nPartId, nIndex, bForceFromDb, Me), + m_MachiningParamList = New List(Of MachiningParam)({New CurrNumericMachiningParam(MachiningParam.Params.INNERSHELLWIDTH, nPartId, nIndex, bForceFromDb, Me), + New CurrNumericMachiningParam(MachiningParam.Params.OFFSETLEADPOINT, nPartId, nIndex, bForceFromDb, Me), + New CurrComboMachiningParam(MachiningParam.Params.LINKTYPE, nPartId, nIndex, bForceFromDb, Me), New CurrNumericMachiningParam(MachiningParam.Params.LINKPARAM, nPartId, nIndex, bForceFromDb, Me), New CurrComboMachiningParam(MachiningParam.Params.LEADIN, nPartId, nIndex, bForceFromDb, Me), New CurrNumericMachiningParam(MachiningParam.Params.LEADINTANGDIST, nPartId, nIndex, bForceFromDb, Me), New CurrNumericMachiningParam(MachiningParam.Params.LEADINORTHODIST, nPartId, nIndex, bForceFromDb, Me), - New CurrNumericMachiningParam(MachiningParam.Params.OFFSETLEADPOINT, nPartId, nIndex, bForceFromDb, Me), New CurrComboMachiningParam(MachiningParam.Params.LEADOUT, nPartId, nIndex, bForceFromDb, Me), New CurrNumericMachiningParam(MachiningParam.Params.LEADOUTTANGDIST, nPartId, nIndex, bForceFromDb, Me), New CurrNumericMachiningParam(MachiningParam.Params.LEADOUTORTHODIST, nPartId, nIndex, bForceFromDb, Me), @@ -240,7 +241,8 @@ Public Class CurrMachiningCathegory 'New CurrNumericMachiningParam(MachiningParam.Params.WIPEDIR, nPartId, nIndex, bForceFromDb, Me)}) Case Cathegories.RIBS m_sName = "Ribs" - m_MachiningParamList = New List(Of MachiningParam)({New CurrComboMachiningParam(MachiningParam.Params.RIBSTYPE, nPartId, nIndex, bForceFromDb, Me), + m_MachiningParamList = New List(Of MachiningParam)({New CurrNumericMachiningParam(MachiningParam.Params.RIBSSTRANDWIDTH, nPartId, nIndex, bForceFromDb, Me), + New CurrComboMachiningParam(MachiningParam.Params.RIBSTYPE, nPartId, nIndex, bForceFromDb, Me), New CurrCheckMachiningParam(MachiningParam.Params.RIBSLIMITUNBOUNDEDWITHSOLID, nPartId, nIndex, bForceFromDb, Me), New CurrNumericMachiningParam(MachiningParam.Params.RIBSOVERLAP, nPartId, nIndex, bForceFromDb, Me), New CurrNumericMachiningParam(MachiningParam.Params.RIBSSTRANDCOUNT, nPartId, nIndex, bForceFromDb, Me), @@ -263,7 +265,8 @@ Public Class CurrMachiningCathegory New CurrNumericMachiningParam(MachiningParam.Params.SHELLNBRWIPEDIR, nPartId, nIndex, bForceFromDb, Me)}) Case Cathegories.AUX_SOLID m_sName = "Filled Solid" - m_MachiningParamList = New List(Of MachiningParam)({New CurrComboMachiningParam(MachiningParam.Params.AUXSOLIDSINFILL, nPartId, nIndex, bForceFromDb, Me), + m_MachiningParamList = New List(Of MachiningParam)({New CurrNumericMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDWIDTH, nPartId, nIndex, bForceFromDb, Me), + New CurrComboMachiningParam(MachiningParam.Params.AUXSOLIDSINFILL, nPartId, nIndex, bForceFromDb, Me), New CurrCheckMachiningParam(MachiningParam.Params.AUXSOLIDSINFILLLINK, nPartId, nIndex, bForceFromDb, Me), New CurrNumericMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDCOUNT, nPartId, nIndex, bForceFromDb, Me), New CurrComboMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDORDER, nPartId, nIndex, bForceFromDb, Me), @@ -282,7 +285,8 @@ Public Class CurrMachiningCathegory New CurrNumericMachiningParam(MachiningParam.Params.AUXSOLIDSWIPEDIR, nPartId, nIndex, bForceFromDb, Me)}) Case Cathegories.INFILL m_sName = "Infill" - m_MachiningParamList = New List(Of MachiningParam)({New CurrNumericMachiningParam(MachiningParam.Params.FLOORCOUNT, nPartId, nIndex, bForceFromDb, Me), + m_MachiningParamList = New List(Of MachiningParam)({New CurrNumericMachiningParam(MachiningParam.Params.INFILLSTRANDWIDTH, nPartId, nIndex, bForceFromDb, Me), + New CurrNumericMachiningParam(MachiningParam.Params.FLOORCOUNT, nPartId, nIndex, bForceFromDb, Me), New CurrComboMachiningParam(MachiningParam.Params.FLOORTYPE, nPartId, nIndex, bForceFromDb, Me), New CurrNumericMachiningParam(MachiningParam.Params.CEILCOUNT, nPartId, nIndex, bForceFromDb, Me), New CurrComboMachiningParam(MachiningParam.Params.CEILTYPE, nPartId, nIndex, bForceFromDb, Me), @@ -360,8 +364,25 @@ Public Class CurrNumericMachiningParam StringToDouble(value, dTempValue) End If If m_bIsActiveMinMax Then - If dTempValue >= m_dMinValue AndAlso dTempValue <= m_dMaxValue Then - m_dValue = dTempValue + If m_MinMaxType = MinMaxTypes.ABSOLUT Then + If dTempValue >= m_dMinValue AndAlso dTempValue <= m_dMaxValue Then + m_dValue = dTempValue + End If + ElseIf m_MinMaxType = MinMaxTypes.PERCENTAGE Then + Dim LinkedParam As MachiningParam = Nothing + ' cerco il parametro a cui e' collegato + For Each CurrCathegory In Map.refMachiningDbVM.SelMachining.CathegoryList + LinkedParam = CurrCathegory.MachiningParamList.FirstOrDefault(Function(x) x.Type = m_MinMaxLinkedParam) + If Not IsNothing(LinkedParam) Then Exit For + Next + If Not IsNothing(LinkedParam) AndAlso TypeOf LinkedParam Is NumericMachiningParam Then + Dim NumericLinkedParam As NumericMachiningParam = DirectCast(LinkedParam, NumericMachiningParam) + If dTempValue >= NumericLinkedParam.dValue * m_dMinValue / 100 AndAlso dTempValue <= NumericLinkedParam.dValue * m_dMaxValue / 100 Then + m_dValue = dTempValue + End If + Else + m_dValue = dTempValue + End If End If Else m_dValue = dTempValue @@ -416,6 +437,9 @@ Public Class CurrNumericMachiningParam Case Params.LINKZUP bReadFromPart = EgtGetInfo(nPartId, MAC_LINKZUP, m_dValue) m_bIsLen = True + Case Params.INNERSHELLWIDTH + bReadFromPart = EgtGetInfo(nPartId, MAC_INNERSHELLWIDTH, m_dValue) + m_bIsLen = True Case Params.OFFSETLEADPOINT bReadFromPart = EgtGetInfo(nPartId, MAC_OFFSETLEADPOINT, m_dValue) m_bIsLen = True @@ -470,6 +494,9 @@ Public Class CurrNumericMachiningParam Case Params.SLICINGHEIGHT bReadFromPart = EgtGetInfo(nPartId, MAC_SLICINGHEIGHT, m_dValue) m_bIsLen = True + Case Params.RIBSSTRANDWIDTH + bReadFromPart = EgtGetInfo(nPartId, MAC_RIBSSTRANDWIDTH, m_dValue) + m_bIsLen = True Case Params.RIBSOVERLAP bReadFromPart = EgtGetInfo(nPartId, MAC_RIBSOVERLAP, m_dValue) m_bIsLen = False @@ -503,6 +530,9 @@ Public Class CurrNumericMachiningParam Case Params.SHELLNBRWIPEDIR bReadFromPart = EgtGetInfo(nPartId, MAC_SHELLNBRWIPEDIR, m_dValue) m_bIsLen = False + Case Params.AUXSOLIDSSTRANDWIDTH + bReadFromPart = EgtGetInfo(nPartId, MAC_AUXSOLIDSSTRANDWIDTH, m_dValue) + m_bIsLen = True Case Params.AUXSOLIDSOVERLAP bReadFromPart = EgtGetInfo(nPartId, MAC_AUXSOLIDSOVERLAP, m_dValue) m_bIsLen = False @@ -548,6 +578,9 @@ Public Class CurrNumericMachiningParam Case Params.CEILCOUNT bReadFromPart = EgtGetInfo(nPartId, MAC_CEILCOUNT, m_dValue) m_bIsLen = False + Case Params.INFILLSTRANDWIDTH + bReadFromPart = EgtGetInfo(nPartId, MAC_INFILLSTRANDWIDTH, m_dValue) + m_bIsLen = True Case Params.INFILLDENSITY bReadFromPart = EgtGetInfo(nPartId, MAC_INFILLDENSITY, m_dValue) m_bIsLen = False @@ -583,22 +616,22 @@ Public Class CurrNumericMachiningParam Case Params.STRANDH, Params.STRANDW, Params.STRANDCOUNT, Params.OFFSET, Params.STRANDOVERLAP, Params.STARTPOINTOFFSETONSLICE, Params.G0FEED, Params.G0FEEDZ, Params.LINKZUP, Params.TOOLDIAM, Params.FLOWRATE_PC, Params.PREFLOWDELAY, Params.POSTFLOWDELAY, Params.SCREWBACK, Params.SLICINGHEIGHT m_DbParam = DbMachining.CathegoryList.FirstOrDefault(Function(y) y.Type = MachiningCathegory.Cathegories.GENERAL).MachiningParamList.FirstOrDefault(Function(z) z.Type = m_Type) - Case Params.LINKPARAM, Params.OFFSETLEADPOINT, Params.LEADINTANGDIST, Params.LEADINORTHODIST, + Case Params.LINKPARAM, Params.INNERSHELLWIDTH, Params.OFFSETLEADPOINT, Params.LEADINTANGDIST, Params.LEADINORTHODIST, Params.LEADOUTTANGDIST, Params.LEADOUTORTHODIST, Params.COASTINGLEN, Params.COASTINGFEED_PC, Params.WIPELEN, Params.WIPEFEED_PC ' Params.WIPEDIR m_DbParam = DbMachining.CathegoryList.FirstOrDefault(Function(y) y.Type = MachiningCathegory.Cathegories.LINK).MachiningParamList.FirstOrDefault(Function(z) z.Type = m_Type) - Case Params.RIBSOVERLAP, Params.RIBSSTRANDCOUNT, Params.RIBSLINK, Params.RIBSINVERTORDER, Params.RIBSINVERTDIRECTION, + Case Params.RIBSSTRANDWIDTH, Params.RIBSOVERLAP, Params.RIBSSTRANDCOUNT, Params.RIBSLINK, Params.RIBSINVERTORDER, Params.RIBSINVERTDIRECTION, Params.RIBSLEADININVERT, Params.RIBSLEADINLEN, Params.RIBSLEADOUTINVERT, Params.RIBSLEADOUTLEN, Params.RIBSLEADOUTCOASTING, Params.RIBSLEADOUTWIPE, Params.RIBSLEADOUTWIPEDIR m_DbParam = DbMachining.CathegoryList.FirstOrDefault(Function(y) y.Type = MachiningCathegory.Cathegories.RIBS).MachiningParamList.FirstOrDefault(Function(z) z.Type = m_Type) Case Params.SHELLNBRDIFFERENCE, Params.SHELLNBRCOASTING, Params.SHELLNBRWIPE, Params.SHELLNBRWIPEDIR m_DbParam = DbMachining.CathegoryList.FirstOrDefault(Function(y) y.Type = MachiningCathegory.Cathegories.SHELL_NUMBER).MachiningParamList.FirstOrDefault(Function(z) z.Type = m_Type) - Case Params.AUXSOLIDSOVERLAP, Params.AUXSOLIDSLINKPARAM, Params.AUXSOLIDSSTARTPOINTOFFSETONSLICE, + Case Params.AUXSOLIDSSTRANDWIDTH, Params.AUXSOLIDSOVERLAP, Params.AUXSOLIDSLINKPARAM, Params.AUXSOLIDSSTARTPOINTOFFSETONSLICE, Params.AUXSOLIDSOFFSETLEADPOINT, Params.AUXSOLIDSDENSITY, Params.AUXSOLIDSGRIDOVERLAP, Params.AUXSOLIDSDIRECTION, Params.AUXSOLIDSOFFSETX, Params.AUXSOLIDSOFFSETY, Params.AUXSOLIDSCOASTINGLEN, Params.AUXSOLIDSWIPELEN, Params.AUXSOLIDSWIPEDIR, Params.AUXSOLIDSSTRANDCOUNT m_DbParam = DbMachining.CathegoryList.FirstOrDefault(Function(y) y.Type = MachiningCathegory.Cathegories.AUX_SOLID).MachiningParamList.FirstOrDefault(Function(z) z.Type = m_Type) - Case Params.FLOORCOUNT, Params.CEILCOUNT, Params.INFILLDENSITY, Params.INFILLOVERLAP, + Case Params.INFILLSTRANDWIDTH, Params.FLOORCOUNT, Params.CEILCOUNT, Params.INFILLDENSITY, Params.INFILLOVERLAP, Params.INFILLGRIDOVERLAP, Params.INFILLDIRECTION, Params.INFILLOFFSETX, Params.INFILLOFFSETY, Params.INFILLCOASTING, Params.INFILLWIPE, Params.INFILLWIPEDIR m_DbParam = DbMachining.CathegoryList.FirstOrDefault(Function(y) y.Type = MachiningCathegory.Cathegories.INFILL).MachiningParamList.FirstOrDefault(Function(z) z.Type = m_Type) @@ -640,6 +673,8 @@ Public Class CurrNumericMachiningParam EgtSetInfo(nPartId, MAC_LINKPARAM, sWriteValue) Case Params.LINKZUP EgtSetInfo(nPartId, MAC_LINKZUP, sWriteValue) + Case Params.INNERSHELLWIDTH + EgtSetInfo(nPartId, MAC_INNERSHELLWIDTH, sWriteValue) Case Params.OFFSETLEADPOINT EgtSetInfo(nPartId, MAC_OFFSETLEADPOINT, sWriteValue) Case Params.LEADINTANGDIST @@ -676,6 +711,8 @@ Public Class CurrNumericMachiningParam EgtSetInfo(nPartId, MAC_SCREWBACK, sWriteValue) Case Params.SLICINGHEIGHT EgtSetInfo(nPartId, MAC_SLICINGHEIGHT, sWriteValue) + Case Params.RIBSSTRANDWIDTH + EgtSetInfo(nPartId, MAC_RIBSSTRANDWIDTH, sWriteValue) Case Params.RIBSOVERLAP EgtSetInfo(nPartId, MAC_RIBSOVERLAP, sWriteValue) Case Params.RIBSSTRANDCOUNT @@ -698,6 +735,8 @@ Public Class CurrNumericMachiningParam EgtSetInfo(nPartId, MAC_SHELLNBRWIPE, sWriteValue) Case Params.SHELLNBRWIPEDIR EgtSetInfo(nPartId, MAC_SHELLNBRWIPEDIR, sWriteValue) + Case Params.AUXSOLIDSSTRANDWIDTH + EgtSetInfo(nPartId, MAC_AUXSOLIDSSTRANDWIDTH, sWriteValue) Case Params.AUXSOLIDSSTRANDCOUNT EgtSetInfo(nPartId, MAC_AUXSOLIDSSTRANDCOUNT, sWriteValue) Case Params.AUXSOLIDSOVERLAP @@ -726,6 +765,8 @@ Public Class CurrNumericMachiningParam EgtSetInfo(nPartId, MAC_AUXSOLIDSWIPEDIR, sWriteValue) Case Params.FLOWRATE_PC EgtSetInfo(nPartId, MAC_CONSTANT, sWriteValue) + Case Params.INFILLSTRANDWIDTH + EgtSetInfo(nPartId, MAC_INFILLSTRANDWIDTH, sWriteValue) Case Params.CEILCOUNT EgtSetInfo(nPartId, MAC_CEILCOUNT, sWriteValue) Case Params.INFILLDENSITY diff --git a/Icarus/FilledSolidParamPanel/FilledSolidParamPanelVM.vb b/Icarus/FilledSolidParamPanel/FilledSolidParamPanelVM.vb index fd6b03b..eac4460 100644 --- a/Icarus/FilledSolidParamPanel/FilledSolidParamPanelVM.vb +++ b/Icarus/FilledSolidParamPanel/FilledSolidParamPanelVM.vb @@ -42,8 +42,9 @@ Public Class FilledSolidParamPanelVM m_Type = Cathegories.AUX_SOLID m_sName = "Filled Solid" - m_MachiningParamList = New List(Of MachiningParam)({New FilledSolidComboMachiningParam(MachiningParam.Params.AUXSOLIDSINFILL, nFilledSolidId, nPartId, Me), - New FilledSolidcheckMachiningParam(MachiningParam.Params.AUXSOLIDSINFILLLINK, nFilledSolidId, nPartId, Me), + m_MachiningParamList = New List(Of MachiningParam)({New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDWIDTH, nFilledSolidId, nPartId, Me), + New FilledSolidComboMachiningParam(MachiningParam.Params.AUXSOLIDSINFILL, nFilledSolidId, nPartId, Me), + New FilledSolidCheckMachiningParam(MachiningParam.Params.AUXSOLIDSINFILLLINK, nFilledSolidId, nPartId, Me), New FilledSolidNumericMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDCOUNT, nFilledSolidId, nPartId, Me), New FilledSolidComboMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDORDER, nFilledSolidId, nPartId, Me), New FilledSolidComboMachiningParam(MachiningParam.Params.AUXSOLIDSLINKTYPE, nFilledSolidId, nPartId, Me), @@ -198,10 +199,14 @@ Public Class FilledSolidNumericMachiningParam MyBase.New(Type, Cathegory) Dim bReadFromPart As Boolean = False Select Case Type + Case Params.AUXSOLIDSSTRANDWIDTH + bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSSTRANDWIDTH, m_dValue) + EgtGetInfo(nPartId, MAC_AUXSOLIDSSTRANDWIDTH, m_dPartValue) + m_bIsLen = True Case Params.AUXSOLIDSSTRANDCOUNT bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSSTRANDCOUNT, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSSTRANDCOUNT, m_dPartValue) - m_bIsLen = True + m_bIsLen = False Case Params.AUXSOLIDSOVERLAP bReadFromPart = EgtGetInfo(nFilledSolidId, MAC_AUXSOLIDSOVERLAP, m_dValue) EgtGetInfo(nPartId, MAC_AUXSOLIDSOVERLAP, m_dPartValue) @@ -266,6 +271,12 @@ Public Class FilledSolidNumericMachiningParam sWriteValue = DoubleToString(m_dValue, 2) End If Select Case Type + Case Params.AUXSOLIDSSTRANDWIDTH + If bIsModifiedFromPart Then + EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSSTRANDWIDTH, sWriteValue) + Else + EgtRemoveInfo(nFilledSolidId, MAC_AUXSOLIDSSTRANDWIDTH) + End If Case Params.AUXSOLIDSSTRANDCOUNT If bIsModifiedFromPart Then EgtSetInfo(nFilledSolidId, MAC_AUXSOLIDSSTRANDCOUNT, sWriteValue) diff --git a/Icarus/MachiningDb/Machining.vb b/Icarus/MachiningDb/Machining.vb index a199827..5beaf5b 100644 --- a/Icarus/MachiningDb/Machining.vb +++ b/Icarus/MachiningDb/Machining.vb @@ -346,7 +346,8 @@ Public Class MachiningCathegory New NumericMachiningParam(MachiningParam.Params.SLICINGHEIGHT, nIndex, Me)}) Case Cathegories.LINK m_sName = "Shell" - m_MachiningParamList = New List(Of MachiningParam)({New NumericMachiningParam(MachiningParam.Params.OFFSETLEADPOINT, nIndex, Me), + m_MachiningParamList = New List(Of MachiningParam)({New NumericMachiningParam(MachiningParam.Params.INNERSHELLWIDTH, nIndex, Me), + New NumericMachiningParam(MachiningParam.Params.OFFSETLEADPOINT, nIndex, Me), New ComboMachiningParam(MachiningParam.Params.LINKTYPE, nIndex, Me), New NumericMachiningParam(MachiningParam.Params.LINKPARAM, nIndex, Me), New ComboMachiningParam(MachiningParam.Params.LEADIN, nIndex, Me), @@ -362,7 +363,8 @@ Public Class MachiningCathegory 'New NumericMachiningParam(MachiningParam.Params.WIPEDIR, nIndex, Me)}) Case Cathegories.RIBS m_sName = "Ribs" - m_MachiningParamList = New List(Of MachiningParam)({New ComboMachiningParam(MachiningParam.Params.RIBSTYPE, nIndex, Me), + m_MachiningParamList = New List(Of MachiningParam)({New NumericMachiningParam(MachiningParam.Params.RIBSSTRANDWIDTH, nIndex, Me), + New ComboMachiningParam(MachiningParam.Params.RIBSTYPE, nIndex, Me), New CheckMachiningParam(MachiningParam.Params.RIBSLIMITUNBOUNDEDWITHSOLID, nIndex, Me), New NumericMachiningParam(MachiningParam.Params.RIBSOVERLAP, nIndex, Me), New NumericMachiningParam(MachiningParam.Params.RIBSSTRANDCOUNT, nIndex, Me), @@ -385,7 +387,8 @@ Public Class MachiningCathegory New NumericMachiningParam(MachiningParam.Params.SHELLNBRWIPEDIR, nIndex, Me)}) Case Cathegories.AUX_SOLID m_sName = "Filled Solid" - m_MachiningParamList = New List(Of MachiningParam)({New ComboMachiningParam(MachiningParam.Params.AUXSOLIDSINFILL, nIndex, Me), + m_MachiningParamList = New List(Of MachiningParam)({New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDWIDTH, nIndex, Me), + New ComboMachiningParam(MachiningParam.Params.AUXSOLIDSINFILL, nIndex, Me), New CheckMachiningParam(MachiningParam.Params.AUXSOLIDSINFILLLINK, nIndex, Me), New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDCOUNT, nIndex, Me), New ComboMachiningParam(MachiningParam.Params.AUXSOLIDSSTRANDORDER, nIndex, Me), @@ -404,7 +407,8 @@ Public Class MachiningCathegory New NumericMachiningParam(MachiningParam.Params.AUXSOLIDSWIPEDIR, nIndex, Me)}) Case Cathegories.INFILL m_sName = "Infill" - m_MachiningParamList = New List(Of MachiningParam)({New NumericMachiningParam(MachiningParam.Params.FLOORCOUNT, nIndex, Me), + m_MachiningParamList = New List(Of MachiningParam)({New NumericMachiningParam(MachiningParam.Params.INFILLSTRANDWIDTH, nIndex, Me), + New NumericMachiningParam(MachiningParam.Params.FLOORCOUNT, nIndex, Me), New ComboMachiningParam(MachiningParam.Params.FLOORTYPE, nIndex, Me), New NumericMachiningParam(MachiningParam.Params.CEILCOUNT, nIndex, Me), New ComboMachiningParam(MachiningParam.Params.CEILTYPE, nIndex, Me), @@ -488,6 +492,11 @@ End Class Public MustInherit Class MachiningParam Inherits VMBase + Public Enum MinMaxTypes As Integer + ABSOLUT = 1 + PERCENTAGE = 2 + End Enum + Public Enum Params As Integer SLICINGTYPE = 1 SPIRALVASE = 2 @@ -523,6 +532,7 @@ Public MustInherit Class MachiningParam COASTINGFEED_PC = 61 WIPELEN = 62 WIPEFEED_PC = 63 + INNERSHELLWIDTH = 64 'WIPEDIR = 64 RIBSTYPE = 101 RIBSOVERLAP = 102 @@ -539,6 +549,7 @@ Public MustInherit Class MachiningParam RIBSLEADOUTWIPE = 113 RIBSLEADOUTWIPEDIR = 114 RIBSLIMITUNBOUNDEDWITHSOLID = 115 + RIBSSTRANDWIDTH = 116 SHELLNBRDIFFERENCE = 151 SHELLNBRCOASTING = 152 SHELLNBRWIPE = 153 @@ -560,6 +571,7 @@ Public MustInherit Class MachiningParam AUXSOLIDSWIPEDIR = 215 AUXSOLIDSSTRANDCOUNT = 216 AUXSOLIDSINFILLLINK = 217 + AUXSOLIDSSTRANDWIDTH = 218 FLOORCOUNT = 250 FLOORTYPE = 251 CEILCOUNT = 252 @@ -575,7 +587,8 @@ Public MustInherit Class MachiningParam INFILLCOASTING = 262 INFILLWIPE = 263 INFILLWIPEDIR = 264 - MATERIALS = 500 + INFILLSTRANDWIDTH = 265 + Materials = 500 End Enum Protected m_Type As Params @@ -644,6 +657,8 @@ Public MustInherit Class MachiningParam m_sName = "Link Param" Case Params.LINKZUP m_sName = "Link Z Up" + Case Params.INNERSHELLWIDTH + m_sName = "Custom Inner Shell Width" Case Params.OFFSETLEADPOINT m_sName = "Offset Lead Point" Case Params.LEADIN @@ -682,6 +697,8 @@ Public MustInherit Class MachiningParam m_sName = "Screw Back" Case Params.SLICINGHEIGHT m_sName = "Slicing Height" + Case Params.RIBSSTRANDWIDTH + m_sName = "Custom Strand Width" Case Params.RIBSTYPE m_sName = "Type" Case Params.RIBSOVERLAP @@ -720,6 +737,8 @@ Public MustInherit Class MachiningParam m_sName = "Wipe" Case Params.SHELLNBRWIPEDIR m_sName = "Wipe Direction [deg]" + Case Params.AUXSOLIDSSTRANDWIDTH + m_sName = "Custom Strand Width" Case Params.AUXSOLIDSOVERLAP m_sName = "Overlap [%]" Case Params.AUXSOLIDSINFILL @@ -766,6 +785,8 @@ Public MustInherit Class MachiningParam m_sName = "Dynamic Mode" Case Params.PRINT_ORDER m_sName = "Print Order" + Case Params.INFILLSTRANDWIDTH + m_sName = "Custom Strand Width" Case Params.FLOORTYPE m_sName = "Floor Type" Case Params.CEILCOUNT @@ -817,6 +838,8 @@ Public Class NumericMachiningParam Protected m_bIsLen As Boolean = False Protected m_bIsActiveMinMax As Boolean = False + Protected m_MinMaxLinkedParam As Params = 0 + Protected m_MinMaxType As MinMaxTypes = 0 Protected m_dMinValue As Double Protected m_dMaxValue As Double @@ -838,8 +861,25 @@ Public Class NumericMachiningParam StringToDouble(value, dTempValue) End If If m_bIsActiveMinMax Then - If dTempValue >= m_dMinValue AndAlso dTempValue <= m_dMaxValue Then - m_dValue = dTempValue + If m_MinMaxType = MinMaxTypes.ABSOLUT Then + If dTempValue >= m_dMinValue AndAlso dTempValue <= m_dMaxValue Then + m_dValue = dTempValue + End If + ElseIf m_MinMaxType = MinMaxTypes.PERCENTAGE Then + Dim LinkedParam As MachiningParam = Nothing + ' cerco il parametro a cui e' collegato + For Each CurrCathegory In Map.refMachiningDbVM.SelMachining.CathegoryList + LinkedParam = CurrCathegory.MachiningParamList.FirstOrDefault(Function(x) x.Type = m_MinMaxLinkedParam) + If Not IsNothing(LinkedParam) Then Exit For + Next + If Not IsNothing(LinkedParam) AndAlso TypeOf LinkedParam Is NumericMachiningParam Then + Dim NumericLinkedParam As NumericMachiningParam = DirectCast(LinkedParam, NumericMachiningParam) + If dTempValue >= NumericLinkedParam.dValue * m_dMinValue / 100 AndAlso dTempValue <= NumericLinkedParam.dValue * m_dMaxValue / 100 Then + m_dValue = dTempValue + End If + Else + m_dValue = dTempValue + End If End If Else m_dValue = dTempValue @@ -885,10 +925,32 @@ Public Class NumericMachiningParam Dim sMinMaxValues() As String = sMinMax.Split(","c) Dim dMin As Double = 0 Dim dMax As Double = 0 - If StringToDouble(sMinMaxValues(0), dMin) AndAlso StringToDouble(sMinMaxValues(1), dMax) Then - m_dMinValue = dMin - m_dMaxValue = dMax - m_bIsActiveMinMax = True + If sMinMaxValues.Count() = 2 Then + If StringToDouble(sMinMaxValues(0), dMin) AndAlso StringToDouble(sMinMaxValues(1), dMax) Then + m_MinMaxType = MinMaxTypes.ABSOLUT + m_dMinValue = dMin + m_dMaxValue = dMax + m_bIsActiveMinMax = True + End If + ElseIf sMinMaxValues.Count() > 2 Then + Dim nMinMaxType As Integer = 0 + If StringToDouble(sMinMaxValues(0), nMinMaxType) AndAlso nMinMaxType = 1 Then + If StringToDouble(sMinMaxValues(0), dMin) AndAlso StringToDouble(sMinMaxValues(1), dMax) Then + m_MinMaxType = nMinMaxType + m_dMinValue = dMin + m_dMaxValue = dMax + m_bIsActiveMinMax = True + End If + ElseIf StringToDouble(sMinMaxValues(0), nMinMaxType) AndAlso nMinMaxType = 2 Then + Dim nMinMaxLinkedParam As Integer = 0 + If sMinMaxValues.Count() >= 4 AndAlso Integer.TryParse(sMinMaxValues(1), nMinMaxLinkedParam) AndAlso StringToDouble(sMinMaxValues(2), dMin) AndAlso StringToDouble(sMinMaxValues(3), dMax) Then + m_MinMaxLinkedParam = nMinMaxLinkedParam + m_MinMaxType = nMinMaxType + m_dMinValue = dMin + m_dMaxValue = dMax + m_bIsActiveMinMax = True + End If + End If End If End If If Type = Params.SLICINGHEIGHT Then @@ -926,6 +988,9 @@ Public Class NumericMachiningParam Case Params.LINKZUP m_dValue = ReadMachiningParamDouble(nIndex, MAC_LINKZUP, 0) m_bIsLen = True + Case Params.INNERSHELLWIDTH + m_dValue = ReadMachiningParamDouble(nIndex, MAC_INNERSHELLWIDTH, 0) + m_bIsLen = True Case Params.OFFSETLEADPOINT m_dValue = ReadMachiningParamDouble(nIndex, MAC_OFFSETLEADPOINT, 0) m_bIsLen = True @@ -980,6 +1045,9 @@ Public Class NumericMachiningParam Case Params.SLICINGHEIGHT m_dValue = ReadMachiningParamDouble(nIndex, MAC_SLICINGHEIGHT, CurrentMachine.dSlicingMaxHeight) m_bIsLen = False + Case Params.RIBSSTRANDWIDTH + m_dValue = ReadMachiningParamDouble(nIndex, MAC_RIBSSTRANDWIDTH, 0) + m_bIsLen = True Case Params.RIBSOVERLAP m_dValue = ReadMachiningParamDouble(nIndex, MAC_RIBSOVERLAP, 0) m_bIsLen = False @@ -1013,6 +1081,9 @@ Public Class NumericMachiningParam Case Params.SHELLNBRWIPEDIR m_dValue = ReadMachiningParamDouble(nIndex, MAC_SHELLNBRWIPEDIR, 0) m_bIsLen = False + Case Params.AUXSOLIDSSTRANDWIDTH + m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSSTRANDWIDTH, 0) + m_bIsLen = True Case Params.AUXSOLIDSSTRANDCOUNT m_dValue = ReadMachiningParamDouble(nIndex, MAC_AUXSOLIDSSTRANDCOUNT, 0) m_bIsLen = False @@ -1055,6 +1126,9 @@ Public Class NumericMachiningParam Case Params.FLOWRATE_PC m_dValue = ReadMachiningParamDouble(nIndex, MAC_CONSTANT, 100) m_bIsLen = False + Case Params.INFILLSTRANDWIDTH + m_dValue = ReadMachiningParamDouble(nIndex, MAC_INFILLSTRANDWIDTH, 0) + m_bIsLen = True Case Params.CEILCOUNT m_dValue = ReadMachiningParamDouble(nIndex, MAC_CEILCOUNT, 0) m_bIsLen = False @@ -1138,6 +1212,8 @@ Public Class NumericMachiningParam WriteMachiningParam(nIndex, MAC_LINKPARAM, sWriteValue, sFilePath) Case Params.LINKZUP WriteMachiningParam(nIndex, MAC_LINKZUP, sWriteValue, sFilePath) + Case Params.INNERSHELLWIDTH + WriteMachiningParam(nIndex, MAC_INNERSHELLWIDTH, sWriteValue, sFilePath) Case Params.OFFSETLEADPOINT WriteMachiningParam(nIndex, MAC_OFFSETLEADPOINT, sWriteValue, sFilePath) Case Params.LEADINTANGDIST @@ -1174,6 +1250,8 @@ Public Class NumericMachiningParam WriteMachiningParam(nIndex, MAC_SCREWBACK, sWriteValue, sFilePath) Case Params.SLICINGHEIGHT WriteMachiningParam(nIndex, MAC_SLICINGHEIGHT, sWriteValue, sFilePath) + Case Params.RIBSSTRANDWIDTH + WriteMachiningParam(nIndex, MAC_RIBSSTRANDWIDTH, sWriteValue, sFilePath) Case Params.RIBSOVERLAP WriteMachiningParam(nIndex, MAC_RIBSOVERLAP, sWriteValue, sFilePath) Case Params.RIBSSTRANDCOUNT @@ -1196,6 +1274,8 @@ Public Class NumericMachiningParam WriteMachiningParam(nIndex, MAC_SHELLNBRWIPE, sWriteValue, sFilePath) Case Params.SHELLNBRWIPEDIR WriteMachiningParam(nIndex, MAC_SHELLNBRWIPEDIR, sWriteValue, sFilePath) + Case Params.AUXSOLIDSSTRANDWIDTH + WriteMachiningParam(nIndex, MAC_AUXSOLIDSSTRANDWIDTH, sWriteValue, sFilePath) Case Params.AUXSOLIDSSTRANDCOUNT WriteMachiningParam(nIndex, MAC_AUXSOLIDSSTRANDCOUNT, sWriteValue, sFilePath) Case Params.AUXSOLIDSOVERLAP @@ -1224,6 +1304,8 @@ Public Class NumericMachiningParam WriteMachiningParam(nIndex, MAC_AUXSOLIDSWIPEDIR, sWriteValue, sFilePath) Case Params.FLOWRATE_PC WriteMachiningParam(nIndex, MAC_CONSTANT, sWriteValue, sFilePath) + Case Params.INFILLSTRANDWIDTH + WriteMachiningParam(nIndex, MAC_INFILLSTRANDWIDTH, sWriteValue, sFilePath) Case Params.CEILCOUNT WriteMachiningParam(nIndex, MAC_CEILCOUNT, sWriteValue, sFilePath) Case Params.INFILLDENSITY diff --git a/Icarus/MainWindow/MainWindowVM.vb b/Icarus/MainWindow/MainWindowVM.vb index 566ec91..836dbf9 100644 --- a/Icarus/MainWindow/MainWindowVM.vb +++ b/Icarus/MainWindow/MainWindowVM.vb @@ -116,7 +116,7 @@ Public Class MainWindowVM End If ' annullo trasparenza attivata durante edit rib If Not IsNothing(Map.refRibPanelVM.SelRib) Then - EgtSetAlpha(Map.refRibPanelVM.SelRib.nExtrusionId, 100) + 'EgtSetAlpha(Map.refRibPanelVM.SelRib.nExtrusionId, 100) End If ElseIf Map.refTopPanelVM.SelModifyMode.ModifyMode = ModifyModes.SHELLNUMBER Then ' cancello eventuali layer di modifica @@ -132,7 +132,7 @@ Public Class MainWindowVM End If ' annullo trasparenza attivata durante edit rib If Not IsNothing(Map.refShellNumberPanelVM.SelShellNumber) Then - EgtSetAlpha(Map.refShellNumberPanelVM.SelShellNumber.nExtrusionId, 100) + 'EgtSetAlpha(Map.refShellNumberPanelVM.SelShellNumber.nExtrusionId, 100) End If End If End If diff --git a/Icarus/RibPanel/RibPanelVM.vb b/Icarus/RibPanel/RibPanelVM.vb index 262b971..8c0104d 100644 --- a/Icarus/RibPanel/RibPanelVM.vb +++ b/Icarus/RibPanel/RibPanelVM.vb @@ -641,7 +641,7 @@ Public Class RibPanelVM ' attivo modifiche su scena Map.refSceneHostVM.MainScene.ResetStatus() ' rendo traspanete estrusione - EgtSetAlpha(m_SelRib.nExtrusionId, 50) + 'EgtSetAlpha(m_SelRib.nExtrusionId, 50) ' seleziono percorso corrente EgtDeselectAll() Select Case RibSelectionType @@ -692,12 +692,12 @@ Public Class RibPanelVM ' seleziono nuova estrusione EgtSelectObj(m_SelRib.nExtrusionId) ' ripristino trasparenza estrusione - EgtSetAlpha(m_SelRib.nExtrusionId, 100) + 'EgtSetAlpha(m_SelRib.nExtrusionId, 100) EgtDraw() ' rimetto la selezione scena a null Map.refSceneHostVM.MainScene.SetStatusNull() Case Controller.CMD.MOVE, Controller.CMD.ROTATE - EgtSetAlpha(Map.refRibPanelVM.SelRib.nExtrusionId, 100) + ' EgtSetAlpha(Map.refRibPanelVM.SelRib.nExtrusionId, 100) ' seleziono nuova estrusione EgtSelectObj(m_SelRib.nExtrusionId) EgtDraw() diff --git a/Icarus/RibParamPanel/CopyFromWndVM.vb b/Icarus/RibParamPanel/CopyFromWndVM.vb index 307789c..b8763cc 100644 --- a/Icarus/RibParamPanel/CopyFromWndVM.vb +++ b/Icarus/RibParamPanel/CopyFromWndVM.vb @@ -55,7 +55,8 @@ Public Class CopyFromWndVM Return End If ' copio i parametri nella rib corrente - Dim ParamList As New List(Of MachiningParam.Params)({MachiningParam.Params.RIBSTYPE, + Dim ParamList As New List(Of MachiningParam.Params)({MachiningParam.Params.RIBSSTRANDWIDTH, + MachiningParam.Params.RIBSTYPE, MachiningParam.Params.RIBSOVERLAP, MachiningParam.Params.RIBSSTRANDCOUNT, MachiningParam.Params.RIBSLINK, @@ -70,9 +71,9 @@ Public Class CopyFromWndVM MachiningParam.Params.RIBSLEADOUTWIPEDIR}) For Each Param In ParamList Select Case Map.refRibPanelVM.SelRib.Type - 'Case RibEntity.RibTypes.FROMDRAW - ' CopyParam(Param, m_SelRib.nExtrusionId, Map.refRibPanelVM.SelRib.nCurveId) - ' CopyParam(Param, m_SelRib.nExtrusionId, Map.refRibPanelVM.SelRib.nExtrusionId) + Case RibEntity.RibTypes.FROMDRAW + CopyParam(Param, m_SelRib.nExtrusionId, Map.refRibPanelVM.SelRib.nCurveId) + CopyParam(Param, m_SelRib.nExtrusionId, Map.refRibPanelVM.SelRib.nExtrusionId) Case RibEntity.RibTypes.FROMIMPORT CopyParam(Param, m_SelRib.nExtrusionId, Map.refRibPanelVM.SelRib.nExtrusionId) End Select @@ -98,11 +99,14 @@ Public Class CopyFromWndVM Else RibTypeParam.SelValue = RibTypeParam.PartSelValue End If - Case MachiningParam.Params.RIBSOVERLAP, MachiningParam.Params.RIBSSTRANDCOUNT, MachiningParam.Params.RIBSLEADINLEN, MachiningParam.Params.RIBSLEADOUTLEN, + Case MachiningParam.Params.RIBSSTRANDWIDTH, MachiningParam.Params.RIBSOVERLAP, MachiningParam.Params.RIBSSTRANDCOUNT, MachiningParam.Params.RIBSLEADINLEN, MachiningParam.Params.RIBSLEADOUTLEN, MachiningParam.Params.RIBSLEADOUTCOASTING, MachiningParam.Params.RIBSLEADOUTWIPE, MachiningParam.Params.RIBSLEADOUTWIPEDIR Dim RibTypeParam As RibNumericMachiningParam = Nothing Dim dRibParam As Double = 0 Select Case Type + Case MachiningParam.Params.RIBSSTRANDWIDTH + RibTypeParam = Map.refRibParamPanelVM.MachiningParamList.FirstOrDefault(Function(x) x.Type = MachiningParam.Params.RIBSSTRANDWIDTH) + bRead = EgtGetInfo(nFromId, MAC_RIBSSTRANDWIDTH, dRibParam) Case MachiningParam.Params.RIBSOVERLAP RibTypeParam = Map.refRibParamPanelVM.MachiningParamList.FirstOrDefault(Function(x) x.Type = MachiningParam.Params.RIBSOVERLAP) bRead = EgtGetInfo(nFromId, MAC_RIBSOVERLAP, dRibParam) diff --git a/Icarus/RibParamPanel/RibParamPanelVM.vb b/Icarus/RibParamPanel/RibParamPanelVM.vb index 19e59cb..6b69664 100644 --- a/Icarus/RibParamPanel/RibParamPanelVM.vb +++ b/Icarus/RibParamPanel/RibParamPanelVM.vb @@ -42,7 +42,8 @@ Public Class RibParamPanelVM m_Type = Cathegories.RIBS m_sName = "Ribs" - m_MachiningParamList = New List(Of MachiningParam)({New RibComboMachiningParam(MachiningParam.Params.RIBSTYPE, nRibId, nPartId, Me), + m_MachiningParamList = New List(Of MachiningParam)({New RibNumericMachiningParam(MachiningParam.Params.RIBSSTRANDWIDTH, nRibId, nPartId, Me), + New RibComboMachiningParam(MachiningParam.Params.RIBSTYPE, nRibId, nPartId, Me), New RibNumericMachiningParam(MachiningParam.Params.RIBSOVERLAP, nRibId, nPartId, Me), New RibNumericMachiningParam(MachiningParam.Params.RIBSSTRANDCOUNT, nRibId, nPartId, Me), New RibCheckMachiningParam(MachiningParam.Params.RIBSLINK, nRibId, nPartId, Me), @@ -230,10 +231,14 @@ Public Class RibNumericMachiningParam MyBase.New(Type, Cathegory) Dim bReadFromPart As Boolean = False Select Case Type + Case Params.RIBSSTRANDWIDTH + bReadFromPart = EgtGetInfo(nRibId, MAC_RIBSSTRANDWIDTH, m_dValue) + EgtGetInfo(nPartId, MAC_RIBSSTRANDWIDTH, m_dPartValue) + m_bIsLen = True Case Params.RIBSOVERLAP bReadFromPart = EgtGetInfo(nRibId, MAC_RIBSOVERLAP, m_dValue) EgtGetInfo(nPartId, MAC_RIBSOVERLAP, m_dPartValue) - m_bIsLen = True + m_bIsLen = False Case Params.RIBSSTRANDCOUNT bReadFromPart = EgtGetInfo(nRibId, MAC_RIBSSTRANDCOUNT, m_dValue) EgtGetInfo(nPartId, MAC_RIBSSTRANDCOUNT, m_dPartValue) @@ -290,6 +295,12 @@ Public Class RibNumericMachiningParam sWriteValue = DoubleToString(m_dValue, 2) End If Select Case Type + Case Params.RIBSSTRANDWIDTH + If bIsModifiedFromPart Then + EgtSetInfo(nRibId, MAC_RIBSSTRANDWIDTH, sWriteValue) + Else + EgtRemoveInfo(nRibId, MAC_RIBSSTRANDWIDTH) + End If Case Params.RIBSOVERLAP If bIsModifiedFromPart Then EgtSetInfo(nRibId, MAC_RIBSOVERLAP, sWriteValue) diff --git a/Icarus/TSFEditor/TFSEditorV.xaml b/Icarus/TSFEditor/TFSEditorV.xaml index c42b491..d89a289 100644 --- a/Icarus/TSFEditor/TFSEditorV.xaml +++ b/Icarus/TSFEditor/TFSEditorV.xaml @@ -264,7 +264,7 @@ - - + -->