solidworks二次开发-02-用来访问特征的两个API
来学习两个api:
SelectByID2和 GetSelectedObject5。这两个函数,第一个通过给出对象的name选择对象。第二个通过启用程序前已经选择的索引得到对象。
看下面程序:
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim Model As ModelDoc2
Dim feature As feature
Dim boolstatus As Variant
Sub main()
Set swApp = Application.SldWorks
Set Model = swApp.ActiveDoc
' 选择叫"拉伸1"的特征
boolstatus = Model.Extension.SelectByID2("拉伸1", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, swSelectOptionDefault)
'主要就是这一句话,在写 Option Explicit后函数的最后一个参数swSelectOptionDefault可以使用0来代替
' If the selection was successful, that is, "Extrude1" was
' selected and it is a "BODYFEATURE", then get that feature; otherwise,
' indicate failure
If boolstatus = True Then '如果有“拉伸1”这个特征下面的代码将其选中
Dim SelMgr As SelectionMgr
Set SelMgr = Model.SelectionManager
Set feature = SelMgr.GetSelectedObject5(1) '此处使用一个索引来得到特征
Debug.Print feature.Name
Else
Debug.Print "Error"
End If
End Sub
最后列出这两个函数的VB语法:
** ModelDocExtension::SelectByID2
**
Description
This method selects the specified entity.
Syntax (OLE Automation)
retval = ModelDocExtension.SelectByID2 ( Name, Type, X, Y, Z, Append, Mark, Callout. SelectOption )
Input:
|
(BSTR) Name
|
Name of object to select or an empty string
---|---|---
Input:
|
(BSTR) Type
|
Type of object (uppercase) as defined in swSelectType_e or an empty string
Input:
|
(double) X
|
X selection location or 0
Input:
|
(double) Y
|
Y selection location or 0
Input:
|
(double) Z
|
Z selection location or 0
Input:
|
(VARIANT_BOOL) Append
| |
If...
|
And if entity is...
|
Then...
---|---|---
TRUE
|
Not already selected
|
The entity is appended to the current selection list
Already selected
|
The entity is removed from the current selection list
FALSE
|
Not already selected
|
The current selection list is cleared, and then the entity is put on the list
Already selected
|
The current selection list remains the same
Input:
|
(long) Mark
|
Value that you want to use as a mark; this value is used by other functions that require ordered selection
Input:
|
(LPCALLOUT) Callout
|
Pointer to the associated callout
Input:
|
(long) SelectOption
|
Selection option as defined in swSelectOption_e (see ** Remarks ** )
Output:
|
(VARIANT_BOOL) retval
|
TRUE if item was successfully selected, FALSE if not
** SelectionMgr:: ** ** GetSelectedObject5 ** **
**
Description
This method gets the selected object.
Syntax (OLE Automation)
retval = SelectionMgr.GetSelectedObject5 ( AtIndex )
Input:
|
(long) AtIndex
|
Index position within the current list of selected items, where AtIndex ranges from 1 to SelectionMgr::GetSelectedObjectCount
---|---|---
Output:
|
(LPDISPATCH) retval
|
Pointer to the Dispatch object as defined in swSelType_e ; NULL may be returned if type is not supported or if nothing is selected
也可以通过COM使用vc来访问。