请教大神:我想将stp格式的文件导入到Rhino中,并进一步操作。
但是遇到2个问题:
- 如何自动应答Rhino命令行提示?
**设定 STEP 导入选项 ( 组合曲面(J)=是
限制组合面数(L)=否 跳过不可见的(S)=是 显示损坏物件警告(H)=是 显示嵌套图块警告(O)=是 )**
我的代码是:
Rhino.RhinoApp.SendKeystrokes(" ", True) '此语句不起作用,无法向命令行发送正确的命令
- 如何获取刚刚导入的物件的对象和对象ID?以下是我的代码,未能按预期工作。
''' <summary>
''' 将stp格式的文件导入到Rhino
''' </summary>
''' <param name="directory"></param>文件目录
Sub ImportFiles(directory As String)
Dim iFolders() As String
iFolders = System.IO.Directory.GetDirectories(directory)
Dim iCount As Integer = iFolders.Length
Dim i As Integer
Dim iLayTable As Rhino.DocObjects.Tables.LayerTable
iLayTable = Rhino.RhinoDoc.ActiveDoc.Layers
Dim m As Integer = 0
For i = 0 To iCount - 1
Dim color As Drawing.Color = Drawing.Color.FromName("SlateBlue")
Dim layerIndex As Integer
layerIndex = iLayTable.Add(iFolders(i), color)
iLayTable.SetCurrentLayerIndex(layerIndex, True) '将加入的图层设置为当前图层
Dim iFiles() As String
Try
iFiles = System.IO.Directory.GetFiles(iFolders(i))
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(ex.Message.ToString, "出错信息")
Return
End Try
Dim j As Integer
For j = 0 To iFiles.Length - 1
Rhino.RhinoDoc.ActiveDoc.Import(iFiles(j))
Rhino.RhinoApp.SetFocusToMainWindow()
Rhino.RhinoApp.SendKeystrokes(" ", True) '此语句不起作用,无法向命令行发送正确的命令
Debug.Print("ElementAt:" + Rhino.RhinoDoc.ActiveDoc.Objects.GetObjectList(ObjectType.Brep).ElementAt(m).Name) '打印出来的结果总是“ElementAt:01”,期望值“ElementAt:01、ElementAt:02、ElementAt:03……”
m = m + 1
Debug.Print("LastOrDefault:" + Rhino.RhinoDoc.ActiveDoc.Objects.GetObjectList(ObjectType.Brep).LastOrDefault().Name) '打印出来的结果总是“LastOrDefault:01”,期望值“LastOrDefault:01、LastOrDefault:02、LastOrDefault:03……”
Debug.Print("Last:" + Rhino.RhinoDoc.ActiveDoc.Objects.GetObjectList(ObjectType.Brep).Last().Name) '打印出来的结果总是“Last:01”
'我的目的是获取到刚刚导入到Rhino的对象,和ID,然后对它进行其它操作。
Next
Next
End Sub
- 我用的测试文件在附件中
test.rar (913.5 KB)