mccad 发表于 2004-4-3 20:44:00

你写的是AX的方法,而不是ARX的方法吧

ahlzl 发表于 2004-4-3 21:20:00

mccad发表于2004-4-3 20:44:00static/image/common/back.gif你写的是AX的方法,而不是ARX的方法吧

<BR>AX是什么啊?

ahlzl 发表于 2004-4-4 09:56:00

lzh741206发表于2004-4-2 23:03:00static/image/common/back.gifDim DataType(1) As Short, Data(1) As Object                                                       Dim c As Line                                                       Dim d(2), e(2) As Double                                                       Dim f As Autodesk.AutoCAD.Interop.AcadApplication                                                       e(1) = 10                                                       f


我终于运行成功了.谢谢!


能不能把上面的代码解释一下.先谢谢了!

雪山飞狐_lzh 发表于 2004-4-6 00:08:00

这是ARX的方法Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.Geometry
Imports DBTransMan = Autodesk.AutoCAD.DatabaseServices.TransactionManager
Public Class TLCad
       <CommandMethod("test")> Public Shared Sub MytestCmd()
               Dim db As Database = Application.DocumentManager.MdiActiveDocument.Database
               Dim tm As DBTransMan = db.TransactionManager
               Dim myT As Transaction = tm.StartTransaction()
               Try
                     Dim line As New Line(New Point3d(0, 0, 0), New Point3d(1, 1, 0))
                     Dim bt As BlockTable = CType(tm.GetObject(db.BlockTableId, OpenMode.ForRead, False), BlockTable)
                     Dim btr As BlockTableRecord = CType(tm.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite, False), BlockTableRecord)
                     btr.AppendEntity(line)
                     tm.AddNewlyCreatedDBObject(line, True)
                     Dim tbl As RegAppTable = CType(myT.GetObject(db.RegAppTableId, OpenMode.ForWrite, False), RegAppTable)
                     Dim app As New RegAppTableRecord
                     app.Name = "test1"
                     tbl.Add(app)
                     tm.AddNewlyCreatedDBObject(app, True)
                     line.XData = New ResultBuffer( _
                                       New TypedValue(CInt(DxfCode.ExtendedDataRegAppName), "test1"), _
                                       New TypedValue(CInt(DxfCode.ExtendedDataAsciiString), "tlcad test"))
                     myT.Commit()
               Finally
                     myT.Dispose()
               End Try
       End Sub
End Class

ahlzl 发表于 2004-4-6 13:44:00

lzh741206发表于2004-4-6 0:08:00static/image/common/back.gif这是ARX的方法



Imports Autodesk.AutoCAD.ApplicationServicesImports Autodesk.AutoCAD.DatabaseServicesImports Autodesk.AutoCAD.Runtime


运行成功.谢谢!谢谢!!谢谢!!!


能否再给一个橡皮线的代码:画直线,命令行提示第一点,用户输入,再拖鼠标可出现橡皮线.先谢谢了.

subtlation 发表于 2004-4-7 09:02:00

请问一下,这种要连接autocad的vb。net程序如何调试?


我在设置中在调试前先打开autocad2005,但是好像不向下运行了。楼上的把有可以直接调试的那个实例文件打包发上来好吗?我下载下来看看需要哪些设置。

ahlzl 发表于 2004-4-7 20:24:00

啊!24楼的代码我运行还是有问题!加载后,第一次运行正常,第二次就不行了.





雪山飞狐_lzh 发表于 2004-4-7 20:40:00

本帖最后由 作者 于 2004-4-10 19:56:33 编辑

注意这段代码 tbl.Add(app)
一个运行阶段只能注册一次应用程序你肯定运行了几遍

ahlzl 发表于 2004-4-7 21:04:00

lzh741206发表于2004-4-7 20:40:00static/image/common/back.gif注意这段代码



tbl.Add(app)





一个运行阶段只能注册一次应用程序


你肯定运行了几遍

如果加载后,想多次运行程序.代码该怎么看呢?不好意思,我很菜!<BR>

雪山飞狐_lzh 发表于 2004-4-7 21:10:00

我只是写了个给直线附加扩展数据的例子


可以在tbl.Add(app):tm.AddNewlyCreatedDBObject(app, True)<BR>前加一个判断,如果有该应用程序名就不执行<BR>
页: 1 2 [3] 4 5
查看完整版本: Autocad2005编程指南(1)用VB.net编写Arx程序