python autocad 块属性_SmartSoft中用C#.Net实现AutoCAD块属性提取|简明python教程|python入门|python教程...
https://www.xin3721.com/eschool/pythonxin3721/
本文主要给大家介绍一下SmartSoft中用C#.Net实现AutoCAD块属性提取的方法,并给出实例代码与大家共享。此类实现AutoCAD块属性提取功能,在VS.Net2003(2005)+AutoCAD2004(2007)下调试通过。
以下是引用片段:
using System;
using AutoCAD=Autodesk.AutoCAD.Interop;
using System.Runtime.InteropServices ;
using dbx = Autodesk.AutoCAD.Interop.Common;
namespace SmartSoft.ACAD
{
///
/// 读取AutoCAD属性信息
///
public class AutoCADConnector:IDisposable
{
private AutoCAD.AcadApplication _Application;
private bool _Initialized;
private bool _Disposed;
#region 类初始化及析构操作
///
/// 类初始化,试图获取一个正在运行的AutoCAD实例,
/// 如果没有则新起动一个实例。
///
public AutoCADConnector()
{
try
{
//取得一个正在运行的AUTOCAD实例
this._Application = (AutoCAD.AcadApplication)Marshal.GetActiveObject("AutoCAD.Application.17");
}//end of try
catch
{
try
{
//建立一个新的AUTOCAD实例,并标识已经建立成功。
_Application = new AutoCAD.AcadApplicationClass();
_Initialized=true;
}
catch
{
throw new Exception ("无法起动AutoCAD应用程序,确认已经安装");
}
}//end of catch
}//end of AutoCADConnector
~AutoCADConnector()
{
Dispose(false);
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!this._Disposed && this._Initialized )
{
//如果建立了AUTOCAD的实列,调用QUIT方法以避免内存漏洞
this._Application.ActiveDocument.Close (false,"");
this._Application.Quit();
this._Disposed=true;
}
}
#endregion
#region 公共用户接口属性
///
/// 取得当前类所获得的AUTOCAD实例
///
public AutoCAD.AcadApplication Application
{
get
{
return _Application;
}
}//end of Application
#endregion
#region 公共用户接口方法
///
/// 根据给定的文件名以AxDbDocument类型返回该文档
///
public dbx.AxDbDocument GetThisDrawing(string FileName,string PassWord)
{
ACAD.AutoCADConnector Connector=new AutoCADConnector();
//这是AutoCAD2004的Programe ID
string programeID ="ObjectDBX.AxDbDocument.17";
AutoCAD.AcadApplication AcadApp = Connector.Application;
dbx.AxDbDocument dbxDoc;
dbxDoc=(dbx.AxDbDocument)AcadApp.GetInterfaceObject(programeID);
try
{
if (System.IO.File.Exists (FileName)==false) throw new Exception ("文件不存在。");
dbxDoc.Open(FileName,PassWord);
}// end of try
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show(e.Message );
dbxDoc=null;
}
return dbxDoc;
}//end of function GetThisDrawing
///
/// 根据当前文档和块名取得当前块的引用
///
public dbx.AcadBlockReference GetBlockReference(dbx.AxDbDocument thisDrawing,string blkName)
{
dbx.AcadBlockReference blkRef=null;
bool found = false;
try
{
foreach (dbx.AcadEntity entity in thisDrawing.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;
}
}//end of entity.EntityName=="AcDbBlockReference"
}// end of foreach thisDrawing.ModelSpace
}//end of try
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show ("图形中有未知的错误,格式不正确或图形数据库需要修愎。系统错误提示:" + e.Message ,"信息",System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
thisDrawing=null;
}//end of catch
if (!found) blkRef = null;
return blkRef;
}//end of function GetBlockReference
///
/// 根据给定的块引用(dbx.AcadBlockReference)和属性名返回属性值
///
public object GetValueByAttributeName(dbx.AcadBlockReference blkRef,string AttributeName)
{
object[] Atts=(object[])blkRef.GetAttributes();
object attValue=null;
for (int i=0;i
{
dbx.AcadAttributeReference attRef;
attRef=(dbx.AcadAttributeReference)Atts[i];
if (attRef.TagString==AttributeName)
{
attValue= attRef.TextString ;
break;
}
}//end of for i
return attValue;
}// end of function
#endregion
}//end of class CAutoCADConnector
}//end of namespace AutoCAD
python autocad 块属性_SmartSoft中用C#.Net实现AutoCAD块属性提取|简明python教程|python入门|python教程...相关推荐
- python大神推荐_大神推荐!!!高评分书籍轻松带你入门Python
上次讲到了初学者阶段必看的书籍.今天给大家继续讲讲 进阶者阶段 当你对Python有了一定的了解,并在生活或者工作中使用过一段时间,那么你就可以考虑进阶相关的书籍,请看下面这3本: <Pytho ...
- python教程推荐-入门python有什么好的书籍推荐?
Python 越来越火爆,最近自己也在学习.整理下一些 Python 资料,和练手的项目.希望对你学习 Python 有所帮助. 如果大家想要文中 10G Python 编程视频,点击下面的卡片即可免 ...
- python大神和小白代码_看大神6行代码如何带领小白快速入门Python爬虫?
原标题:看大神6行代码如何带领小白快速入门Python爬虫? 可能是小编本身就有一定的基础!当然我没有瞧不起小白的看法,知识觉得要入门一门编程语言确实比较简单,而且小编本身也是从小白过来的,但是当初接 ...
- python面向对象教程_Python入门系列教程3-面向对象
课程咨询.获取课件.技术交流直接加入博学谷在线学习:631731828 课程简介 本课程是Python系列入门课程的第三阶段,该阶段我们会学习面向对象(OOP)这一重要的编程思想.学习的知识点主要包括 ...
- python网络爬虫教程-如何入门 Python 爬虫?
"入门"是良好的动机,但是可能作用缓慢.如果你手里或者脑子里有一个项目,那么实践起来你会被目标驱动,而不会像学习模块一样慢慢学习. 另外如果说知识体系里的每一个知识点是图里的点,依 ...
- python代码入门教程_Ipython入门小教程
学习<利用python进行数据分析>第三章 IPython:一种交互式计算和开发环境的笔记,共享给大家,同时为自己作为备忘用. 安装ipython用pip即可.ps.博主用的是win7系统 ...
- python数据结构教程_python入门基础教程随笔1-python数据结构-列表
# encoding: utf-8 import sys #导入标准包 from test.test_compare import Cmp a = 3 b = 4 c = 5.66 d = 8.0 e ...
- python 计算机程序设计-某高校计算机编程教授教你如何快速入门python,一文带你进入编程...
image 如何快速入门Python 学习任何一门语言都是从入门(1年左右),通过不间断练习达到熟练水准(3到5年),少数人最终能精通语言,成为执牛耳者,他们是金字塔的最顶层.虽然万事开头难,但好的开 ...
- 新手如何快速入门Python(菜鸟必看篇)
学习任何一门语言都是从入门(1年左右),通过不间断练习达到熟练水准(3到5年),少数人最终能精通语言,成为执牛耳者,他们是金字塔的最顶层.虽然万事开头难,但好的开始是成功的一半,今天这篇文章就来谈谈如 ...
最新文章
- release和retain还有多少人在用
- 微信小程序~自定义属性设置和获取(data-)
- sklearn自学指南(part42)--使用手册的目录
- Linux C高级编程——网络编程之包裹函数
- 龙果充值平台,具备话费充值、流量充值、话费卡兑换功能;可以拓展其他充值兑换业务;也适用于支付、鉴权等业务功能的拓展。
- BGP——AS—PATH正则表达式(实列讲解+配置)
- [Vue.js] 基础 -- Vue简介
- php 各种排序算法,PHP四种常见排序算法
- VC++ (四)动态内存
- 03-25 内存统计
- 机器学习的数学基础书籍
- 小封装、高通流 TVS 管 UN1K/2K/3K Series
- 华为路由器与交换机常用命令(20200618)
- android抽屉式listview,Android实现列表抽屉展示效果
- Box和Dropbox的区别
- 做你的大玩具——轩小样儿的六一
- unity旗帜飘动shader
- C语言基础知识点复习
- 如何用计算机蓝牙发送文件,电脑怎么利用蓝牙使手机和电脑互传文件
- Wormhole for mac(在Mac上控制iOS和Android设备)
热门文章
- 为什么Java中float类型的取值范围大于long类型
- 使用alist备份Obsidian文件,并实现全平台同步(webdav)
- 西安西北大学计算机研究生学费,西北大学在职研究生学费贵不贵?一年研究生费用是多少?...
- elasticsearch 浏览器访问不到
- java中计算一个方法执行时长,耗费单位(秒)
- POJ 3579 二分
- 洛桑联邦理工学院 法语 计算机,洛桑联邦理工学院(École Polytechnique Fédérale de Lausanne)_快飞留学...
- ie6注释造成文字“重影”分析。双文字
- JS实现鼠标滑过图片的抖动效果
- Thinkpad S3 YOGA加装了m.2 固态盘后的系统设置问题