wang_qiang 发表于 2009-10-21 21:20:00

关于.NET与VBA技术的问题

<p>用.net技术后,AutoCAD还支持原来的VBA(VB)程序吗?</p><p>在2010里,如果要开发独立于AutoCAD的exe程序来控制AutoCAD进行工作,用VB.NET能实现吗?如果能实现,与现在用VB6实现的方法有什么区别吗?</p><p>以上问题还请高手赐教,多谢了</p>

雪山飞狐_lzh 发表于 2009-10-22 08:46:00

<p>开发独立于AutoCAD的exe程序用VB.NET能实现,和VB没有什么区别</p><p>用.net技术后,AutoCAD还支持原来的VBA(VB)程序吗?</p><p>Com接口还是支持的,VB程序没问题</p><p>2010版没有默认安装VBA编辑器,但是可以在官网下载</p><p>但是没有默认安装,大多数用户是不会装的</p>

wang_qiang 发表于 2009-10-22 20:29:00

<div class="codeBlock"><pre class="codeLine">多谢版主<br/>在.NET国用类似下面的代码作一个.dll(包含窗体界面的,这部分没有上传),在AutoCAD的命令行中执行AddLine命令,<br/>在AutoCAD中调用时窗体是模态窗口,当需要观察图形结果时而双不想退出程序时不能实现(此时不能调整AutoCAD的窗口)。<br/>所以,当需要根据图形结果再用程序进行结果调整时,用独立于AutoCAD的EXE形式的程序会方便些。<br/>我曾试过在.NET中用AutoCAD ActiveX 控制AutoCAD2007一样好有效,但不知道在一般功能范围内,这种方法与.NET开发接口有什么不同.</pre><pre class="codeLine">Imports Autodesk.AutoCAD.Runtime<br/>Imports Autodesk.AutoCAD.ApplicationServices<br/>Imports Autodesk.AutoCAD.DatabaseServices<br/>Imports Autodesk.AutoCAD.Geometry <br/>&lt;CommandMethod("AddLine")&gt; _<br/>Public Sub AddLine() <br/>&nbsp; Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument<br/>&nbsp; Dim acCurDb As Database = acDoc.Database&nbsp; <br/>&nbsp; Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim acBlkTbl As BlockTable<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead)&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim acBlkTblRec As BlockTableRecord<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenMode.ForWrite)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim acLine As Line = New Line(New Point3d(5, 5, 0), _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; New Point3d(12, 3, 0)) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acLine.SetDatabaseDefaults()&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acBlkTblRec.AppendEntity(acLine)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acTrans.AddNewlyCreatedDBObject(acLine, True)&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acTrans.Commit()<br/>&nbsp; End Using<br/>End Sub</pre></div>
页: [1]
查看完整版本: 关于.NET与VBA技术的问题