TestEIn 1.6d7 :

- in import si registra anche EgtNewFile
- migliorata gestione Copy Part Layer Obj (su Esc si annulla anche la copia)
- merge di superfici velocizzata quando molte, operando sui triangoli.
This commit is contained in:
Dario Sassi
2015-04-25 20:44:21 +00:00
parent 298c4d12eb
commit 2a49060127
3 changed files with 109 additions and 60 deletions
+93 -56
View File
@@ -360,13 +360,13 @@ Public Class Controller
End If
'Pulizia GeomDB
m_Scene.Cursor = Cursors.WaitCursor
Dim bOk As Boolean = EgtNewFile()
'Importazione
EnableCommandLog()
Dim bOk As Boolean = EgtNewFile()
If nFileType = FT.DXF Then
bOk = bOk And EgtImportDxf(sFile)
bOk = bOk And EgtImportDxf(sFile, 1)
ElseIf nFileType = FT.STL Then
bOk = bOk And EgtImportStl(sFile)
bOk = bOk And EgtImportStl(sFile, 1)
ElseIf nFileType = FT.CNC Then
bOk = bOk And EgtImportCnc(sFile)
End If
@@ -1052,6 +1052,8 @@ Public Class Controller
DragGridRotate()
Case CMD.GRID_ROTATE3D
DragGridRotate3D()
Case CMD.COPYPARTLAYEROBJ
DragCopyPartLayerObj()
Case CMD.LINE2P
DragLine2P()
Case CMD.LINEPDL
@@ -1719,69 +1721,100 @@ Public Class Controller
Return True
End Function
Private Function ProcessCopyPartLayerObj() As Boolean
If m_nStep <> 0 Then
Return False
Private Function DoCopyPartLayerObj(ByVal nId As Integer) As Integer
Dim nNewId As Integer = GDB_ID.NULL
' se pezzo
If EgtIsPart(m_nLast) Then
nNewId = EgtCopyGlob(m_nLast, GDB_ID.ROOT)
' se layer
ElseIf EgtIsLayer(m_nLast) Then
nNewId = EgtCopyGlob(m_nLast, EgtGetCurrPart())
' se entità
ElseIf EgtGetType(m_nLast) <> GDB_TY.GROUP Then
nNewId = EgtCopyGlob(m_nLast, EgtGetCurrLayer())
End If
EgtDeselectAll()
Dim nNewId = GDB_ID.NULL
Dim bOk As Boolean = True
' se gruppo
If EgtGetType(m_nLast) = GDB_TY.GROUP Then
Return nNewId
End Function
Private Function ProcessCopyPartLayerObj() As Boolean
Select Case m_nStep
Case 0
EnableCommandLog()
EgtDeselectAll()
DisableCommandLog()
Dim bOk As Boolean = True
' se pezzo
If EgtGetParent(m_nLast) = GDB_ID.ROOT Then
EnableCommandLog()
' eseguo copia
nNewId = EgtCopyGlob(m_nLast, GDB_ID.ROOT)
If EgtIsPart(m_nLast) Then
' seleziono tutti gli oggetti del pezzo
bOk = EgtSelectPartObjs(nNewId)
DisableCommandLog()
bOk = EgtSelectPartObjs(m_nLast)
' se layer
ElseIf EgtGetParent(EgtGetParent(m_nLast)) = GDB_ID.ROOT Then
EnableCommandLog()
' eseguo copia
nNewId = EgtCopyGlob(m_nLast, EgtGetCurrPart())
ElseIf EgtIsLayer(m_nLast) Then
' seleziono tutti gli oggetti del layer
bOk = EgtSelectLayerObjs(nNewId)
DisableCommandLog()
' altrimenti errore
Else
bOk = False
bOk = EgtSelectLayerObjs(m_nLast)
' altrimenti entità
ElseIf EgtGetType(m_nLast) <> GDB_TY.GROUP Then
' la seleziono
bOk = EgtSelectObj(m_nLast)
End If
' altrimenti entità
Else
' in caso di errore, esco
If Not bOk Then
Return False
End If
' se non ci sono oggetti selezionati copio ed esco subito
If EgtGetSelectedObjNbr() = 0 Then
EnableCommandLog()
Dim nNewId = DoCopyPartLayerObj(m_nLast)
DisableCommandLog()
RaiseEvent UpdateUI(Me, True)
Return True
End If
' preparo per il drag
If Not PrepareTransform() Then
Return False
End If
m_Scene.SetStatusSelPoint()
m_nStep = 1
' abilito dialogo "COPY", "Insert Base Point"
RaiseEvent PrepareInputBox(EgtMsg(2401), EgtMsg(2403), "", False, False)
m_nInpType = IBT.TY_POINT3D
Case 1
m_ptP1 = m_ptLast
m_nStep = 2
m_Scene.EnableDrag()
' abilito dialogo "COPY", "Insert Target Point"
RaiseEvent PrepareInputBox(EgtMsg(2401), EgtMsg(2404), "", False, True)
m_nInpType = IBT.TY_POINT3D
Case 2
m_Scene.ResetStatus(False)
EgtDeselectAll()
EnableCommandLog()
' eseguo copia
nNewId = EgtCopyGlob(m_nLast, EgtGetCurrLayer())
' la seleziono
bOk = EgtSelectObj(nNewId)
Dim nNewId = DoCopyPartLayerObj(m_nLast)
' eseguo movimento
EgtMove(nNewId, (m_ptLast - m_ptP1).Loc(GDB_ID.GRID), GDB_RT.GRID)
DisableCommandLog()
End If
' in caso di errore, esco
If Not bOk Then
EgtDraw()
' aggiorno stato
m_nStep = 0
RaiseEvent UpdateUI(Me, True)
Case Else
m_nStep = 0
Return False
End If
' aggiorno
RaiseEvent UpdateUI(Me, True)
' se non ci sono oggetti selezionati esco subito
If EgtGetSelectedObjNbr() = 0 Then
Return True
End If
' preparo per il drag
If Not PrepareTransform() Then
Return False
End If
m_Scene.SetStatusSelPoint()
' imposto stato a primo punto per Move
m_nLastCmd = CMD.MOVE
m_bLast = False
m_nStep = 1
' abilito dialogo
RaiseEvent PrepareInputBox("MOVE", "Insert Base Point", "", False, False)
m_nInpType = IBT.TY_POINT3D
End Select
Return True
End Function
Private Sub DragCopyPartLayerObj()
If m_nStep = 2 Then
' ripristino lo stato iniziale
EgtChangeGroupFrame(m_Scene.GetDragGroup(), Frame3d.GLOB)
' eseguo tutto il movimento
EgtMove(m_Scene.GetDragGroup(), (m_ptLast - m_ptP1), GDB_RT.GLOB)
EgtSetGeoLine(m_ptP1, m_ptLast)
EgtDraw()
End If
End Sub
Private Function ProcessShow() As Boolean
If m_nStep <> 0 Then
Return False
@@ -3470,7 +3503,11 @@ Public Class Controller
nId = EgtGetNextSelectedObj()
End While ' lancio la combinazione delle superfici
EnableCommandLog()
EgtCreateSurfTmBySewing(GetCurrLayer(), nSurfNum, nSurfIds, True)
If nSurfNum <= 10 Then
EgtCreateSurfTmBySewing(GetCurrLayer(), nSurfNum, nSurfIds, True)
Else
EgtCreateSurfTmByTriangles(GetCurrLayer(), nSurfNum, nSurfIds, True)
End If
DisableCommandLog()
' reset stato scena
m_Scene.ResetStatus()
@@ -3981,7 +4018,7 @@ Public Class Controller
' imposto stato a primo punto per Move
m_nStep = 1
' abilito dialogo "MOVE", "Insert Base Point", "Copy"
RaiseEvent PrepareInputBox(EgtMsg(2401), EgtMsg(2402), EgtMsg(2001), False, False)
RaiseEvent PrepareInputBox(EgtMsg(2402), EgtMsg(2403), EgtMsg(2001), False, False)
m_nInpType = IBT.TY_POINT3D
RaiseEvent SetInputBoxCheck(False)
Case 1
@@ -3989,7 +4026,7 @@ Public Class Controller
m_nStep = 2
m_Scene.EnableDrag()
' abilito dialogo "MOVE", "Insert Target Point", "Copy"
RaiseEvent PrepareInputBox(EgtMsg(2401), EgtMsg(2403), EgtMsg(2001), False, True)
RaiseEvent PrepareInputBox(EgtMsg(2402), EgtMsg(2404), EgtMsg(2001), False, True)
m_nInpType = IBT.TY_POINT3D
Case 2
m_Scene.ResetStatus(False)
+14 -2
View File
@@ -804,11 +804,11 @@ Public Function EgtGetFileType(ByVal sFilePath As String) As Integer
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
Public Function EgtImportDxf(ByVal sFilePath As String) As Boolean
Public Function EgtImportDxf(ByVal sFilePath As String, ByVal dScaleFactor As Double) As Boolean
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
Public Function EgtImportStl(ByVal sFilePath As String) As Boolean
Public Function EgtImportStl(ByVal sFilePath As String, ByVal dScaleFactor As Double) As Boolean
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
@@ -1053,6 +1053,10 @@ End Function
Public Function EgtCreateSurfTmRuled(ByVal nParentId As Integer, ByVal nCrvId1 As Integer, ByVal nCrvId2 As Integer, ByVal dLinTol As Double) As Integer
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
Public Function EgtCreateSurfTmByTriangles(ByVal nParentId As Integer, ByVal nNumSrf As Integer, ByVal nSrfId() As Integer, ByVal bSrfErase As Boolean) As Integer
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
Public Function EgtCreateSurfTmBySewing(ByVal nParentId As Integer, ByVal nNumSrf As Integer, ByVal nSrfId() As Integer, ByVal bSrfErase As Boolean) As Integer
End Function
@@ -1181,6 +1185,14 @@ End Function
'---------- GeomDb Parts & Layers ----------------------------------------------
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
Public Function EgtIsPart(ByVal nPartId As Integer) As Boolean
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
Public Function EgtIsLayer(ByVal nLayerId As Integer) As Boolean
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
Public Function EgtGetCurrPart() As Integer
End Function
+2 -2
View File
@@ -46,5 +46,5 @@ Imports System.Runtime.InteropServices
' utilizzando l'asterisco (*) come descritto di seguito:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.6.4.6")>
<Assembly: AssemblyFileVersion("1.6.4.6")>
<Assembly: AssemblyVersion("1.6.4.7")>
<Assembly: AssemblyFileVersion("1.6.4.7")>