PublicFunction CurrentOutlineCustom() AsDouble() Dim selectionOptions As IpfcSelectionOptions Dim selections As CpfcSelections Dim coord As IpfcCoordSystem Try MessageBox.Show("请在模型图中选择一个坐标系用以计算。") selectionOptions = (New CCpfcSelectionOptions).Create("csys") selectionOptions.MaxNumSels = 1 selections = asyncConnection.Session.Select(selectionOptions, Nothing) If selections.Count > 0Then coord = CType(selections.Item(0).SelItem, IpfcCoordSystem) Return _CurrentOutlineCustom(coord.CoordSys) EndIf Catch ReturnNothing EndTry ReturnNothing EndFunction
PrivateFunction _CurrentOutlineCustom(ByVal trf As IpfcTransform3D) AsDouble() Dim solid As IpfcSolid Dim outline(3) AsDouble Dim outline3d As IpfcOutline3D Dim excludeTypes As IpfcModelItemTypes
excludeTypes = New CpfcModelItemTypes excludeTypes.Append(EpfcModelItemType.EpfcITEM_AXIS) excludeTypes.Append(EpfcModelItemType.EpfcITEM_COORD_SYS) Try If IsPrtorAsm() Then solid = CType(asyncConnection.Session.CurrentModel, IpfcSolid) outline3d = solid.EvalOutline(trf, excludeTypes) outline(0) = Math.Abs(outline3d.Item(1).Item(0) - outline3d.Item(0).Item(0)) outline(1) = Math.Abs(outline3d.Item(1).Item(1) - outline3d.Item(0).Item(1)) outline(2) = Math.Abs(outline3d.Item(1).Item(2) - outline3d.Item(0).Item(2)) EndIf Catch ex As Exception MsgBox(ex.Message.ToString + Chr(13) + ex.StackTrace.ToString) EndTry Return outline EndFunction