插入块i的问题
你好我想用vb添加一个块。net在autocad中位于一条直线的中间。这条线也必须画出来,所以我让用户点击这条线的起点和终点。
我从这些点计算出中点。然后,在计算出的中点上添加块会出现问题。
Dim startpunt As Object
Dim eindpunt As Object
Dim midden As Object
Dim inspectieput As AcadObject
Dim putnummer As AcadObject
Dim dekselhoogte As AcadObject
Dim aanlegjaar As AcadBlock
Dim strenginfo As AcadBlock
Dim streng As AcadObject
Dim attributen As Object
Dim I As Integer
Dim attribuutnaam As String
' Get the first point without entering a base point
startpunt = ThisDrawing.Utility.GetPoint(, "What is the beginning of the line?: ")
eindpunt = ThisDrawing.Utility.GetPoint(, "What is the end of the line?: ")
midden(0) = (startpunt(0) + eindpunt(0)) / 2
midden(1) = startpunt(1) / 2 + eindpunt(1) / 2
midden(2) = startpunt(2) / 2 + eindpunt(2) / 2
If CBXbestaandstreng.Checked = True Then
Else
streng = ThisDrawing.ModelSpace.AddLine(startpunt, eindpunt)
aanlegjaar = ThisDrawing.ModelSpace.InsertBlock(midden, "C:\block 1.dwg", 1, 1, 1, 0)
end if
Next
I = Nothing
attributen = Nothing
attribuutnaam = Nothing
End If
有人有想法吗? 这更像VBA而不是VB。净额。如何在VBA编辑器中编写此代码段?Visual Studio?它会是通过AutoCAD的NETLOAD命令加载的DLL的一部分吗?或者,可能作为EXE,通过Autodesk与AutoCAD交互。AutoCAD。互操作?
我们可以给出的最佳建议是基于我们期望代码如何编译。 谢谢你的回答。
它是在Visual Studio中编写的。使用netload命令加载DLL,然后可以使用此命令。 不幸的是,我没有很多使用互操作的经验,但是,如果您将这行更改为:
Dim aanlegjaar As AcadBlockReference
据推测,该项目是一个VBA到VB的项目。净迁移。如果是的话,这肯定是最直接的翻译。
这个NET API具有用于此(和许多其他)任务的附加功能。时间花在调查上是值得的。NET(托管ARX),如果代码注定要通过netload运行。 嗨,谢谢你的反应。事实上,这是一个VBA到VB。净迁移。我尝试了你的建议,但没有解决任何问题。我认为这与
Dim midden AsObject
但我不知道该怎么办。我希望你知道。 考虑到这是从VBA-->VB的迁移,也许我们应该谨慎地备份一会儿。NET以确保首先涵盖一些基本知识?
这篇文章可能有一些有用的链接,以确保您拥有所有必要的应用程序和支持文件,以便在您的AutoCAD版本中使用Visual Studio进行编码:
一旦你建立了所有这些,你会希望(我认为),能够调试。。。假设您正在使用Visual Studio 2010 Express,这篇文章可能会派上用场:
另外,您可能需要在Visual Studio(Express?)中编写代码一个应用程序,用于在GetObject或CreateObject中检查AutoCAD的现有实例,在这种情况下,本文可能会有所帮助:
**注意-本示例使用Excel应用程序对象,但可以轻松调整以获取/创建AutoCAD应用程序对象。
HTH公司 FWIW-
AutoCAD。NET开发者指南>控制AutoCAD环境>提示用户输入>获取点方法 试试这个:
<CommandMethod("BatM")> _
Public Sub BlockAtMid()
Dim startpunt() As Double = New Double() {0.0, 0.0, 0.0}
Dim eindpunt() As Double = New Double() {0.0, 0.0, 0.0}
Dim midden() As Double = New Double() {0.0, 0.0, 0.0}
Dim aanlegjaar As AcadBlockReference
Dim streng As AcadLine
Dim ThisDrawing As AcadDocument = Autodesk.AutoCAD.ApplicationServices.Application. _
DocumentManager.MdiActiveDocument.AcadDocument
' Get the first point without entering a base point
startpunt = ThisDrawing.Utility.GetPoint(, "What is the beginning of the line?: ")
eindpunt = ThisDrawing.Utility.GetPoint(startpunt, "What is the end of the line?: ")
midden(0) = (startpunt(0) + eindpunt(0)) / 2
midden(1) = startpunt(1) / 2 + eindpunt(1) / 2
midden(2) = startpunt(2) / 2 + eindpunt(2) / 2
streng = ThisDrawing.ModelSpace.AddLine(startpunt, eindpunt)
aanlegjaar = ThisDrawing.ModelSpace.InsertBlock(midden, "C:\block 1.dwg", 1, 1, 1, 0)
End Sub
页:
[1]