王路军
摘 要:借组AutoCAD强大的二次开发工具ObjectARX,提出了一种针对光伏电站工程图中方阵边界的自动绘制方法,从而为后期的光伏组件串的相关处理提供了一种预处理方法。采用该方法可实现凸多边形和凹多边形方阵边界的自动绘制。
关键词:组件串;外接矩形;AutoCAD;ObjectARX
中图分类号:TM914 文献标识码:A DOI:10.15913/j.cnki.kjycx.2015.07.011
AutoCAD实体对象,即具有图形表示的数据库对象,比如直线、圆、圆弧、文本、三维实体、面域、样条曲线和椭圆等,这些都是AutoCAD 本身自带的实体,是用户与AutoCAD 交互的主要对象,也是AutoCAD 二次开发者主要的开发对象。ObjectARX 技术可提供根据实体标识符提取实体属性和编辑实体的编程接口,可快速、准确地实现图形控制或变换。
1 光伏方阵边界划分
1.1 光伏方阵边界划分的概念
在设计光伏太阳能发电站时,应在厂区内先布置组件串、划分方阵,在每个方阵中布置汇流箱、逆变器等,收集整个方阵汇聚的电流,并将直流电流转化为交流电流后,再从各个方阵汇总到总配电区域。由于厂区地形和方阵容量的要求不同,方阵内布置的组件串有可能是规则的四边形,也有可能是不规则的多边形。这就要求手动画方阵时要涵盖整个方阵的角点或拐点,这样才能准确地画出方阵多边形。如图1所示,图中红色边界包围的区域为一个方阵。方阵“005WBx”“004WB”“005WB”是非常规则的正四边形,而方阵“006WBx”“006WB”右边边界是非常不规则的锯齿形状。因此,需要考虑如何用程序在AutoCAD中自动实现方阵边界线的绘制。
1.2.1 组件串组成选择集
用户选择组件串实体时有多种选择方式,比如点选、交叉多边形选取、窗口选取和框选等。选取实体方式具有的多样性造成选择集中的组件串有可能是无序的,比如用户选择实体时,先选择一行组件串中后面的组件串,再选择前面的组件串;先选择后面的组件串,再选择前面的组件串等。
1.2.2 按行分组选择集中组件串
将组件串按行分组,分别计算每组组件串整体的边界外接矩形。确定分组的步骤为:根据每行组件串的纵坐标确定选择集中组件串的行数,并确定分组类别;将组件串中纵坐标相同的归为同一组;计算每组组件串的边界外接矩形。
1.2.3 从上到下按纵坐标递减排序组件串
从原则上看,边界是可以沿任意方向生长的,但为了减少边界增长的复杂度,应确定边界生长的某个方向。这就需要对组件串组进行排序,一般选择从上到下、纵坐标递减的排序方式,即从上到下生长方阵边界。
1.2.4 确定边界生长的种子
定义一个初始方阵边界,并将第一组组件串构成的边界外接矩形的顶点坐标初始化为一个边界数组,从而确定边界生长的种子。
1.2.5 确定方阵边界的生长规则
方阵边界的增长是通过修改初始边界数组的拐点坐标或增加拐点坐标到边界数组实现的。边界拐点数组随着组件串组的遍历不断增加或修改。根据上、下两行组件串组的左、右边界点对齐情况,可以分为以下9种情况,如表1所示,组件串组1简称“组1”,组件串组2简称“组2”。表1中的组件串组1或组件串组2的边界线表示组件串组的外接矩形,左、右边界点的比较以横坐标表示。
对于表1中的第一种情况,如图2所示,只需要将组件串组1外接矩形左下角的拐点p1坐标修改成组件串组2的外接矩形的左下角拐点P1′坐标,并将组件串组1外接矩形右下角的拐点p4坐标修改成组件串组2的外接矩形的右下角拐点P4′坐标,即可完成边界生长。
对于表1中的第二种情况,如图3所示,需要将组件串组1外接矩形左下角的拐点p1坐标修改成组件串组2的外接矩形的左下角拐点P1′坐标。组件串组1外接矩形右下角拐点的坐标保持不变,但要增加2个拐点到边界数组,如图3中的点p5和点p6。增加的拐点p5的横坐标与组件串组2右上角的拐点横坐标相同,纵坐标与组件串组1右下角拐点的纵坐标相同。增加的拐点p6为组件串组2右下角拐点。
对于表1中的第三种情况,如图4所示,需要将组件串组1外接矩形左下角的拐点p1坐标修改成组件串组2的外接矩形左下角拐点P1′坐标,组件串组1右下角拐点p4的坐标修改为组件串组2上边界与之垂直对应的拐点P4′所在的点的坐标;增加2个拐点p5和p6到边界数组,分别为图4中组件串组2上右上角的拐点和右下角的拐点。
对于表1中的第四种情况,如图5所示,组件串组1左下角拐点不变,在它右边增加1个拐点p2到边界数组,该点的横坐标与组件串组2左下角横坐标相同,该点的纵坐标与组1左下角的纵坐标相同;在组件串组2的左下角增加1个拐点p1到边界数组;将组件串组1右下角的拐点p6坐标修改为组件串组2右下角拐点P6′坐标。
对于表1中的第五种情况,如图6所示,将组件串组1左下角拐点p3坐标修改为组件串组2上边界中间的P3′点坐标;在组件串组2左边界增加2个拐点到边界数组,分别为组件串组2左上角的拐点p2和组件串组2左下角的拐点p1;将组件串组1右下角的拐点p6坐标修改为组件串组2右下角的拐点P6′坐标。
对于表1中的第六种情况,如图7所示,将组件串组1左下角拐点p3坐标修改为组件串组2上边界点P3′的坐标;将组件串组1右下角拐点p6的坐标修改为组件串组2上边界点P6′的坐标;将组件串组2的4个拐点坐标p1、p2、p7和p8加入边界生长数组。
对于表1中的第七种情况,如图8所示,增加4个拐点p1、p2、p7和p8到边界生长数组。点p2和p7在组件串组1上;p1和p8分别是组件串组2左下角的拐点和右下角的拐点。
对于表1中的第八种情况,如图9所示,增加4个拐点p1、p2、p7和p8到边界生长数组,拐点p2在组件串组1上,其余3个拐点分别是组件串组2左下角点p1、右上角点p7和右下角点p8;将组件串组1右下角的拐点p6的坐标修改为组件串组2上边界点P6′的坐标。
对于表1中的第九种情况,如图10所示,将组件串组1左下角的拐点p3坐标修改为组2上边界点P3′的坐标;增加4个拐点p1、p2、p7和p8到边界生长数组,分别是组件串组2左上角点p2、左下角点p1、右下角点p8和组件串组1下边界线上的点p7。
1.2.6 开始边界生长
循环遍历所有组件串组,按照边界生长规则开始边界生长,并确定最终的方阵边界拐点的数组。
1.2.7 结束边界生长
结束边界生长,根据最终生成的边界数组完成方阵边界的绘制。
需要注意的是,因选择集中实体对象的顺序可能是有序的,也可能是无序的,如果要对组件串按顺序编码,可能还需要对每组中的组件串按横坐标从小到大排序。本文只讨论方阵边界的绘制,不考虑组件串编码,因此,可不考虑每组内组件串的排序。
2 结束语
传统的光伏电站组件串布置需要以方阵为单位划分、计算电厂容量。而往往1个光伏电站的组件串多达数万个,如果手动划分方阵,则不仅速度慢,而且画方阵边界线点选各个顶点时容易出错,可能需要多次修改,才能确定最后的方阵边界线。经实验证明,采用本文研究的方阵边界自动绘制算法,在用户选完组件串后,按回车就可以快速、准确地自动绘制出方阵的边界线、添加方阵标注,且无论边界是凸多边形,还是凹多边形都可以顺利绘制,大大缩短了设计光伏电站的时间,为后续的光伏电站设计提供了一种预处理方法,在一定程度上提高了光伏电站的设计水平。
参考文献
[1]宋延杭,王川,李永宣.ObjectARX实用指南:AutoCAD二次开发[M].北京:人民邮电出版社,1999.
[2]李世国.AutoCAD高级开发技术:ARX开发及应用[M].北京:机械工业出版社,1999.
[3]李世国.AutoCAD 2000 ObjectArx编程指南[M].北京:机械工业出版社,2000.
〔编辑:张思楠〕
Abstract: By the second set of powerful development tools AutoCAD ObjectARX, photovoltaic power plant is proposed for drawing boundaries phalanx automatic drawing method, thus providing a pretreatment method for handling late-related strings of PV modules. Using this method can automatically draw concave polygon convex polygon and square boundaries.
Key words: module string; external rectangle; AutoCAD; ObjectARX