999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

曲面快速展開之三角線法

2018-07-03 05:16:38王雪林
造船技術 2018年3期
關鍵詞:二次開發(fā)設計

姚 方, 王雪林, 李 迅

(上海江南長興造船有限責任公司, 上海 201913)

0 引 言

空間形體的表面在平面上攤平,這個過程稱為展開。構成形體的表面可以分為2類:球面、圓環(huán)面等表面不能攤平的不可展曲面;平面、柱面、錐面等表面可以攤平的可展曲面。對于不可展曲面,常將它們分割成若干部分,把每個部分看作為可展直紋曲面并將其近似地展開。以下可展直紋曲面簡稱為曲面。

在船舶生產設計中經常會遇到需要得到曲面展開圖的情況,比如錨臺、側推、曲面開孔等放樣下料時,在工裝設計中也會遇到求曲面零件展開圖的情況,雖然在Tribon系統(tǒng)中可對曲面板架自動展開,但需要經過一系列的工程配置和曲面建模工作,繁瑣且不適合于工裝設計等非船工程。此時若有一種輕量級的插件直接在AutoCAD中運行能得到所需的結果,無疑會給設計工作帶來極大方便。雖然很多大型成熟軟件如TRIBON、CATIA、UG、PROE、SolidWorks、Rhino等均擁有曲面展開功能,但關于曲面展開的公開算法卻并不多見。Tribon M3中運用的NURBS曲面對于輕量級的曲面展開算法而言并不適用,而一些軟件則不能很好地根據已有詳細設計圖紙中的曲線建模,只能近似建模,使得建模精度不易控制。若直接在AutoCAD中使用三角線法手動放樣展開曲面,也可得到較為精確的展開圖,但求每條直線實長的過程需要大量的重復計算和繪圖操作,枯燥耗時且容易出錯。為此,根據放樣展開基本原理對AutoCAD軟件進行二次開發(fā),實現自動批量求直線實長的功能,使用三角線法編程展開曲面而不借用其他圖形庫使得算法輕量簡單,展開精度可控并可達到生產設計要求,可以幫助設計人員較為快速地繪制曲面展開圖。

1 三角線法概念

幾乎所有的曲面展開方法都是以近似的方式展開,采用三角線法,將曲面板分成近似于平面并且互相聯系的三角面(3邊組合成穩(wěn)定的三角形),再把所有的三角面攤平組合后展開得到所需要下料的零件。圖1為待展開曲面圖,將曲面板劃分成近似于平面并且相互聯系的三角面,得到圖2所示圖形,然后將空間方向的一個三角面旋轉角度放置到一個平面上,從而得出這個三角形真實形狀尺寸,而后逐個將三角形放置在這個平面上就可以得到曲面的近似展開圖。三角面劃分越多,所展開的零件越精細,但工作量也顯著增大,因此,編寫程序將面板劃分為非常細小的三角面,通過計算機高速運算后得到展開零件。

圖1 待展開曲面

圖2 三角面劃分

2 展開基本原理

在幾何畫法中,可以通過1條直線段(以下將直線段簡稱為直線)的主視圖和俯視圖得到直線的實長。主視圖中直線的高與俯視圖直線作為1個直角三角形的2條直角邊,該直角三角形的斜邊即原直線的實長。

如圖3所示,同一組配對直線內line 1的首尾端點坐標分別為(x1,yZ1)和(x2,yZ2),line 1'的首尾端點坐標分別為(x1,yF1)和(x2,yF2)。根據幾何畫法中求直線實長的原理:

line 1的高為

a=|yZ1-yZ2|

line 1的長度為

所以直線實長為

圖3 求直線實長方法

根據此方法可通過一個三角形的主視圖和俯視圖求出該三角形三條邊的實長,即空間三角形攤平在平面上的形狀。如圖4所示,選這3條邊任意1條作為展開基準(即基準邊),基準邊的端點作為畫圓弧的圓心點,再以其他2條邊的實長作為半徑畫弧求出交點后連接交點和基準邊端點,得到的圖形就是三角面的實際外形尺寸。

圖4 求三角形實形方法

如圖5所示,將曲面沿直母線劃分為若干個三角形,三角形頂點位于曲面頂點或邊緣。然后求出所有三角形實形,并在平面上依序組合,就得到了曲面的展開圖。三角形劃分的越多,所得到的展開圖就越精確。

圖5 沿直母線劃分三角形

3 原始圖形要求

如圖6所示,首先要有曲面的主視圖和俯視圖,并且分界明顯,如果為其他視圖關系則旋轉成主視圖和俯視圖。根據直母線劃分三角形,三角形要求上下對應,所有直線顏色相同。

圖6 原始圖形要求

4 主要邏輯及實現

AutoCAD為二次開發(fā)提供了3種方式,分別是VBA腳本、AutoLisp腳本和ObjectARX庫,其中:VBA腳本逐漸沒落并在高版本中被拋棄;AutoLisp腳本不太適合處理復雜問題;ObjectARX庫最為強大,可以訪問部分VBA腳本和AutoLisp腳本無法訪問的對象,需要C++編程語言支撐。由于曲面展開過程中涉及較復雜的數據結構和運算,在此使用C++編程語言基于ObjectARX庫對AutoCAD進行二次開發(fā)較為方便高效,根據文章第2部分編寫AutoCAD自動批量求直線實長的程序,程序流程圖如圖7所示。

圖7 程序流程圖

(1) 拾取用戶所選的直線。

long nLength;

ads_name ssLines;

struct resbuf eb1;

wchar_t sbuf1[10] = {0};

eb1.restype=0; //實體名

lstrcpy(sbuf1,_T("LINE"));

eb1.resval.rstring=sbuf1;

eb1.rbnext=NULL;

acdbHostApplicationServices()->workingDatabase();

acutPrintf(_T(" Select lines: "));

int stat = acedSSGet(NULL,NULL,NULL,&eb1,ssLines);

if ((stat == RTERROR)||(stat == RTCAN))

{

acutPrintf(_T(" User select canceled. "));

return;

}

acedSSLength(ssLines, &nLength);

if (nLength %2 != 0) //判斷所選擇的直線的數目是否為偶數

{

acutPrintf(_T(" Error! Line Number is not even number. "));

return;

}

(2) 將兩端點x坐標均相等且顏色相同的直線配對存放。

typedef struct _PAIR_LINE //配對成功的2條線

{

AcGePoint3d pt1; //Line1 存放主視圖直線

AcGePoint3d pt2;

AcGePoint3d pt3; //Line2 存放俯視圖直線

AcGePoint3d pt4;

}PAIR_LINE,*PPAIR_LINE;

(3) 從配對好的直線組中找出三角形存放于三角形結構體。

typedef struct _TRANGLE //三組線組成的三角形

{

int nId; //nId表示三角形序號

bool bCenter; //用來指示當前三角形是否曾經為中心三角形

PAIR_LINE pl1; //配對成功的3組線

PAIR_LINE pl2;

PAIR_LINE pl3;

AcGePoint3d pt1; //主視圖中三角形的3個點

AcGePoint3d pt2;

AcGePoint3d pt3;

AcGePoint3d pt4; //俯視圖中三角形的3個點

AcGePoint3d pt5;

AcGePoint3d pt6;

}TRANGLE,*PTRANGLE;

每次以當前三角形為中心,依據公共邊構建三角形樹:

typedef struct _TRANGLE_TREE //構建三角形樹,繪三角形時遍歷

{

TRANGLE stTrangleNode; //當前三角形

struct _TRANGLE_TREE* ptt[3]; //與當前三角形共一條邊的三角形

_TRANGLE_TREE()

{

for ( int i = 0 ; i < 3 ; i ++ )

{

ptt[i] = NULL;

}

}

}TRANGLE_TREE,*PTRANGLE_TREE;

(4) 依據繪圖基點和三角形樹逐個計算真實三角形頂點坐標。

typedef struct _REAL_TRANGLE //真實三角形

{

int nId; //三角形ID,與相應原三角形的ID相等

bool bReady; //頂點坐標是否已經計算完畢

bool bDrawed; //是否已經繪圖

bool bCenter; //是否曾經作為中心三角形

double tb1; //3條邊實長

double tb2;

double tb3;

AcGePoint3d pt1; //3個頂點的坐標

AcGePoint3d pt2;

AcGePoint3d pt3;

_REAL_TRANGLE()

{

tb1 = 0.0;

tb2 = 0.0;

tb3 = 0.0;

}

}REAL_TRANGLE,*PREAL_TRANGLE;

需要注意的是,遍歷三角形樹計算真實三角形時(見圖8),下面的三角形為當前三角形,以當前三角形為中心去遍歷計算具有公共邊的三角形時,若以圖8中水平邊為公共邊,分別以兩端點和兩邊長畫圓求交點,實際上會得到2個交點,這時用AutoCAD自帶的IntersectWith函數得到圓的2個交點后應該去掉與當前三角形同一側的頂點。

圖8 遍歷三角形樹

(5) 調用CAD函數繪圖,將實體添加到圖形數據庫中的模型空間繪制出來。

5 程序編譯及運行

將源代碼通過Visual Studio編譯器編譯生成.arx插件,在AutoCAD中使用ap命令加載插件,輸入注冊的CAD命令運行。如圖9所示,選中主視圖和俯視圖中的所有三角形,然后確定繪圖基點,程序自動繪制出展開圖。

圖9 某船型錨臺半邊圖形展開

6 結 語

根據三角線法展開原理,對AutoCAD進行二次開發(fā),實現批量自動求直線實長的功能,經測試,在錨臺、側推、曲面開孔放樣下料中均可行。在實際應用中,對比原完全手動展開曲面的方式,可以節(jié)省約80%的工作量,并且確保了直線實長的準確性。需要注意的是,由于程序將3個頂點x坐標均相等的三角形判定為1組三角形,即同一個真實的三角形在主視圖和俯視圖中的投影, 并輔以直線顏色的判斷,故劃分三角形時不要使得三角形的邊呈鉛垂狀態(tài),對于類似錨臺的環(huán)形曲面,本文示例則根據對稱性只放樣一半曲面,放樣完成后再根據對稱性補全。對于復雜的不可展曲面,需要手動分割成幾塊以便近似處理,否則展開圖會出現裂縫。

在很長一段時間里,設計人員總是依據放樣原理進行手工放樣,不僅耗時而且設計人員的經驗技藝難以傳承下來,設計停留在經驗階段而無法邁向更高階段,工作效率難以整體性提升。若將經驗技藝升級為程序化、知識庫化、系統(tǒng)化,則無疑有助于整體工作效率的穩(wěn)定提升,三角線法程序化展開曲面正是一種嘗試。

[1] 宋延杭, 王川, 李永宣. ObjectARX實用指南——AutoCAD二次開發(fā)[M] . 北京:人民郵電出版社, 1999.

[2] 徐榮璋, 劉曉毅, 陳軍. 曲面展開方法的發(fā)展現狀[J].模具技術, 2002(5):15-18.

[3] 余勇. 船舶曲面分段外板重構及其展開技術研究[D] . 鎮(zhèn)江: 江蘇科技大學, 2016.

[4] 潘煒, 吳慧, 李鐵瑞,等. 基于曲面展開的自由曲面網格劃分[J] . 浙江大學學報(工學版), 2016,50(10):1973-1979.

[5] 羅振華, 蔣芬, 蔣威. 針對不可展曲面的近似展開方法淺析[J] . 科技創(chuàng)新導報, 2014(30):51.

[6] 蔣威. 不可展曲面的近似展開及其應用[D] . 上海: 復旦大學, 2013.

[7] 肖雄, 黃朝炎, 胡勇,等. 三維曲面船體外板數學展開方法研究[J] . 船舶工程, 2013, 42(1):74-77.

[8] 閻佩佳, 薛卓, 張育丹. 復雜曲面展開[J]. 科技致富向導, 2012(14):366.

猜你喜歡
二次開發(fā)設計
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
淺談基于Revit平臺的二次開發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
西門子Operate高級編程的旋轉坐標系二次開發(fā)
淺談Mastercam后處理器的二次開發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
Micaps3.2 版本二次開發(fā)入門淺析
西藏科技(2015年12期)2015-09-26 12:13:51
ANSYS Workbench二次開發(fā)在汽車穩(wěn)定桿CAE分析中的應用
汽車零部件(2014年5期)2014-11-11 12:24:32
主站蜘蛛池模板: 国产精品私拍99pans大尺度| 99在线小视频| 日韩无码黄色网站| lhav亚洲精品| 国产一级毛片yw| 亚洲无码视频喷水| 国产成人免费高清AⅤ| 小说 亚洲 无码 精品| 国产成年女人特黄特色大片免费| 中国精品自拍| 亚洲一区二区精品无码久久久| 日本一本正道综合久久dvd| 青草视频在线观看国产| a级毛片免费播放| 国产亚卅精品无码| 操美女免费网站| 无码区日韩专区免费系列| 欧美精品v| 国产特级毛片aaaaaaa高清| 国产在线高清一级毛片| 色成人综合| 久久青青草原亚洲av无码| 国产亚洲精品资源在线26u| 婷婷开心中文字幕| 精品成人一区二区| 国产国产人成免费视频77777 | 在线播放真实国产乱子伦| 超碰aⅴ人人做人人爽欧美| 一级爆乳无码av| 日韩二区三区无| 欧美特黄一免在线观看| 亚洲天堂网2014| 欧美在线综合视频| 亚洲成人精品在线| 国产无套粉嫩白浆| 看av免费毛片手机播放| 国产精品一区二区无码免费看片| 亚洲bt欧美bt精品| 国产美女免费网站| 日韩久草视频| 91精品啪在线观看国产91| 在线无码九区| 色综合手机在线| 婷婷综合色| 免费一级无码在线网站| 好紧好深好大乳无码中文字幕| 丰满人妻中出白浆| 在线观看免费国产| 久久久噜噜噜| 亚洲αv毛片| 69国产精品视频免费| 国产网站免费| 青青久视频| 久久免费成人| 亚洲av色吊丝无码| 日本www色视频| 欧美一级在线播放| 亚洲日韩国产精品无码专区| 男女精品视频| 精品国产Av电影无码久久久| 毛片久久久| 91精品伊人久久大香线蕉| 青青草国产在线视频| 久久国产毛片| 欧美色丁香| 97av视频在线观看| 国产日韩丝袜一二三区| 亚洲人网站| 午夜精品久久久久久久2023| 91亚瑟视频| 亚洲国产精品一区二区第一页免 | 国产一区二区视频在线| 亚洲精品第一页不卡| 欧美精品亚洲精品日韩专区| 日本人又色又爽的视频| 好紧太爽了视频免费无码| 55夜色66夜色国产精品视频| 成人av专区精品无码国产| 免费看av在线网站网址| 国产精品网址在线观看你懂的| 99re在线视频观看| 亚洲IV视频免费在线光看|