马佳弘 发表于 2016-4-10 13:46:05

求助:未能加载文件或程序集“”或它的某一个依赖项。系统找不到指定的文件。

本人机械设计人员,想自己做点二次开发自己用,用的vs2012中的vb.net。
新建项目后添加引用,然后复制到本地=fasle。代码如下,运行时报错如图。
本人电脑win7x64,cpu选anycpu、anycpu优先x86、x86、x64都不行。
启用vs承载进程选与不选也都不行。
引用的文件确实存在,路径正确。
求各位二次开发高手、vb.net高手指点。

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.Colors

Public Class Form1
    Dim acadapp As AutoCAD.AcadApplication
    Dim acaddat As AutoCAD.AcadDatabase
    Dim acaddoc As AutoCAD.AcadDocument
    Dim pro() As System.Diagnostics.Process '搜索进程用
    Dim acLyrTbl As Autodesk.AutoCAD.DatabaseServices.LayerTable
    Dim acLyrTblRec As Autodesk.AutoCAD.DatabaseServices.LayerTableRecord
    Dim acBlkTbl As Autodesk.AutoCAD.DatabaseServices.BlockTable
    Dim acBlkTblRec As Autodesk.AutoCAD.DatabaseServices.BlockTableRecord

    Private Sub Form1_Load() Handles MyBase.Load
      '*****以下检测cad是否启动,不启动则启动,启动不了则报错。*****
      pro = System.Diagnostics.Process.GetProcessesByName("acad")
      If pro.Length <= 0 Then
            On Error Resume Next
            acadapp = GetObject(, "AutoCAD.acadApplication")
            acadapp.Visible = True
            acadapp.WindowState = AutoCAD.AcWindowState.acMax
            AppActivate(acadapp.Caption)
            If Err.Number Then
                Err.Clear()
                acadapp = CreateObject("AutoCAD.Application")
                If Err.Number Then
                  MessageBox.Show("不能运行AutoCAD,请检查是否安装了AutoCAD")
                  Exit Sub
                End If
            End If
      End If
      '*****以上检测cad是否启动,不启动则启动,启动不了则报错。*****
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      acaddoc = acadapp.DocumentManager.MdiActiveDocument
      MessageBox.Show("1")
      acaddat = acaddoc.Database
      MessageBox.Show("2")
      Using acTrans As Transaction = acaddat.TransactionManager.StartTransaction()
            MessageBox.Show("3")
            acLyrTbl = acTrans.GetObject(acaddat.LayerTableId, OpenMode.ForRead)
            MessageBox.Show("4")
            If acLyrTbl.Has("mjh") = False Then
                acLyrTblRec = New LayerTableRecord()
                acLyrTblRec.Color = Color.FromColorIndex(ColorMethod.ByAci, 251)
                acLyrTblRec.Name = "mjh"
                acLyrTbl.UpgradeOpen()
                acLyrTbl.Add(acLyrTblRec)
                acTrans.AddNewlyCreatedDBObject(acLyrTblRec, True)
            End If
            acBlkTbl = acTrans.GetObject(acaddat.BlockTableId, OpenMode.ForRead)
            acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), OpenMode.ForWrite)
            acTrans.Commit()
      End Using
    End Sub
End Class


guohq 发表于 2016-4-11 09:36:14

你新建项目的类型是一个 窗体程序,还是一个类库? AutoCAD.Net开发,要求是一个类库,然后加载到CAD中运行。你有可能是使用了winForm方式开发。

马佳弘 发表于 2016-4-12 09:12:29

guohq 发表于 2016-4-11 09:36 static/image/common/back.gif
你新建项目的类型是一个 窗体程序,还是一个类库? AutoCAD.Net开发,要求是一个类库,然后加载到CAD中运行。 ...

谢谢,我试试,隔行如隔山,多多指教。

马佳弘 发表于 2016-4-14 15:44:34

guohq 发表于 2016-4-11 09:36 static/image/common/back.gif
你新建项目的类型是一个 窗体程序,还是一个类库? AutoCAD.Net开发,要求是一个类库,然后加载到CAD中运行。 ...

按照您说的,问题确实解决了。我还想问一下,如果我希望用button Click触发程序,该如何插入些button Click的代码呢?

guohq 发表于 2016-4-16 13:31:31

在项目中新建一个窗体,窗体中放上button,双击 button,然后写代码

枫叶(fox) 发表于 2020-7-29 19:54:07

不能通过VB窗体外部调用CAD吗?我想实现外部程序调用CAD自动绘图功能,不知道如何实现?
页: [1]
查看完整版本: 求助:未能加载文件或程序集“”或它的某一个依赖项。系统找不到指定的文件。