Hi Friends, in this article I will explain about how to open AutoLISP file through vb.net windows forms.
Suppose we are working on VB.NET windows forms ,suddenly we
call the LISP function from VB.NET windows form then it use because we already
the code in AutoLISP and rewritten the LISP file in VB.NET its time waste so
simply call the AutoLISP command from VB.NET is very easy compare to rewrite.
I already explained in the article How to open new AutoCAD drawing using VB.NET or C#? Or How to Connect with AutoCAD and Open A Drawing in VB.NET /C#.
I already explained in the article How to open new AutoCAD drawing using VB.NET or C#? Or How to Connect with AutoCAD and Open A Drawing in VB.NET /C#.
How to create a project in VB.NET?
1.Create new project ,File--> New Project
2.Select windows form application template and give project name and click ok.
3.The project will look like below figure.
4.Add references ,right click on the project and select Add reference.
5.Add AutoCAD 2007/2010 Type Library and AutoCAD/ObjectDBX Common 17.0/18.0 type Library from COM tab.
6.Add Reference --> acdbmgd.dll
7.Add reference --> acmgd.dll
write the below code to call the lisp file from VB.NET or C#.
VB.NET Code:
Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.Interop.Common
Public Class Form1
Private Sub LoadLISPFile_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles LoadLISPFile.Click
Me.Hide()
LoadLisp()
Me.Show()
End Sub
Public Sub LoadLisp()
Dim
appver As Object
= TryCast(My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\Autodesk\AutoCAD",
"CurVer", Nothing), Object)
If
appver Is Nothing
Then
MessageBox.Show("Its not working ,have a some error ")
Return
End If
Dim
AcadApp As AcadApplication = New AcadApplication
Try
If
AcadApp Is Nothing
Then
AcadApp = GetObject(, "AutoCAD.Application" +
appver.ToString())
End
If
Catch
ex As System.Exception
MessageBox.Show("Working in opened document only!")
Return
End Try
AcadApp.Visible = True
AcadApp.WindowState =
AcWindowState.acMax
Dim
AcDoc = AcadApp.ActiveDocument
Dim
command As String
= "(load
""D:/alert.lsp"")"
AcDoc.SendCommand(command & "(C:alert) ")
End Sub
End Class
|
C# Code:
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Interop.Common;
Public Class Form1
{
private
void LoadLISPFile_Click(System.Object sender, System.EventArgs e)
{
this.Hide();
LoadLisp();
this.Show();
}
public
void LoadLisp()
{
object
appver = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD",
"CurVer", null) as object;
if
(appver == null) {
MessageBox.Show("Its not working ,have a some error ");
return;
}
AcadApplication AcadApp = new AcadApplication();
try
{
if
(AcadApp == null) {
AcadApp =
Interaction.GetObject(, "AutoCAD.Application"
+ appver.ToString());
}
} catch
(System.Exception ex) {
MessageBox.Show("Working in opened document only!");
return;
}
AcadApp.Visible = true;
AcadApp.WindowState =
AcWindowState.acMax;
dynamic AcDoc = AcadApp.ActiveDocument;
string
command = "(load \"D:/alert.lsp\")";
AcDoc.SendCommand(command + "(C:alert) ");
}
}
|
When we run the above application or just click on play button or press F5 then automatically AutoCAD opens and
execute the code in alert.LSP file.
Thanks for reading my Aspdotnet-Roja BLOG..
Hi Kishore,
ReplyDeleteNice Article ,very detail and unique,thanks for sharing .
Dotnetnuke cms
Thanks for your complement Dotbetnuke cms,your complements give extra energy to write more articles.
Delete