Inizio inserimento tagli separazione in Splitting

This commit is contained in:
Nicola Pievani
2023-10-05 18:45:39 +02:00
parent b63a7f3046
commit 5d6c666128
20 changed files with 37191 additions and 61 deletions
+55 -1
View File
@@ -1,4 +1,5 @@
Imports EgtUILib
Imports System.Security.Cryptography
Imports EgtUILib
Friend Module CamAuto
@@ -157,6 +158,59 @@ Friend Module CamAuto
Return bOk
End Function
Friend Function ResetAllSplitCut() As Boolean
Dim bOk As Boolean = True
Dim nIdCurrMachGroup As Integer = EgtGetCurrMachGroup()
EgtResetCurrMachGroup()
Dim nParId As Integer = EgtGetFirstPart()
While nParId <> GDB_ID.NULL
Dim nNextParId As Integer = EgtGetNextPart(nParId)
Dim sName As String = String.Empty
If EgtGetName(nParId, sName) AndAlso sName.Contains(SPLIT_CUT & "_" & nIdCurrMachGroup.ToString) Then
' Elimino il pezzo
bOk = bOk And EgtErase(nParId)
End If
nParId = nNextParId
End While
EgtSetCurrMachGroup(nIdCurrMachGroup)
'' Ricerca nei grezzi dei pezzi (devono essere ricercati tra quelli presenti nei grezzi)
'Dim bOk As Boolean = True
'' Recupero il numero di fasi presenti nel progetto
'Dim nPhaseCount As Integer = EgtGetPhaseCount()
'Dim nRawId As Integer = EgtGetFirstRawPart()
'While nRawId <> GDB_ID.NULL
' Dim nParId As Integer = EgtGetFirstPartInRawPart(nRawId)
' While nParId <> GDB_ID.NULL
' Dim nNextParId As Integer = EgtGetNextPartInRawPart(nParId)
' ' verifico se il pezzo passato è un taglio di sepatazione (il nome deve contenere "SpliCut")
' Dim sName As String = String.Empty
' If EgtGetName(nParId, sName) AndAlso sName.Contains(SPLIT_CUT) Then
' ' Elimino i riferimenti ai grezzi
' If EgtRemovePartFromRawPart(nParId) Then
' ' Elimino il pezzo
' bOk = bOk And EgtErase(nParId)
' End If
' End If
' nParId = nNextParId
' End While
' nRawId = EgtGetNextRawPart(nRawId)
'End While
Return bOk
End Function
Friend Function RemoveCurrentSplitCut(nIdSplitCut As Integer) As Boolean
Dim bOk As Boolean = True
Dim nIdCurrMachGroup As Integer = EgtGetCurrMachGroup()
EgtResetCurrMachGroup()
Dim sName As String = String.Empty
If EgtGetName(nIdSplitCut, sName) AndAlso sName.Contains(SPLIT_CUT & "_" & nIdCurrMachGroup.ToString) Then
' Elimino il pezzo
bOk = EgtErase(nIdSplitCut)
End If
EgtSetCurrMachGroup(nIdCurrMachGroup)
Return bOk
End Function
' verifico che il contorno passato non sia stato separato
Friend Function VerifyOutLoopIsClosed(nIdLayerOutLoop As Integer) As Boolean
Dim nIdMy As Integer = EgtGetFirstInGroup(nIdLayerOutLoop)
+2
View File
@@ -260,6 +260,8 @@ Module ConstMach
Public Const INFO_AUX_SPLIT_WJ As String = "AUX_SPLIT_WJ"
' Info in OutLoop per punto inzio lavorazione WaterJet
Public Const INFO_START As String = "Start"
' Nome dei tagli diretti inseriti in fase di Splitting
Public Const SPLIT_CUT As String = "SplitCut"
' Nome di pezzo che è una cornice
Public Const NAME_FRAME As String = "Frame"
+3 -3
View File
@@ -17,9 +17,9 @@
<Button Command="{Binding MachOptionsCommand}" ToolTip="{Binding OptionsToolTip}" Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/TopCommandBar/Options.png" Stretch="Uniform" />
</Button>
<Button Command="{Binding SetUpCommand}" ToolTip="{Binding SetUpToolTip}"
Style="{StaticResource ToolBar_TextButton}" Width="70" Content="{Binding SetUpMsg}"
Background="{Binding SetUp_Background}"/>
<Button Command="{Binding SetUpCommand}" ToolTip="{Binding SetUpToolTip}" Style="{StaticResource ToolBar_Button}">
<Image Source="/Resources/NewIcons/ToolChangerPos.png" Stretch="Uniform" />
</Button>
<Button Command="{Binding WaterjetDbCommand}" ToolTip="{Binding WaterjetDbToolTip}"
Style="{StaticResource ToolBar_TextButton}" Width="70" Content="{Binding WaterjetDbMsg}" Visibility="{Binding WjDb_Visibility}"/>
</DockPanel>
+16 -3
View File
@@ -128,6 +128,9 @@
<ApplicationManifest>My Project\app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="DotNetZip, Version=1.16.0.0, Culture=neutral, PublicKeyToken=6583c7c814667745, processorArchitecture=MSIL">
<HintPath>packages\DotNetZip.1.16.0\lib\net40\DotNetZip.dll</HintPath>
</Reference>
<Reference Include="EgtPHOTOLib, Version=2.3.1.1, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\EgtProg\Dll32\EgtPHOTOLib.dll</HintPath>
@@ -138,9 +141,6 @@
<Reference Include="EgtWPFLib5">
<HintPath>..\..\EgtProg\DllD32\EgtWPFLib5.dll</HintPath>
</Reference>
<Reference Include="Ionic.Zip">
<HintPath>..\..\EgtProg\OmagOFFICE\Ionic.Zip.dll</HintPath>
</Reference>
<Reference Include="PresentationFramework.Aero" />
<Reference Include="System.Core" />
<Reference Include="System.Data.SQLite, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
@@ -628,6 +628,7 @@
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<AppDesigner Include="My Project\" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
@@ -923,6 +924,18 @@
<ItemGroup>
<Resource Include="Resources\TopCommandBar\Modify.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Crea-taglio.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Attrezzaggio.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Rimuovi-taglio.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NewIcons\Modifica-taglio.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<PropertyGroup>
<PostBuildEvent>IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Release" copy $(TargetPath) c:\EgtProg\OmagOFFICE\OmagOFFICER32.exe
+39 -4
View File
@@ -239,16 +239,21 @@
</Grid>
</StackPanel>
<UniformGrid Columns="4" Margin="0,0,0,-2.5">
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal" Margin="0,2.5,0,1">
<!--Bottone invisibile per permetter il corretto allineamento-->
<!--
<Button Content="{Binding }" Grid.Column="0"
Style="{StaticResource OptionPanel_TextWrapButton}"
Command="{Binding }"
Visibility="Hidden"
Margin="0,0,1,0"/>
Margin="0,0,1,0"/>-->
<StackPanel Visibility="{Binding AllExtendBtnVisibility}" Grid.Column="1" Margin="1,0,0,0">
<StackPanel Visibility="{Binding AllExtendBtnVisibility}" Grid.Column="2" Margin="1,0,0,0">
<Button ToolTip="{Binding AllExtendMsg}"
Style="{StaticResource Split_Button_Img}"
Command="{Binding AllExtendCommand}"
@@ -276,7 +281,37 @@
</Button>
</StackPanel>
</UniformGrid>
</StackPanel>
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal" Margin="0,2.5,0,1">
<StackPanel Visibility="{Binding AllExtendBtnVisibility}" Grid.Column="1" Margin="1,0,0,0">
<ToggleButton ToolTip="{Binding AllExtendMsg}"
Style="{StaticResource Split_ToggleButton_Img}"
IsChecked="{Binding CreateCut_IsChecked}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Crea-taglio.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</ToggleButton>
</StackPanel>
<StackPanel Visibility="{Binding AllExtendBtnVisibility}" Grid.Column="1" Margin="1,0,0,0">
<ToggleButton ToolTip="{Binding AllExtendMsg}"
Style="{StaticResource Split_ToggleButton_Img}"
IsChecked="{Binding RemoveCut_IsChecked}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,0,0,0">
<StackPanel>
<Image Source="/Resources/NewIcons/Rimuovi-taglio.png"
Style="{StaticResource ImgButton}"/>
</StackPanel>
</ToggleButton>
</StackPanel>
</StackPanel>
</StackPanel>
+283
View File
@@ -1,6 +1,9 @@
Imports System.Collections.ObjectModel
Imports System.Drawing
Imports System.Security.Cryptography
Imports EgtUILib
Imports EgtWPFLib5
Imports EgtWPFLib5.EgtCustomWindow
Public Class SplitModeVM
Inherits VMBase
@@ -39,6 +42,16 @@ Public Class SplitModeVM
Private m_ptSrtBridge As New Point3d
Private m_ptEndBridge As New Point3d
' Punti per creazione tagli odi separazione
Private m_ptStartPoint As Point3d
Private m_bGetStartPoint As Boolean = False
Private m_ptEndPoint As Point3d
Private m_bGetEndPoint As Boolean = False
Private m_IdSplitLine As Integer = GDB_ID.NULL
Private m_IdSplitGroup As Integer = GDB_ID.NULL
Private m_IdSplitGroupLayer As Integer = GDB_ID.NULL
Private m_IdCurrRawSolid As Integer = GDB_ID.NULL
' Flag di pagina attiva
Private m_bActive As Boolean = False
' Drag
@@ -292,6 +305,38 @@ Public Class SplitModeVM
End Set
End Property
#Region "SPLIT CUT"
Private m_CreateCut_IsChecked As Boolean
Public Property CreateCut_IsChecked As Boolean
Get
Return m_CreateCut_IsChecked
End Get
Set(value As Boolean)
m_CreateCut_IsChecked = value
m_RemoveCut_IsChecked = False
NotifyPropertyChanged(NameOf(RemoveCut_IsChecked))
CreateCutIsChecked()
NotifyPropertyChanged(NameOf(CreateCut_IsChecked))
End Set
End Property
Private m_RemoveCut_IsChecked As Boolean
Public Property RemoveCut_IsChecked As Boolean
Get
Return m_RemoveCut_IsChecked
End Get
Set(value As Boolean)
m_RemoveCut_IsChecked = value
m_CreateCut_IsChecked = False
NotifyPropertyChanged(NameOf(CreateCut_IsChecked))
RemoveCutIsChecked()
NotifyPropertyChanged(NameOf(RemoveCut_IsChecked))
End Set
End Property
#End Region ' Split Cut
#Region "Messages"
Public ReadOnly Property OnOffMsg As String
@@ -536,6 +581,13 @@ Public Class SplitModeVM
' eventualmente interrompo la creazione dei ponticelli
DeselectWJBridgesPart()
' Interrompo la creazione di tagli di separazione
ResetSplitCut()
m_CreateCut_IsChecked = False
NotifyPropertyChanged(NameOf(CreateCut_IsChecked))
m_RemoveCut_IsChecked = False
NotifyPropertyChanged(NameOf(RemoveCut_IsChecked))
' Rimuovo evidenziazione e numeri
RemoveMarkAndNumbers()
' Ripristino colori lavorazioni
@@ -730,6 +782,30 @@ Public Class SplitModeVM
EnableButtons()
End Sub
' Aggiorno le lavorazioni
Private Sub PreviewMachinigList()
' Visualizzo solo anteprime di lavorazioni della fase
ShowOnePhaseMachiningPreview(m_nCurrPhase)
' Preparo la lista delle lavorazioni
CalculateSplitMachList(m_nCurrPhase, m_MachiningList)
' azzero i contatori delle lavorazioni
m_nCountSawing = 0
m_nCountWaterjetting = 0
m_nCountOtherMachining = 0
' Aggiorno visualizzazione delle lavorazioni
EgtEmptyGroup(m_nNbrGrpId)
For nI As Integer = 0 To m_MachiningList.Count() - 1
' sistemo colore
ColorMachining(m_MachiningList(nI))
' assegno numerazione
NumberDirectionMachining(nI)
' conto il numero di tipi di lavorazioni
CountMachiningType(m_MachiningList(nI), m_nCountSawing, m_nCountWaterjetting, m_nCountOtherMachining)
Next
' Preparo la lista degli Item
ShowMachiningList()
End Sub
Private Sub ShowMachiningList()
m_ItemList.Clear()
For i As Integer = 1 To m_MachiningList.Count()
@@ -1200,6 +1276,42 @@ Public Class SplitModeVM
End If
End Sub
Private Sub CreateCutIsChecked()
' attivo la scena per renderla attiva
If m_CreateCut_IsChecked Then
' OmagOFFICEMap.refSceneHostVM.MainScene.SetStatusSelPoint()
OmagOFFICEMap.refSceneHostVM.MainScene.SetStatusNull()
ResetSplitCut()
Else
' ????????
ResetSplitCut()
End If
End Sub
Private Sub RemoveCutIsChecked()
If m_RemoveCut_IsChecked Then
OmagOFFICEMap.refSceneHostVM.MainScene.SetStatusNull()
ResetSplitCut()
Else
' ????????
ResetSplitCut()
End If
End Sub
Private Sub ResetSplitCut()
EgtResetMark(m_IdCurrRawSolid)
If m_IdSplitGroup <> GDB_ID.NULL Then
EgtErase(m_IdSplitGroup)
EgtDraw()
End If
m_bGetStartPoint = False
m_bGetEndPoint = False
m_IdSplitLine = GDB_ID.NULL
m_IdSplitGroup = GDB_ID.NULL
m_IdSplitGroupLayer = GDB_ID.NULL
m_IdCurrRawSolid = GDB_ID.NULL
End Sub
#End Region ' METHODS
#Region "COMMANDS"
@@ -2695,6 +2807,87 @@ Public Class SplitModeVM
#End Region ' Quality
' Genera la lavorazione associata al percoso indicato
Private Function CreateSingleCut() As Boolean
Dim bOk As Boolean = False
' Verifico sia definito il punto iniziale e il grezzo
If Not (m_bGetStartPoint And m_bGetEndPoint) AndAlso m_IdCurrRawSolid <> GDB_ID.NULL Then
Return False
End If
' Spessore grezzo
Dim ptRawMin, ptRawMax As Point3d
If Not EgtGetRawPartBBox(m_IdCurrRawSolid, ptRawMin, ptRawMax) Then Return False
Dim dRawHeight As Double = ptRawMax.z - ptRawMin.z
' Recupero spessore lama corrente
Dim sSaw As String = CurrentMachine.sCurrSaw
Dim sSawing As String = CurrentMachine.sCurrSawing
EgtTdbSetCurrTool(sSaw)
Dim dThick As Double = 0
' Se è impostata una lavorazione di lama
If Not String.IsNullOrEmpty(sSawing) Then
EgtTdbGetCurrToolParam(MCH_TP.THICK, dThick)
End If
'' Rimuovo eventuale vecchio pezzo per taglio diretto
'EraseDirectCutPart()
' Disattivo eventuali lavorazioni presenti
' DeactivateAllMachinings()
' Recupero pezzo per il taglio diretto
Dim nPartId = m_IdSplitGroup
'-------------------------------------------------------------------------------------------------
'' Applico la correzione di spessore lama -> anche se Offset=0! ver_2.5b1
'Dim dTotOffset = m_dOffset
'If m_bSawTh Then
' dTotOffset += If(m_dOffset > 0, dThick, -dThick)
' EgtOffsetCurve(nCutId, dTotOffset, OFF_TYPE.EXTEND)
'Else
' EgtOffsetCurve(nCutId, dTotOffset, OFF_TYPE.EXTEND)
'End If
'' Imposto affondamento e angolo di fianco sul taglio
'EgtSetInfo(nCutId, INFO_DEPTH, m_dDepth)
'EgtSetInfo(nCutId, INFO_SIDE_ANGLE, m_dAngV)
'-------------------------------------------------------------------------------------------------
' Calcolo punto di inserimento nel grezzo
Dim ptMin, ptMax As Point3d
EgtGetBBoxGlob(nPartId, GDB_BB.STANDARD, ptMin, ptMax)
Dim ptTabOri As Point3d
EgtGetTableRef(1, ptTabOri)
'Dim ptIns As Point3d = ptMin + (ptTabOri - ptRawMin)
Dim ptOri As New Point3d
Dim ptIns As Point3d = ptOri + (ptMin - ptRawMin)
ptIns.z = dRawHeight
' Imposto la fase corrente
EgtSetCurrPhase(m_nCurrPhase)
' Inserisco il taglio nel grezzo : CamAuto.GetCurrentRaw()
EgtAddPartToRawPart(nPartId, ptIns, m_IdCurrRawSolid)
' Inserisco la lavorazione
bOk = AddMachinings(nPartId) AndAlso UpdateAllMachiningsToolpaths()
' Spengo la linea
If bOk Then
EgtSetStatus(m_IdSplitLine, GDB_ST.OFF)
End If
Return bOk
End Function
Private Function RemoveCut(nId As Integer) As Boolean
Dim bOk As Boolean = False
Dim nIdCurrMachGroup As Integer = EgtGetCurrMachGroup()
Dim ParentId As Integer = EgtGetParent(nId)
While ParentId <> GDB_ID.NULL
Dim sCutName As String = String.Empty
EgtGetName(ParentId, sCutName)
If sCutName.Contains(SPLIT_CUT & "_" & nIdCurrMachGroup.ToString) Then
bOk = RemoveCurrentSplitCut(ParentId)
Return bOk
End If
ParentId = EgtGetParent(ParentId)
End While
Return bOk
End Function
Friend Sub OnMouseDownScene(sender As Object, e As System.Windows.Forms.MouseEventArgs)
' Verifico di essere il gestore attivo e non in modalità sola visualizzazione
If Not m_bActive OrElse OmagOFFICEMap.refMachiningTabVM.IsShow Then Return
@@ -2728,6 +2921,64 @@ Public Class SplitModeVM
Return
End If
' Recupero le coordinate del punto corrente (solo se esiste la selezione di un grezzo corrente -> vedi sotto)
If m_CreateCut_IsChecked AndAlso m_IdCurrRawSolid <> GDB_ID.NULL Then
Dim ptCurr As Point3d
EgtUnProjectPoint(e.Location, ptCurr)
If m_bGetStartPoint And Not m_bGetEndPoint Then
m_ptEndPoint = ptCurr
m_bGetEndPoint = True
End If
If Not m_bGetStartPoint Then
m_ptStartPoint = ptCurr
m_bGetStartPoint = True
m_IdSplitGroup = EgtCreateGroup(GDB_ID.ROOT)
Dim nIdCurrMachGroup As Integer = EgtGetCurrMachGroup()
EgtSetName(m_IdSplitGroup, SPLIT_CUT & "_" & nIdCurrMachGroup.ToString & "." & EgtGetCurrPhase())
m_IdSplitGroupLayer = EgtCreateGroup(m_IdSplitGroup)
EgtSetName(m_IdSplitGroupLayer, NAME_OUTLOOP)
End If
If m_bGetStartPoint And m_bGetEndPoint Then
' procedo a disegnare la linea tra i due punti indicati
Dim ptRawMin, ptRawMax As Point3d
If EgtGetRawPartBBox(m_IdCurrRawSolid, ptRawMin, ptRawMax) Then
m_ptStartPoint.z = ptRawMax.z
m_ptEndPoint.z = ptRawMax.z
EgtModifyCurveEndPoint(m_IdSplitLine, m_ptEndPoint)
CreateSingleCut()
' Resetto tutte le variabili utilizzate
EgtResetMark(m_IdCurrRawSolid)
m_bGetStartPoint = False
m_bGetEndPoint = False
m_IdSplitLine = GDB_ID.NULL
m_IdSplitGroup = GDB_ID.NULL
m_IdSplitGroupLayer = GDB_ID.NULL
m_IdCurrRawSolid = GDB_ID.NULL
' Aggiorno la visualizzazione
PreviewMachinigList()
EgtDraw()
End If
End If
Return
ElseIf m_CreateCut_IsChecked AndAlso m_IdCurrRawSolid = GDB_ID.NULL Then
' Verifico se selezionato grezzo
EgtSetObjFilterForSelWin(False, False, True, False, False)
Dim nSelRaw As Integer
EgtSelect(e.Location, Scene.DIM_SEL, Scene.DIM_SEL, nSelRaw)
Dim nIdRaw As Integer = EgtGetFirstObjInSelWin()
While nIdRaw <> GDB_ID.NULL
Dim sRawName As String = String.Empty
If EgtGetName(nIdRaw, sRawName) AndAlso sRawName = NAME_RAW_SOLID Then
m_IdCurrRawSolid = EgtGetParent(nIdRaw)
EgtSetMark(m_IdCurrRawSolid)
EgtDraw()
Return
End If
nIdRaw = EgtGetNextObjInSelWin()
End While
Return
End If
' Reset drag
m_nDragInd = -1
m_nDragType = 0
@@ -2739,6 +2990,16 @@ Public Class SplitModeVM
EgtSelect(e.Location, Scene.DIM_SEL, Scene.DIM_SEL, nSel)
Dim nId As Integer = EgtGetFirstObjInSelWin()
While nId <> GDB_ID.NULL
' --------------------------------- SPLIT CUT ---------------------------------
' Se attiva l'eliminazione di un taglio di separazione
If m_RemoveCut_IsChecked Then
RemoveCut(nId)
' Aggiorno la visualizzazione
PreviewMachinigList()
EgtDraw()
Return
End If
' --------------------------------- SPLIT CUT ---------------------------------
' Verifico sia un attacco o uscita di taglio con lama
Dim nType As Integer = 0
Dim sName As String = ""
@@ -2828,6 +3089,28 @@ Public Class SplitModeVM
Return
End If
' Recupero le coordinate del punto corrente
If m_CreateCut_IsChecked Then
If m_bGetStartPoint And Not m_bGetEndPoint Then
m_ptEndPoint = ptCurr
End If
If m_bGetStartPoint And Not m_bGetEndPoint Then
' procedo a disegnare la linea tra i due punti indicati
Dim ptRawMin, ptRawMax As Point3d
If EgtGetRawPartBBox(m_IdCurrRawSolid, ptRawMin, ptRawMax) Then
m_ptStartPoint.z = ptRawMax.z
m_ptEndPoint.z = ptRawMax.z
If m_IdSplitLine = GDB_ID.NULL Then
m_IdSplitLine = EgtCreateLine(m_IdSplitGroupLayer, m_ptStartPoint, m_ptEndPoint)
Else
EgtModifyCurveEndPoint(m_IdSplitLine, m_ptEndPoint)
End If
EgtDraw()
End If
End If
Return
End If
' Se drag non abilitato o in corso
If m_nDragInd = -1L Or m_bDragging Then Return
m_bDragging = True
+2
View File
@@ -1994,6 +1994,8 @@ Public Class NestingTabVM
ResetAllStartCurv()
' cancello tutti i ponticelli disegnati
ResetAllBridges()
' cancello tutti i tagli di separazione disegnati
ResetAllSplitCut()
' Cancello tutte le lavorazioni
CamAuto.EraseMachinings(GDB_ID.NULL)
' Reinserisco tutte le lavorazioni piane
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="DotNetZip" version="1.16.0" targetFramework="net40-client" />
</packages>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff