f983950b0b
- gestione definizione fori da sotto da componenti e da import.
58 lines
2.4 KiB
VB.net
58 lines
2.4 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
|
|
|
|
End Module
|