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

数据

solidworks二次开发-04-修改数据
上次已经可以访问特征的各参数了,今天我们来修改它:

要修改前面的步骤不能少,当我们已经可以读取一些特征时,我们就可以给他设定一些值。当然有时需要调用特定的参数。solidworks是ole和com的,所以要习惯这样。

在修改完特征后需要调用函数modifydefinition()来实现变化。

我们给一个例子,这个例子比前面的都要全面,它有很好的容错引导机制,可以直接拿来成为一个稳定的宏程序。

This example doubles the length of the base extrude.这个例子将拉伸凸台的长度增加一倍

 

Dim swApp As SldWorks.SldWorks

Dim Model As ModelDoc2

Dim Component As Component2

Dim CurFeature As feature

Dim isGood As Boolean

' Will become an ExtrudeFeatureData Object

Dim FeatData As Object

Dim Depth As Double

Dim SelMgr As SelectionMgr

 

 

Sub doubleBE()

}}-->    }}-->Set swApp = CreateObject("sldWorks.application")

}}-->    }}-->Set Model = swApp.ActiveDoc

}}-->    }}-->' Make sure that the active document is a part

}}-->    }}-->If Model.GetType <> swDocPART And Model.GetType <> swDocASSEMBLY Then

‘这里的swDocPART 、swDocASSEMBLY 我的环境没有通过。我使用msgbox Model.GetType  的笨办法得到整数为1和2 

}}-->        }}-->Msg = "Only Allowed on Parts or Assemblies" ' Define message

}}-->        }}-->Style = vbOKOnly ' OK Button only

}}-->        }}-->Title = "Error" ' Define title

}}-->        }}-->Call MsgBox(Msg, Style, Title) ' Display error message

}}-->        }}-->Exit Sub ' Exit this program

}}-->    }}-->End If

}}-->    

}}-->

}}-->    }}-->' Get the Selection Manager

}}-->    }}-->Set SelMgr = Model.SelectionManager

}}-->    

}}-->

}}-->    }}-->' Get the selected object (first in the group if there are more than one)

}}-->    }}-->' Note that at this point CurFeature is just a Feature Object

}}-->    }}-->Set CurFeature = SelMgr.GetSelectedObject3(1)

}}-->    }}-->If CurFeature Is Nothing Then

}}-->        }}-->' Tell the user that nothing is selected

}}-->        }}-->swApp.SendMsgToUser2 "Please select the Base-Extrude", swMbWarning, swMbOk

}}-->        }}-->Exit Sub

}}-->    }}-->End If

 

}}-->    }}-->' Check the feature's type name

}}-->    }}-->' Make sure it is an extrusion

}}-->    }}-->If Not CurFeature.GetTypeName = swTnExtrusion Then  

’在这里使用swTnExtrusion我的环境没有通过,我改成了Extrusion才ok

}}-->        }}-->swApp.SendMsgToUser2 "Please select the Base-Extrude", swMbWarning, swMbOk

}}-->        }}-->Exit Sub

}}-->    }}-->End If

 

}}-->    }}-->' Get the Extrusion's Feature Data

}}-->    }}-->Set FeatData = CurFeature.GetDefinition

}}-->           

}}-->

}}-->   }}-->' Get the access selections for the feature data

}}-->   }}-->' Note that Component is NULL when accessing the selections of a standalone part. }}--> }}-->If we were calling AccessSelections from within an assembly, then model would refer to the top-level document in the assembly and component would refer to the actual part.

}}-->    }}-->isGood = FeatData.AccessSelections(Model, Component)

}}-->            

}}-->

}}-->    }}-->' Inform the user of an error

}}-->    }}-->If Not isGood Then

}}-->        }}-->swApp.SendMsgToUser2 "Unable to obtain access selections", swMbWarning, swMbOk

}}-->        }}-->Exit Sub

}}-->    }}-->End If

}}-->    

}}-->

}}-->    }}-->' Make sure the user has selected the base extrude

}}-->    }}-->If Not FeatData.IsBaseExtrude Then

}}-->        }}-->swApp.SendMsgToUser2 "Please select the Base-Extrude", swMbWarning, swMbOk

}}-->        }}-->FeatData.ReleaseSelectionAccess

}}-->        }}-->Exit Sub

}}-->    }}-->End If

}}-->            

}}-->

}}-->    }}-->' Change the depth of this extrusion to double its previous depth

}}-->    }}-->Depth = FeatData.GetDepth(True)

}}-->    }}-->FeatData.SetDepth True, Depth * 2

}}-->            

}}-->

}}-->    }}-->' Implement the changes to the feature

}}-->    }}-->isGood = CurFeature.ModifyDefinition(FeatData, Model, Component)

}}-->            

}}-->

}}-->    }}-->' If the modify definition failed

}}-->    }}-->If Not isGood Then

}}-->        }}-->swApp.SendMsgToUser2 "Unable to modify feature data", swMbWarning, swMbOk

}}-->        }}-->' Release the AccessSelections

}}-->        }}-->FeatData.ReleaseSelectionAccess

}}-->    }}-->End If

}}--> 

}}-->

End Sub

 

如果出现特征出现“退回”状态,我现在还没有找到问题的原因,只能在代码执行到最后调用

    Model.Save
    Model.Rebuild

这两个函数来自动更新。

时间: 2024-10-25 16:22:41

solidworks二次开发-04-修改数据的相关文章

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二次开发-05-装配体中插入零部件

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

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

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

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

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

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

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

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 Varian

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

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

ecmall 二次开发 如何修改商品链接创建方式?

问题描述 ecmall 二次开发 如何修改商品链接创建方式? 请问如何修改商品链接创建方式? 例如: 默认创建方式www.xxx.com/index.php?app=goods&id=1www.xxx.com/goods/1 (伪静态) 商品名称:iphone 6 16/64GB 1GB RAM店铺名称:apple商品ID:1(系统依照顺序自动生成) www.xxx.com/iphone+6+16+64GB+1GB+RAM+apple+1 谢谢您.

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

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