2d39dcacc3
- modifiche per escludere spessore sovratavola da scalatura foto fatte con CameraMng - all'esportazione verso la macchina le foto vengono rese non più scalabili per lo spessore pezzo (come gli scan) - corretta scrittura dati in interfaccia per problema decimali che falsano la posizione del cursore.
820 lines
38 KiB
VB.net
820 lines
38 KiB
VB.net
Imports System.Windows.Interop
|
|
Imports System.IO
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
Imports System.Text.RegularExpressions
|
|
|
|
Public Class MySceneHostVM
|
|
Inherits EgtWPFLib5.SceneHostVM
|
|
|
|
#Region "CONSTRUCTOR"
|
|
|
|
Sub New()
|
|
MyBase.New()
|
|
AddHandler MainController.OnNewProject, AddressOf OnNewProject
|
|
AddHandler MainController.OnOpenProject, AddressOf OnOpenProject
|
|
AddHandler MainController.OnSavingProject, AddressOf OnSavingProject
|
|
AddHandler MainController.OnSavedProject, AddressOf OnSavedProject
|
|
End Sub
|
|
|
|
#End Region ' CONSTRUCTOR
|
|
|
|
#Region "METHODS"
|
|
|
|
Overrides Sub InitScene()
|
|
InitSceneEvents()
|
|
' Inizializzazione Scena
|
|
PreInitializeScene()
|
|
' Se tutto bene
|
|
If MainScene.Init() And OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.OFFICE_BASE) Then
|
|
PostInitializeScene()
|
|
' Imposto stato gestione mouse diretto della scena a nessuno
|
|
MainScene.SetStatusNull()
|
|
' Recupero e imposto handle finestra principale
|
|
Dim hMainWnd As IntPtr = New WindowInteropHelper(Application.Current.MainWindow).Handle
|
|
EgtSetMainWindowHandle(hMainWnd)
|
|
' inizializzo gestore lavorazioni
|
|
EgtInitMachMgr(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir)
|
|
Return
|
|
End If
|
|
' Problemi
|
|
' Se manca la chiave
|
|
If OmagOFFICEMap.refMainWindowVM.MainWindowM.nKeyLevel = -1 Or OmagOFFICEMap.refMainWindowVM.MainWindowM.nKeyLevel = -2 Then
|
|
EgtOutLog("Missing Dongle")
|
|
' Box di avviso chiave mancante : "Chiave non presente. \n Inserirla e riavviare il programma." "Errore"
|
|
Dim sText As String = EgtMsg(MSG_MISSINGKEYWD + 2) & vbCrLf & EgtMsg(MSG_MISSINGKEYWD + 3)
|
|
Dim sTitle As String = EgtMsg(MSG_MISSINGKEYWD + 1)
|
|
MessageBox.Show(sText, sTitle, MessageBoxButton.OK, MessageBoxImage.Error)
|
|
' Altrimenti manca la licenza
|
|
Else
|
|
EgtOutLog("Problems with Licence")
|
|
' Box di avviso licenza con problemi : "Programma senza licenza. \n Caricala e riavvia il programma." "Errore"
|
|
Dim sText As String = EgtMsg(MSG_MISSINGKEYWD + 5) & vbCrLf & EgtMsg(MSG_MISSINGKEYWD + 6)
|
|
Dim sTitle As String = EgtMsg(MSG_MISSINGKEYWD + 1)
|
|
If MessageBox.Show(sText, sTitle, MessageBoxButton.OKCancel, MessageBoxImage.Error) = MessageBoxResult.OK Then
|
|
' Apro dialogo per richiesta file licenza
|
|
Dim LicDlg As New Microsoft.Win32.OpenFileDialog() With {
|
|
.DefaultExt = ".lic",
|
|
.Filter = "Licences (.lic)|*.lic",
|
|
.CheckFileExists = True,
|
|
.ValidateNames = True
|
|
}
|
|
If LicDlg.ShowDialog() = True Then
|
|
' Recupero il direttorio del file
|
|
Dim sDir As String = Path.GetDirectoryName(LicDlg.FileName)
|
|
' Se il file non è già nel direttorio di configurazione lo copio
|
|
If Not String.Equals(Path.GetFullPath(sDir), Path.GetFullPath(OmagOFFICEMap.refMainWindowVM.MainWindowM.sConfigDir), StringComparison.OrdinalIgnoreCase) Then
|
|
Try
|
|
File.Copy(LicDlg.FileName, Path.Combine(OmagOFFICEMap.refMainWindowVM.MainWindowM.sConfigDir, LicDlg.SafeFileName), True)
|
|
Catch ex As Exception
|
|
End Try
|
|
End If
|
|
' Imposto il nuovo file di licenza nell'Ini
|
|
WriteMainPrivateProfileString(S_GENERAL, K_LICENCE, LicDlg.SafeFileName)
|
|
End If
|
|
End If
|
|
End If
|
|
' Chiudo il programma
|
|
End
|
|
End Sub
|
|
|
|
Public Overrides Sub InitSceneEvents()
|
|
AddHandler MainScene.OnMouseDownScene, AddressOf OnMouseDownScene
|
|
AddHandler MainScene.OnMouseMoveScene, AddressOf OnMouseMoveScene
|
|
AddHandler MainScene.OnMouseUpScene, AddressOf OnMouseUpScene
|
|
AddHandler MainScene.KeyDown, AddressOf OnKeyDownScene
|
|
AddHandler MainScene.OnCursorPos, AddressOf OnCursorPos
|
|
AddHandler MainScene.OnShowDistance, AddressOf OnShowDistance
|
|
AddHandler MainScene.OnChangedSnapPointType, AddressOf OnChangedSnapPointType
|
|
End Sub
|
|
|
|
Private Sub PreInitializeScene()
|
|
' imposto colore di default
|
|
Dim DefColor As New Color3d(0, 0, 0)
|
|
GetMainPrivateProfileColor(S_GEOMDB, K_DEFAULTCOLOR, DefColor)
|
|
MainScene.SetDefaultMaterial(DefColor)
|
|
' imposto colori sfondo
|
|
Dim BackTopColor As New Color3d(192, 192, 192)
|
|
GetMainPrivateProfileColor(S_SCENE, K_BACKTOP, BackTopColor)
|
|
Dim BackBotColor As New Color3d(BackTopColor)
|
|
GetMainPrivateProfileColor(S_SCENE, K_BACKBOTTOM, BackBotColor)
|
|
MainScene.SetViewBackground(BackTopColor, BackBotColor)
|
|
' imposto colore di evidenziazione
|
|
Dim MarkColor As New Color3d(255, 255, 0)
|
|
GetMainPrivateProfileColor(S_SCENE, K_MARK, MarkColor)
|
|
MainScene.SetMarkMaterial(MarkColor)
|
|
' imposto colore per superfici selezionate
|
|
Dim SelSurfColor As New Color3d(255, 255, 192)
|
|
GetMainPrivateProfileColor(S_SCENE, K_SELSURF, SelSurfColor)
|
|
MainScene.SetSelSurfMaterial(SelSurfColor)
|
|
' imposto tipo e colore del rettangolo di zoom
|
|
Dim bOutline As Boolean = True
|
|
Dim ZwColor As New Color3d(0, 0, 0)
|
|
GetMainPrivateProfileZoomWin(S_SCENE, K_ZOOMWIN, bOutline, ZwColor)
|
|
MainScene.SetZoomWinAttribs(bOutline, ZwColor)
|
|
' imposto colore della linea di distanza
|
|
Dim DstLnColor As New Color3d(255, 0, 0)
|
|
GetMainPrivateProfileColor(S_SCENE, K_DISTLINE, DstLnColor)
|
|
MainScene.SetDistLineMaterial(DstLnColor)
|
|
' imposto parametri OpenGL
|
|
Dim nDriver As Integer = GetMainPrivateProfileInt(S_OPENGL, K_DRIVER, 3)
|
|
Dim b2Buff As Boolean = (GetMainPrivateProfileInt(S_OPENGL, K_DOUBLEBUFFER, 1) <> 0)
|
|
Dim nColorBits As Integer = GetMainPrivateProfileInt(S_OPENGL, K_COLORBITS, 32)
|
|
Dim nDepthBits As Integer = GetMainPrivateProfileInt(S_OPENGL, K_DEPTHBITS, 32)
|
|
MainScene.SetViewAttributes(nDriver, b2Buff, nColorBits, nDepthBits)
|
|
End Sub
|
|
|
|
Private Sub PostInitializeScene()
|
|
' Impostazioni Controller
|
|
MainController.SetScene(MainScene)
|
|
' imposto tipo coordinate
|
|
MainScene.SetGridCursorPos(True)
|
|
' modo di visualizzazione
|
|
Dim nShowMode As Integer = GetMainPrivateProfileInt(S_SCENE, K_SHOWMODE, SM.SHADING)
|
|
OmagOFFICEMap.refShowPanelVM.SetShowMode(DirectCast(nShowMode, SM))
|
|
' visualizzazione avanzata dei triangoli costituenti le superfici
|
|
Dim bShowTriaAdv As Boolean = (GetMainPrivateProfileInt(S_SCENE, K_SHOWTRIAADV, 1) <> 0)
|
|
EgtSetShowTriaAdv(bShowTriaAdv)
|
|
' tipo visualizzazione per Zmap
|
|
Dim nShowZmap As Integer = GetMainPrivateProfileInt(S_SCENE, K_SHOWZMAP, 1)
|
|
EgtSetShowZmap(DirectCast(nShowZmap, ZSM), False)
|
|
' dimensione lineare max in pixel delle textures
|
|
Dim nTxrMaxLinPix As Integer = GetMainPrivateProfileInt(S_SCENE, K_TEXMAXLINPIX, 4096)
|
|
EgtSetTextureMaxLinPixels(nTxrMaxLinPix)
|
|
' tipo snap point
|
|
MainScene.SetSnapPointType(SP.PT_SKETCH)
|
|
End Sub
|
|
|
|
Public Overrides Sub SaveProject()
|
|
MyBase.SaveProject()
|
|
' Imposto stato gestione mouse diretto della scena a nessuno
|
|
MainScene.SetStatusNull()
|
|
End Sub
|
|
|
|
Public Overrides Sub SaveAsProject()
|
|
MyBase.SaveAsProject()
|
|
' Imposto stato gestione mouse diretto della scena a nessuno
|
|
MainScene.SetStatusNull()
|
|
End Sub
|
|
|
|
#End Region ' METHODS
|
|
|
|
#Region "ProjectManager"
|
|
|
|
Public Overrides Sub NewProject()
|
|
EgtSetCurrentContext(MainScene.GetCtx())
|
|
Dim bOk As Boolean = MainController.NewProject()
|
|
' Eventuale reset VM
|
|
If bOk Then
|
|
VeinMatching.Clear()
|
|
End If
|
|
MainScene.SetStatusNull()
|
|
End Sub
|
|
|
|
Public Overrides Sub OpenProject(sFilePath As String)
|
|
EgtSetCurrentContext(MainScene.GetCtx())
|
|
Dim bOk As Boolean = False
|
|
If String.IsNullOrEmpty(sFilePath) Then
|
|
' Recupero cartella dell'ultimo progetto aperto
|
|
Dim sDir As String = MainController.GetCurrFile()
|
|
If String.IsNullOrWhiteSpace(sDir) Then
|
|
GetMainPrivateProfileString(S_MRUFILES, K_FILE, "", sDir)
|
|
End If
|
|
If Not String.IsNullOrWhiteSpace(sDir) Then
|
|
sDir = Path.GetDirectoryName(sDir)
|
|
End If
|
|
bOk = MainController.OpenProject(sDir)
|
|
Else
|
|
bOk = MainController.OpenProject(sFilePath, False)
|
|
End If
|
|
MainScene.SetStatusNull()
|
|
' Eventuale apertura file VM
|
|
Dim sFile As String = String.Empty
|
|
If bOk AndAlso EgtGetCurrFilePath(sFile) Then
|
|
Dim sVmFile As String = Path.ChangeExtension(sFile, ".vme")
|
|
VeinMatching.Open(sVmFile)
|
|
End If
|
|
End Sub
|
|
|
|
Public Overrides Sub ExportProject()
|
|
EgtSetCurrentContext(MainScene.GetCtx())
|
|
' Verifico che il progetto sia salvato
|
|
If EgtGetModified() Then
|
|
MessageBox.Show(EgtMsg( 91501), "", MessageBoxButton.OK, MessageBoxImage.Exclamation)
|
|
Return
|
|
End If
|
|
' Scelta del direttorio di destinazione
|
|
Dim sLastExportDir As String = String.Empty
|
|
GetMainPrivateProfileString(S_GENERAL, K_EXPORTDIR, "", sLastExportDir)
|
|
Dim DirDlg As New System.Windows.Forms.FolderBrowserDialog
|
|
DirDlg.Description = EgtMsg( 91502) ' Seleziona il direttorio di esportazione
|
|
DirDlg.SelectedPath = sLastExportDir
|
|
If DirDlg.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return
|
|
WriteMainPrivateProfileString(S_GENERAL, K_EXPORTDIR, DirDlg.SelectedPath)
|
|
' Eseguo esportazione
|
|
If ExecExport(DirDlg.SelectedPath) Then
|
|
' Esportazione conclusa con successo
|
|
OmagOFFICEMap.refStatusBarVM.SetOutputMessage( EgtMsg( 91504), 5, MSG_TYPE.INFO)
|
|
Else
|
|
' Errore nell'esportazione
|
|
MessageBox.Show( EgtMsg( 91503), "", MessageBoxButton.OK, MessageBoxImage.Error)
|
|
End If
|
|
EgtSetCurrentContext(MainScene.GetCtx())
|
|
End Sub
|
|
|
|
Private Function ExecExport(sDirDest As String) As Boolean
|
|
' Path completa del progetto corrente
|
|
Dim sFilePath As String = String.Empty
|
|
EgtGetCurrFilePath(sFilePath)
|
|
' Preparo la lista dei gruppi di lavoro
|
|
Dim vMchGrps As New List(Of Integer)
|
|
Dim nGrpId = EgtGetFirstMachGroup()
|
|
While nGrpId <> GDB_ID.NULL
|
|
vMchGrps.Add(nGrpId)
|
|
nGrpId = EgtGetNextMachGroup(nGrpId)
|
|
End While
|
|
' Risultato esportazione
|
|
Dim bOk As Boolean = True
|
|
' Creo un contesto separato con gestore lavorazioni per poter spezzettare il progetto
|
|
Dim nCurrCtx As Integer = EgtGetCurrentContext()
|
|
Dim nCtx As Integer = EgtInitContext()
|
|
EgtInitMachMgr(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir)
|
|
' Per ogni gruppo di lavoro
|
|
For Each nMchGrpId As Integer In vMchGrps
|
|
' Carico il progetto
|
|
EgtOpenFile(sFilePath)
|
|
' Recupero il nome del gruppo
|
|
Dim sMchGrp As String = String.Empty
|
|
EgtGetMachGroupName(nMchGrpId, sMchGrp)
|
|
' Recupero il nome della lastra
|
|
Dim sSlabName As String = String.Empty
|
|
EgtGetInfo(nMchGrpId, INFO_SLABNAME, sSlabName)
|
|
' sostituisco eventuali caratteri speciali
|
|
If sSlabName.IndexOfAny("[~`!@#$%^&*()-+=|{}':;.,<>/\\?]".ToCharArray) <> -1 Then
|
|
sSlabName = Regex.Replace(sSlabName, "[~`!@#$%^&*()-+=|{}':;.,<>/\\?]", "_")
|
|
End If
|
|
' Creo path del file di salvataggio
|
|
Dim nSelectTypeExport As Integer = GetMainPrivateProfileInt(S_GENERAL, "TypeExportName", 0)
|
|
Dim sFileDest As String = String.Empty
|
|
If nSelectTypeExport <> 0 Then
|
|
sFileDest = sDirDest & "\" & If(String.IsNullOrEmpty(sSlabName), sMchGrp, sSlabName) & ".nge"
|
|
Else
|
|
sFileDest = sDirDest & "\" & Path.GetFileNameWithoutExtension(sFilePath) & "_" & If(String.IsNullOrEmpty(sSlabName), sMchGrp, sSlabName) & ".nge"
|
|
End If
|
|
' Verifico se al gruppo è associata una foto
|
|
Dim nPhotoId As Integer = EgtGetFirstNameInGroup(EgtGetFirstNameInGroup(GDB_ID.ROOT, PHOTO_GRP), PHOTO_NAME & sMchGrp)
|
|
' Elimino le altre fotografie
|
|
Dim nPhId As Integer = EgtGetFirstInGroup(EgtGetFirstNameInGroup(GDB_ID.ROOT, PHOTO_GRP))
|
|
While nPhId <> GDB_ID.NULL
|
|
Dim nNextPhId As Integer = EgtGetNext(nPhId)
|
|
If nPhId <> nPhotoId Then
|
|
EgtErase(nPhId)
|
|
End If
|
|
nPhId = nNextPhId
|
|
End While
|
|
' Sistemo l'eventuale foto del gruppo
|
|
If nPhotoId <> GDB_ID.NULL Then
|
|
Dim sOriPath As String = String.Empty
|
|
EgtGetPhotoPath(nPhotoId, sOriPath)
|
|
Dim sNewPath As String = Path.ChangeExtension(sFileDest, Path.GetExtension(sOriPath))
|
|
EgtChangePhotoPath(nPhotoId, sNewPath)
|
|
Try
|
|
File.Copy(sOriPath, sNewPath, True)
|
|
Catch ex As Exception
|
|
bOk = False
|
|
EgtOutLog( "Slab image not found :" & sOriPath)
|
|
End Try
|
|
EgtSetName(nPhotoId, PHOTO_NAME)
|
|
EgtChangePhotoCenterAsFlatScan( nPhotoId)
|
|
End If
|
|
' Elimino gli altri gruppi di lavorazioni
|
|
For Each nMGrpId As Integer In vMchGrps
|
|
If nMGrpId <> nMchGrpId Then
|
|
EgtRemoveMachGroup(nMGrpId)
|
|
End If
|
|
Next
|
|
' Elimino i pezzi che non stanno nel gruppo corrente (sono ancora pezzi dopo averlo attivato)
|
|
EgtSetCurrMachGroup(nMchGrpId)
|
|
Dim nPartId As Integer = EgtGetFirstPart()
|
|
While nPartId <> GDB_ID.NULL
|
|
Dim nNextPartId As Integer = EgtGetNextPart(nPartId)
|
|
EgtErase(nPartId)
|
|
nPartId = nNextPartId
|
|
End While
|
|
EgtResetCurrMachGroup()
|
|
' Assegno nome standard OmagCUT al gruppo di lavoro
|
|
EgtSetName(nMchGrpId, MACH_GROUP)
|
|
' Definisco gruppo marcatore di OmagCUT
|
|
Dim nMarkId As Integer = EgtCreateGroup(GDB_ID.ROOT)
|
|
EgtSetName(nMarkId, NAME_PROJMARK)
|
|
EgtSetLevel(nMarkId, GDB_LV.SYSTEM)
|
|
Dim nReducedCut As Integer = 1
|
|
EgtGetInfo(nMchGrpId, INFO_REDUCEDCUT, nReducedCut)
|
|
EgtSetInfo(nMarkId, INFO_REDUCEDCUT, nReducedCut)
|
|
Dim nSacProbe As Integer = 0
|
|
EgtGetInfo(nMchGrpId, INFO_SACPROBE, nSacProbe)
|
|
EgtSetInfo(nMarkId, INFO_SACPROBE, nSacProbe)
|
|
Dim nWash As Integer = 1
|
|
EgtGetInfo(nMchGrpId, INFO_WASHING, nWash)
|
|
EgtSetInfo(nMarkId, INFO_WASHING, nWash)
|
|
Dim nOrder As Integer = 0
|
|
EgtGetInfo(nMchGrpId, INFO_MACHORDER, nOrder)
|
|
EgtSetInfo(nMarkId, INFO_MACHORDER, nOrder)
|
|
Dim sMatName As String = String.Empty
|
|
EgtGetInfo(nMchGrpId, INFO_PROJMAT, sMatName)
|
|
EgtSetInfo(nMarkId, INFO_PROJMAT, sMatName)
|
|
' Salvo il file
|
|
If Not EgtSaveFile(sFileDest, NGE.CMPTEXT) Then bOk = False
|
|
Next
|
|
' Distruggo il contesto corrente e ripristino quello originale
|
|
EgtSetCurrentContext(nCurrCtx)
|
|
EgtDeleteContext(nCtx)
|
|
Return bOk
|
|
End Function
|
|
|
|
Public Sub DxfOutProject()
|
|
EgtSetCurrentContext(MainScene.GetCtx())
|
|
' Verifico che il progetto sia salvato
|
|
If EgtGetModified() Then
|
|
MessageBox.Show(EgtMsg( 91501), "", MessageBoxButton.OK, MessageBoxImage.Exclamation)
|
|
Return
|
|
End If
|
|
' Scelta del direttorio di destinazione
|
|
Dim sLastDxfOutDir As String = String.Empty
|
|
GetMainPrivateProfileString(S_GENERAL, K_DXFOUTDIR, "", sLastDxfOutDir)
|
|
Dim DirDlg As New System.Windows.Forms.FolderBrowserDialog
|
|
DirDlg.Description = EgtMsg( 91502) ' Seleziona il direttorio di esportazione
|
|
DirDlg.SelectedPath = sLastDxfOutDir
|
|
If DirDlg.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return
|
|
WriteMainPrivateProfileString(S_GENERAL, K_DXFOUTDIR, DirDlg.SelectedPath)
|
|
' Eseguo esportazione
|
|
If ExecDxfOut(DirDlg.SelectedPath) Then
|
|
' Esportazione conclusa con successo
|
|
OmagOFFICEMap.refStatusBarVM.SetOutputMessage( EgtMsg( 91504), 5, MSG_TYPE.INFO)
|
|
Else
|
|
' Errore nell'esportazione
|
|
MessageBox.Show( EgtMsg( 91503), "", MessageBoxButton.OK, MessageBoxImage.Error)
|
|
End If
|
|
EgtSetCurrentContext(MainScene.GetCtx())
|
|
End Sub
|
|
|
|
Private Function ExecDxfOut(sDirDest As String) As Boolean
|
|
' Path completa del progetto corrente
|
|
Dim sFilePath As String = String.Empty
|
|
EgtGetCurrFilePath(sFilePath)
|
|
' Flag tipo esportazione
|
|
Dim nDxfOutType As Integer = GetMainPrivateProfileInt( S_DXFOUT, K_DXFOUT_TYPE, 0)
|
|
' Preparo la lista dei gruppi di lavoro
|
|
Dim vMchGrps As New List(Of Integer)
|
|
Dim nGrpId = EgtGetFirstMachGroup()
|
|
While nGrpId <> GDB_ID.NULL
|
|
vMchGrps.Add(nGrpId)
|
|
nGrpId = EgtGetNextMachGroup(nGrpId)
|
|
End While
|
|
' Risultato esportazione
|
|
Dim bOk As Boolean = True
|
|
' Creo un contesto separato con gestore lavorazioni per poter spezzettare il progetto
|
|
Dim nCurrCtx As Integer = EgtGetCurrentContext()
|
|
Dim nCtx As Integer = EgtInitContext()
|
|
EgtInitMachMgr(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir)
|
|
' Per ogni gruppo di lavoro
|
|
For Each nMchGrpId As Integer In vMchGrps
|
|
' Carico il progetto
|
|
EgtOpenFile(sFilePath)
|
|
' Recupero il nome del gruppo
|
|
Dim sMchGrp As String = String.Empty
|
|
EgtGetMachGroupName(nMchGrpId, sMchGrp)
|
|
' Recupero il nome della lastra
|
|
Dim sSlabName As String = String.Empty
|
|
EgtGetInfo(nMchGrpId, INFO_SLABNAME, sSlabName)
|
|
' Creo path del file di salvataggio
|
|
Dim sFileDest As String = sDirDest & "\" & Path.GetFileNameWithoutExtension(sFilePath) & "_" & If(String.IsNullOrEmpty(sSlabName), sMchGrp, sSlabName) & ".dxf"
|
|
' Gruppo delle foto
|
|
Dim nPhGrpId As Integer = EgtGetFirstNameInGroup( GDB_ID.ROOT, PHOTO_GRP)
|
|
' Verifico se al gruppo è associata una foto
|
|
Dim nPhotoId As Integer = EgtGetFirstNameInGroup( nPhGrpId, PHOTO_NAME & sMchGrp)
|
|
' Elimino le altre fotografie
|
|
Dim nPhId As Integer = EgtGetFirstInGroup( nPhGrpId)
|
|
While nPhId <> GDB_ID.NULL
|
|
Dim nNextPhId As Integer = EgtGetNext(nPhId)
|
|
If nPhId <> nPhotoId Then
|
|
EgtErase(nPhId)
|
|
End If
|
|
nPhId = nNextPhId
|
|
End While
|
|
' Sistemo l'eventuale foto del gruppo
|
|
Dim nLoopId As Integer = GDB_ID.NULL
|
|
If nPhotoId <> GDB_ID.NULL Then
|
|
Dim sOriPath As String = String.Empty
|
|
EgtGetPhotoPath(nPhotoId, sOriPath)
|
|
Dim sNewPath As String = Path.ChangeExtension(sFileDest, Path.GetExtension(sOriPath))
|
|
EgtChangePhotoPath(nPhotoId, sNewPath)
|
|
Try
|
|
File.Copy(sOriPath, sNewPath, True)
|
|
Catch ex As Exception
|
|
bOk = False
|
|
EgtOutLog( "Slab image not found :" & sOriPath)
|
|
End Try
|
|
' Ne estraggo il contorno e cancello la regione
|
|
Dim nCount As Integer = 0
|
|
nLoopId = EgtExtractSurfFrChunkLoops( nPhotoId, 0, nPhGrpId, nCount)
|
|
EgtSetColor( nLoopId, New Color3d( 0, 0, 0))
|
|
EgtErase( nPhotoId)
|
|
End If
|
|
' Elimino i pezzi che non stanno nel gruppo corrente (sono ancora pezzi dopo averlo attivato)
|
|
EgtSetCurrMachGroup(nMchGrpId)
|
|
Dim nPartId As Integer = EgtGetFirstPart()
|
|
While nPartId <> GDB_ID.NULL
|
|
Dim nNextPartId As Integer = EgtGetNextPart(nPartId)
|
|
EgtErase(nPartId)
|
|
nPartId = nNextPartId
|
|
End While
|
|
' Rendo unico il nome dei pezzi rimasti
|
|
nPartId = EgtGetFirstPartInRawPart( EgtGetFirstRawPart())
|
|
While nPartId <> GDB_ID.NULL
|
|
Dim sName As String = ""
|
|
if Not EgtGetName( nPartId, sName) OrElse String.IsNullOrWhiteSpace( sName) Then sName = "P"
|
|
EgtSetName( nPartId, sName & "_" & nPartId.ToString())
|
|
nPartId = EgtGetNextPartInRawPart( nPartId)
|
|
End While
|
|
' Rimuovo dal grezzo punti, regioni e superfici
|
|
Dim nDatId As Integer = EgtGetFirstInGroup( EgtGetFirstRawPart())
|
|
While nDatId <> GDB_ID.NULL
|
|
Dim nNextDatId As Integer = EgtGetNext( nDatId)
|
|
Select EgtGetType( nDatId)
|
|
Case GDB_TY.GEO_POINT, GDB_TY.SRF_FRGN, GDB_TY.SRF_MESH
|
|
EgtErase( nDatId)
|
|
Case Else
|
|
EgtSetStatus( nDatId, GDB_ST.ON_)
|
|
End Select
|
|
nDatId = nNextDatId
|
|
End While
|
|
' Porto a livello utente gli oggetti da esportare (primo grezzo e suoi pezzi)
|
|
nPartId = EgtGetFirstPartInRawPart( EgtGetFirstRawPart())
|
|
While nPartId <> GDB_ID.NULL
|
|
' Cancello outline
|
|
Dim nOutId As Integer = EgtGetFirstNameInGroup( nPartId, NAME_OUTLOOP)
|
|
EgtErase( nOutId)
|
|
' Cancello eventuali buchi
|
|
Dim nInId As Integer = EgtGetFirstNameInGroup( nPartId, NAME_INLOOP)
|
|
While nInId <> GDB_ID.NULL
|
|
Dim nNextInId As Integer = EgtGetNext( nInId)
|
|
EgtErase( nInId)
|
|
nInId = nNextInId
|
|
End While
|
|
' Sposto contorno regione e testi nel pezzo, poi cancello la regione
|
|
Dim nRegId As Integer = EgtGetFirstNameInGroup( nPartId, NAME_REGION)
|
|
Dim nObjId As Integer = EgtGetFirstInGroup( nRegId)
|
|
While nObjId <> GDB_ID.NULL
|
|
Dim nNextObjId As Integer = EgtGetNext( nObjId)
|
|
Select EgtGetType( nObjId)
|
|
Case GDB_TY.SRF_FRGN
|
|
EgtSetColor( nObjId, New Color3d( 0, 0, 0))
|
|
Dim nCount As Integer = 0
|
|
EgtExtractSurfFrChunkLoops( nObjId, 0, nPartId, nCount)
|
|
Case GDB_TY.EXT_TEXT
|
|
EgtRelocateGlob( nObjId, nPartId)
|
|
End Select
|
|
nObjId = nNextObjId
|
|
End While
|
|
EgtErase( nRegId)
|
|
' Elimino eventuali regioni sopra e sotto
|
|
Dim nUpRegId As Integer = EgtGetFirstNameInGroup( nPartId, NAME_UPREG)
|
|
EgtErase( nUpRegId)
|
|
Dim nDownRegId As Integer = EgtGetFirstNameInGroup( nPartId, NAME_DOWNREG)
|
|
EgtErase( nDownRegId)
|
|
' Sposto testi inclinazione lati nel pezzo, poi cancello il gruppo
|
|
Dim nSideAngleId As Integer = EgtGetFirstNameInGroup( nPartId, NAME_SIDEANGLE)
|
|
nObjId = EgtGetFirstInGroup( nSideAngleId)
|
|
While nObjId <> GDB_ID.NULL
|
|
Dim nNextObjId As Integer = EgtGetNext( nObjId)
|
|
Select EgtGetType( nObjId)
|
|
Case GDB_TY.EXT_TEXT
|
|
EgtSetName( nObjId, NAME_SIDEANGLE)
|
|
EgtRelocateGlob( nObjId, nPartId)
|
|
End Select
|
|
nObjId = nNextObjId
|
|
End While
|
|
EgtErase( nSideAngleId)
|
|
' Sposto incisioni da sopra nel pezzo, poi cancello il gruppo
|
|
Dim nOnLayId As Integer = EgtGetFirstNameInGroup( nPartId, NAME_ONPATH)
|
|
nObjId = EgtGetFirstInGroup( nOnLayId)
|
|
While nObjId <> GDB_ID.NULL
|
|
Dim nNextObjId As Integer = EgtGetNext( nObjId)
|
|
EgtSetName( nObjId, NAME_ONPATH)
|
|
EgtRelocateGlob( nObjId, nPartId)
|
|
nObjId = nNextObjId
|
|
End While
|
|
EgtErase( nOnLayId)
|
|
' Sposto incisioni da sotto nel pezzo, poi cancello il gruppo
|
|
Dim nDripLayId As Integer = EgtGetFirstNameInGroup( nPartId, NAME_DRIPCUT)
|
|
nObjId = EgtGetFirstInGroup( nDripLayId)
|
|
While nObjId <> GDB_ID.NULL
|
|
Dim nNextObjId As Integer = EgtGetNext( nObjId)
|
|
EgtSetName( nObjId, NAME_DRIPCUT)
|
|
EgtRelocateGlob( nObjId, nPartId)
|
|
nObjId = nNextObjId
|
|
End While
|
|
EgtErase( nDripLayId)
|
|
' Sposto forature da sotto nel pezzo, poi cancello il gruppo
|
|
Dim nUdrillLayId As Integer = EgtGetFirstNameInGroup( nPartId, NAME_UNDERDRILL)
|
|
nObjId = EgtGetFirstInGroup( nUdrillLayId)
|
|
While nObjId <> GDB_ID.NULL
|
|
Dim nNextObjId As Integer = EgtGetNext( nObjId)
|
|
EgtSetName( nObjId, NAME_UNDERDRILL)
|
|
EgtRelocateGlob( nObjId, nPartId)
|
|
nObjId = nNextObjId
|
|
End While
|
|
EgtErase( nUdrillLayId)
|
|
' Sposto i contorni dei tagli nel pezzo,
|
|
Dim nPvId As Integer = EgtGetFirstNameInGroup( nPartId, NAME_PREVIEW)
|
|
Dim nOpeId As Integer = EgtGetFirstInGroup( nPvId)
|
|
While nOpeId <> GDB_ID.NULL
|
|
Dim nEntId = EgtGetFirstInGroup( EgtGetFirstInGroup( nOpeId))
|
|
While nEntId <> GDB_ID.NULL
|
|
Dim nNextEntId As Integer = EgtGetNext( nEntId)
|
|
If EgtGetType( nEntId) = GDB_TY.CRV_COMPO Then
|
|
EgtSetName( nEntId, NAME_PREVIEW)
|
|
EgtRelocateGlob( nEntId, nPartId)
|
|
End If
|
|
nEntId = nNextEntId
|
|
End While
|
|
nOpeId = EgtGetNext( nOpeId)
|
|
End While
|
|
Dim nClId As Integer = EgtGetFirstInGroup( EgtGetFirstInGroup( nPvId))
|
|
nPartId = EgtGetNextPartInRawPart( nPartId)
|
|
End While
|
|
' Sistemo visibilità layer foto
|
|
If nPhotoId <> GDB_ID.NULL Then
|
|
EgtSetLevel( nPhGrpId, GDB_LV.USER)
|
|
EgtSetStatus( nLoopId, GDB_ST.ON_)
|
|
End If
|
|
' Sposto il primo grezzo con i suoi pezzi sotto la radice
|
|
Dim nRawPart As Integer = EgtGetFirstRawPart()
|
|
EgtRelocateGlob( nRawPart, GDB_ID.ROOT)
|
|
Dim nGroupId As Integer = EgtGetFirstGroupInGroup( nRawPart)
|
|
While nGroupId <> GDB_ID.NULL
|
|
Dim nNextGroupId As Integer = EgtGetNextGroup( nGroupId)
|
|
EgtRelocateGlob( nGroupId, GDB_ID.ROOT)
|
|
nGroupId = nNextGroupId
|
|
End While
|
|
' Rimuovo il gruppo di base delle macchine
|
|
EgtErase( EgtGetFirstNameInGroup( GDB_ID.ROOT, "MachAux"))
|
|
' Rimuovo il gruppo di base delle lavorazioni (con tutti i gruppi di lavoro)
|
|
EgtErase( EgtGetFirstNameInGroup( GDB_ID.ROOT, "MachBase"))
|
|
' Aggiustamenti per esportazioni speciali
|
|
If nDxfOutType = 1 Then
|
|
' Rimuovo il rettangolo della foto
|
|
EgtErase( nPhGrpId)
|
|
' Sistemo il grezzo
|
|
Dim nObjId As Integer = EgtGetFirstInGroup( nRawPart)
|
|
While nObjId <> GDB_ID.NULL
|
|
Dim nNextObjId As Integer = EgtGetNext( nObjId)
|
|
Select EgtGetType( nObjId)
|
|
Case GDB_TY.EXT_TEXT
|
|
EgtErase( nObjId)
|
|
Case GDB_TY.CRV_COMPO
|
|
Dim sName As String = ""
|
|
If EgtGetName( nObjId, sName) AndAlso sName = NAME_KERF Then
|
|
EgtErase( nObjId)
|
|
Else
|
|
EgtSetColor( nObjId, New Color3d( 0, 0, 255))
|
|
End If
|
|
End Select
|
|
nObjId = nNextObjId
|
|
End While
|
|
' Creo il layer dei pezzi
|
|
Dim nAllPartsId As Integer = EgtCreateGroup( GDB_ID.ROOT)
|
|
EgtSetName( nAllPartsId, "Parts")
|
|
' Creo il layer dei TOPS
|
|
Dim nAllTopsId As Integer = EgtCreateGroup( GDB_ID.ROOT)
|
|
EgtSetName( nAllTopsId, "Tops")
|
|
' Sposto tutti le entità dei pezzi (tranne i tagli) in un unico layer pezzi
|
|
nPartId = EgtGetFirstGroupInGroup( GDB_ID.ROOT)
|
|
While nPartId <> GDB_ID.NULL
|
|
Dim nNextPartId As Integer = EgtGetNextGroup( nPartId)
|
|
If nPartId <> nRawPart And nPartId <> nAllPartsId And nPartId <> nAllTopsId Then
|
|
Dim nEntId As Integer = EgtGetFirstInGroup( nPartId)
|
|
While nEntId <> GDB_ID.NULL
|
|
Dim nNextEntId As Integer = EgtGetNext( nEntId)
|
|
Dim sName As String = ""
|
|
if Not EgtGetName( nEntId, sName) OrElse
|
|
( sName <> NAME_SIDEANGLE AndAlso sName <> NAME_ONPATH AndAlso
|
|
sName <> NAME_DRIPCUT AndAlso sName <> NAME_UNDERDRILL AndAlso sName <> NAME_PREVIEW) Then
|
|
Dim sText As String = ""
|
|
If EgtTextGetContent( nEntId, sText) AndAlso sText = "*TOP*" Then
|
|
EgtRelocateGlob( nEntId, nAllTopsId)
|
|
Else
|
|
EgtRelocateGlob( nEntId, nAllPartsId)
|
|
End If
|
|
End If
|
|
nEntId = nNextEntId
|
|
End While
|
|
EgtErase( nPartId)
|
|
End If
|
|
nPartId = nNextPartId
|
|
End While
|
|
End If
|
|
' Esporto il file
|
|
If Not EgtExportDxf( GDB_ID.ROOT, sFileDest) Then bOk = False
|
|
Next
|
|
' Distruggo il contesto corrente e ripristino quello originale
|
|
EgtSetCurrentContext(nCurrCtx)
|
|
EgtDeleteContext(nCtx)
|
|
Return bOk
|
|
End Function
|
|
|
|
#End Region ' ProjectManager
|
|
|
|
#Region "EVENTS"
|
|
|
|
Private Sub OnNewProject(sender As Object, bOk As Boolean)
|
|
OmagOFFICEMap.refMainWindowVM.Title = " New - OmagOFFICE"
|
|
End Sub
|
|
|
|
Private Sub OnOpenProject(sender As Object, sFile As String, bOk As Boolean)
|
|
' Verifico la validità del file appena aperto (deve contenere almeno un gruppo di lavoro)
|
|
If EgtGetMachGroupCount() = 0 Then bOk = False
|
|
' Procedo a seconda del risultato
|
|
If bOk Then
|
|
OmagOFFICEMap.refMainWindowVM.Title = sFile & " - OmagOFFICE"
|
|
WriteMainPrivateProfileString(S_GENERAL, K_LASTPROJ, sFile)
|
|
OmagOFFICEMap.refTopCommandBarVM.m_MruFiles.Add(sFile)
|
|
Else
|
|
EgtNewFile()
|
|
OmagOFFICEMap.refMainWindowVM.Title = " New - OmagOFFICE"
|
|
OmagOFFICEMap.refTopCommandBarVM.m_MruFiles.Remove(sFile)
|
|
Dim sMsg As String = EgtMsg(10003) & " '" & sFile & "'" 'Error opening file
|
|
MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) 'Error
|
|
End If
|
|
MainScene.SetStatusNull()
|
|
End Sub
|
|
|
|
Private Sub OnSavingProject(ByVal sender As Object, sFile As String)
|
|
' Recupero tutti i file di texture associabili ai gruppi di lavoro del progetto
|
|
Dim sDirToSearch As String = Path.GetDirectoryName(sFile)
|
|
Dim sFileToSearch As String = Path.GetFileNameWithoutExtension(sFile) & "." & PHOTO_NAME & "*"
|
|
Dim vsTxrFile As New List(Of String)
|
|
For Each sTxrFile In My.Computer.FileSystem.GetFiles(sDirToSearch, FileIO.SearchOption.SearchTopLevelOnly, sFileToSearch)
|
|
vsTxrFile.Add(sTxrFile)
|
|
Next
|
|
' Rinomino path di eventuali fotografie
|
|
Dim nPhotoId As Integer = EgtGetFirstInGroup(EgtGetFirstNameInGroup(GDB_ID.ROOT, PHOTO_GRP))
|
|
While nPhotoId <> GDB_ID.NULL
|
|
' Path originale
|
|
Dim sPhoto As String = String.Empty
|
|
If EgtGetPhotoPath(nPhotoId, sPhoto) Then
|
|
' Nome della foto
|
|
Dim sName As String = String.Empty
|
|
EgtGetName(nPhotoId, sName)
|
|
' Nuova path
|
|
Dim sNewPhoto As String = Path.GetDirectoryName(sFile) & "\" &
|
|
Path.GetFileNameWithoutExtension(sFile) & "." & sName &
|
|
Path.GetExtension(sPhoto)
|
|
' Se diverse, eseguo copia
|
|
If String.Compare(sPhoto, sNewPhoto, True) <> 0 Then
|
|
Try
|
|
' Eseguo copia
|
|
File.Copy(sPhoto, sNewPhoto, True)
|
|
' Notifico a foto il cambio di path
|
|
EgtChangePhotoPath(nPhotoId, sNewPhoto)
|
|
' Eventuale notifica a VeinMatching del cambio di path
|
|
VeinMatching.ChangePhotoPath(sPhoto, sNewPhoto)
|
|
Catch ex As Exception
|
|
End Try
|
|
End If
|
|
' Tolgo da lista file texture associabili, se presente
|
|
vsTxrFile.Remove(sNewPhoto)
|
|
End If
|
|
' passo alla successiva
|
|
nPhotoId = EgtGetNext(nPhotoId)
|
|
End While
|
|
' Se rimasti file associabili, li cancello
|
|
For Each sTxrFile In vsTxrFile
|
|
Try
|
|
My.Computer.FileSystem.DeleteFile(sTxrFile)
|
|
Catch
|
|
End Try
|
|
Next
|
|
End Sub
|
|
|
|
Private Sub OnSavedProject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean)
|
|
' Se salvataggio non riuscito, esco subito
|
|
If Not bOk Then
|
|
OmagOFFICEMap.refTopCommandBarVM.m_MruFiles.Remove(sFile)
|
|
Dim sMsg As String = EgtMsg(10004) & " '" & sFile & "'" 'Error saving file
|
|
MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
|
|
Return
|
|
End If
|
|
' Eventuale salvataggio VM
|
|
Dim sVmFile As String = Path.ChangeExtension(sFile, ".vme")
|
|
VeinMatching.Save(sVmFile)
|
|
' Eventuale salvataggio CSV
|
|
CsvM.SaveCsvPartList()
|
|
' Aggiornamento titolo
|
|
OmagOFFICEMap.refMainWindowVM.Title = sFile & " - OmagOFFICE"
|
|
' Riabilito visualizzazione pezzi in parcheggio
|
|
EstCalc.ShowParkedParts()
|
|
' Inserisco nome in MRU
|
|
OmagOFFICEMap.refTopCommandBarVM.m_MruFiles.Add(sFile)
|
|
' Salvo nome ultimo file
|
|
WriteMainPrivateProfileString(S_GENERAL, K_LASTPROJ, sFile)
|
|
End Sub
|
|
|
|
Private Sub OnMouseDownScene(sender As Object, e As Windows.Forms.MouseEventArgs)
|
|
' Si può selezionare solo con il tasto sinistro e se stato NULL
|
|
If e.Button <> Windows.Forms.MouseButtons.Left Or Not MainScene.IsStatusNull() Then Return
|
|
' Chiamo l'opportuno gestore
|
|
Select Case OmagOFFICEMap.refOptionPanelVM.SelItem
|
|
Case OptionPanelVM.Tabs.RAWPART
|
|
OmagOFFICEMap.refRawPartTabVM.OnMouseDownScene(sender, e)
|
|
Case OptionPanelVM.Tabs.NESTING
|
|
OmagOFFICEMap.refNestingTabVM.OnMouseDownScene(sender, e)
|
|
Case OptionPanelVM.Tabs.MACHINING
|
|
OmagOFFICEMap.refMachiningTabVM.OnMouseDownScene(sender, e)
|
|
Case OptionPanelVM.Tabs.SIMUL
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub OnMouseMoveScene(sender As Object, e As Windows.Forms.MouseEventArgs)
|
|
' Chiamo l'opportuno gestore
|
|
Select Case OmagOFFICEMap.refOptionPanelVM.SelItem
|
|
Case OptionPanelVM.Tabs.RAWPART
|
|
OmagOFFICEMap.refRawPartTabVM.OnMouseMoveScene(sender, e)
|
|
Case OptionPanelVM.Tabs.NESTING
|
|
OmagOFFICEMap.refNestingTabVM.OnMouseMoveScene(sender, e)
|
|
Case OptionPanelVM.Tabs.MACHINING
|
|
Case OptionPanelVM.Tabs.SIMUL
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub OnMouseUpScene(sender As Object, e As Windows.Forms.MouseEventArgs)
|
|
' Chiamo l'opportuno gestore
|
|
Select Case OmagOFFICEMap.refOptionPanelVM.SelItem
|
|
Case OptionPanelVM.Tabs.RAWPART
|
|
OmagOFFICEMap.refRawPartTabVM.OnMouseUpScene(sender, e)
|
|
Case OptionPanelVM.Tabs.NESTING
|
|
OmagOFFICEMap.refNestingTabVM.OnMouseUpScene(sender, e)
|
|
Case OptionPanelVM.Tabs.MACHINING
|
|
Case OptionPanelVM.Tabs.SIMUL
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub OnKeyDownScene(sender As Object, e As System.Windows.Forms.KeyEventArgs)
|
|
' Chiamo l'opportuno gestore
|
|
Select Case OmagOFFICEMap.refOptionPanelVM.SelItem
|
|
Case OptionPanelVM.Tabs.RAWPART
|
|
Case OptionPanelVM.Tabs.NESTING
|
|
OmagOFFICEMap.refNestingTabVM.OnKeyDownScene(sender, e)
|
|
Case OptionPanelVM.Tabs.MACHINING
|
|
Case OptionPanelVM.Tabs.SIMUL
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub OnCursorPos(ByVal sender As Object, ByVal sCursorPos As String)
|
|
OmagOFFICEMap.refStatusBarVM.SetCurrPos(sCursorPos)
|
|
End Sub
|
|
|
|
Private Sub OnShowDistance(ByVal sender As Object, ByVal sDistance As String)
|
|
OmagOFFICEMap.refStatusBarVM.SetOutputMessage(sDistance)
|
|
End Sub
|
|
|
|
Private Sub OnChangedSnapPointType(ByVal sender As Object, ByVal nSpType As SP, ByVal bUser As Boolean)
|
|
Dim BtnColor As Brush
|
|
If bUser Then
|
|
BtnColor = New SolidColorBrush(SystemColors.ControlColor)
|
|
Else
|
|
BtnColor = Brushes.Bisque
|
|
End If
|
|
Select Case nSpType
|
|
Case SP.PT_SKETCH
|
|
OmagOFFICEMap.refStatusBarVM.SetSnapPointType(EgtMsg(1102), BtnColor) 'Sketch Point
|
|
Case SP.PT_GRID
|
|
OmagOFFICEMap.refStatusBarVM.SetSnapPointType(EgtMsg(1104), BtnColor) 'Grid Point
|
|
Case SP.PT_END
|
|
OmagOFFICEMap.refStatusBarVM.SetSnapPointType(EgtMsg(1106), BtnColor) 'End Point
|
|
Case SP.PT_MID
|
|
OmagOFFICEMap.refStatusBarVM.SetSnapPointType(EgtMsg(1108), BtnColor) 'Mid Point
|
|
Case SP.CENTER
|
|
OmagOFFICEMap.refStatusBarVM.SetSnapPointType(EgtMsg(1110), BtnColor) 'Center
|
|
Case SP.CENTROID
|
|
OmagOFFICEMap.refStatusBarVM.SetSnapPointType(EgtMsg(1112), BtnColor) 'Centroid
|
|
Case SP.PT_NEAR
|
|
OmagOFFICEMap.refStatusBarVM.SetSnapPointType(EgtMsg(1114), BtnColor) 'Near Point
|
|
Case SP.PT_INTERS
|
|
OmagOFFICEMap.refStatusBarVM.SetSnapPointType(EgtMsg(1116), BtnColor) 'Inters Point
|
|
Case SP.PT_TANGENT
|
|
OmagOFFICEMap.refStatusBarVM.SetSnapPointType(EgtMsg(1118), BtnColor) 'Tang Point
|
|
Case SP.PT_PERPENDICULAR
|
|
OmagOFFICEMap.refStatusBarVM.SetSnapPointType(EgtMsg(1120), BtnColor) 'Perp Point
|
|
Case SP.PT_MINDIST
|
|
OmagOFFICEMap.refStatusBarVM.SetSnapPointType(EgtMsg(1122), BtnColor) 'MinDist Point
|
|
Case Else
|
|
OmagOFFICEMap.refStatusBarVM.SetSnapPointType("---", BtnColor)
|
|
End Select
|
|
End Sub
|
|
|
|
#End Region ' EVENTS
|
|
|
|
End Class
|