对离心泵曲线DWG文件附加信息的研究论文_刘鹏

石家庄工业泵厂有限公司 河北石家庄 050100

摘要:泵的性能曲线在进行泵选型时,其中的数据只能由人工进行读取并计算。理想的情况是曲线一经绘制,其中的直接数据和间接都应该能由CAD软件直接读取使用。利用AutoCAD强大的二次开发功能,通过对图形文件及其中的曲线实体增加附加数据来供程序自动读取,使达到程序自动进行工况点计算及读取的功能。

关键词:离心泵 性能曲线 二次开发 自动出图

引言

离心泵内浆液的运动规律表现在宏观上就是泵性能参数之间的联系。如果用曲线的形式将泵的性能参数展示出来就是泵的特性曲线。泵的特性曲线能直观地在泵选型时提供很大的便利。但选型时有一个问题是,选型工况点很大概率并不存在于已经绘制出的具体转速下。本文提出一个基于DWG文件格式下,通过为DWG文件以及DWG文件内的性能曲线添加附加数据(XData)来解决该问题的方法。

1安装泵性能曲线选型的流程

根据泵的相似理论,若两台泵的相应尺寸相等,即对同一台泵来说,其性能参数存在下列关系:

上式又称为比例定律,表达了泵在转速发生改变时泵性能参数之间的关系。泵试验时可只在某一特定转速下进行,然后根据该公式计算出其他转速下的的性能。假设转速变化时,相似工况点的效率相等,根据转速n1时已知的效率曲线,可以做出其他转速的效率曲线。连接这些等效率点,可以做出相似抛物线。由于该抛物线过原点,所以只有一个二次项的系数。我们拿到一个工况点就能计算出该工况点的系数,进而求出该工况点所在的运行转速。一般这个转速并不在当前已经绘有曲线的转速内。我们需要先计算一系列的抛物线点,再去与已知转速曲线相交求出该转速,该工作虽然简单但相当繁琐。

2 DWG、AutoCAD与AutoCAD.NET API

DWG文件格式已经成为事实上的业内标准图纸文件格式。其由Autodesk公司研发制定。该公司的AutoCAD系列软件历史悠久,简单易用。AutoCAD.NET API是其最新一代的二次开发接口,其面向微软公司的.NET平台开发,使用者只要使用任何支持.NET的编程语言(VB.NET,C#等)就可以引用该API对AutoCAD进行二次开发。该API提供了丰富的具有不同功能的类,使我们能更高效率的使用该软件。笔者决定使用该API与C#语言对AutoCAD进行开发扩展,通过对DWG文件以及DWG文件内的性能曲线添加附加数据使得软件具有自动生成工况点转速曲线,自动读取曲线工况点等功能。

3 附件数据扩展功能的具体实现

想让AutoCAD自动计算并绘制出工况点转速,关键是要让程序知道当前打开的曲线文件的一些数据,比如:曲线刻度坐标的起点及其在AutoCAD空间中的绝对坐标,当前曲线文件内每条转速曲线的转速以及该曲线的形成基元(一般我们用样条曲线来绘制转速曲线,样条的形成基元可以理解为其节点)等。这些数据有的属于整个图形,如曲线刻度坐标的起点;有的属于图像中的某个对象,如某个具体转速数据应该只属于该转速曲线。获得了这些数据后就可以按照公式1的算法程序化生成相似抛物线,再由程序自动读取其与某转速交点数据,最终算出该工况点的所在转速,并自动绘制出该转速曲线。

在AutoCAD.NET API中,属于整个图形的附加数据以XRecord(扩展数据)的形式存放在NOD(命名字典)中,属于图纸中具体实体的附加数据以XRecord(扩展数据)的形式存放在ExtensionDictionary(可选扩展字典)中。虽然各附加数据所在容器的名称不同,但通过阅读其代码可以发现,NOD和ExtensionDictionary同属DBDictionary(数据词典)类型。故在编程中其并无区别。其结构如下:

具体操作流程为:1、发起事务处理,以写的形式打开容器对象。2、新建XRecord对象,用ResultBuffer对象装载特定类型的附件数据,并挂载到XRecord下。3、将

XRecord通过容器的SetAt()方法加入到容器对象中,通知事务新增XRecord,并提交事务。下例是为图纸增加“泵型名”的关键代码:

using (Transaction trans = db.TransactionManager.StartTransaction())

{DBDictionary NOR;

NOR=(DBDictionary)trans.GetObject(db.NODId,OpenMode.ForWrite);

Xrecord xrePumpType = new Xrecord();

ResultBuffer rs = new ResultBuffer(new TypedValue((int)Text, "250ZJ-A75"));

xrePumpType.Data = rs;

NOR.SetAt("PUMPTYPE", xrePumpType);

trans.AddNewlyCreatedDBObject(xrePumpType, true);

trans.Commit();}

读取数据的步骤与新增数据的步骤大抵相同,只要将SetAt()方法改为GetAt()即可。读取到的数据可以放在自己定义的变量中进行后期使用。下列为提取上例添加的附加数据的代码:

using (Transaction trans = db.TransactionManager.StartTransaction())

{DBDictionary NOR;

NOR=(DBDictionary)trans.GetObject(db.NODId, OpenMode.ForRead);

Xrecord xrePumpType;

xrePumpType=(Xrecord)trans.GetObject(NOR.GetAt("PUMPTYPE"));

TypedValue resBuf = xrePumpType.Data.AsArray()[0];

string pumpType=resBuf.Value.ToString();

trans.Commit();}

结语

通过对AutoCAD进行二次开发,使程序可以自动为泵曲线的图纸记录一些额外的附加数据。这些附件数据可以在以后的使用中获取并进行后续处理。该研究仅仅探讨了在选型时的使用,事实上,附加数据的作用远不止如此。

参考文献

[1] 关醒凡.现代泵理论与设计[M].北京.宇航出版社,1995

[2] Autodesk. AND[EB/OL]. http://adn.autodesk.com/adn/ .

[3] Autodesk. ObjectARX Developer’s Guide[M].America.Autodesk,1999

论文作者:刘鹏

论文发表刊物:《基层建设》2018年第18期

论文发表时间:2018/7/20

标签:;  ;  ;  ;  ;  ;  ;  ;  

对离心泵曲线DWG文件附加信息的研究论文_刘鹏
下载Doc文档

猜你喜欢