TestEIn 1.6b2 :

- modifiche per gestione max numero istanze
- modufiche per superfici di regioni piane con buchi e per estrusioni con buchi e chiusure.
This commit is contained in:
Dario Sassi
2015-02-11 11:48:38 +00:00
parent 43e9ce48c9
commit b8e0266559
10 changed files with 386 additions and 151 deletions
+3 -3
View File
@@ -8,7 +8,7 @@ Public NotInheritable Class AboutBox1
If My.Application.Info.Title <> "" Then
ApplicationTitle = My.Application.Info.Title
Else
ApplicationTitle = System.IO.Path.GetFileNameWithoutExtension(My.Application.Info.AssemblyName)
ApplicationTitle = My.Application.Info.AssemblyName
End If
Me.Text = String.Format("Informazioni su {0}", My.Application.Info.ProductName)
' Inizializza tutto il testo visualizzato nella finestra di dialogo Informazioni su.
@@ -18,8 +18,8 @@ Public NotInheritable Class AboutBox1
Me.LabelCompanyName.Text = My.Application.Info.CompanyName
Dim sbInfo As New System.Text.StringBuilder
sbInfo.Append("User " & SystemInformation.UserName &
"\" & SystemInformation.ComputerName &
" Inst=" & Form1.GetInstance() & vbCrLf)
"\" & SystemInformation.ComputerName &
" (" & Form1.GetInstance() & ")" & vbCrLf)
sbInfo.Append("ExeRoot " & Form1.GetExeRoot() & vbCrLf)
sbInfo.Append("DataRoot " & Form1.GetDataRoot() & vbCrLf)
Dim sTemp As String = String.Empty
+98 -7
View File
@@ -92,6 +92,7 @@ Public Class Controller
INVERTCURVE
TRIMEXTENDCURVE
BREAKCURVE
SPLITCURVE
JOINCURVE
EXPLODECURVE
SETCURVETHICKNESS
@@ -275,6 +276,10 @@ Public Class Controller
End Function
Public Function SaveAsProject(Optional ByVal sFile As String = "", Optional ByVal nType As NGE = NGE.CMPTEXT) As Boolean
'Se nome vuoto, assegno "New"
If String.IsNullOrWhiteSpace(sFile) Then
sFile = "New.nge"
End If
'Eventuale sistemazione estensione
sFile = IO.Path.ChangeExtension(sFile, "nge")
'Assegnazione nome file con dialogo
@@ -867,6 +872,9 @@ Public Class Controller
' Break Curve
Case CMD.BREAKCURVE
Return ProcessBreakCurve()
' Split Curve in N parts
Case CMD.SPLITCURVE
Return ProcessSplitCurve()
' Join Curve
Case CMD.JOINCURVE
Return ProcessJoinCurve()
@@ -2585,7 +2593,24 @@ Public Class Controller
End If
' creo la superficie piana (a partire da un contorno selezionato)
EnableCommandLog()
EgtCreateSurfTriMeshByContour(GetCurrLayer(), EgtGetLastSelectedObj(), EPS_STM)
If EgtGetSelectedObjNbr() = 1 Then
EgtCreateSurfTriMeshByFlatContour(GetCurrLayer(), EgtGetLastSelectedObj(), EPS_STM)
Else
' creo vettore di entità selezionate
Dim nCrvNum As Integer = 0
Dim nCrvIds(EgtGetSelectedObjNbr() - 1) As Integer
Dim nId As Integer = EgtGetFirstSelectedObj()
While nId <> GDB_ID.NULL
Select Case EgtGetType(nId)
Case GDB_TY.CRV_LINE, GDB_TY.CRV_ARC, GDB_TY.CRV_BEZ, GDB_TY.CRV_COMPO
nCrvIds(nCrvNum) = nId
nCrvNum = nCrvNum + 1
End Select
nId = EgtGetNextSelectedObj()
End While
' creo la superficie
EgtCreateSurfTriMeshByRegion(GetCurrLayer(), nCrvNum, nCrvIds, EPS_STM)
End If
DisableCommandLog()
' reset stato scena
m_Scene.ResetStatus()
@@ -2615,11 +2640,29 @@ Public Class Controller
Case 1
' reset scena
m_Scene.ResetStatus(False)
' creo la superficie di estrusione (a partire da un contorno selezionato)
' creo la superficie di estrusione (a partire da uno o più contorni selezionati)
Dim VtExtr As Vector3d = Vector3d.Z_AX * m_dLast
' creo vettore di entità selezionate
Dim nCrvNum As Integer = 0
Dim nCrvIds(EgtGetSelectedObjNbr() - 1) As Integer
Dim nId As Integer = EgtGetFirstSelectedObj()
While nId <> GDB_ID.NULL
Select Case EgtGetType(nId)
Case GDB_TY.CRV_LINE, GDB_TY.CRV_ARC, GDB_TY.CRV_BEZ, GDB_TY.CRV_COMPO
nCrvIds(nCrvNum) = nId
nCrvNum = nCrvNum + 1
End Select
nId = EgtGetNextSelectedObj()
End While
' eseguo
EnableCommandLog()
EgtCreateSurfTriMeshByExtrusion(GetCurrLayer(), EgtGetLastSelectedObj(), VtExtr,
m_bLast, EPS_STM, REF_TY.GRID)
If Not m_bLast Then
EgtCreateSurfTriMeshByExtrusion(GetCurrLayer(), nCrvNum, nCrvIds, VtExtr,
EPS_STM, REF_TY.GRID)
Else
EgtCreateSurfTriMeshByRegionExtrusion(GetCurrLayer(), nCrvNum, nCrvIds, VtExtr,
EPS_STM, REF_TY.GRID)
End If
DisableCommandLog()
EgtDraw()
' aggiorno stato
@@ -2636,10 +2679,27 @@ Public Class Controller
If m_nStep = 1 Then
' cancello eventuale vecchia superficie di estrusione
EgtEmptyGroup(m_Scene.GetDragGroup())
' creo la superficie di estrusione (a partire da un contorno selezionato)
' creo la superficie di estrusione (a partire da uno o più contorni selezionati)
Dim VtExtr As Vector3d = EgtGetGridVersZ() * m_dLast
EgtCreateSurfTriMeshByExtrusion(m_Scene.GetDragGroup(), EgtGetLastSelectedObj(), VtExtr,
m_bLast, EPS_STM_DRAG, REF_TY.GLOB)
Dim nCrvNum As Integer = 0
Dim nCrvIds(EgtGetSelectedObjNbr() - 1) As Integer
Dim nId As Integer = EgtGetFirstSelectedObj()
While nId <> GDB_ID.NULL
Select Case EgtGetType(nId)
Case GDB_TY.CRV_LINE, GDB_TY.CRV_ARC, GDB_TY.CRV_BEZ, GDB_TY.CRV_COMPO
nCrvIds(nCrvNum) = nId
nCrvNum = nCrvNum + 1
End Select
nId = EgtGetNextSelectedObj()
End While
' eseguo
If Not m_bLast Then
EgtCreateSurfTriMeshByExtrusion(m_Scene.GetDragGroup(), nCrvNum, nCrvIds, VtExtr,
EPS_STM_DRAG, REF_TY.GLOB)
Else
EgtCreateSurfTriMeshByRegionExtrusion(m_Scene.GetDragGroup(), nCrvNum, nCrvIds, VtExtr,
EPS_STM_DRAG, REF_TY.GLOB)
End If
EgtDraw()
End If
End Sub
@@ -3047,6 +3107,37 @@ Public Class Controller
EgtSplitCurveAtPoint(nId, m_ptLast.Loc(GDB_ID.GRID), REF_TY.GRID)
DisableCommandLog()
' reset stato scena
EgtDeselectObj(nId)
m_Scene.ResetStatus()
' aggiorno stato
m_nStep = 0
RaiseEvent UpdateUI(Me, False)
Case Else
m_nStep = 0
Return False
End Select
Return True
End Function
Private Function ProcessSplitCurve() As Boolean
Select Case m_nStep
Case 0
' imposto stato a numero di pezzi
m_nStep = 1
m_Scene.SetStatusNull()
' abilito dialogo
RaiseEvent PrepareInputBox("SPLIT", "Insert Pieces Number", "", False, False)
m_nInpType = IBT.TY_INTEGER
m_nLast = 2
SetInputBoxInteger(m_nLast)
Case 1
' eseguo spezzatura in parti
Dim nId As Integer = EgtGetLastSelectedObj()
EnableCommandLog()
EgtSplitCurve(nId, m_nLast)
DisableCommandLog()
' reset stato scena
EgtDeselectObj(nId)
m_Scene.ResetStatus()
' aggiorno stato
m_nStep = 0
+25 -4
View File
@@ -498,6 +498,12 @@ Structure Color3d
B = nBlue
A = nAlpha
End Sub
Sub New(ByRef colSou As Color3d)
R = colSou.R
G = colSou.G
B = colSou.B
A = colSou.A
End Sub
' Inizializzatori
Sub Setup(ByVal nRed As Integer, ByVal nGreen As Integer, ByVal nBlue As Integer, Optional ByVal nAlpha As Integer = 100)
R = nRed
@@ -535,7 +541,7 @@ Const EgtIntDll As String = "EgtInterfaceR32.dll"
'---------- General ------------------------------------------------------------
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
Public Function EgtInit(ByVal nDebug As Integer, ByVal sLogFile As String) As Boolean
Public Function EgtInit(ByVal nDebug As Integer, ByVal sLogFile As String, Optional ByVal sLogMsg As String = "") As Boolean
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
@@ -910,12 +916,23 @@ Public Function EgtCreatePolygonFromSide(ByVal nParentId As Integer, ByVal nNumS
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
Public Function EgtCreateSurfTriMeshByContour(ByVal nParentId As Integer, ByVal nCrvId As Integer, ByVal dLinTol As Double) As Integer
Public Function EgtCreateSurfTriMeshByFlatContour(ByVal nParentId As Integer, ByVal nCrvId As Integer, ByVal dLinTol As Double) As Integer
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
Public Function EgtCreateSurfTriMeshByExtrusion(ByVal nParentId As Integer, ByVal nCrvId As Integer, ByRef VtExtr As Vector3d,
ByVal bCapEnds As Boolean, ByVal dLinTol As Double, Optional ByVal nRefType As REF_TY = REF_TY.LOC) As Integer
Public Function EgtCreateSurfTriMeshByRegion(ByVal nParentId As Integer, ByVal nNumCrv As Integer, ByVal nCrvId() As Integer, ByVal dLinTol As Double) As Integer
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
Public Function EgtCreateSurfTriMeshByExtrusion(ByVal nParentId As Integer, ByVal nNumCrv As Integer, ByVal nCrvId() As Integer,
ByRef VtExtr As Vector3d, ByVal dLinTol As Double,
Optional ByVal nRefType As REF_TY = REF_TY.LOC) As Integer
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
Public Function EgtCreateSurfTriMeshByRegionExtrusion(ByVal nParentId As Integer, ByVal nNumCrv As Integer, ByVal nCrvId() As Integer,
ByRef VtExtr As Vector3d, ByVal dLinTol As Double,
Optional ByVal nRefType As REF_TY = REF_TY.LOC) As Integer
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
@@ -1018,6 +1035,10 @@ End Function
Public Function EgtTrimExtendCurveByLen(ByVal nId As Integer, ByVal dLen As Double, ByRef PtNear As Point3d, Optional ByVal nRefType As REF_TY = REF_TY.LOC) As Boolean
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
Public Function EgtSplitCurve(ByVal nId As Integer, ByVal nParts As Integer) As Boolean
End Function
<DllImport(EgtIntDll, CharSet:=CharSet.Unicode)>
Public Function EgtSplitCurveAtPoint(ByVal nId As Integer, ByRef PtOn As Point3d, Optional ByVal nRefType As REF_TY = REF_TY.LOC) As Boolean
End Function
+38 -30
View File
@@ -25,6 +25,7 @@ Partial Class Form1
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel()
Me.Scene1 = New TestEIn.Scene()
Me.TabControl1 = New System.Windows.Forms.TabControl()
Me.TabHome = New System.Windows.Forms.TabPage()
Me.btnInsert = New System.Windows.Forms.Button()
@@ -106,6 +107,7 @@ Partial Class Form1
Me.btnPoint = New System.Windows.Forms.Button()
Me.btnLine2P = New System.Windows.Forms.Button()
Me.TabConstruct = New System.Windows.Forms.TabPage()
Me.btnRevolve = New System.Windows.Forms.Button()
Me.btnRuled = New System.Windows.Forms.Button()
Me.btnScrew = New System.Windows.Forms.Button()
Me.btnExtrude = New System.Windows.Forms.Button()
@@ -154,8 +156,7 @@ Partial Class Form1
Me.ObjTreeTimer = New System.Windows.Forms.Timer(Me.components)
Me.ColorDialog1 = New System.Windows.Forms.ColorDialog()
Me.FormTimer = New System.Windows.Forms.Timer(Me.components)
Me.btnRevolve = New System.Windows.Forms.Button()
Me.Scene1 = New TestEIn.Scene()
Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components)
Me.TableLayoutPanel1.SuspendLayout()
Me.TabControl1.SuspendLayout()
Me.TabHome.SuspendLayout()
@@ -201,6 +202,17 @@ Partial Class Form1
Me.TableLayoutPanel1.Size = New System.Drawing.Size(1096, 641)
Me.TableLayoutPanel1.TabIndex = 0
'
'Scene1
'
Me.Scene1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
Me.Scene1.Cursor = System.Windows.Forms.Cursors.Default
Me.Scene1.Dock = System.Windows.Forms.DockStyle.Fill
Me.Scene1.Location = New System.Drawing.Point(89, 82)
Me.Scene1.Margin = New System.Windows.Forms.Padding(0)
Me.Scene1.Name = "Scene1"
Me.Scene1.Size = New System.Drawing.Size(787, 537)
Me.Scene1.TabIndex = 1
'
'TabControl1
'
Me.TableLayoutPanel1.SetColumnSpan(Me.TabControl1, 3)
@@ -1503,6 +1515,24 @@ Partial Class Form1
Me.TabConstruct.TabIndex = 4
Me.TabConstruct.Text = "Construct"
'
'btnRevolve
'
Me.btnRevolve.FlatAppearance.BorderColor = System.Drawing.SystemColors.Control
Me.btnRevolve.FlatAppearance.BorderSize = 0
Me.btnRevolve.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.Control
Me.btnRevolve.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.GradientInactiveCaption
Me.btnRevolve.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.btnRevolve.Image = CType(resources.GetObject("btnRevolve.Image"), System.Drawing.Image)
Me.btnRevolve.ImageAlign = System.Drawing.ContentAlignment.TopCenter
Me.btnRevolve.Location = New System.Drawing.Point(3, 96)
Me.btnRevolve.Margin = New System.Windows.Forms.Padding(0)
Me.btnRevolve.Name = "btnRevolve"
Me.btnRevolve.Size = New System.Drawing.Size(56, 48)
Me.btnRevolve.TabIndex = 37
Me.btnRevolve.Text = "Revolve"
Me.btnRevolve.TextAlign = System.Drawing.ContentAlignment.BottomCenter
Me.btnRevolve.UseVisualStyleBackColor = False
'
'btnRuled
'
Me.btnRuled.FlatAppearance.BorderColor = System.Drawing.SystemColors.Control
@@ -1608,7 +1638,7 @@ Partial Class Form1
Me.btnInvertSurf.Name = "btnInvertSurf"
Me.btnInvertSurf.Size = New System.Drawing.Size(56, 48)
Me.btnInvertSurf.TabIndex = 41
Me.btnInvertSurf.Text = "Invert S"
Me.btnInvertSurf.Text = "Flip Surf"
Me.btnInvertSurf.TextAlign = System.Drawing.ContentAlignment.BottomCenter
Me.btnInvertSurf.UseVisualStyleBackColor = False
'
@@ -2083,34 +2113,11 @@ Partial Class Form1
'
Me.FormTimer.Interval = 50
'
'btnRevolve
'ToolTip1
'
Me.btnRevolve.FlatAppearance.BorderColor = System.Drawing.SystemColors.Control
Me.btnRevolve.FlatAppearance.BorderSize = 0
Me.btnRevolve.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.Control
Me.btnRevolve.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.GradientInactiveCaption
Me.btnRevolve.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.btnRevolve.Image = CType(resources.GetObject("btnRevolve.Image"), System.Drawing.Image)
Me.btnRevolve.ImageAlign = System.Drawing.ContentAlignment.TopCenter
Me.btnRevolve.Location = New System.Drawing.Point(3, 96)
Me.btnRevolve.Margin = New System.Windows.Forms.Padding(0)
Me.btnRevolve.Name = "btnRevolve"
Me.btnRevolve.Size = New System.Drawing.Size(56, 48)
Me.btnRevolve.TabIndex = 37
Me.btnRevolve.Text = "Revolve"
Me.btnRevolve.TextAlign = System.Drawing.ContentAlignment.BottomCenter
Me.btnRevolve.UseVisualStyleBackColor = False
'
'Scene1
'
Me.Scene1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
Me.Scene1.Cursor = System.Windows.Forms.Cursors.Default
Me.Scene1.Dock = System.Windows.Forms.DockStyle.Fill
Me.Scene1.Location = New System.Drawing.Point(89, 82)
Me.Scene1.Margin = New System.Windows.Forms.Padding(0)
Me.Scene1.Name = "Scene1"
Me.Scene1.Size = New System.Drawing.Size(787, 537)
Me.Scene1.TabIndex = 1
Me.ToolTip1.ShowAlways = True
Me.ToolTip1.StripAmpersands = True
Me.ToolTip1.UseFading = False
'
'Form1
'
@@ -2290,5 +2297,6 @@ End Sub
Friend WithEvents btnPolygonSide As System.Windows.Forms.Button
Friend WithEvents tsStatusReg As System.Windows.Forms.ToolStripStatusLabel
Friend WithEvents btnRevolve As System.Windows.Forms.Button
Friend WithEvents ToolTip1 As System.Windows.Forms.ToolTip
End Class
+81 -77
View File
@@ -871,7 +871,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC4
DQAAAk1TRnQBSQFMAgEBDgEAAeABDgHgAQ4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
DQAAAk1TRnQBSQFMAgEBDgEAARgBDwEYAQ8BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAAUADAAEBAQABCAYAARAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -939,45 +939,45 @@
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADU
CAAAAk1TRnQBSQFMAgEBAgIAAQYBAAEGARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm
AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ
AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm
AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz
AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm
AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm
AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA
ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm
AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm
ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm
AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA
AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ
AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz
AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/
AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA
AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM
AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm
ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ
AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/
ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM
ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm
AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM
AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA
AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA
ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7
Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/+EAAL/AQAB/wIHAf8BAAP/
CAAB/wEHAbwB/ykAA/8B8QLyAfEE/wgAAfEC8gHxJgAB/wIAA/8B8gHxAfIB8wT/BwAB/wHxAhoB8gH/
JQAB/wIAAv8BAAHzAbwB8AH0BP8HAAH/AZoCMgEaAf8lAAH/AgAB/wEAAf8B8gLwAfIB/wEAAv8HAAH/
AXoCUwGaAf8lAAH/AgAB/wEAAfQB8QHyAvEB9AEAAv8HAAHzAVMBegFZAVMB8yUAAf8DAAH/AfIC8wLy
AfAB/wEAAf8GAAH/AVkDegFZATIB/yQAAf8DAAH0AfMB9ALzAvIB9AEAAf8GAAEaApoDegFZARokAAH/
AwAF9ALzAfQBAAH/BgABGgR6ApoBGiQAAf8DAAX/AvQB/wEAAf8GAAH/BnoB/yQAAf8CAAv/BgAB/wEa
AZoCegGaARsB/yQAAf8CAAH/AQAG/wEAAv8HAAL/AvQC/yUAAf8/AAH/PwABQgFNAT4HAAE+AwABKAMA
AUADAAEQAwABAQEAAQEFAAGAFwAD/wEABP8EAAT/BAAB5AEjAfwBPwQAAeABAwH8AT8EAAFgAQMB+AEf
BAABZAEDAfgBHwQAAWgBEwH4AR8EAAFoARMB+AEfBAABcAELAfABDwQAAXABCwHwAQ8EAAFwAQsB8AEP
BAABcAELAfABDwQAAWABAwHwAQ8EAAFoARMB+AEfBAABfwP/BAABfwP/BAAL
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADW
CAAAAk1TRnQBSQFMAgEBAgEAATgBBgE4AQYBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/4QAAv8BAAH/AgcB/wEA
A/8IAAH/AQcBvAH/KQAD/wHxAvIB8QT/CAAB8QLyAfEmAAH/AgAD/wHyAfEB8gHzBP8HAAH/AfECGgHy
Af8lAAH/AgAC/wEAAfMBvAHwAfQE/wcAAf8BmgIyARoB/yUAAf8CAAH/AQAB/wHyAvAB8gH/AQAC/wcA
Af8BegJTAZoB/yUAAf8CAAH/AQAB9AHxAfIC8QH0AQAC/wcAAfMBUwF6AVkBUwHzJQAB/wMAAf8B8gLz
AvIB8AH/AQAB/wYAAf8BWQN6AVkBMgH/JAAB/wMAAfQB8wH0AvMC8gH0AQAB/wYAARoCmgN6AVkBGiQA
Af8DAAX0AvMB9AEAAf8GAAEaBHoCmgEaJAAB/wMABf8C9AH/AQAB/wYAAf8GegH/JAAB/wIAC/8GAAH/
ARoBmgJ6AZoBGwH/JAAB/wIAAf8BAAb/AQAC/wcAAv8C9AL/JQAB/z8AAf8/AAFCAU0BPgcAAT4DAAEo
AwABQAMAARADAAEBAQABAQUAAYAXAAP/AQAE/wQABP8EAAHkASMB/AE/BAAB4AEDAfwBPwQAAWABAwH4
AR8EAAFkAQMB+AEfBAABaAETAfgBHwQAAWgBEwH4AR8EAAFwAQsB8AEPBAABcAELAfABDwQAAXABCwHw
AQ8EAAFwAQsB8AEPBAABYAEDAfABDwQAAWgBEwH4AR8EAAF/A/8EAAF/A/8EAAs=
</value>
</data>
<data name="btnPolygonSide.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@@ -1101,23 +1101,23 @@
</data>
<data name="btnRevolve.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
BcKd4KYRgNnpAAAAAElFTkSuQmCC
</value>
</data>
<data name="btnRuled.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@@ -1144,21 +1144,21 @@
</data>
<data name="btnScrew.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
yn8P4S+2trph1iUvVQAAAABJRU5ErkJggg==
</value>
</data>
<data name="btnExtrude.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@@ -1233,11 +1233,12 @@
<data name="btnBreakCurve.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
xAAADsQBlSsOGwAAAAd0SU1FB94LCwoGNUlPh5wAAADtSURBVFhHxZMNDoIwFMY4mKf1dN5iUiPmObvx
N54mTaSQ9CPAVEr5KyozUZmJypHMv9sMf+ZDOW9yFDGePqCOc6zXmTwLsRBuxkGlMd0fZaE+FyEWwtCM
g0ojDmiNIBbC0I2DSqMeUI8gFsKwGgeVLVojiIUwbIqDyh424mgcVK7RGbErDiq3YCPqa7agcg3u9HXH
A0ao7PGJL5wcobLFT/z9zM+MUGkQC2H4euGOjlBZQyyEQd/2SwYQC2HofmpDBxALYdj9na+hEoiF8CVx
cJkUB5dJcXCZFAeVmajMRGUmKjNRmYnKTFTmUaYn/UkKulyAFpwAAAAASUVORK5CYII=
xAAADsQBlSsOGwAAAAd0SU1FB98CBwoZH9M0TrgAAAEdSURBVFhHxZOLEcIgEAVTmMWlFquzC7zF4Jzk
AfkwJzOr5AHui8YlpfRXZBiJDCOR4UxsPAwmdinWVTgLLw8vUMu5lvtUeBdkTtyUgwwVy/OVCvWaB5kT
Q1MOMlT4Aq0SyJwYunKQoaIuUJdA5sQwlIMMW7RKIHNiOCQHGfZQJa7KQYYjOiVOyUGGR1Al6j1HkOEI
7jTf8YQSMuzxlRdulpBhi518+83vlJChApkTw88Dd7WEDGuQOTHIp/1oAX9+t1jDZoNJoftXGxXgvLGW
z9lt8GybmRS68hGcN9ZtnkvIjZAXJ8rBBlJfYG1tnC4v2PgWyO9+sWCDl8I0Odg4VWCqHGx8vvpegUhk
GIkMI5FhJDKMRIaRyDCOtLwBKHXaEPcPyGkAAAAASUVORK5CYII=
</value>
</data>
<data name="btnChangeColor.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@@ -1439,6 +1440,9 @@
<metadata name="FormTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>568, 14</value>
</metadata>
<metadata name="ToolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 53</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>43</value>
</metadata>
+120 -25
View File
@@ -59,28 +59,12 @@ Public Class Form1
' Impostazione path Ini file
m_sIniFile = m_sDataRoot & "\TestEIn.ini"
' Verifico indice di istanza
m_objMutex = New Mutex(False, "Global\TestEIn")
If m_objMutex.WaitOne(0, False) Then
' Prima istanza
m_nInstance = 1
' Aggiorno stato istanze attive
WritePrivateProfileString("General", "Instances", m_nInstance, m_sIniFile)
Else
' Cerco il primo indice di istanza libero (max 32)
Dim nTmp As Integer = GetPrivateProfileInt("General", "Instances", 0, m_sIniFile)
m_nInstance = 1
Dim nMask As Integer = 1
While (nTmp And nMask) <> 0 And m_nInstance < 32
m_nInstance += 1
nMask *= 2
End While
' Aggiorno stato istanze attive
nTmp += (1 << (m_nInstance - 1))
WritePrivateProfileString("General", "Instances", nTmp, m_sIniFile)
End If
ManageIstance()
' Inizializzazione generale di EgtInterface
Dim sIniFile As String = m_sDataRoot & "\EInGenlog" & m_nInstance.ToString() & ".txt"
EgtInit(0, sIniFile)
Dim sLogMsg As String = "User " & SystemInformation.UserName & "\" & SystemInformation.ComputerName & " (" & GetInstance() & ")" & vbLf &
My.Application.Info.Description.ToString() & " ver. " & My.Application.Info.Version.ToString()
EgtInit(0, sIniFile, sLogMsg)
' imposto chiave di protezione
Dim sKey As String = String.Empty
GetPrivateProfileString("General", "Key", "", sKey, m_sIniFile)
@@ -105,7 +89,7 @@ Public Class Form1
' imposto colori sfondo
Dim BackTopColor As New Color3d(192, 192, 192)
GetPrivateProfileColor("Scene", "BackTop", BackTopColor, m_sIniFile)
Dim BackBotColor As New Color3d(192, 192, 192)
Dim BackBotColor As New Color3d(BackTopColor)
GetPrivateProfileColor("Scene", "BackBottom", BackBotColor, m_sIniFile)
Scene1.SetViewBackground(BackTopColor, BackBotColor)
' imposto colore di evidenziazione
@@ -208,6 +192,65 @@ Public Class Form1
End If
' Apro progetto vuoto
m_Controller.NewProject(True)
' Impostazione ToolTips
SetToolTips()
End Sub
Private Sub ManageIstance()
Dim bCreated As Boolean
Try
m_objMutex = New Mutex(False, "Global\TestEIn", bCreated)
Catch
bCreated = False
End Try
If bCreated Then
' Prima istanza
m_nInstance = 1
' Aggiorno stato istanze attive
WritePrivateProfileString("General", "Instances", m_nInstance, m_sIniFile)
Else
' Leggo il massimo numero di istanze ammesse
Dim nMaxInst As Integer = GetPrivateProfileInt("General", "MaxInstances", 1, m_sIniFile)
nMaxInst = Max(1, Min(nMaxInst, 32))
' Cerco il primo indice di istanza libero (max 32)
Dim nTmp As Integer = GetPrivateProfileInt("General", "Instances", 0, m_sIniFile)
m_nInstance = 1
Dim nMask As Integer = 1
While (nTmp And nMask) <> 0 And m_nInstance <= m_nInstance
m_nInstance += 1
nMask *= 2
End While
' Se l'indice supera il massimo
If m_nInstance > nMaxInst Then
' porto in primo piano la prima istanza
Dim bFound As Boolean = False
' processi del programma a 32 bit
Dim localProc As Process() = Process.GetProcessesByName("TestEInR32")
For Each p As Process In localProc
If p.Id <> Process.GetCurrentProcess().Id Then
bFound = True
ShowWindow(p.MainWindowHandle, SW.SHOWMAXIMIZED)
Exit For
End If
Next
' se non trovati processi a 32 bit provo a 64 bit
If Not bFound Then
localProc = Process.GetProcessesByName("TestEInR64")
For Each p As Process In localProc
If p.Id <> Process.GetCurrentProcess().Id Then
bFound = True
ShowWindow(p.MainWindowHandle, SW.SHOWMAXIMIZED)
Exit For
End If
Next
End If
' esco dal programma
End
End If
' Aggiorno stato istanze attive
nTmp += (1 << (m_nInstance - 1))
WritePrivateProfileString("General", "Instances", nTmp, m_sIniFile)
End If
End Sub
Private Sub Form1_Shown(sender As System.Object, e As EventArgs) Handles MyBase.Shown
@@ -254,6 +297,10 @@ Public Class Form1
EgtExit()
' Rilascio mutex
m_objMutex.Close()
' Aggiorno istanze usate
Dim nTmp As Integer = GetPrivateProfileInt("General", "Instances", 0, m_sIniFile)
nTmp -= (1 << (m_nInstance - 1))
WritePrivateProfileString("General", "Instances", nTmp, m_sIniFile)
' Disabilito gestore Idle
RemoveHandler Application.Idle, AddressOf Application_Idle
End Sub
@@ -466,6 +513,44 @@ Public Class Form1
btnOffset.Enabled = bSelOk
End Sub
Private Sub SetToolTips()
' Draw
ToolTip1.SetToolTip(btnPoint, "Point")
ToolTip1.SetToolTip(btnLine2P, "Line : 2 points")
ToolTip1.SetToolTip(btnLinePDL, "Line : point, direction, length")
ToolTip1.SetToolTip(btnCircleCP, "Circle : center, point")
ToolTip1.SetToolTip(btnCircleCD, "Circle : center, diameter")
ToolTip1.SetToolTip(btnArcCSE, "Arc : center, start, end")
ToolTip1.SetToolTip(btnArc3P, "Arc : 3 points")
ToolTip1.SetToolTip(btnArcPDP, "Arc : start, direction, end")
ToolTip1.SetToolTip(btnRectangle2P, "Rectangle : 2 points")
ToolTip1.SetToolTip(btnPolygonSide, "Polygon : side with 2 points")
ToolTip1.SetToolTip(btnText, "Text" & vbCrLf & "Advanced Text (Shift)")
' Construct
ToolTip1.SetToolTip(btnPlane, "Surface : between planar curves")
ToolTip1.SetToolTip(btnExtrude, "Surface : curve extrusion")
ToolTip1.SetToolTip(btnRevolve, "Surface : curve revolution")
ToolTip1.SetToolTip(btnScrew, "Surface : curve screwing")
ToolTip1.SetToolTip(btnRuled, "Surface : ruled between 2 curves")
' Edit
ToolTip1.SetToolTip(btnDelete, "Delete Objects")
ToolTip1.SetToolTip(btnChangeLayer, "Change Object Layer to Current")
ToolTip1.SetToolTip(btnChangeColor, "Change Color" & vbCrLf & "Remove Color (Shift)")
ToolTip1.SetToolTip(btnInvertCurve, "Invert Curve")
ToolTip1.SetToolTip(btnExtendCurve, "Trim or Extend Curve")
ToolTip1.SetToolTip(btnBreakCurve, "Break Curve" & vbCrLf & "Split Curve in Pieces (Shift)")
ToolTip1.SetToolTip(btnJoinCurve, "Join Curves")
ToolTip1.SetToolTip(btnExplodeCurve, "Explode Text or Curve in Components")
ToolTip1.SetToolTip(btnSetCurveTh, "Set Curve Thickness and Extrusion")
ToolTip1.SetToolTip(btnInvertSurf, "Flip Surface Outside")
' Transform
ToolTip1.SetToolTip(btnMove, "Object Move")
ToolTip1.SetToolTip(btnRotate, "Object Rotate" & vbCrLf & "3D Object Rotate (Shift)")
ToolTip1.SetToolTip(btnMirror, "Object Mirror" & vbCrLf & "3D Object Mirror (Shift)")
ToolTip1.SetToolTip(btnScale, "Object Scale" & vbCrLf & "3D Object Scale (Shift)")
ToolTip1.SetToolTip(btnOffset, "Curve Offset")
End Sub
'-------------------------------- Buttons --------------------------------------------------------
Private Sub btnNew_Click(sender As System.Object, e As System.EventArgs) Handles btnNew.Click
@@ -493,14 +578,20 @@ Public Class Form1
Dim sFile As String = String.Empty
GetPrivateProfileString("General", "LastNgeDir", "", sFile, m_sIniFile)
sFile.TrimEnd("\"c)
sFile += "\New.nge"
sFile += "\New" & m_nInstance.ToString() & ".nge"
m_Controller.SaveAsProject(sFile, nType)
End If
End Sub
Private Sub btnSaveAs_Click(sender As System.Object, e As System.EventArgs) Handles btnSaveAs.Click
Dim nType As NGE = GetPrivateProfileInt("GeomDB", "SaveType", NGE.CMPTEXT, m_sIniFile)
m_Controller.SaveAsProject(m_Controller.GetCurrFile(), nType)
Dim sFile As String = m_Controller.GetCurrFile()
If String.IsNullOrWhiteSpace(sFile) Then
GetPrivateProfileString("General", "LastNgeDir", "", sFile, m_sIniFile)
sFile.TrimEnd("\"c)
sFile += "\New" & m_nInstance.ToString() & ".nge"
End If
m_Controller.SaveAsProject(sFile, nType)
End Sub
Private Sub btnImport_Click(sender As System.Object, e As System.EventArgs) Handles btnImport.Click
@@ -762,7 +853,11 @@ Public Class Form1
End Sub
Private Sub btnBreakCurve_Click(sender As System.Object, e As System.EventArgs) Handles btnBreakCurve.Click
m_Controller.ExecuteCommand(CMD.BREAKCURVE)
If (ModifierKeys And Keys.Shift) <> Keys.Shift Then
m_Controller.ExecuteCommand(CMD.BREAKCURVE)
Else
m_Controller.ExecuteCommand(CMD.SPLITCURVE)
End If
End Sub
Private Sub btnJoinCurve_Click(sender As System.Object, e As System.EventArgs) Handles btnJoinCurve.Click
@@ -1279,7 +1374,7 @@ Public Class Form1
' nome file
Dim sTitle As String = m_Controller.GetCurrFile()
If String.IsNullOrEmpty(sTitle) Then
sTitle = "New"
sTitle = "New" & m_nInstance.ToString()
End If
' indicazione di modificato
If m_Controller.GetModified() Then
+11
View File
@@ -145,4 +145,15 @@ Public Const MF_SEPARATOR As UInt32 = &H800
Public Const WM_SYSCOMMAND As UInt32 = &H112
Public Const IDM_ABOUTBOX As UInt32 = &H10
'-------------------------------- Windows --------------------------------------------------------
<DllImport("user32.dll")>
Public Function ShowWindow(ByVal hWnd As IntPtr, ByVal nCmdShow As Integer) As Boolean
End Function
Public Enum SW As Integer
HIDE = 0
SHOWMAXIMIZED = 3
RESTORE = 9
End Enum
End Module
+6 -3
View File
@@ -11,17 +11,20 @@ Imports System.Runtime.InteropServices
#If PLATFORM = "x64" Then
#If DEBUG Then
<Assembly: AssemblyTitle("TestEIn Debug 64 bit")>
<Assembly: AssemblyDescription("TestEInD64.exe")>
#Else
<Assembly: AssemblyTitle("TestEIn Release 64 bit")>
<Assembly: AssemblyDescription("TestEInR64.exe")>
#End If
#Else
#If DEBUG Then
<Assembly: AssemblyTitle("TestEIn Debug 32 bit")>
<Assembly: AssemblyDescription("TestEInD32.exe")>
#Else
<Assembly: AssemblyTitle("TestEIn Release 32 bit")>
<Assembly: AssemblyDescription("TestEInR32.exe")>
#End If
#End If
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("EgalTech s.r.l.")>
<Assembly: AssemblyProduct("TestEIn")>
<Assembly: AssemblyCopyright("Copyright © 2014-2015 by EgalTech s.r.l.")>
@@ -43,5 +46,5 @@ Imports System.Runtime.InteropServices
' utilizzando l'asterisco (*) come descritto di seguito:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.6.2.1")>
<Assembly: AssemblyFileVersion("1.6.2.1")>
<Assembly: AssemblyVersion("1.6.2.2")>
<Assembly: AssemblyFileVersion("1.6.2.2")>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 B

After

Width:  |  Height:  |  Size: 358 B

+4 -2
View File
@@ -1,6 +1,8 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.31101.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "TestEIn", "TestEIn.vbproj", "{579B15B3-63F6-4805-B293-7B8FB6CCD17C}"
EndProject
Global