我试图得到用户选择的线/样条的长度。
这是我用来让用户选择行的代码:
Dim USel As Selection
Dim USelLB
Dim InputObject(0)
InputObject(0) = "AnyObject"
Set USel = CATIA.ActiveDocument.Selection
Set USelLB = USel
USel.Clear
USelLB.Clear
Linestomeasure = USelLB.SelectElement3(InputObject, "Select objects to list names", True, CATMultiSelTriggWhenUserValidatesSelection, False)Linestomeasure是一个public变量,在mainsub中,我一直试图使用以下代码来度量Linestomeasure:
Dim pd1 As PartDocument
Dim a As Object
Dim c As Reference
a = TrimLines.Item(1)
c = pd1.Part.CreateReferenceFromObject(a)
Dim Mea1 As Measurable
Dim TheSPAWorkbench As SPAWorkbench
Set TheSPAWorkbench = pd1.GetWorkbench("SPAWorkbench")
Set Mea1 = TheSPAWorkbench.GetMeasurable(c)但是,当我运行代码时,a = trimLines.Item(1)会在调试器中高亮显示错误消息"Object Required“。
有没有人知道我如何更改代码,以便将行的长度作为可以使用的变量?或者只是用不同的方式去做我想做的事?
发布于 2017-07-04 10:29:14
编辑回复以反映的评论
看起来,您给USelLB.SelectElement3分配了错误类型的变量,也不知道它实际上是如何工作的。
Selection.SelectElement3返回一个反映所选内容是否成功的String。
从Object中检索到的Selection位于Selection.Item(Index)中
您的代码应该如下所示:
Dim PD1 as PartDocument
Dim Sel 'as Selection 'Sometimes it is needed to comment the selection to use the .SelectElement3 method
Dim InputObjType(0)
Dim SelectionResult as string
Dim LineToMeasure as AnyObject
Dim I as Integer
Dim SpaWorkbench as SPAWorkbench
Dim Measurable as Measurable
InputObjType(0) = "AnyObject"
'set PD1 = Catia.ActiveDocument
set Sel = PD1.Selection
Set TheSPAWorkbench = pd1.GetWorkbench("SPAWorkbench")
Sel.Clear
SelectionResult= Sel.SelectElement3(InputObject, "Select objects to list names", True, CATMultiSelTriggWhenUserValidatesSelection, False)
If SelectionResult = "Ok" or SelectionResult = "Normal" then 'Check if user did not cancel the Selection
For i = 1 to Selection.Count
Set LineToMeasure = Sel.Item(i).Value
set Measurable = SpaWorkbench.GetMeasurable(LineToMeasure)
'Measure whatever you need here.
Next
End If请记住,使用AnyObject类型筛选器可能会导致用户选择不需要的对象。你应该用更具体的过滤器。
https://stackoverflow.com/questions/44888672
复制相似问题