solidworks二次开发-02-用来访问特征的两个API

访问|来访

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来访问。

时间: 2024-10-22 17:39:02

solidworks二次开发-02-用来访问特征的两个API的相关文章

Solidworks二次开发—08--判断是什么特征

得到了一个特征feature,怎么判断是那种呢? 如果我们定义了一个特征对象: dim curfeature as sldworks.feature 然后又通过SelectMgr得到了这个特征,然后可以使用feature.GetTypeName来判断是那种: Select Case curfeature.GetTypeName Case "Cut"       '一个拉伸切除特征 do sth. Case "HoleWzd"  '一个异型孔特征 do sth. Ca

solidworks二次开发-03-访问特征数据

访问|数据 solidworks二次开发-03-访问特征数据 'coder arden 'filename : getchoosed.swp'date  :2005-03-22'used to get the simple hole infomation dep & dia'finished lucky !!'------------------------------------------------------------ Option ExplicitDim swApp As SldWo

solidworks二次开发-04-修改数据

数据 solidworks二次开发-04-修改数据 上次已经可以访问特征的各参数了,今天我们来修改它: 要修改前面的步骤不能少,当我们已经可以读取一些特征时,我们就可以给他设定一些值.当然有时需要调用特定的参数.solidworks是ole和com的,所以要习惯这样. 在修改完特征后需要调用函数modifydefinition()来实现变化. 我们给一个例子,这个例子比前面的都要全面,它有很好的容错引导机制,可以直接拿来成为一个稳定的宏程序. This example doubles the l

solidworks二次开发-01-录制一个宏

solidworks二次开发-01-录制一个宏 第一步: 我们需要自己录制一个宏,然后看看程序产生了什么代码.当初学习excel时候就是这么干的.只是,solidworks要复杂一些,直接录制的宏不能使用,需要做一些调整.在没有经验的时候我们最好按照下面的建议来做.  Edit or Debug SolidWorks Macro   Edit or debug SolidWorks macros using Microsoft VBA.   使用Microsoft VBA编辑或调试宏 To ed

Solidworks二次开发-05-装配体中插入零部件

插入 Solidworks二次开发--装配体中插入零部件     在往装配体中插入零部件时,我们使用addcomponent 函数.如果需要选定零部件的配置,则需要使用addcomponent4. 先学习下语法:   addcomponent4: retval = AssemblyDoc.AddComponent4 ( compName, configName, x, y, z)   Input:         (BSTR) compName                    Path n

Solidworks二次开发—07—控制草图对象

对象|控制 Solidworks二次开发-07-控制草图对象 Get All Elements of Sketch Example (VB) Solidwork中对草图的控制,下面的例子很详细.特征下的草图在solidwork中其实是特征的子特征,我们可以对特征进行GetFirstSubFeature.及GetNextSubFeature得到. 如果有需要大家可以从中找到对直线.弧线.圆等对象的操作.代码是solidworks的示例文件,里面充斥了debug.print,只是向用户显示程序执行的

Solidworks二次开发—06—在装配体中添加配合

Solidworks二次开发-06-在装配体中添加配合     折腾了三天终于完成了计划中的功能模块.在一个装配体中自动判断插入合适的零件,并添加配合. 在前面几篇文章中我已经基本上说明了如何得到零部件的数据信息.如何插入零部件.如何得到已经选择的特征等. 下面只介绍怎样进行配合 在做配合时,需要经常选择到零件的面.线等,这是一个问题,还有就是介绍一下addmate2函数的使用: 一般进行配合我们按照下面的次序来进行:     1-ModelDoc.ClearSelection2  '取消所有选

sw二次开发-Solidworks二次开发,控制电机旋转

问题描述 Solidworks二次开发,控制电机旋转 在solidworks中的simulation中可以完成电机对滚球丝杠的控制, 现在我想知道能不能通过solidworks的二次开发,通过VB编写程序完成精确控制电机的转速,角位移等. 可通过以下两步来实现,但现在在第二步卡住了: 1.VB发送数据给Solidworks 2.通过SOlidworks上的API来控制电机起停,转过多少度,以及转速... 尤其是第二个步求相关资料,不胜感激. 谢谢大家了,学生一枚,以上功能是论文中的一部分,我尝试

solidworks二次开发--11--开始总体了解

经过了上面的几个练兵之后,对solidworks的对象模型应该有了一个大体的了解,程序的运行机制也清晰了.慢慢的会越来越容易驾驭.下面的几个图片链接是solidworks的对象模型.作为参考,好在需要一种功能或者想要控制一个功能时不知道api藏在那里: 总体结构:site=mblogger 零件结构:site=mblogger 装配体结构:site=mblogger 工程图结构:site=mblogger 特征结构:site=mblogger 注释结构:site=mblogger 工程图注释结构