首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何要求用户在Microstation VBA的行元素(在ILocateCommandEvents_Accept处理程序中)的顶点上快照

如何要求用户在Microstation VBA的行元素(在ILocateCommandEvents_Accept处理程序中)的顶点上快照
EN

Stack Overflow用户
提问于 2017-11-02 21:56:00
回答 1查看 618关注 0票数 0

我知道如何在Microstation中编写一个VBA宏,它将要求用户选择一个元素:

代码语言:javascript
复制
Sub Create2DCrossLines()
    ' Set error handler
    On Error GoTo ErrorHandler

    ' Let the user select the bank elements himself
    Call CommandState.StartLocate(New clsSelectBanksLCE)

    Exit Sub

ErrorHandler:
    Call ReportError("Create2dCrossLines")
End Sub

clsSelectBanksLCE使用ILocateCommandEvents来管理逻辑的这一部分。例如,用户可以选择一个LineElement,当触发Accept事件时,它运行一个操作:

代码语言:javascript
复制
Private Sub ILocateCommandEvents_Accept(ByVal Element As Element, _
                                        Point As Point3d, _
                                        ByVal View As View)

在我的特殊情况下,我们跟踪选择元素1,然后跟踪元素2,一旦这两个元素都被选中,它就会继续进行。这一切都很好。

我的问题是:在我接受了第一个元素之后,在继续选择next (即:在Accept处理程序中)之前,我希望让用户能够捕捉到line元素的两个顶点。

我需要知道他们想要处理的行元素的哪一部分。我想不出怎么做。在AutoCAD中,您可以使用GetPoint

所以我想让他们抓住这个线元素的第一个顶点,然后在末端点上。之后,我们可以继续选择第二个元素。

更新

我刚刚被这个文章绊倒了。我注意到上面写着:

一旦用户接受了一个元素,我们应该启动另一个实现IPrimitiveCommandEvents的类,以获得一个目标数据池。最后,计算从提供的到目标datapoint的偏移量,并移动元素。

这似乎是我想要的,但我只是不清楚什么是正确的订单。现在我有:

ILocateCommandEvents_Start --这开始了定位过程。

ILocateCommandEvents_LocateFilter。如果元素是LineElement,那么它将分配m_Element1,而第二个事件触发则分配m_Element2

ILocateCommandEvents_Accept如果这两个变量都不是nothing,则运行主进程。

看到我的困境了吗?听起来我需要:

  • 运行一个ILocateCommandEvents实例,只选择一个元素。
  • 然后运行IPrimitiveCommandEvents的一个实例以获得第一个快照点。
  • 然后运行另一个IPrimitiveCommandEvents实例以获得第二个快照点。
  • 然后运行ILocateCommandEvents的另一个实例以获得第二个元素。
  • 最后,一旦第二个元素被接受,执行我的处理。

所以我才明白我需要这么做。或者,我是否可以使用当前让用户选择两个元素的一个ILocateCommandEvents类?

感谢你的指导。

更新

我按照上面的逻辑让它工作起来。文章真是帮了大忙。我现在唯一的问题是我需要画一个橡皮筋。但这是另一个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-03 11:06:57

正如本文章中所提到的

一旦用户接受了一个元素,我们应该启动另一个实现IPrimitiveCommandEvents的类来获得一个目标数据池。最后,计算从提供的locate datapoint 到目标数据池的偏移量,并移动元素。

该链接还提供了关于如何使用IPrimitiveCommandEvents事件类的示例代码。

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

https://stackoverflow.com/questions/47085241

复制
相关文章

相似问题

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