vb.net + Autocad中的getentity方法?

时间:2018-04-27 06:13:03

标签: vb.net autocad vb6-migration

ACADAPP = System.Runtime.InteropServices.Marshal.GetActiveObject("AutoCAD.Application")

ACADDOC = ACADAPP.Documents.ActiveDocument
second_POINT = ACADDOC.Utility.GetEntity(select_object, , "Select Object <Enter to Exit> : ")

ACADDOC.Utility.GetEntity返回错误

  

类型不匹配

在vb.net autocad中,当我尝试使用vb6时,它运行正常。

2 个答案:

答案 0 :(得分:0)

第二个空参数怎么样 - 这是正确的吗?根据规范,它期望一个对象 - 一个点。

object.GetEntity Object, PickedPoint [, Prompt]

比如......

ThisDrawing.Utility.GetEntity returnObj, basePnt, "Prompt, i.e. Select an object"

顺便说一下 - 这真的是一个VB.NET吗?或Visual Basic for Application(VBA)?请注意,语法和功能存在显着差异... AutoDesk通用文档(包括在线)适用于VBA,而不是VB.NET。

编辑:

Dim returnObj As AcadObject
Dim basePnt As Variant

ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select an object"

请注意,此示例适用于VBA,我从未使用过VB.NET和ACAD,我甚至不确定它是如何受支持的。 确保您也处理空选择 ...

答案 1 :(得分:0)

这是一个返回所选对象的简单函数。

PromptEntityResult的ObjectId属性是实际返回的实体,您必须通过该事务获得该实体。

Public Shared Function GetEntity() As PromptEntityResult
    Dim retVal As PromptEntityResult = Nothing
    Dim oDoc As Document = Core.Application.DocumentManager.MdiActiveDocument
    Dim oEd As Editor = oDoc.Editor
    Dim oPeo As New PromptEntityOptions(Environment.NewLine & "Please select an object")

    With oPeo
        .SetRejectMessage(Environment.NewLine & "Cannot select that object.")
        .AllowNone = False
        .AllowObjectOnLockedLayer = True
    End With

    retVal = oEd.GetEntity(oPeo)

    Return retVal
End Function