- aggiunta la funzione per la creazione di tutit i solidi mancanti.
- miglirata la funzione per il refresh del partSolid. - migliorata la gestione della creazione dei template.
This commit is contained in:
@@ -11,6 +11,16 @@ Public Class ParametricCompoVM
|
||||
Friend ReadOnly bFileExsist As Boolean = False
|
||||
Private m_nVeinCtx As Integer
|
||||
|
||||
Private m_nPartId As Integer = GDB_ID.NULL
|
||||
Public Property nPartId As Integer
|
||||
Get
|
||||
Return m_nPartId
|
||||
End Get
|
||||
Set(value As Integer)
|
||||
m_nPartId = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
#End Region ' Fields & Properties
|
||||
|
||||
#Region "CONSTRUCTOR"
|
||||
@@ -88,6 +98,8 @@ Public Class ParametricCompoVM
|
||||
EgtLuaSetGlobNumVar("TOOL.nId", nPart)
|
||||
EgtLuaCallFunction("TOOL.RenameNewPart")
|
||||
EgtLuaCallFunction("TOOL.ClearVariables")
|
||||
|
||||
nPartId = EgtGetLastPart()
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Conferma()
|
||||
@@ -98,7 +110,8 @@ Public Class ParametricCompoVM
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Annulla()
|
||||
EgtErase(EgtGetLastPart())
|
||||
Dim PartSolidSel As PartSolidM = GetPartSolid(nPartId)
|
||||
SolidManagerM.Delete(nPartId)
|
||||
EgtDraw()
|
||||
Close()
|
||||
End Sub
|
||||
@@ -111,6 +124,10 @@ Public Class ParametricCompoVM
|
||||
|
||||
Private Sub Close()
|
||||
Map.refSceneButtonVM.RemoveUC(Map.refSceneButtonVM.m_ParametricCompoUC)
|
||||
SolidManagerM.RefreshPartSolid(nPartId)
|
||||
' debug
|
||||
EgtSaveFile("D:\\Temp\\marmo\\Vein3D\\template.nge", 2)
|
||||
' debug
|
||||
End Sub
|
||||
|
||||
Private Function NameTypeValueFromLua(nInd As Integer, ByRef Param As GenericParam) As Boolean
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
Public Const EGT_SEL_TYPE As String = "SelType"
|
||||
Public Const EGT_IMPORT_LOOP As String = "ImportLoop"
|
||||
Public Const EGT_CREATE_SOLID_LOOP As String = "CreateSolidFromLoop"
|
||||
Public Const EGT_CREATE_ALL_SOLIDS As String = "CreateAllSolids"
|
||||
Public Const EGT_MOVE As String = "Move"
|
||||
Public Const EGT_ADD_ALZ As String = "AddSplashTop"
|
||||
Public Const EGT_ADD_FRO As String = "AddWaterfall"
|
||||
|
||||
@@ -483,6 +483,7 @@ Module SceneCmd
|
||||
Map.refSceneButtonVM.m_ParametricCompoUC.DataContext = LocalParametricCompo
|
||||
Map.refSceneButtonVM.LoadUC(Map.refSceneButtonVM.m_ParametricCompoUC)
|
||||
bNewParametricExsists = True
|
||||
SolidManagerM.CreatePartSolid()
|
||||
End If
|
||||
End If
|
||||
Return bNewParametricExsists
|
||||
@@ -521,6 +522,8 @@ Module SceneCmd
|
||||
ImportLoop()
|
||||
Case EGT_CREATE_SOLID_LOOP
|
||||
SolidManagerM.CreateSolidFromLoops(Map.refSceneHostVM.m_nIdPart)
|
||||
Case EGT_CREATE_ALL_SOLIDS
|
||||
SolidManagerM.CreateAllSolids()
|
||||
Case EGT_ADD_PANEL
|
||||
If IsNothing(Map.refSceneButtonVM.m_NewPanelUC) Then Map.refSceneButtonVM.m_NewPanelUC = New SceneUserControlV
|
||||
Map.refSceneButtonVM.m_NewPanelUC.DataContext = New NewPanelVM()
|
||||
|
||||
+52
-13
@@ -13,6 +13,13 @@ Module SolidManagerM
|
||||
|
||||
#Region "METHODS"
|
||||
|
||||
Public Function ExistsPartSolid(nId As Integer) As PartSolidM
|
||||
' cerco nella lista dei part quello con id uguale a nId, se non lo trovo allora nId era riferito ad un Part Solid
|
||||
Dim PartSolid As PartSolidM = m_PartSolidList.FirstOrDefault(Function(x) x.PartId = nId)
|
||||
If IsNothing(PartSolid) Then PartSolid = m_PartSolidList.FirstOrDefault(Function(x) x.PartSolidId = nId)
|
||||
Return PartSolid
|
||||
End Function
|
||||
|
||||
Public Function GetPartSolid(nId As Integer) As PartSolidM
|
||||
' se la lista non esiste la creo
|
||||
If m_PartSolidList.Count = 0 Then
|
||||
@@ -20,9 +27,8 @@ Module SolidManagerM
|
||||
End If
|
||||
' se l'id è negativo allora sto applicando un disaccoppiamento e mi basta rendere l'id positivo
|
||||
If nId < 0 Then nId *= -1
|
||||
' cerco nella lista dei part quello con id uguale a nId, se non lo trovo allora nId era riferito ad un Part Solid
|
||||
Dim PartSolid As PartSolidM = m_PartSolidList.FirstOrDefault(Function(x) x.PartId = nId)
|
||||
If IsNothing(PartSolid) Then PartSolid = m_PartSolidList.FirstOrDefault(Function(x) x.PartSolidId = nId)
|
||||
' cerco se è già presente nella lista il corrispondete PartSolid
|
||||
Dim PartSolid As PartSolidM = ExistsPartSolid(nId)
|
||||
' se non l'ho trovato allora lo creo
|
||||
If IsNothing(PartSolid) Then AddPartSolid(nId, PartSolid)
|
||||
|
||||
@@ -39,12 +45,15 @@ Module SolidManagerM
|
||||
End Function
|
||||
|
||||
Public Sub RefreshPartSolid(nPartId As Integer)
|
||||
Dim PartSolidSel As PartSolidM = GetPartSolid(nPartId)
|
||||
' rimuovo il part solid associato a questo part
|
||||
PartSolidSel.DeselectPart()
|
||||
m_PartSolidList.Remove(PartSolidSel)
|
||||
Dim PartSolidSel As PartSolidM = ExistsPartSolid(nPartId)
|
||||
If Not IsNothing(PartSolidSel) Then
|
||||
' rimuovo il part solid associato a questo part
|
||||
PartSolidSel.DeselectPart()
|
||||
m_PartSolidList.Remove(PartSolidSel)
|
||||
End If
|
||||
' lo ricreo
|
||||
AddPartSolid(nPartId)
|
||||
AddPartSolid(nPartId, PartSolidSel)
|
||||
PartSolidSel.DeselectPart()
|
||||
End Sub
|
||||
|
||||
Public Sub ClearPartSolidList()
|
||||
@@ -90,13 +99,18 @@ Module SolidManagerM
|
||||
nInLay = EgtGetNextName(nInLay, "InLoop")
|
||||
End While
|
||||
|
||||
' creo la superficie piana
|
||||
Dim nRegLay As Integer = EgtCreateGroup(nPart)
|
||||
EgtSetName(nRegLay, "Region")
|
||||
EgtCreateSurfFlatRegion(nRegLay, nLoops.ToArray())
|
||||
' creo la superficie piana, se non è già presente
|
||||
Dim nRegLay As Integer = EgtGetFirstNameInGroup(nPart, "Region")
|
||||
If nRegLay = GDB_ID.NULL Then
|
||||
nRegLay = EgtCreateGroup(nPart)
|
||||
EgtSetName(nRegLay, "Region")
|
||||
EgtCreateSurfFlatRegion(nRegLay, nLoops.ToArray())
|
||||
End If
|
||||
' splitto le compo nei lati singoli
|
||||
For Each nLoopId In nLoops
|
||||
EgtLuaExecLine("TOOL.ExplodeAndNameEdges(" & nLoopId.ToString & "," & "false" & ")")
|
||||
If EgtGetType(nLoopId) = GDB_TY.CRV_COMPO Then
|
||||
EgtLuaExecLine("TOOL.ExplodeAndNameEdges(" & nLoopId.ToString & "," & "false" & ")")
|
||||
End If
|
||||
Next
|
||||
|
||||
' Assegno valori ai parametri per lua (appartengono alla tabella SLD)
|
||||
@@ -114,6 +128,31 @@ Module SolidManagerM
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Sub CreateAllSolids()
|
||||
' controllo se tutti i Part nel .vme hanno un corrispettiveo nella lista dei PartSolid, sennò la aggiorno
|
||||
EgtSetCurrentContext(m_nVeinCtx)
|
||||
Dim nPart As Integer = EgtGetFirstPart()
|
||||
|
||||
Dim dThick As Double = 20
|
||||
EgtSetCurrentContext(m_nVeinCtx)
|
||||
Dim IdFP As Integer = EgtGetFirstPart()
|
||||
While IdFP <> GDB_ID.NULL
|
||||
Dim bImport As Boolean = False
|
||||
EgtGetInfo(IdFP, "Import", bImport)
|
||||
Dim sName As String = String.Empty
|
||||
EgtGetName(IdFP, sName)
|
||||
' se il part non è un solido o una terna, creo il solido corrispondente, se non è già presente
|
||||
If Not bImport And sName <> "SOLID" And sName <> "Terna" Then
|
||||
CreateSolidFromLoops(IdFP)
|
||||
End If
|
||||
IdFP = EgtGetNextPart(IdFP)
|
||||
End While
|
||||
|
||||
' aggiorno la lista dei part solid
|
||||
CreatePartSolid()
|
||||
EgtDraw()
|
||||
End Sub
|
||||
|
||||
Public Sub UpdatePairInfo(nId1 As Integer, Optional nId2 As Integer = GDB_ID.NULL)
|
||||
If EgtLuaSetGlobIntVar("ASS.nPartId", nId1) Then AssLog("ASS.nPartId = " & nId1.ToString)
|
||||
If EgtLuaSetGlobIntVar("ASS.nPartToPair", nId2) Then AssLog("ASS.nPartToPair = " & nId2.ToString)
|
||||
|
||||
Reference in New Issue
Block a user