亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于 ObjectARX的復(fù)雜圖形拆分及其實(shí)現(xiàn)

        2016-01-16 23:03:46陳旭東劉伯穎
        智能制造 2015年12期
        關(guān)鍵詞:指令

        陳旭東++劉伯穎

        在數(shù)控機(jī)床的操作過程中,編程工作是枯燥而乏味的,指令測(cè)試往往伴隨著工件的浪費(fèi)。以 Visual C++為開發(fā)工具,使用 ObjectARX開發(fā)接口,可直接讀出 AutoCAD數(shù)據(jù)庫中的設(shè)計(jì)圖形數(shù)據(jù)。由設(shè)計(jì)圖形數(shù)據(jù)出發(fā),實(shí)現(xiàn)數(shù)控機(jī)床指令的自動(dòng)編碼與仿真,將大大提高工作的效率和準(zhǔn)確性。本文提出的算法用可以將復(fù)雜的圖形數(shù)據(jù)拆分為簡(jiǎn)單圖形序列,從而提高自動(dòng)編碼系統(tǒng)的準(zhǔn)確性,使系統(tǒng)自動(dòng)編制出的數(shù)控機(jī)床機(jī)器指令達(dá)到最優(yōu)。

        一、引言

        沖裁成型技術(shù)是工業(yè)中應(yīng)用廣泛的板材加工技術(shù),一般是使用數(shù)控機(jī)床進(jìn)行加工,數(shù)控機(jī)床使用特定的語句指令進(jìn)行編程。這種編程一般使用數(shù)控系統(tǒng)高級(jí)語言FAGOR,通常稱為G代碼,如:G00 G90 X400 Y300,表示快速定位,G90表示絕對(duì)坐標(biāo)。數(shù)控機(jī)床工作的過程就是執(zhí)行 G代碼的過程。使用 G代碼不僅要控制加工位置,還要控制模具的切換,代碼量較大。例如沖壓 100個(gè)間隔相等的孔,通常需要編制至少200條指令。編寫G代碼的過程往往是繁瑣枯燥的,正確性難以保證,進(jìn)行指令的測(cè)試往往伴隨著原材料的浪費(fèi)。使用計(jì)算機(jī)輔助設(shè)計(jì)系統(tǒng)可以實(shí)現(xiàn)數(shù)控機(jī)床所需 G代碼的自動(dòng)化編程。

        AutoCAD是美國 Autodesk公司推出的計(jì)算機(jī)輔助設(shè)計(jì)軟件,廣泛用于二維繪圖、設(shè)計(jì)文檔和基本的三維設(shè)計(jì)。其開放的體系結(jié)構(gòu),允許用戶進(jìn)行二次開發(fā),根據(jù)自己的需要擴(kuò)充新的功能。ObjectARX(Object AutoCAD Runtime eXtension)是 AutoCAD系統(tǒng)配套的面向?qū)ο蟮?C++應(yīng)用程序開發(fā)接口,使用 ObjectARX可以在運(yùn)行狀態(tài)下直接訪問 AutoCAD的內(nèi)部數(shù)據(jù)庫,圖形系統(tǒng)及幾何造型核心。使用 VC++開發(fā)基于 ObjectARX的應(yīng)用,還可充分利用Windows系統(tǒng)資源,包括MFC基本類庫和Visual C++開發(fā)環(huán)境??梢栽谶\(yùn)行時(shí)從 AutoCAD中讀取設(shè)計(jì)圖形數(shù)據(jù)。通過分析這些圖形數(shù)據(jù),可以實(shí)現(xiàn)沖床指令的自動(dòng)編程與仿真,從而可以大大提高工作效率,降低甚至杜絕板材的測(cè)試?yán)速M(fèi),提高經(jīng)濟(jì)效益。

        二、問題的提出

        數(shù)控機(jī)床對(duì)于簡(jiǎn)單的圖形,如三角形、矩形、圓形及長(zhǎng)圓孔等(以下稱為基本圖形),都有成熟的加工指令或指令序列。而工業(yè)中需要加工的形狀要復(fù)雜得多,包括凸多邊形,凹多邊形,甚至可能包括曲線邊在內(nèi)(以下稱之為復(fù)雜圖形),如圖 1所示為典型的復(fù)雜圖形示意圖。這些圖形在機(jī)床上無法簡(jiǎn)單的加工出來,需要編寫機(jī)床控制程序。如果能將這些圖形做一定的拆分,將其分解為多個(gè)矩形,就可以使用矩形的加工指令組成復(fù)雜多邊形的加工指令。

        通過 ObjectARX接口,可以讀出 AutoCAD中的設(shè)計(jì)圖形數(shù)據(jù),并進(jìn)行分析處理。本文提出的拆分算法的目的就是將各種各樣的復(fù)雜形狀拆分為較簡(jiǎn)單的基本圖形,即把復(fù)雜圖形看成是由基本圖形拼成的,為復(fù)雜圖形找到一組合理的基本圖形序列,從而可以使用基本圖形的加工指令進(jìn)行復(fù)雜圖形的加工。

        三、復(fù)雜圖形拆分算法描述

        圖形拆分算法的程序流程如圖2所示。簡(jiǎn)要敘述如下。

        (1)讀取 AutoCAD中的設(shè)計(jì)圖形數(shù)據(jù),數(shù)據(jù)的順序和設(shè)計(jì)圖繪制過程有關(guān),在數(shù)據(jù)排序鏈接模塊中,需要對(duì)讀出的數(shù)據(jù)進(jìn)行預(yù)處理,按順序依次排列組成封閉圖形。因?yàn)楣ぜ弦话阈枰庸ざ嗵幙祝源颂幍玫降氖且粋€(gè)封閉圖形的序列。

        (2)對(duì)序列中的圖形依次進(jìn)行處理,每次取出一個(gè)封閉圖形。檢測(cè)圖形數(shù)據(jù)的轉(zhuǎn)向,確保封閉圖形數(shù)據(jù)按逆時(shí)針轉(zhuǎn)向排列。否則對(duì)圖形數(shù)據(jù)進(jìn)行翻轉(zhuǎn)處理。

        (3)在圖形數(shù)據(jù)逆時(shí)針轉(zhuǎn)向的基礎(chǔ)上,可以確定各頂點(diǎn)的內(nèi)角。對(duì)凹多邊形來講,內(nèi)角值有可能會(huì)大于 180°,確定圖形內(nèi)角對(duì)圖形拆分模塊有重要意義。

        (4)圖形拆分模塊。這一部分將綜合使用圖形數(shù)據(jù)的各種信息進(jìn)行圖形的拆分,拆分的結(jié)果是形成一個(gè)基本圖形的序列。

        (5)最后輸出拆分后的基本幾何圖形序列。

        四、算法的實(shí)現(xiàn)

        下面以L形圖形的拆分為例,介紹復(fù)雜圖形拆分的執(zhí)行過程。本文的介紹是針對(duì)由直線段組成的多邊形,在實(shí)際的應(yīng)用中,可以根據(jù)具體的需要對(duì)算法進(jìn)行擴(kuò)展。

        1.圖形邊框的數(shù)據(jù)定義

        通過 ObjectARX接口,從 AutoCAD中讀出數(shù)據(jù)后,將邊框用以下數(shù)據(jù)結(jié)構(gòu)來表示: b(x1,y1,x2,y2,angle)

        式中, x1,y1表示邊 b的起點(diǎn)坐標(biāo); x2,y2表示邊 b的終點(diǎn)坐標(biāo);angle表示其與下一條邊的內(nèi)夾角。

        設(shè) L形的坐標(biāo)數(shù)據(jù)如圖 3所示。

        以圖 1中L形的分析為例,假設(shè)坐標(biāo)如圖 3所示,邊框依次定義為 b1、b2、b3、b4、b5和 b6,數(shù)據(jù)自 AutoCAD中讀出后,按點(diǎn)坐標(biāo)檢測(cè)數(shù)據(jù)是否組成封閉圖形。經(jīng)過處理后,邊框數(shù)據(jù)表示如下:

        2.封閉圖形轉(zhuǎn)向檢測(cè)

        由于在進(jìn)行圖形數(shù)據(jù)封閉連接的運(yùn)算中,無法確定圖形數(shù)據(jù)的順序是按逆時(shí)針排序,還是順時(shí)針排序。進(jìn)行數(shù)據(jù)轉(zhuǎn)向檢測(cè)可以使用向量法,選取任一頂點(diǎn),計(jì)算其指向其他各頂點(diǎn)的向量,如圖 4所示。

        計(jì)算各向量的向量角——即各向量與x軸的夾角。角度取值范圍為 0~360°。向量角計(jì)算如下: v1:(370-120)+i(100-100)=250 向量角:arctan(0/250)=0° v2:(370-120)+i(300-100)=250+i200 向量角:arctan(200/250)]=38.70° v3:(270-120)+i(300-100)=150+i200 向量角:arctan(200/150)=53.1° v4:(270-120)+i(200-100)=150+i100 向量角:arctan(100/150)=33.69° v5:(120-120)+i(200-100)=i100 向量角:90°

        由此可見,向量角從 0°增大到 90°,則可以確定封閉圖形的旋轉(zhuǎn)方向?yàn)槟鏁r(shí)針方向,符合數(shù)據(jù)處理的要求。如果向量角檢測(cè)的結(jié)果為減小,則說明數(shù)據(jù)的順序?yàn)轫槙r(shí)針方向,需要對(duì)圖形邊框數(shù)據(jù)進(jìn)行反向處理。

        3.計(jì)算頂點(diǎn)對(duì)應(yīng)的內(nèi)角值

        在封閉圖形數(shù)據(jù)轉(zhuǎn)向確定的情況下,無論是凸多邊形,還是凹多邊形,都很容易確定圖形每個(gè)頂點(diǎn)所對(duì)應(yīng)的內(nèi)角大小。如圖5所示。

        4.圖形拆分處理

        將復(fù)雜圖形拆分為基本圖形是本算法的核心內(nèi)容,前面的處理都是為這一步做準(zhǔn)備。首先應(yīng)該確定拆分的最終結(jié)果有幾種基本圖形。然后才能確定圖形分割的具體過程如何。在此假設(shè)圖形分割的最終目的是得到一個(gè)三角形和矩形的序列。該過程是一個(gè)循環(huán),步驟簡(jiǎn)述如下。

        (1)首先檢測(cè)剩余邊數(shù),如果等于0,表示已沒有剩余邊框數(shù)據(jù)需要處理,轉(zhuǎn)(8);如果剩余邊數(shù)小于 3且不等于0,則輸出錯(cuò)誤信息。

        (2)如果等于三,則得到一個(gè)三角形。將三角形加入到基本圖形列表,轉(zhuǎn)(8)。

        (3)查找內(nèi)角值最大的邊,取其下一條邊作為起始邊。檢測(cè)其與末端頂點(diǎn)的內(nèi)角,如果大于 180°,則繼續(xù)選取下一條邊。

        (4)檢測(cè)當(dāng)前邊與下一條邊的夾角,如果為 90°,則繼續(xù)讀取下一條邊。

        (5)查看已讀取到的邊數(shù),如果已讀取到4條邊,則轉(zhuǎn)6,否則轉(zhuǎn)(4)繼續(xù)讀取。

        (6)檢測(cè)讀取到的四條邊是否組成封閉矩形。如果是則將矩形合并到數(shù)據(jù)序列,轉(zhuǎn)(1)開始下一次循環(huán),否則轉(zhuǎn)(7)進(jìn)行圖形運(yùn)算。

        (7)已讀取的四條邊,因?yàn)樽缘谝粭l邊起,到第四條邊都是 90度,而圖形現(xiàn)在沒有封閉。必然是第一條邊的起點(diǎn)和第四邊的終點(diǎn)沒有重合??梢詫⒌谝粭l邊和第四條邊轉(zhuǎn)化為直線方程,求其交點(diǎn)。求出的矩形輸出到基本圖形列表。然后轉(zhuǎn)(1)繼續(xù)執(zhí)行。

        (8)得到基本圖形序列后,按一定的規(guī)則進(jìn)行優(yōu)化,對(duì)于不符合最終要求的基本圖形進(jìn)行優(yōu)化運(yùn)算。

        (9)最后輸出優(yōu)化后的所有矩形。

        仍以 L形為例。首先查找到內(nèi)夾角最大的點(diǎn)為p5,對(duì)應(yīng)內(nèi)角值為 270°;然后逆時(shí)針讀取到b5、b6、b1和 b2共 4條邊;進(jìn)行圖形封閉檢測(cè),可發(fā)現(xiàn)起點(diǎn)和終點(diǎn)不重合。以第一條邊 b5和第四條邊 b2為直線接方程,可求得交點(diǎn)p7,其坐標(biāo)為(250,100)。

        以點(diǎn) p7為分割點(diǎn),將原有線段 p2-p3分割為兩個(gè)線段,將線段 p2-p7插入到輸出矩形中,p7-p3插入到原始數(shù)據(jù);線段p5-p7插入到原始數(shù)據(jù)組成新的封閉圖形;插入p7-p5到輸出矩形數(shù)據(jù),由于 p7-p5和 p5-p6直線方程完全相同,可以合并為線段 p7-p6。繼續(xù)循環(huán),可得 p1-p7-p3-p4為一個(gè)矩形,輸出到基本圖形列表。 然后可按照一定的規(guī)則進(jìn)行優(yōu)化,使最終的分割結(jié)果近似最優(yōu),程序成功退出。至此一個(gè)圖形拆分完成,如圖 6所示。

        同理,對(duì)圖 1中的(b)的工字型執(zhí)行該算法,可得拆分結(jié)果如圖 7所示。對(duì)圖1中的(c)執(zhí)行該算法,可得拆分結(jié)果如圖8所示。對(duì)于該任意形的拆分,由于拆分后所得矩形 4的寬度太小,不符合加工的最小寬度要求??梢詫⑵渑c并列的矩形 2進(jìn)行優(yōu)化運(yùn)算,得矩形 5和矩形6,如圖8(b)所示。

        五、結(jié)語

        使用 VC++程序開發(fā)語言,通過 ObjectARX接口對(duì)AutoCAD系統(tǒng)進(jìn)行二次開發(fā),是擴(kuò)展 AutoCAD系統(tǒng)功能的重要手段。本文所提供的算法是在進(jìn)行轉(zhuǎn)塔沖床輔助設(shè)計(jì)制造系統(tǒng)的基礎(chǔ)上總結(jié)出來的圖形分析處理方法。在本文的敘述中,針對(duì)的是由線段組成的多邊形,一般可拆分為矩形和三角形。如果出現(xiàn)更復(fù)雜的圖形情況,如包含任意內(nèi)角值的頂點(diǎn),有圓弧或任意曲線的邊,則需要對(duì)該算法進(jìn)行擴(kuò)展??墒紫葘?duì)特殊邊進(jìn)行處理,再對(duì)其兩側(cè)的直線段延長(zhǎng),求其交點(diǎn),便可得到曲線圖形和直線段組成的復(fù)雜多邊形。本算法的目的不是提供萬能的算法,而是提供一種解決問題的思路,在實(shí)際應(yīng)用中,還需根據(jù)實(shí)際情況做相應(yīng)的處理。IM

        猜你喜歡
        指令
        聽我指令:大催眠術(shù)
        ARINC661顯控指令快速驗(yàn)證方法
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        殺毒軟件中指令虛擬機(jī)的脆弱性分析
        巧用G10指令實(shí)現(xiàn)橢圓輪廓零件倒圓角
        中斷與跳轉(zhuǎn)操作對(duì)指令串的影響
        科技傳播(2015年20期)2015-03-25 08:20:30
        基于匯編指令分布的惡意代碼檢測(cè)算法研究
        一種基于滑窗的余度指令判別算法
        歐盟修訂電氣及電子設(shè)備等產(chǎn)品安全規(guī)定
        家電科技(2014年5期)2014-04-16 03:11:28
        MAC指令推動(dòng)制冷劑行業(yè)發(fā)展
        汽車零部件(2014年2期)2014-03-11 17:46:27
        亚洲av乱码国产精品观看麻豆| 又粗又大又黄又爽的免费视频| 国产欧美va欧美va香蕉在线观| 91精品人妻一区二区三区蜜臀| 国产丝袜精品丝袜一区二区 | 无码人妻久久一区二区三区蜜桃| 麻豆精品传媒一二三区| 国产成人乱色伦区小说| 蜜桃色av一区二区三区麻豆| 日韩熟女系列中文字幕| 一本色道无码道dvd在线观看| 免费的毛片视频| 亚洲一区极品美女写真在线看| 男女av免费视频网站| 欧美一性一乱一交一视频| 中文字幕精品亚洲人成| 国产av熟女一区二区三区老牛| 免费人成视频网站在在线| 无码人妻久久一区二区三区蜜桃| 老熟妻内射精品一区| 久久精品国产精品亚洲婷婷| 国产av一啪一区二区| 国产av无码国产av毛片| 免费无码av片在线观看网址| 谁有在线观看av中文| 91偷拍与自偷拍亚洲精品86| 亚洲av不卡一区二区三区| 久久精品国产亚洲vr| 日本激情一区二区三区| 完整版免费av片| 熟妇高潮一区二区三区| av中文字幕少妇人妻| 熟女乱乱熟女乱乱亚洲| 久久久国产精品无码免费专区| 亚洲国产日韩精品一区二区三区 | 亚洲精品无码av人在线播放| 欧美国产亚洲日韩在线二区| 人片在线观看无码| 久久精品亚洲熟女av麻豆| 粗大的内捧猛烈进出视频| 最新国产午夜福利|