|
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.选取的边有特殊性,遍历所有的边,来选取
希望有所帮助。 |
|