`
isiqi
  • 浏览: 16487929 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

SmartSoft中用C#.Net实现AutoCAD块属性提取

阅读更多

本文主要给大家介绍一下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实现的multiple client callbacks 处理技术程序源码

    本程序源码是基于C#和ASP.NET实现的,专用于处理多客户端回调场景,下面将详细探讨相关知识点。 一、C#与ASP.NET基础 C#是微软开发的一种面向对象的编程语言,广泛应用于Windows桌面应用、Web应用以及游戏开发。ASP...

    sqlserver的管理软件smartsoft

    通过SmartSoft,用户可以查看、创建或修改这些触发器,以实现复杂的业务逻辑。 5. **存储过程管理**:存储过程是预编译的SQL语句集合,可以提高性能并封装复杂的操作。用户可以通过SmartSoft来创建、修改和执行存储...

    TOP-SmartSoft电力监控组态软件

    【TOP-SmartSoft电力监控组态软件】是振涛自动化...总的来说,Smartsoft V2.0电力监控组态软件凭借其全面的功能和高性能的技术指标,为电力自动化行业提供了高效、可靠的解决方案,实现了电力系统的智能化管理和监控。

    SmartSoft.MultipleClientCallbacks.zip

    在IT行业中,回调(Callback)是一种常见的编程设计模式,它允许一个函数或对象在完成某个操作后调用预先设定的代码块。SmartSoft Multiple Client Callbacks 涉及到的正是这种多客户端间的异步通信机制,特别是在...

    SmartSoft-Robotics-开源

    SmartSoft Robotics 是一个旨在简化机器人软件开发的框架,其核心理念是通过组件化设计来实现系统的模块化和可重用性。这个框架基于一小组预定义的组件交互模式,确保了组件之间的严格去耦,从而降低了系统的复杂性...

    SmartSoft SmartFTP Client

    SmartSoft SmartFTP Client

    [开发工具] DevExpress DXperience 12.1.4 完美注册补丁

    ☆ 资料说明:☆ DevExpress DXperience 12.1.4 完美注册补丁; 补丁发布地址: http://smartsoft.5d6d.net/forum-27-1.html

    SmartSoft-Robotics-ACE-开源

    “ SmartSoft”提供了一种基于组件的方法来开发机器人软件(http://smart-robotics.sourceforge.net/)。 该项目提供了SmartSoft想法的基于Message的实现(基于Douglas C. Schmidt的ACE)。

    C# 通过配置文件获取数据库连接

    C# 读取保存App.config配置文件的完整源码参考(转) http://smartsoft.5d6d.com/thread-6550-1-1.html C# 读取保存App.config配置文件的完整源码参考 最近出差在北京做一个小项目,项目里需要读取配置文件的小功能...

    smartsoft:适用于任何角度,嵌套,离子项目的多种工具

    Smartsoft专案 适用于任何角度,嵌套,离子项目的多种工具 入门 安装软件包: npm install 运行测试应用程序: npm run ui-test:serve NPM 项目模型: npm i @smartsoft001/models 域核心模型的项目: npm i @...

    eXpressAppFramework 中文帮助文档

    这个框架提供了丰富的工具和功能,使得开发者能够以更低的代码量实现复杂业务逻辑和用户界面。eXpressApp Framework 的核心理念是通过数据驱动的编程模型,以及强大的工作流和业务规则引擎,来加速应用的开发过程。 ...

    数据库工具

    5. **配置文件(.Config)**:在.NET框架下,.Config文件用于存储应用程序的配置信息,如连接字符串、设置、服务端点等。例如,SelectServer.exe.Config和SmartSoft.exe.config可能包含了与数据库连接相关的信息。 ...

    SFTPMSI.exe

    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...

    台达PLC下载电缆连接图

    - 安装相应的驱动程序和通信软件,如台达的DriveMaster或其他支持台达PLC的编程工具,例如台达的WPLSoft或SmartSoft。 - 在进行连接前,确保PLC处于STOP模式,避免在运行中修改程序可能导致的错误。 总的来说,理解...

    Dxperience 9.3.4 注册机

    Dxperience 9.3.4 注册机,来自http://smartsoft.5d6d.com/ 已有更新,DxperienceUniversal 9.3.4 原版+破解+注册机

    DXperience.8.2.6.Sources

    DXperience.8.2.6.Sources 更多关于DX: http://smartsoft.5d6d.com/thread-636-1-1.html

    DXperience v2008 vol 2 注册文件

    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_与S7300之间的MPI通讯

    - 对S7-200编程:使用编程软件如Micro/WIN或SmartSoft,定义通信参数,如伙伴地址、数据长度等。 4. **通讯指令**: - S7-300中,可以使用"PUT"和"GET"指令进行数据交换。 - S7-200中,使用“MB”(内存块)或...

    SmartUpload组件及使用示例

    SmartUpload组件是由SmartSoft公司开发的一个用于JSP的文件上传解决方案,它提供了一套完整的API,使得文件上传操作变得简单、直观。通过使用SmartUpload,开发者可以方便地处理用户上传的图片、文本文件等各种类型...

Global site tag (gtag.js) - Google Analytics