明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2924|回复: 5

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

[复制链接]
发表于 2016-4-10 13:46 | 显示全部楼层 |阅读模式
本人机械设计人员,想自己做点二次开发自己用,用的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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2016-4-11 09:36 | 显示全部楼层
你新建项目的类型是一个 窗体程序,还是一个类库? AutoCAD.Net开发,要求是一个类库,然后加载到CAD中运行。你有可能是使用了winForm方式开发。
 楼主| 发表于 2016-4-12 09:12 | 显示全部楼层
guohq 发表于 2016-4-11 09:36
你新建项目的类型是一个 窗体程序,还是一个类库? AutoCAD.Net开发,要求是一个类库,然后加载到CAD中运行。 ...

谢谢,我试试,隔行如隔山,多多指教。
 楼主| 发表于 2016-4-14 15:44 | 显示全部楼层
guohq 发表于 2016-4-11 09:36
你新建项目的类型是一个 窗体程序,还是一个类库? AutoCAD.Net开发,要求是一个类库,然后加载到CAD中运行。 ...

按照您说的,问题确实解决了。我还想问一下,如果我希望用button Click触发程序,该如何插入些button Click的代码呢?
发表于 2016-4-16 13:31 | 显示全部楼层
在项目中新建一个窗体,窗体中放上button,双击 button,然后写代码
发表于 2020-7-29 19:54 | 显示全部楼层
不能通过VB窗体外部调用CAD吗?我想实现外部程序调用CAD自动绘图功能,不知道如何实现?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-27 11:50 , Processed in 0.165103 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表