Исходный код приложения
PictureDispConverter
Imports System.Runtime.InteropServices Public NotInheritable Class PictureDispConverter <DllImport("OleAut32.dll", _ EntryPoint:="OleCreatePictureIndirect", _ ExactSpelling:=True, _ PreserveSig:=False)> _ Private Shared Function OleCreatePictureIndirect( _ <MarshalAs(UnmanagedType.AsAny)> _ ByVal picdesc As Object, _ ByRef iid As Guid, _ <MarshalAs(UnmanagedType.Bool)> _ ByVal fOwn As Boolean) _ As stdole.IPictureDisp End Function Shared iPictureDispGuid As Guid = _ GetType(stdole.IPictureDisp).GUID Private NotInheritable Class PICTDESC Private Sub New() End Sub Public Const PICTYPE_UNINITIALIZED As Short = -1 Public Const PICTYPE_NONE As Short = 0 Public Const PICTYPE_BITMAP As Short = 1 Public Const PICTYPE_METAFILE As Short = 2 Public Const PICTYPE_ICON As Short = 3 Public Const PICTYPE_ENHMETAFILE As Short = 4 <StructLayout(LayoutKind.Sequential)> _ Public Class Icon Friend cbSizeOfStruct As Integer = _ Marshal.SizeOf(GetType(PICTDESC.Icon)) Friend picType As Integer = _ PICTDESC.PICTYPE_ICON Friend hicon As IntPtr = IntPtr.Zero Friend unused1 As Integer Friend unused2 As Integer Friend Sub New(ByVal icon As _ System.Drawing.Icon) Me.hicon = icon.ToBitmap().GetHicon() End Sub End Class <StructLayout(LayoutKind.Sequential)> _ Public Class Bitmap Friend cbSizeOfStruct As Integer = _ Marshal.SizeOf(GetType(PICTDESC.Bitmap)) Friend picType As Integer = _ PICTDESC.PICTYPE_BITMAP Friend hbitmap As IntPtr = IntPtr.Zero Friend hpal As IntPtr = IntPtr.Zero Friend unused As Integer Friend Sub New(ByVal bitmap As _ System.Drawing.Bitmap) Me.hbitmap = bitmap.GetHbitmap() End Sub End Class End Class Public Shared Function ToIPictureDisp( _ ByVal icon As System.Drawing.Icon) _ As stdole.IPictureDisp Dim pictIcon As New PICTDESC.Icon(icon) Return OleCreatePictureIndirect(pictIcon, _ iPictureDispGuid, True) End Function
Public Shared Function ToIPictureDisp( _ ByVal bmp As System.Drawing.Bitmap) _ As stdole.IPictureDisp Dim pictBmp As New PICTDESC.Bitmap(bmp) Return OleCreatePictureIndirect(pictBmp, _ iPictureDispGuid, True) End Function
End Class
StandardAddInServer Imports Inventor Imports System.Runtime.InteropServices Imports Microsoft.Win32 Namespace HelloWorldAddIn_VB <ProgIdAttribute("HelloWorldAddIn_VB.StandardAddInServer"), _ GuidAttribute("82ed13f7-bdb1-4685-840e-6fcc84a0f84c")> _ Public Class StandardAddInServer Implements Inventor.ApplicationAddInServer Public m_inventorApplication As Inventor.Application Private mAsmButtonDef As ButtonDefinition Private mPartButtonDef As ButtonDefinition Private Const strAddInGuid As String = "b22d0530-5e1f-426d-9a76-5b383def94fa" #Region "ApplicationAddInServer Members" Public Sub Activate(ByVal addInSiteObject As Inventor.ApplicationAddInSite, ByVal firstTime As Boolean) Implements Inventor.ApplicationAddInServer.Activate m_inventorApplication = addInSiteObject.Application Dim oCtrlDefs As ControlDefinitions _ = m_inventorApplication.CommandManager.ControlDefinitions Dim oIPictureDisp As Object = PictureDispConverter _ .ToIPictureDisp(My.Resources.Icon) mAsmButtonDef = oCtrlDefs.AddButtonDefinition( _ "Включение/выключение видимости", _ "Autodesk:RibbonVBTest:Button1", _ CommandTypesEnum.kQueryOnlyCmdType, _ strAddInGuid, _ "Описание", _ "Изменить видимость в сечении", _ oIPictureDisp, _ oIPictureDisp, _ ButtonDisplayEnum.kDisplayTextInLearningMode) If (firstTime) Then Dim UIManager As UserInterfaceManager _ = m_inventorApplication.UserInterfaceManager Dim assemblyRibbon As Inventor.Ribbon _ = UIManager.Ribbons.Item("Assembly")
Dim assemblyTab As Inventor.RibbonTab _ = assemblyRibbon.RibbonTabs.Item("id_TabAssemble") Dim panel1 As Inventor.RibbonPanel _ = assemblyTab.RibbonPanels.Add( _ "Работа с сечением", _ "Autodesk:RibbonVBTest:Panel1", _ strAddInGuid) panel1.CommandControls.AddButton(mAsmButtonDef, True) End If AddHandler mAsmButtonDef.OnExecute, AddressOf Me.mAsmButtonDef_OnExecute End Sub #Region "Event handlers" Private Sub mAsmButtonDef_OnExecute(ByVal Context As Inventor.NameValueMap) Dim Assem As AssemblyDocument Dim PartD As PartDocument Dim oModelSettings As ModelingSettings Assem = m_inventorApplication.ActiveDocument If Assem.SelectSet.Count = 0 Then MsgBox("Выберите деталь") Return End If Try Dim selec As SelectSet selec = Assem.SelectSet Dim detal As ComponentOccurrence = Nothing For Each obj As Object In selec detal = obj PartD = detal.Definition.Document oModelSettings = PartD.ModelingSettings If oModelSettings.AllowSectioningThruPart = True Then oModelSettings.AllowSectioningThruPart = False ElseIf oModelSettings.AllowSectioningThruPart = False Then oModelSettings.AllowSectioningThruPart = True End If Next Catch End Try MsgBox("Видимость изменена") End Sub #End Region Public Sub Deactivate() Implements Inventor.ApplicationAddInServer.Deactivate Marshal.ReleaseComObject(m_inventorApplication) m_inventorApplication = Nothing System.GC.WaitForPendingFinalizers() System.GC.Collect() End Sub Public ReadOnly Property Automation() As Object Implements Inventor.ApplicationAddInServer.Automation Get Return Nothing End Get End Property Public Sub ExecuteCommand(ByVal commandID As Integer) Implements Inventor.ApplicationAddInServer.ExecuteCommand End Sub #End Region End Class End Namespace
Заключение: В результате прохождения практики был получен опыт и знания в среде Autodesk Inventor . Было разработано приложение для автоматизации работы с 3D моделями в Autodesk Inventor. Работа выполнена в полном объеме.
Список литературы: 1) Учебный курс Autodesk: http://www.autodesk.ru/adsk/servlet/index?siteID=871736&id=20154121 2) Открытые исходные коды Autodesk: https://github.com/Developer-Autodesk/ 3) Форум Autodesk: http://forums.autodesk.com
Популярное: Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (348)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |