我使用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
答案 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项目中:
然后你就可以使用这样的类型变量:
Dim acadApp As AcadApplication = Activator.CreateInstance(acadType)