来学习两个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来访问。
|