首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CATIA测量用户选择的行/spline

CATIA测量用户选择的行/spline
EN

Stack Overflow用户
提问于 2017-07-03 14:54:33
回答 1查看 3.1K关注 0票数 2

我试图得到用户选择的线/样条的长度。

这是我用来让用户选择行的代码:

代码语言:javascript
复制
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

代码语言:javascript
复制
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“。

有没有人知道我如何更改代码,以便将行的长度作为可以使用的变量?或者只是用不同的方式去做我想做的事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-04 10:29:14

编辑回复以反映的评论

看起来,您给USelLB.SelectElement3分配了错误类型的变量,也不知道它实际上是如何工作的。

Selection.SelectElement3返回一个反映所选内容是否成功的String

Object中检索到的Selection位于Selection.Item(Index)

您的代码应该如下所示:

代码语言:javascript
复制
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类型筛选器可能会导致用户选择不需要的对象。你应该用更具体的过滤器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44888672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档