module 1 - inventor api basic concepts

32
1 Autodesk Confidential Information January 2010 Welcome to Inventor API Online! Developer Technical Services Autodesk

Upload: pepi-mica

Post on 21-Nov-2014

240 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Module 1 - Inventor API Basic Concepts

1Autodesk Confidential Information January 2010

Welcome to Inventor API Online!

Developer Technical ServicesAutodesk

Page 2: Module 1 - Inventor API Basic Concepts

2Autodesk Confidential Information January 2010

Gary WassellDeveloper Technical Services

Philippe LeefsmaDeveloper Technical Services

Wayne BrillDeveloper Technical Services

Brian EkinsInventor API Product Designer

The Class Tutors

Page 3: Module 1 - Inventor API Basic Concepts

3Autodesk Confidential Information January 2010

Inventor API Online – Class Content

Module 01 - Basic concepts Module 02 - Common Document Functionality Module 03 - Part Documents Module 04 - BRep Module 05 - SheetMetal Parts Module 06 - Assembly Documents Module 07 - Drawing Documents Module 08 - DotNet AddIns Module 09 - User Interface Module 10 - Events

Page 4: Module 1 - Inventor API Basic Concepts

4Autodesk Confidential Information January 2010

Class Format

Concepts & Theory. Code samples. .Net oriented with some VBA demos. Hands-on programming “lab” for you to practice. VB.Net & C# solutions to labs.

Questions via the LiveMeeting Q&A manager. Recording available from the registration page

Page 5: Module 1 - Inventor API Basic Concepts

5Autodesk Confidential Information January 2010

(1) Basic concepts of the Inventor API

Gary WassellDeveloper Technical Services

Page 6: Module 1 - Inventor API Basic Concepts

6Autodesk Confidential Information January 2010

Agenda

API COM model

How do I access the API?

The Object model

Object model tools: Object browser, VBA debugger

Collection, Enumerator, Inheritance

The Application Object

How to access the Application Object?

Page 7: Module 1 - Inventor API Basic Concepts

7Autodesk Confidential Information January 2010

COM API Model

• Inventor

• Inventor COM Automation API

• Visual Basic• C++• Other...• .Net

• Other...• C# • VB.Net

• Inventor• Type

• Library

Page 8: Module 1 - Inventor API Basic Concepts

8Autodesk Confidential Information January 2010

How do I access the API?

VBA

AddIn Dll or Exe

Standalone Exe

Apprentice ?

Page 9: Module 1 - Inventor API Basic Concepts

9Autodesk Confidential Information January 2010

API Objects and the Object Model

• In a COM Automation API the functionality is exposed as objects, where each object corresponds to something within the application.

• Each object supports various methods, properties, and possibly events.

• The objects are accessed through the object model.• The top most object is the Application object.

Page 10: Module 1 - Inventor API Basic Concepts

10Autodesk Confidential Information January 2010

Basics of Object Oriented Programming

API is exposed as a set of objects. Object oriented terminology:

Object – Represents a logical object. The finished chair in this example.

Property – The various attributes of the chair. The Style, Color, and Size are properties of the chair.

Method – An action performed on the chair; move, fold, throw away.

Event – Notification when something happens to the chair.

Class – The template of an object. The order form for a chair.

Page 11: Module 1 - Inventor API Basic Concepts

11Autodesk Confidential Information January 2010

Inventor Object Model Example

Inventor’s objects are accessed through the Object Model. PartDocument

Application

PartComponentDefinition

Documents

PartFeatures

PartFeature

ExtrudeFeatures

ExtrudeFeature

Public Sub GetExtrudeFeature()

Dim oPartDoc As PartDocument oPartDoc = ThisApplication.ActiveDocument

Dim oExtrude As ExtrudeFeature oExtrude = oPartDoc.ComponentDefinition.Features.ExtrudeFeatures("Extrusion1") MsgBox("Extrusion " & oExtrude.Name & " is suppressed: " & oExtrude.Suppressed)

End Sub

Page 12: Module 1 - Inventor API Basic Concepts

12Autodesk Confidential Information January 2010

Object Model Tools - Object Browser• Provides user-interface to the contents of the type library

• Accessed in VBA using F2, the Object Browser command in the View menu, or pressing the toolbar button.

Page 13: Module 1 - Inventor API Basic Concepts

13Autodesk Confidential Information January 2010

Object Model Tools - VBA Debugger

• Provides a “live” view of the object model.• Shows the values of an object properties.• Shows the contents of collections.• VBA debugger provides more information that .Net

debugger.

Page 14: Module 1 - Inventor API Basic Concepts

14Autodesk Confidential Information January 2010

Collection Objects

Special object that provides access to a list of objects. Count property returns number of objects in the collection. Item property returns a specific object in the collection.

Can specify the index of the object within the collection. The first item is index 1 for all collections within Inventor API.

In some cases you can specify the name of the object within the collection.

PartDocument

Application

PartComponentDefinition

Documents

PartFeatures

PartFeature

ExtrudeFeatures

ExtrudeFeature

Page 15: Module 1 - Inventor API Basic Concepts

15Autodesk Confidential Information January 2010

Collection vs. Enumerator Objects

• Some collections support the functionality to create new objects.

• An Inventor API Object is never “new-ed” but always created through its parent collection or factory object.

• Enumerators are also collections but only support the Count and Item properties.

AssemblyDocument

Application

DocumentsEnumerator

Documents

Document

Page 16: Module 1 - Inventor API Basic Concepts

16Autodesk Confidential Information January 2010

Iterating Through a Collection

• Iterating using Count and Item:

• Iterating using For Each statement (more efficient):

Dim i As LongFor i = 1 To oExtrudeFeatures.Count Debug.Print(oExtrudeFeatures.Item(i).Name)Next

Dim oExtrude As ExtrudeFeatureFor Each oExtrude In oExtrudeFeatures Debug.Print(oExtrude.Name)Next

Page 17: Module 1 - Inventor API Basic Concepts

17Autodesk Confidential Information January 2010

Derived Objects

• Similar to animal taxonomy or classification. All items under a specific classification share common traits.

ModelParameter (9)

ModelParameters

Parameter [9]

Parameters

ParameterTable

ParameterTables

ReferenceParameter (9)

ReferenceParameters

TableParameter (9)

TableParameters

UserParameter (9)

UserParameters

CustomParameterGroup

CustomParameterGroups

Tolerance

Animal

Birds

Insects

Mammals

Cat

Dog

Human

Parameter

ModelParameter

ReferenceParameter

TableParameter

UserParameter

Document

AssemblyDocument

DrawingDocument

PartDocument

PresentationDocument

Page 18: Module 1 - Inventor API Basic Concepts

18Autodesk Confidential Information January 2010

Derived Objects – Example

Public Sub SaveDoc()

'Get ActiveDocument, could be Part, Assembly or Drawing Dim oDoc As Document oDoc = ThisApplication.ActiveDocument

'Call the Save method on the generic 'Document' object oDoc.Save()

End Sub

Page 19: Module 1 - Inventor API Basic Concepts

19Autodesk Confidential Information January 2010

The Application Object

Represents the Inventor Application.

Provides access to the other API objects.

Supports general functionality not specific to a document.

Provides overall event notifications.

Page 20: Module 1 - Inventor API Basic Concepts

20Autodesk Confidential Information January 2010

Application Window

• The Application object provides access to the main window through various methods and properties.

Caption Left, Top, Width, Height, GetAppFrameExtents, Move WindowState Visible MainFrameHwnd

Page 21: Module 1 - Inventor API Basic Concepts

21Autodesk Confidential Information January 2010

Utility Objects• SoftwareVersion – Provides information about the version of

Inventor.• ChangeManager, CommandManager, FileManager,

HelpManager, TransactionManager, MeasureTools, UserInterfaceManager – Provide access to functions related to a particular area.

• TransientGeometry – Temporary geometry objects.• TransientObjects – Temporary utility objects

PointTolerance Type

Properties CreateArc2d CreateArc2dByThreePoints CreateArc3d CreateArc3dByThreePoints CreateBSplineCurve CreateBSplineCurve2d CreateBSplineCurve2dDefinition CreateBSplineCurveDefinition CreateBSplineSurface CreateBox CreateBox2d CreateCircle CreateCircle2d CreateCircle2dByThreePoints CreateCircleByThreePoints

CreateCone CreateCylinder CreateEllipseFull CreateEllipseFull2d CreateEllipticalArc CreateEllipticalArc2d CreateEllipticalCone CreateEllipticalCylinder CreateFittedBSplineCurve CreateFittedBSplineCurve2d CreateLine CreateLine2d CreateLineSegment CreateLineSegment2d CreateMatrix

CreateMatrix2d CreatePlane CreatePlaneByThreePoints CreatePoint CreatePoint2d CreatePolyline2d CreatePolyline2dFromCurve CreatePolyline3d CreatePolyline3dFromCurve CreateSphere CreateTorus CreateUnitVector CreateUnitVector2d CreateVector CreateVector2d

Methods TransientGeometry

CreateColor CreateDataMedium CreateEdgeCollection CreateFaceCollection CreateFileMetadata CreateNameValueMap CreateObjectCollection CreateObjectCollectionByVariant CreateSignatureString CreateTranslationContext

Methods TransientObjects

BetaVersion BuildIdentifier DisplayName DisplayVersion Is64BitVersion Major Minor NotProduction ProductEdition ServicePack Type

Properties SoftwareVersion

Page 22: Module 1 - Inventor API Basic Concepts

22Autodesk Confidential Information January 2010

Shortcuts to “Active” Objects

• Properties that provide direct access to various “Active” objects.

ActiveColorScheme ActiveDocument ActiveView ActiveEnvironment ActiveEditObject – Returns the object currently being edited. This

can be a document that’s been opened, a document that’s been in-place edited, a sketch, a sheet, and a flat pattern.

ActiveEditDocument – Returns the document currently being edited.

Page 23: Module 1 - Inventor API Basic Concepts

23Autodesk Confidential Information January 2010

Application Options

• Provides access to objects that expose the various application options.

AssemblyOptions DisplayOptions FileOptions GeneralOptions HardwareOptions NotebookOptions PartOptions SaveOptions Sketch3DOptions SketchOptions iFeatureOptions ColorSchemes

Page 24: Module 1 - Inventor API Basic Concepts

24Autodesk Confidential Information January 2010

Application Level Objects

• Documents – All currently open documents, including those that are referenced by other documents.

• ApplicationAddIns – The available Add-Ins.• VBAProjects – VBA related objects.

Page 25: Module 1 - Inventor API Basic Concepts

25Autodesk Confidential Information January 2010

Events

• Provides access to several different sets of events: ApplicationEvents AssemblyEvents FileAccessEvents FileUIEvents ModelingEvents RepresentationEvents SketchEvents StyleEvents

Page 26: Module 1 - Inventor API Basic Concepts

26Autodesk Confidential Information January 2010

Miscellaneous

• SilentOperation – Causes all dialogs to be suppressed and take the default behavior. Useful for batch processing operations where warning dialogs would normally be displayed as files are opened, processed, and closed.

• LanguageName, Locale – Language information.

• MRUEnabled, MRUDisplay – Controls display of most recently used file list at the bottom of the File menu.

• Ready – Indicates if Inventor is fully initialized.

• StatusBarText – Text shown in the status bar.

Page 27: Module 1 - Inventor API Basic Concepts

27Autodesk Confidential Information January 2010

How to access the Application Object? Access in Inventor’s VBA using the ThisApplication property. From an AddIn (which is covered in Module 8) Access from outside Inventor using either the GetObject or

CreateObject methods:

Dim _InvApplication As Inventor.Application = Nothing

Try Try ' Try to get an active instance of Inventor _InvApplication =

System.Runtime.InteropServices.Marshal.GetActiveObject("Inventor.Application")

Catch ex As Exception

Dim inventorAppType As Type = System.Type.GetTypeFromProgID("Inventor.Application")

_InvApplication = System.Activator.CreateInstance(inventorAppType)

'Must be set visible explicitly _InvApplication.Visible = True

End Try

Catch ex As Exception

‘Error: couldn’t connect or run Inventor…

End Try

Page 28: Module 1 - Inventor API Basic Concepts

28Autodesk Confidential Information January 2010

Lab: Access the Application Object

• Create an external Exe that tries to access the Inventor Application object at startup. If a running instance of Inventor is not found, then create a new instance using “CreateInstance”

• Create some controls in order to:

- Ask user for Height and Width values and set the ActiveView to the entered values.

- Ask user for the Application caption and set it.

Page 29: Module 1 - Inventor API Basic Concepts

29Autodesk Confidential Information January 2010

Resources

• Need help or more information?

Try the following:-

www.autodesk.com/developinventor

You’ll find lots of useful information including links to the Autodesk Developer Network (ADN) website, various discussion groups, and Brian Ekins’ blog.

Page 30: Module 1 - Inventor API Basic Concepts

30Autodesk Confidential Information January 2010

Next Week

• We’ll be talking about API functionality that is common across Part, Assembly and Drawing documents.

• We’ll also post more detailed step by step instructions, and full VB.Net and C# solutions for today’s lab via the class registration page.

Page 31: Module 1 - Inventor API Basic Concepts

31Autodesk Confidential Information January 2010

Class feedback and suggestions

[email protected]

Page 32: Module 1 - Inventor API Basic Concepts

32Autodesk Confidential Information January 2010