vb.net autocad获取blockreference winform

时间:2017-01-02 06:27:51

标签: vb.net winforms autocad

我使用vb.net来开发winform app。我可以使用块引用,阻止名称“Tab1”。现在我想要获取此块要编辑块属性,但我不知道该怎么做,我搜索gg但没有结果。

        with CTE as
        (
          select distinct *,
          CASE WHEN COALESCE(LEAD(rowpart) OVER (ORDER BY Id, startdate),0) = 0 
          THEN 1
          ELSE 0 
          end as RN2
          from #table
        )          
        select distinct bb.id,bb.startdate,aa.enddate from 
         (
            select C2.*,ROW_NUMBER()OVER(  ORDER BY id, startdate ) RN3              
            from CTE C2 where RN2= 1 
          )  aa 
          join
          ( 
             select distinct *,
             ROW_NUMBER()OVER(  ORDER BY id, startdate ) RN3 
              from CTE c1  where rowpart=0
          ) bb on aa.RN3=bb.RN3

enter image description here

1 个答案:

答案 0 :(得分:1)

您不需要使用InvokeMember,VB.NET支持后期绑定。

Dim acadType As Type = Type.GetTypeFromProgID("AutoCAD.Application")
Dim acadApp = Activator.CreateInstance(acadType)
acadApp.Visible = true
Dim doc = acadApp.Documents.Open("C:\Users\Kid\Downloads\IDEA FOR TOOL\TEST\TABLE ATTRIBUTE.dwg")
Dim entity
For Each entity In doc.ModelSpace
  If entity.ObjectName = "AcDbBlockReference" AndAlso _
    String.Equals(entity.Name, "Tab1", StringComparison.OrdinalIgnoreCase) Then
    Dim att
    For Each att In entity.GetAttributes()
      If att.TagString = "A" Then
        att.TextString = "Your value"
      End If
    Next          
  End If
Next

如果您想要自动完成,则需要下载ObjectARX SDK并将以下COM引用添加到您的VS项目中:

  1. C:\ ObjectARX 20 .. \ inc-x64 \ Autodesk.AutoCAD.Interop.dll
  2. C:\ ObjectARX 20 .. \ inc-x64 \ Autodesk.AutoCAD.Interop.Common.dll
  3. 然后你就可以使用这样的类型变量:

    Dim acadApp As AcadApplication = Activator.CreateInstance(acadType)
    
相关问题