本文主要给大家介绍一下SmartSoft中用C#.Net实现AutoCAD块属性提取的方法,并给出实例代码与大家共享。此类实现AutoCAD块属性提取功能,在VS.Net2003(2005)+AutoCAD2004(2007)下调试通过。
以下是引用片段:
usingSystem;
usingAutoCAD=Autodesk.AutoCAD.Interop;
usingSystem.Runtime.InteropServices;
usingdbx=Autodesk.AutoCAD.Interop.Common;
namespaceSmartSoft.ACAD
{
///
///读取AutoCAD属性信息
///
publicclassAutoCADConnector:IDisposable
{
privateAutoCAD.AcadApplication_Application;
privatebool_Initialized;
privatebool_Disposed;
#region类初始化及析构操作
///
///类初始化,试图获取一个正在运行的AutoCAD实例,
///如果没有则新起动一个实例。
///
publicAutoCADConnector()
{
try
{
//取得一个正在运行的AUTOCAD实例
this._Application=(AutoCAD.AcadApplication)Marshal.GetActiveObject("AutoCAD.Application.17");
}//endoftry
catch
{
try
{
//建立一个新的AUTOCAD实例,并标识已经建立成功。
_Application=newAutoCAD.AcadApplicationClass();
_Initialized=true;
}
catch
{
thrownewException("无法起动AutoCAD应用程序,确认已经安装");
}
}//endofcatch
}//endofAutoCADConnector
~AutoCADConnector()
{
Dispose(false);
}
publicvoidDispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protectedvirtualvoidDispose(booldisposing)
{
if(!this._Disposed&&this._Initialized)
{
//如果建立了AUTOCAD的实列,调用QUIT方法以避免内存漏洞
this._Application.ActiveDocument.Close(false,"");
this._Application.Quit();
this._Disposed=true;
}
}
#endregion
#region公共用户接口属性
///
///取得当前类所获得的AUTOCAD实例
///
publicAutoCAD.AcadApplicationApplication
{
get
{
return_Application;
}
}//endofApplication
#endregion
#region公共用户接口方法
///
///根据给定的文件名以AxDbDocument类型返回该文档
///
publicdbx.AxDbDocumentGetThisDrawing(stringFileName,stringPassWord)
{
ACAD.AutoCADConnectorConnector=newAutoCADConnector();
//这是AutoCAD2004的ProgrameID
stringprogrameID="ObjectDBX.AxDbDocument.17";
AutoCAD.AcadApplicationAcadApp=Connector.Application;
dbx.AxDbDocumentdbxDoc;
dbxDoc=(dbx.AxDbDocument)AcadApp.GetInterfaceObject(programeID);
try
{
if(System.IO.File.Exists(FileName)==false)thrownewException("文件不存在。");
dbxDoc.Open(FileName,PassWord);
}//endoftry
catch(Exceptione)
{
System.Windows.Forms.MessageBox.Show(e.Message);
dbxDoc=null;
}
returndbxDoc;
}//endoffunctionGetThisDrawing
///
///根据当前文档和块名取得当前块的引用
///
publicdbx.AcadBlockReferenceGetBlockReference(dbx.AxDbDocumentthisDrawing,stringblkName)
{
dbx.AcadBlockReferenceblkRef=null;
boolfound=false;
try
{
foreach(dbx.AcadEntityentityinthisDrawing.ModelSpace)
{
if(entity.EntityName=="AcDbBlockReference")
{
blkRef=(dbx.AcadBlockReference)entity;
//System.Windows.Forms.MessageBox.Show(blkRef.Name);
if(blkRef.Name.ToLower()==blkName.ToLower())
{
found=true;
break;
}
}//endofentity.EntityName=="AcDbBlockReference"
}//endofforeachthisDrawing.ModelSpace
}//endoftry
catch(Exceptione)
{
System.Windows.Forms.MessageBox.Show("图形中有未知的错误,格式不正确或图形数据库需要修愎。系统错误提示:"+e.Message,"信息",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Warning);
thisDrawing=null;
}//endofcatch
if(!found)blkRef=null;
returnblkRef;
}//endoffunctionGetBlockReference
///
///根据给定的块引用(dbx.AcadBlockReference)和属性名返回属性值
///
publicobjectGetValueByAttributeName(dbx.AcadBlockReferenceblkRef,stringAttributeName)
{
object[]Atts=(object[])blkRef.GetAttributes();
objectattValue=null;
for(inti=0;i
{
dbx.AcadAttributeReferenceattRef;
attRef=(dbx.AcadAttributeReference)Atts[i];
if(attRef.TagString==AttributeName)
{
attValue=attRef.TextString;
break;
}
}//endoffori
returnattValue;
}//endoffunction
#endregion
}//endofclassCAutoCADConnector
}//endofnamespaceAutoCAD
分享到:
相关推荐
本程序源码是基于C#和ASP.NET实现的,专用于处理多客户端回调场景,下面将详细探讨相关知识点。 一、C#与ASP.NET基础 C#是微软开发的一种面向对象的编程语言,广泛应用于Windows桌面应用、Web应用以及游戏开发。ASP...
通过SmartSoft,用户可以查看、创建或修改这些触发器,以实现复杂的业务逻辑。 5. **存储过程管理**:存储过程是预编译的SQL语句集合,可以提高性能并封装复杂的操作。用户可以通过SmartSoft来创建、修改和执行存储...
【TOP-SmartSoft电力监控组态软件】是振涛自动化...总的来说,Smartsoft V2.0电力监控组态软件凭借其全面的功能和高性能的技术指标,为电力自动化行业提供了高效、可靠的解决方案,实现了电力系统的智能化管理和监控。
在IT行业中,回调(Callback)是一种常见的编程设计模式,它允许一个函数或对象在完成某个操作后调用预先设定的代码块。SmartSoft Multiple Client Callbacks 涉及到的正是这种多客户端间的异步通信机制,特别是在...
SmartSoft Robotics 是一个旨在简化机器人软件开发的框架,其核心理念是通过组件化设计来实现系统的模块化和可重用性。这个框架基于一小组预定义的组件交互模式,确保了组件之间的严格去耦,从而降低了系统的复杂性...
SmartSoft SmartFTP Client
☆ 资料说明:☆ DevExpress DXperience 12.1.4 完美注册补丁; 补丁发布地址: http://smartsoft.5d6d.net/forum-27-1.html
“ SmartSoft”提供了一种基于组件的方法来开发机器人软件(http://smart-robotics.sourceforge.net/)。 该项目提供了SmartSoft想法的基于Message的实现(基于Douglas C. Schmidt的ACE)。
C# 读取保存App.config配置文件的完整源码参考(转) http://smartsoft.5d6d.com/thread-6550-1-1.html C# 读取保存App.config配置文件的完整源码参考 最近出差在北京做一个小项目,项目里需要读取配置文件的小功能...
Smartsoft专案 适用于任何角度,嵌套,离子项目的多种工具 入门 安装软件包: npm install 运行测试应用程序: npm run ui-test:serve NPM 项目模型: npm i @smartsoft001/models 域核心模型的项目: npm i @...
这个框架提供了丰富的工具和功能,使得开发者能够以更低的代码量实现复杂业务逻辑和用户界面。eXpressApp Framework 的核心理念是通过数据驱动的编程模型,以及强大的工作流和业务规则引擎,来加速应用的开发过程。 ...
5. **配置文件(.Config)**:在.NET框架下,.Config文件用于存储应用程序的配置信息,如连接字符串、设置、服务端点等。例如,SelectServer.exe.Config和SmartSoft.exe.config可能包含了与数据库连接相关的信息。 ...
it is an FTP/FTPS/SFTP client for Windows, developed by SmartSoft Ltd. Features include SSL/TLS, IPv6 and FXP support, a backup tool, a transfer queue, proxy and firewall support, multiple connections...
- 安装相应的驱动程序和通信软件,如台达的DriveMaster或其他支持台达PLC的编程工具,例如台达的WPLSoft或SmartSoft。 - 在进行连接前,确保PLC处于STOP模式,避免在运行中修改程序可能导致的错误。 总的来说,理解...
Dxperience 9.3.4 注册机,来自http://smartsoft.5d6d.com/ 已有更新,DxperienceUniversal 9.3.4 原版+破解+注册机
DXperience.8.2.6.Sources 更多关于DX: http://smartsoft.5d6d.com/thread-636-1-1.html
DXperience v2008 vol 2 注册文件,能使用到DXperience 8.2.1,8.2.2,8.2.3,8.2.4,8.2.5,8.2.6 更多dx相关: http://smartsoft.5d6d.com/thread-636-1-1.html
- 对S7-200编程:使用编程软件如Micro/WIN或SmartSoft,定义通信参数,如伙伴地址、数据长度等。 4. **通讯指令**: - S7-300中,可以使用"PUT"和"GET"指令进行数据交换。 - S7-200中,使用“MB”(内存块)或...
SmartUpload组件是由SmartSoft公司开发的一个用于JSP的文件上传解决方案,它提供了一套完整的API,使得文件上传操作变得简单、直观。通过使用SmartUpload,开发者可以方便地处理用户上传的图片、文本文件等各种类型...