SolidWorks机械工程师网——最大的SolidWorks学习平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

好品数字
好品数字
查看: 573|回复: 4
打印 上一主题 下一主题

紧急求助,VB获取用户选择的面和边线问题

[复制链接]

20

主题

76

帖子

117

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
299
QQ
跳转到指定楼层
楼主
发表于 2015-10-18 21:47:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我要实现的功能是:
第一步:手动选中solidworks模型的一个面和一个边线
第二步:VB自动获取第一步中所选的面和边线
第三步:再用VB代码再次选中第一步中所选的面和边线
我急需这段代码,高手帮帮我,感激不尽!!!
图片为参考
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播 分享教程|习题|模型|技巧 点赞点赞6437 拍砖拍砖86
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

10

主题

50

帖子

51

金币

天使

Rank: 2Rank: 2

积分
168
QQ
推荐
发表于 2015-10-18 22:11:57 | 只看该作者
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swSelFace As SldWorks.Face2
Dim swSelEdge As SldWorks.Edge
Dim swSelPoint As SldWorks.Vertex
Dim swObjectType As Integer
Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
   
        If (swSelMgr.GetSelectedObjectCount = 0) Then
           MsgBox "************************************************" & vbCrLf & _
                  "*                                              *" & vbCrLf & _
                  "*  你没有选择实体 。                           *" & Chr(13) & _
                  "*  请选择后在运行这个                        *" & vbCrLf & _
                  "*                                              *" & vbCrLf & _
                  "************************************************", vbOKOnly + vbExclamation, "Warning"
                  Exit Sub
        End If
        swModel.ClearSelection2 True
        For i = 0 To swSelMgr.GetSelectedObjectCount
            swObjectType = swSelMgr.GetSelectedObjectType3(i, -1)
             Select Case swObjectType
                 Case swSelEDGES
                     Set swSelEdge = swSelMgr.GetSelectedObject5(i)
                     Debug.Print "第 " & i & " 个是 边"
                 Case swSelFACES
                     Set swSelFace = swSelMgr.GetSelectedObject5(i)
                     Debug.Print "第 " & i & " 个是    面"
                 Case swSelVERTICES
                     Set swSelPoint = swSelMgr.GetSelectedObject5(i)
                     Debug.Print "第 " & i & " 个是        顶点"
             End Select
        Next i
   
           
End Sub
上面的代码    运行前  1.要打开一个模型     
                                     2 手动选取特征或实体
                                     3 类型判断作为参照,还有一些没有写入
   功能是,运用选择的物体来获取其他想得到的数据。至于 第二条上面和第三条写的 条件不足,还需要楼主提供,不能够自动获取。
不过根据现有的推测可以用 swModel.Extension.SelectByID2,来准确获取。或者 用下面的遍历的方法
   1.选取的面有特殊性,遍历所有的面,来选取
   2.选取的边有特殊性,遍历所有的边,来选取
希望有所帮助。
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 1 反对 0

使用道具 举报

16

主题

71

帖子

88

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
245
QQ
沙发
发表于 2015-10-18 21:48:23 | 只看该作者
问题与程序没有关系。根本不知何为三维图形数据结构,首先解读理论才能认清“面、环、边”。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

13

主题

74

帖子

110

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
202
QQ
板凳
发表于 2015-10-18 21:56:56 | 只看该作者
我就简单的说吧,VB能获取用户当前选中的面和某个孔的圆边线吗?YES or NO?  答案一定是可以的,只不过我还要继续啃书,靠人不如靠自己,其实靠人也只是提醒自己要努力,而并不是真指望谁能帮一把
为自己加油,等我自己实现这段代码,我会贴图上来!!!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

13

主题

71

帖子

83

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
232
QQ
地板
发表于 2015-10-18 22:01:20 | 只看该作者

   经典案例图书
终于找到方法,其实可以获取所选点的坐标值(xyz),然后再用boolstatus = Part.Extension.SelectByID2("", "EDGE", x,y, z, True, 1, Nothing, 0)来获取边线,EDGE改成FACE就是获取面,呵呵还是自己摸索来的靠谱,共勉!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-5-3 04:31 , Processed in 0.145718 second(s), 37 queries .

SolidWorks机械工程师网 ( 鲁ICP备14025122号-2 ) 鲁公网安备 37028502190335号

声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件: admin@swbbsc.com

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