找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 3093|回复: 3
打印 上一主题 下一主题

[原创] 按设计树顺序遍历装配体

[复制链接]
跳转到指定楼层
1
发表于 2020-4-10 11:15:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 wenmk 于 2020-4-11 10:14 编辑

     分享一段完整按设计树顺序遍历装配体代码,此代码是VB.NET编写。可以在此代码中添加功能代码后可实现特定功能。
  1. Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
  2.         Dim swApp As SldWorks
  3.         Dim swModel As ModelDoc2
  4.         Dim swPrOPMgrs As CustomPropertyManager
  5.         Dim swConMgrs As ConfigurationManager
  6.         Dim swConfigs As Configuration
  7.         Dim swGetType As String
  8.         Dim swFeat As Feature
  9.         Dim swChild As String
  10.         RichTextBox1.Text = ""
  11.         swApp = GetObject(, "SldWorks.Application")
  12.         If swApp Is Nothing Then
  13.             MsgBox("请您在运行本程序前先运行SOLIDWORKS!")
  14.             Exit Sub
  15.         End If
  16.         swModel = swApp.ActiveDoc
  17.         If swModel Is Nothing Then
  18.             MsgBox("请您打开模型后再运行!")
  19.             Exit Sub
  20.         End If
  21.         If swModel.GetType <> 2 Then
  22.             MsgBox("请您打开装配模型后再运行!")
  23.             Exit Sub
  24.         End If
  25.         swConMgrs = swModel.ConfigurationManager '获取配置管理器
  26.         swConfigs = swConMgrs.ActiveConfiguration '获取活动配置
  27.         swChild = swConfigs.Name '获取活动配置名
  28.         swPropMgrs = swModel.Extension.CustomPropertyManager("") '获得自定义属性
  29.         'swPropMgrs = swModel.Extension.CustomPropertyManager(swChild) '获得配置特定属性
  30.         swGetType = swModel.GetPathName '获取此文档的完整路径名,包括文件名
  31.         RichTextBox1.Text &= swGetType & vbNewLine
  32.         swFeat = swModel.FirstFeature
  33.         While IsNothing(swFeat) = False
  34.             Select Case swFeat.GetTypeName2
  35.                 Case "Reference", "ReferencePattern" '排除镜像及阵列模型
  36.                     Throughs(swModel, swFeat.Name)
  37.             End Select
  38.             swFeat = swFeat.GetNextFeature
  39.         End While
  40.     End Sub
  41.     Private Sub Throughs(ByVal swModels As ModelDoc2, ByVal swPartName As String)
  42.         Dim swComponent As Component2
  43.         Dim swildMode As ModelDoc2
  44.         Dim swPropMgr As CustomPropertyManager
  45.         Dim swGetTypes As String
  46.         Dim swFeature As Feature
  47.         Dim swChild As String
  48.         swComponent = swModels.GetComponentByName(swPartName) '获取指定的顶级程序集组件
  49.         swChild = swComponent.ReferencedConfiguration
  50.         If swComponent.IsSuppressed = False AndAlso swComponent.ExcludeFromBOM = False AndAlso swComponent.IsEnvelope = False Then '排除否被压缩、不包括在材料明细表中或是一个封套
  51.             swildMode = swComponent.GetModelDoc2 '获取此组件的模型文档
  52.             swGetTypes = swildMode.GetPathName '获取此文档的完整路径名,包括文件名
  53.             RichTextBox1.Text &= swGetTypes & vbNewLine
  54.             swPropMgr = swildMode.Extension.CustomPropertyManager("") '获得自定义属性
  55.             'swPropMgr = swildMode.Extension.CustomPropertyManager(swChild) '获得配置特定属性

  56.             '..............
  57.             '..............
  58.             '..............
  59.             '..............添加你要处理的代码


  60.             If swildMode.GetType = 2 Then '获取文档类型,是否是装配文件
  61.                 swFeature = swildMode.FirstFeature '获取此组件中的第一个模型
  62.                 Do While Not swFeature Is Nothing '如果模型存在, 模型循环此模型
  63.                     Select Case swFeature.GetTypeName2
  64.                         Case "Reference", "ReferencePattern"
  65.                             Throughs(swildMode, swFeature.Name)
  66.                     End Select
  67.                     swFeature = swFeature.GetNextFeature
  68.                 Loop
  69.             End If
  70.         End If
  71.     End Sub
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 赞一下!赞一下!2
2
发表于 2020-5-2 14:20:09 | 只看该作者
可以转换成VB代码吗
3
发表于 2020-6-5 19:59:15 | 只看该作者
qxzch 发表于 2020-5-2 14:20
可以转换成VB代码吗

自己去查查VB和VB.net的区别就知道了
4
发表于 2021-4-15 13:31:15 | 只看该作者
感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-23 10:50 , Processed in 0.021381 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表