Files
Dario Sassi b1b4fe5c42 OmagCUT :
- riordinato direttorio con cartelle
- sistemazioni varie per lucidature e svuotature.
2020-02-21 11:07:21 +00:00

69 lines
2.9 KiB
VB.net

Imports EgtUILib
Module GeomCalc
Public Function GetRegionOutLoop(nRegId As Integer, nDestGrpId As Integer) As Integer
Dim nCount As Integer = 0
Dim nOutId As Integer = EgtExtractSurfFrChunkLoops(nRegId, 0, nDestGrpId, nCount)
If nOutId <> GDB_ID.NULL Then
For nId As Integer = nOutId + 1 To nOutId + nCount - 1
EgtErase(nId)
Next
End If
Return nOutId
End Function
Public Function CreateSolidFromRegion(nRegId As Integer, vtExtr As Vector3d, nDestGrpId As Integer) As Integer
Dim nOutId As Integer = GetRegionOutLoop(nRegId, nDestGrpId)
If nOutId = GDB_ID.NULL Then Return GDB_ID.NULL
Dim nSolId As Integer = EgtCreateSurfTmByRegionExtrusion(nDestGrpId, 1, {nOutId}, vtExtr,
100 * EPS_SMALL, GDB_RT.GLOB)
EgtErase(nOutId)
Return nSolId
End Function
Friend Function UpdateSolidForDrip(nPartId As Integer) As Boolean
' se non ci sono lavorazioni da sotto nel pezzo si esce
If EgtGetGroupObjs(EgtGetFirstNameInGroup(nPartId, NAME_DRIPCUT)) = 0 AndAlso
EgtGetGroupObjs(EgtGetFirstNameInGroup(nPartId, NAME_UNDERDRILL)) = 0 Then Return True
' Recupero lo spessore del grezzo
Dim dThick As Double = GetRawHeight()
' Recupero layer Regione
Dim nGrpRegId As Integer = EgtGetFirstNameInGroup(nPartId, NAME_REGION)
' Elimino eventuale vecchio solido
EgtErase(EgtGetFirstNameInGroup(nGrpRegId, NAME_DRIP_SOLID))
' Recupero la regione del pezzo
Dim nRegId As Integer = EgtGetFirstInGroup(nGrpRegId)
While nRegId <> GDB_ID.NULL
If EgtGetType(nRegId) = GDB_TY.SRF_FRGN Then Exit While
nRegId = EgtGetNext(nRegId)
End While
' Ne derivo il solido di estrusione
Dim nSolId As Integer = CreateSolidFromRegion(nRegId, -dThick * Vector3d.Z_AX(), nGrpRegId)
EgtSetName(nSolId, NAME_DRIP_SOLID)
EgtSetColor(nSolId, New Color3d(0, 255, 255, 25))
EgtSetStatus(nSolId, GDB_ST.OFF)
Return nSolId <> GDB_ID.NULL
End Function
Friend Function EraseSolidForDrip(nPartId As Integer) As Boolean
' Recupero layer Regione
Dim nGrpRegId As Integer = EgtGetFirstNameInGroup(nPartId, NAME_REGION)
' Elimino eventuale vecchio solido
EgtErase(EgtGetFirstNameInGroup(nGrpRegId, NAME_DRIP_SOLID))
Return True
End Function
Friend Function GetPartArea( nPartid As Integer) As Double
Dim nRegId As Integer = EgtGetFirstNameInGroup( nPartId, NAME_REGION)
Dim nSurfId As Integer = EgtGetFirstInGroup( nRegId)
While nSurfId <> GDB_ID.NULL and EgtGetType( nSurfId) <> GDB_TY.SRF_FRGN
nSurfId = EgtGetNext( nSurfId)
End While
Dim dArea As Double = 0
EgtSurfFrGrossArea( nSurfId, dArea)
Return dArea
End Function
End Module