- 热门文章:
- · Solidworks二次开发-05-装配体中插入零部件
- · solidworks二次开发-03-访问特征数据
- · solidworks二次开发-02-用来访问特征的两个API
- · solidworks二次开发-01-录制一个宏
- · 有关于web播放器的列表播放问题
- · Microsoft User Interface Process Application Block 研究(3)
- · ASP.NET中使用IFRAME建立类Modal窗口
- · 挤压造型Extrusion的节点说明和应用实例
- · .net 里面 protected private 的变量也可以访问
- · 怎样得到一个系统盘的全名,不是字符,是全名,如:本地磁盘(C:)?
- · ASP.NET中新的代码编译功能(三)
- · ASP.NET中新的代码编译功能(二)
上一篇:Tangram与软件的组合构造 >>
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
这两个函数来自动更新。
下一篇:Solidworks二次开发-05-装配体中插入零部件 >>
相关文章:
- · ASP.NET中新的代码编译功能(一)
- · asp.net里,一个小的自定义错误显示
- · ASP.NET编程中的十大技巧
- · 在ASP.NET中面向对象的编程思想
- · 有史以来最牛B的.NET程序集加密方法?
- · 在ASP.NET中实现多文件上传
- · (论坛答疑点滴)怎么给Table动态添加控件并且得到控件的值?
- · (论坛答疑点滴)有的时候DataGrid取值取不到?
- · (论坛答疑点滴)联合主键的情况怎么在DataGrid中利用DataKeys定位记录?
- · (论坛答疑点滴)__doPostBack()无效?
- · ASP.net生成文字图片
- · 自定义类(ASP.NET_VB)
- · 小技术(ASP.NET)
- · ASP.NET控制EXCEL,完全结束进程
- · ASP.NET导出数据到Excel
- · Asp.net中Treeview终极解决方案!
- · 实现一个Asp.net自定义Back控件
- · 在asp.net中长内容自动分页的实现
- · asp.net利用多线程执行长时间的任务,客户端显示出任务的执行进度的示例(二)
- · asp.net利用多线程执行长时间的任务,客户端显示出任务的执行进度的示例(一)
- · 在ASP.NET中使用Global.asax文件
- · 解决ASP.NET上传文件大小限制
- · ASP.NET如何在窗体和窗体之间传送数据
- · 令你心动的Asp.net 开发中的MessageBox控件
- · asp.net三种重定向方法的总结
- · asp.net datagrid实现多层表头
- · 一个在ASP.NET中打印的问题
- · 使用ASP.NET Web服务代理的URL行为属性
- · [ASP.NET 教程] 三. Web Forms编程模型
- · ASP.NET立即上手教程 10
- · ASP.NET如何在窗体和窗体之间传送数据
- · ASP.NET中取代ASP的RS(Remote Scripting)技术的Framework
- · [ASP.NET 教程] 三. Web Forms编程模型
- · [ASP.NET 教程] 二. Web Forms
- · [ASP.NET 教程] 一. Web基础
- · ASP.NET立即上手教程 6
- · ASP.NET立即上手教程 5
- · ASP.NET身份模拟
