王路軍
摘 要:借組AutoCAD強(qiáng)大的二次開(kāi)發(fā)工具ObjectARX,提出了一種針對(duì)光伏電站工程圖中方陣邊界的自動(dòng)繪制方法,從而為后期的光伏組件串的相關(guān)處理提供了一種預(yù)處理方法。采用該方法可實(shí)現(xiàn)凸多邊形和凹多邊形方陣邊界的自動(dòng)繪制。
關(guān)鍵詞:組件串;外接矩形;AutoCAD;ObjectARX
中圖分類(lèi)號(hào):TM914 文獻(xiàn)標(biāo)識(shí)碼:A DOI:10.15913/j.cnki.kjycx.2015.07.011
AutoCAD實(shí)體對(duì)象,即具有圖形表示的數(shù)據(jù)庫(kù)對(duì)象,比如直線、圓、圓弧、文本、三維實(shí)體、面域、樣條曲線和橢圓等,這些都是AutoCAD 本身自帶的實(shí)體,是用戶與AutoCAD 交互的主要對(duì)象,也是AutoCAD 二次開(kāi)發(fā)者主要的開(kāi)發(fā)對(duì)象。ObjectARX 技術(shù)可提供根據(jù)實(shí)體標(biāo)識(shí)符提取實(shí)體屬性和編輯實(shí)體的編程接口,可快速、準(zhǔn)確地實(shí)現(xiàn)圖形控制或變換。
1 光伏方陣邊界劃分
1.1 光伏方陣邊界劃分的概念
在設(shè)計(jì)光伏太陽(yáng)能發(fā)電站時(shí),應(yīng)在廠區(qū)內(nèi)先布置組件串、劃分方陣,在每個(gè)方陣中布置匯流箱、逆變器等,收集整個(gè)方陣匯聚的電流,并將直流電流轉(zhuǎn)化為交流電流后,再?gòu)母鱾€(gè)方陣匯總到總配電區(qū)域。由于廠區(qū)地形和方陣容量的要求不同,方陣內(nèi)布置的組件串有可能是規(guī)則的四邊形,也有可能是不規(guī)則的多邊形。這就要求手動(dòng)畫(huà)方陣時(shí)要涵蓋整個(gè)方陣的角點(diǎn)或拐點(diǎn),這樣才能準(zhǔn)確地畫(huà)出方陣多邊形。如圖1所示,圖中紅色邊界包圍的區(qū)域?yàn)橐粋€(gè)方陣。方陣“005WBx”“004WB”“005WB”是非常規(guī)則的正四邊形,而方陣“006WBx”“006WB”右邊邊界是非常不規(guī)則的鋸齒形狀。因此,需要考慮如何用程序在AutoCAD中自動(dòng)實(shí)現(xiàn)方陣邊界線的繪制。
1.2.1 組件串組成選擇集
用戶選擇組件串實(shí)體時(shí)有多種選擇方式,比如點(diǎn)選、交叉多邊形選取、窗口選取和框選等。選取實(shí)體方式具有的多樣性造成選擇集中的組件串有可能是無(wú)序的,比如用戶選擇實(shí)體時(shí),先選擇一行組件串中后面的組件串,再選擇前面的組件串;先選擇后面的組件串,再選擇前面的組件串等。
1.2.2 按行分組選擇集中組件串
將組件串按行分組,分別計(jì)算每組組件串整體的邊界外接矩形。確定分組的步驟為:根據(jù)每行組件串的縱坐標(biāo)確定選擇集中組件串的行數(shù),并確定分組類(lèi)別;將組件串中縱坐標(biāo)相同的歸為同一組;計(jì)算每組組件串的邊界外接矩形。
1.2.3 從上到下按縱坐標(biāo)遞減排序組件串
從原則上看,邊界是可以沿任意方向生長(zhǎng)的,但為了減少邊界增長(zhǎng)的復(fù)雜度,應(yīng)確定邊界生長(zhǎng)的某個(gè)方向。這就需要對(duì)組件串組進(jìn)行排序,一般選擇從上到下、縱坐標(biāo)遞減的排序方式,即從上到下生長(zhǎng)方陣邊界。
1.2.4 確定邊界生長(zhǎng)的種子
定義一個(gè)初始方陣邊界,并將第一組組件串構(gòu)成的邊界外接矩形的頂點(diǎn)坐標(biāo)初始化為一個(gè)邊界數(shù)組,從而確定邊界生長(zhǎng)的種子。
1.2.5 確定方陣邊界的生長(zhǎng)規(guī)則
方陣邊界的增長(zhǎng)是通過(guò)修改初始邊界數(shù)組的拐點(diǎn)坐標(biāo)或增加拐點(diǎn)坐標(biāo)到邊界數(shù)組實(shí)現(xiàn)的。邊界拐點(diǎn)數(shù)組隨著組件串組的遍歷不斷增加或修改。根據(jù)上、下兩行組件串組的左、右邊界點(diǎn)對(duì)齊情況,可以分為以下9種情況,如表1所示,組件串組1簡(jiǎn)稱(chēng)“組1”,組件串組2簡(jiǎn)稱(chēng)“組2”。表1中的組件串組1或組件串組2的邊界線表示組件串組的外接矩形,左、右邊界點(diǎn)的比較以橫坐標(biāo)表示。
對(duì)于表1中的第一種情況,如圖2所示,只需要將組件串組1外接矩形左下角的拐點(diǎn)p1坐標(biāo)修改成組件串組2的外接矩形的左下角拐點(diǎn)P1′坐標(biāo),并將組件串組1外接矩形右下角的拐點(diǎn)p4坐標(biāo)修改成組件串組2的外接矩形的右下角拐點(diǎn)P4′坐標(biāo),即可完成邊界生長(zhǎng)。
對(duì)于表1中的第二種情況,如圖3所示,需要將組件串組1外接矩形左下角的拐點(diǎn)p1坐標(biāo)修改成組件串組2的外接矩形的左下角拐點(diǎn)P1′坐標(biāo)。組件串組1外接矩形右下角拐點(diǎn)的坐標(biāo)保持不變,但要增加2個(gè)拐點(diǎn)到邊界數(shù)組,如圖3中的點(diǎn)p5和點(diǎn)p6。增加的拐點(diǎn)p5的橫坐標(biāo)與組件串組2右上角的拐點(diǎn)橫坐標(biāo)相同,縱坐標(biāo)與組件串組1右下角拐點(diǎn)的縱坐標(biāo)相同。增加的拐點(diǎn)p6為組件串組2右下角拐點(diǎn)。
對(duì)于表1中的第三種情況,如圖4所示,需要將組件串組1外接矩形左下角的拐點(diǎn)p1坐標(biāo)修改成組件串組2的外接矩形左下角拐點(diǎn)P1′坐標(biāo),組件串組1右下角拐點(diǎn)p4的坐標(biāo)修改為組件串組2上邊界與之垂直對(duì)應(yīng)的拐點(diǎn)P4′所在的點(diǎn)的坐標(biāo);增加2個(gè)拐點(diǎn)p5和p6到邊界數(shù)組,分別為圖4中組件串組2上右上角的拐點(diǎn)和右下角的拐點(diǎn)。
對(duì)于表1中的第四種情況,如圖5所示,組件串組1左下角拐點(diǎn)不變,在它右邊增加1個(gè)拐點(diǎn)p2到邊界數(shù)組,該點(diǎn)的橫坐標(biāo)與組件串組2左下角橫坐標(biāo)相同,該點(diǎn)的縱坐標(biāo)與組1左下角的縱坐標(biāo)相同;在組件串組2的左下角增加1個(gè)拐點(diǎn)p1到邊界數(shù)組;將組件串組1右下角的拐點(diǎn)p6坐標(biāo)修改為組件串組2右下角拐點(diǎn)P6′坐標(biāo)。
對(duì)于表1中的第五種情況,如圖6所示,將組件串組1左下角拐點(diǎn)p3坐標(biāo)修改為組件串組2上邊界中間的P3′點(diǎn)坐標(biāo);在組件串組2左邊界增加2個(gè)拐點(diǎn)到邊界數(shù)組,分別為組件串組2左上角的拐點(diǎn)p2和組件串組2左下角的拐點(diǎn)p1;將組件串組1右下角的拐點(diǎn)p6坐標(biāo)修改為組件串組2右下角的拐點(diǎn)P6′坐標(biāo)。
對(duì)于表1中的第六種情況,如圖7所示,將組件串組1左下角拐點(diǎn)p3坐標(biāo)修改為組件串組2上邊界點(diǎn)P3′的坐標(biāo);將組件串組1右下角拐點(diǎn)p6的坐標(biāo)修改為組件串組2上邊界點(diǎn)P6′的坐標(biāo);將組件串組2的4個(gè)拐點(diǎn)坐標(biāo)p1、p2、p7和p8加入邊界生長(zhǎng)數(shù)組。
對(duì)于表1中的第七種情況,如圖8所示,增加4個(gè)拐點(diǎn)p1、p2、p7和p8到邊界生長(zhǎng)數(shù)組。點(diǎn)p2和p7在組件串組1上;p1和p8分別是組件串組2左下角的拐點(diǎn)和右下角的拐點(diǎn)。
對(duì)于表1中的第八種情況,如圖9所示,增加4個(gè)拐點(diǎn)p1、p2、p7和p8到邊界生長(zhǎng)數(shù)組,拐點(diǎn)p2在組件串組1上,其余3個(gè)拐點(diǎn)分別是組件串組2左下角點(diǎn)p1、右上角點(diǎn)p7和右下角點(diǎn)p8;將組件串組1右下角的拐點(diǎn)p6的坐標(biāo)修改為組件串組2上邊界點(diǎn)P6′的坐標(biāo)。
對(duì)于表1中的第九種情況,如圖10所示,將組件串組1左下角的拐點(diǎn)p3坐標(biāo)修改為組2上邊界點(diǎn)P3′的坐標(biāo);增加4個(gè)拐點(diǎn)p1、p2、p7和p8到邊界生長(zhǎng)數(shù)組,分別是組件串組2左上角點(diǎn)p2、左下角點(diǎn)p1、右下角點(diǎn)p8和組件串組1下邊界線上的點(diǎn)p7。
1.2.6 開(kāi)始邊界生長(zhǎng)
循環(huán)遍歷所有組件串組,按照邊界生長(zhǎng)規(guī)則開(kāi)始邊界生長(zhǎng),并確定最終的方陣邊界拐點(diǎn)的數(shù)組。
1.2.7 結(jié)束邊界生長(zhǎng)
結(jié)束邊界生長(zhǎng),根據(jù)最終生成的邊界數(shù)組完成方陣邊界的繪制。
需要注意的是,因選擇集中實(shí)體對(duì)象的順序可能是有序的,也可能是無(wú)序的,如果要對(duì)組件串按順序編碼,可能還需要對(duì)每組中的組件串按橫坐標(biāo)從小到大排序。本文只討論方陣邊界的繪制,不考慮組件串編碼,因此,可不考慮每組內(nèi)組件串的排序。
2 結(jié)束語(yǔ)
傳統(tǒng)的光伏電站組件串布置需要以方陣為單位劃分、計(jì)算電廠容量。而往往1個(gè)光伏電站的組件串多達(dá)數(shù)萬(wàn)個(gè),如果手動(dòng)劃分方陣,則不僅速度慢,而且畫(huà)方陣邊界線點(diǎn)選各個(gè)頂點(diǎn)時(shí)容易出錯(cuò),可能需要多次修改,才能確定最后的方陣邊界線。經(jīng)實(shí)驗(yàn)證明,采用本文研究的方陣邊界自動(dòng)繪制算法,在用戶選完組件串后,按回車(chē)就可以快速、準(zhǔn)確地自動(dòng)繪制出方陣的邊界線、添加方陣標(biāo)注,且無(wú)論邊界是凸多邊形,還是凹多邊形都可以順利繪制,大大縮短了設(shè)計(jì)光伏電站的時(shí)間,為后續(xù)的光伏電站設(shè)計(jì)提供了一種預(yù)處理方法,在一定程度上提高了光伏電站的設(shè)計(jì)水平。
參考文獻(xiàn)
[1]宋延杭,王川,李永宣.ObjectARX實(shí)用指南:AutoCAD二次開(kāi)發(fā)[M].北京:人民郵電出版社,1999.
[2]李世國(guó).AutoCAD高級(jí)開(kāi)發(fā)技術(shù):ARX開(kāi)發(fā)及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,1999.
[3]李世國(guó).AutoCAD 2000 ObjectArx編程指南[M].北京:機(jī)械工業(yè)出版社,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