锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美视频一区二区三区四区,国产欧美一区二区精品婷婷 ,亚洲线精品一区二区三区八戒http://www.shnenglu.com/eryar/PipeCAD - Plant Piping Design Software. <br> RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.zh-cnMon, 29 Sep 2025 20:31:07 GMTMon, 29 Sep 2025 20:31:07 GMT60OpenCASCADE HLR 杞粨綰?/title><link>http://www.shnenglu.com/eryar/archive/2023/12/03/occt_hlr_contour_ana.html</link><dc:creator>eryar</dc:creator><author>eryar</author><pubDate>Sun, 03 Dec 2023 12:53:00 GMT</pubDate><guid>http://www.shnenglu.com/eryar/archive/2023/12/03/occt_hlr_contour_ana.html</guid><wfw:comment>http://www.shnenglu.com/eryar/comments/230218.html</wfw:comment><comments>http://www.shnenglu.com/eryar/archive/2023/12/03/occt_hlr_contour_ana.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/eryar/comments/commentRss/230218.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/eryar/services/trackbacks/230218.html</trackback:ping><description><![CDATA[<h1 style="text-align: center;">OpenCASCADE HLR Quadric Surface Outline Edge</h1> <p>Key Words: HLR, Outline Edge, Sihouette Edge</p> <h2>1 Introduction</h2> <p>OpenCASCADE涓叧浜庨殣钘忕嚎娑堥櫎HLR綆楁硶鐨勬弿榪板氨鏄竴鍙ヨ瘽錛歍hese algorithms are based on the principle of comparing each edge of the shape to be visualized with each of its faces, and calculating the visible and the hidden parts of each edge. 鍗蟲牴鎹潰鍒ゆ柇姣忔潯杈笶dge鐨勯伄鎸″叧緋伙紝璁$畻鍑鴻竟Edge鍙鍜屼笉鍙閮ㄥ垎銆傛墍浠LR綆楁硶鐨勮緭鍏ヤ富瑕佷負杈瑰拰闈紝璁$畻閬尅鍏崇郴渚濊禆綰塊潰姹備氦綆楁硶銆傚浜庣簿紜殑HLR綆楁硶渚濊禆綺劇‘鐨勭嚎闈㈡眰浜ょ畻娉曪紝PolyAlgo綆楁硶渚濊禆澶氭綰夸笌緗戞牸姹備氦綆楁硶銆傝緭鍏ョ殑杈逛腑闄や簡BREP涓殑杈逛互澶栵紝榪樻湁涓綾繪槸鏍規嵁鎶曞獎鏂瑰悜璁$畻寰楁潵鐨勶紝鍗沖杞粨綰縊utline錛屼篃縐頒負Contour綰褲侫CIS鐨凱HLR涓О杞粨綰縎ihouette Edge銆?/p> <p><img src="https://img2023.cnblogs.com/blog/534255/202312/534255-20231203204423504-1679258260.png" alt="" /></p> <p>杞粨綰跨殑璁$畻鏄疕LR涓瘮杈冨叧閿殑涓姝ワ紝鏈枃浠penCASCADE涓畝鍗曠殑浜屾鏇查潰鐨勮疆寤撶嚎璁$畻鍏ユ墜鏉ョ悊瑙f洸闈㈢殑杞粨綰挎蹇碉紝涓虹悊瑙d換鎰忔洸闈㈣疆寤撶嚎璁$畻鎵撲笅鍩虹銆?/p> <h2>2 Outline Builder</h2> <p>OpenCASCADE鐨凥LR涓嬌鐢ㄧ被HLRTopoBRep_OutLiner鏉ヨ綆楀杞粨綰褲傝疆寤撶嚎鐨勮綆椾緷璧栨姇褰辨柟鍚戝強鎶曞獎鏂瑰紡錛屼富瑕佽綆楅昏緫鍦ㄥ嚱鏁癋ill()涓細</p> <p><img src="https://img2023.cnblogs.com/blog/534255/202312/534255-20231203204440944-1736661418.png" alt="" /></p> <p>鎶曞獎鏂瑰紡涓昏鍒嗕負閫忚鎶曞獎Perspective鍜屽鉤琛屾姇褰憋紝宸ョ▼鍥劇敓鎴愪竴鑸嬌鐢ㄥ鉤琛屾姇褰辨柟寮忋傚疄闄呰綆楃被鏄疌ontap_Contour錛屽湪綾籆ontap_Contour涓張鏍規嵁鎶曞獎鏇查潰綾誨瀷鍒嗕負涓ょ綾誨瀷鏉ュ鐞嗭細</p> <ul> <li>浜屾鏇查潰</li> <li>浠繪剰鏇查潰</li> </ul> <p><img src="https://img2023.cnblogs.com/blog/534255/202312/534255-20231203204448284-503267688.png" alt="" /></p> <p>鍏朵腑鍑芥暟PerformAna()涓鴻綆楀鉤闈€佺悆闈€佸渾鏌遍潰銆佸渾閿ラ潰鐨勫杞粨綰匡紝鏈緇堜細浣跨敤綾籆ontap_ContAna銆傚叾涓瑼na涓篈nalytical瑙f瀽鏇查潰鐨勬剰鎬濓紝榪欓噷鎸囪兘鐢ㄨВ鏋愯〃杈懼紡琛ㄧず鐨勪簩嬈℃洸闈€?/p> <h2>3 Contap_ContAna</h2> <p>綾籆ontap_ContAna鑳借綆楃悆闈€佸渾鏌遍潰鍜屽渾閿ラ潰鐨勫杞粨綰緾ontour錛屼笅闈㈡垜浠富瑕佹潵鐪嬬湅榪欎笁綾婚潰鐨勫杞粨綰胯綆楃粨鏋溿?/p> <p><img src="https://img2023.cnblogs.com/blog/534255/202312/534255-20231203204520587-275740948.png" alt="" /></p> <p>瀵逛簬騫寵鎶曞獎鐞冮潰浼氱敓鎴愪互鎶曞獎鏂瑰悜涓烘硶鍚戯紝浠ョ悆鍗婂緞涓哄崐寰勭殑涓涓渾錛屼唬鐮佸涓嬫墍紺猴細</p> <p><img src="https://img2023.cnblogs.com/blog/534255/202312/534255-20231203204533447-647385516.png" alt="" /></p> <p>濡備笅鍥炬墍紺轟腑鐨勭豢鑹茬殑綰匡細</p> <p><img src="https://img2023.cnblogs.com/blog/534255/202312/534255-20231203204542473-1297893842.png" alt="" /></p> <p>瀵逛簬騫寵鎶曞獎鍦嗘煴闈細鐢熸垚涓ゆ潯鐩寸嚎錛岃嫢鎶曞獎鏂瑰悜涓庡渾鏌遍潰娉曞悜騫寵鏃朵笉鐢熸垚杞粨綰匡紝榪欐椂灝辨槸浣跨敤鍦嗘煴浣撲腑鐨勪笂涓嬩袱涓渾鐨勮竟銆備唬鐮佸涓嬫墍紺猴細</p> <p><img src="https://img2023.cnblogs.com/blog/534255/202312/534255-20231203204549730-207895601.png" alt="" /></p> <p>鐢熸垚鐨勪袱鏉$洿綰挎柟鍚戜負鍦嗘煴闈㈢殑杞存柟鍚戯細</p> <p><img src="https://img2023.cnblogs.com/blog/534255/202312/534255-20231203204557306-1576414130.png" alt="" /></p> <p>鍦嗛敟闈㈢殑杞粨綰跨敓鎴愬嚱鏁伴昏緫綾諱技錛岀暀緇欒鑰呰嚜琛屽垎鏋愮悊瑙c?/p> <h2>4 Conclusion</h2> <p>緇間笂鎵榪幫紝BREP鐨凥LR綆楁硶闇瑕佽綆楁ā鍨嬬殑澶栬疆寤撶嚎銆傚鐞冧綋鐨凚REP杈規湁涓や釜閫鍖栬竟錛堟瀬鐐癸級錛屽強涓や釜閲嶅悎杈癸紝鑻ユ潵鎶曞獎瀹炶川涓婂彧鏈夐噸鍚堣竟涓殑涓鏉¤竟鏈夌敤錛岃岃繖涓竟榪樻槸涓崐鍦嗐備粠鐞嗚В 綆鍗曠殑浜屾鏇查潰澶栬疆寤撶嚎璁$畻鍑芥暟鍏ユ墜錛屽啀鍘繪繁鍏ョ悊瑙d換鎰忔洸闈㈢殑澶栬疆寤撶嚎璁$畻鏂規硶銆?/p> <p>鐞嗚ВHLR瀹炵幇鍘熺悊錛屽彲浠ラ噸鏋凥LR浠g爜錛屼篃鍙互瀹屽叏鑷繁鍔ㄦ墜錛屽紑鍙戝嚭婊¤凍瀹為檯闇姹傜殑鑷姩鍑哄浘紼嬪簭錛岃嚜鍔ㄥ嚭鍥炬槸宸ョ▼綾昏璁¤蔣浠朵腑鐩稿鏍稿績鐨勫姛鑳斤紝鐩墠鍥藉唴鍩轟簬PDMS鍋氳嚜鍔ㄥ嚭鍥劇浉鍏寵蔣浠跺紑鍙戠殑灝辨湁寰堝瀹躲傛湰鐫寮鏀劇殑蹇冩佸垎浜繖浜涚浉瀵規瘮杈冨叧閿姛鑳界殑鍘熺悊錛岃鍥藉唴榪欎簺浜у搧鑳芥憜鑴卞熀浜嶢utoCAD/BricsCAD寮鍙戞帴鍙f垨PDMS Draft鐨勯檺鍒訛紝寮鍙戝嚭鏇村ソ鐢ㄣ佹洿鑷敱鐏墊椿鐨勮蔣浠躲?/p><img src ="http://www.shnenglu.com/eryar/aggbug/230218.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/eryar/" target="_blank">eryar</a> 2023-12-03 20:53 <a href="http://www.shnenglu.com/eryar/archive/2023/12/03/occt_hlr_contour_ana.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>OpenCASCADE-HLR Edgehttp://www.shnenglu.com/eryar/archive/2023/12/02/occt_hlr_edges.htmleryareryarSat, 02 Dec 2023 04:23:00 GMThttp://www.shnenglu.com/eryar/archive/2023/12/02/occt_hlr_edges.htmlhttp://www.shnenglu.com/eryar/comments/230217.htmlhttp://www.shnenglu.com/eryar/archive/2023/12/02/occt_hlr_edges.html#Feedback0http://www.shnenglu.com/eryar/comments/commentRss/230217.htmlhttp://www.shnenglu.com/eryar/services/trackbacks/230217.htmlOpenCASCADE-HLR Edge

1 Introduction

鐢ㄨ綆楁満鐢熸垚涓夌淮鐗╀綋鐨勭湡瀹炲浘褰紝鏄綆楁満鍥懼艦瀛︾爺絀剁殑閲嶈鍐呭銆傜湡瀹炲浘褰㈠湪浠跨湡妯℃嫙銆佸嚑浣曢犲瀷銆佸箍鍛婂獎瑙嗗拰縐戝璁$畻鍙鍖栫瓑璁稿棰嗗煙閮芥湁鐫騫挎硾搴旂敤銆傚湪鐢ㄦ樉紺鴻澶囨弿榪扮墿浣撶殑鍥懼艦鏃訛紝蹇呴』鎶婁笁緇翠俊鎭粡榪囨煇縐嶆姇褰卞彉鎹㈠湪浜岀淮鐨勬樉紺哄鉤闈笂緇樺埗鍑烘潵銆備粠涓夌淮鎶曞獎鍒頒簩緇寸殑闄嶇淮鎿嶄綔錛屼細瀵艱嚧鍥懼艦鐨勪簩涔夋с傝娑堥櫎榪欑被浜屼箟鎬э紝灝卞繀欏誨湪緇樺埗鏃舵秷闄よ閬尅鐨勪笉鍙鐨勭嚎鎴栭潰錛屼範鎯笂縐頒箣涓烘秷闄ら殣钘忕嚎Hidden Line Removal鍜岄殣钘忛潰Hidden Face Removal銆?/p>

榪欐槸娓叉煋鏄劇ず涓婂娑堥殣鐨勯渶姹傦紝鍦ㄦ牴鎹笁緇存ā鍨嬭嚜鍔ㄧ敓鎴愬伐紼嬪浘鐨勫伐紼嬭璁¤蔣浠朵腑錛屽娑堥殣鐨勯渶姹傛湁鎵涓嶅悓銆?/p>

宸ョ▼璁捐杞歡涓庢満姊拌璁¤蔣浠朵笉鍚岋紝宸ョ▼璁捐杞歡涓嬈″嚭鍥炬秷闅愮殑妯″瀷閲忓ぇ錛屽鍑哄浘鐨勭畻娉曡姹備富瑕佹湁錛?/p>

  • 涓昏浣跨敤娑堥殣綰跨畻娉曪紱
  • 娑堥殣寰楀埌鐨勭嚎鑳芥壘鍒頒笌涓夌淮妯″瀷鐨勫叧緋伙紝鏂逛究鏍囨敞妯″瀷淇℃伅錛屽妯″瀷鍚嶇О銆佽鏍肩瓑錛?/li>
  • 鑷姩鏍囨敞甯冨眬綆楁硶錛岃兘瀵規爣娉ㄧ殑鍚嶇О銆佽鏍肩瓑鑷姩甯冨眬錛屽噺灝戞墜宸ヨ皟鏁達紱
  • 鑷姩灝哄鏍囨敞錛?/li>
  • 絎﹀彿鍖栧鐞嗭紝濡傜閬撴ā鍨嬭兘鐢ㄤ竴鏉$嚎絎﹀彿鍖栧鐞嗭紱

鍏跺疄鏈鍚庢葷粨鎴愪竴鍙ヨ瘽灝辨槸涓閿牴鎹ā鍨嬬敓鎴愯兘浜や粯鐨勫浘綰搞傝櫧鐒剁幇鍦ㄦ妧鏈笂鍏峰涓夌淮妯″瀷涓嬭濺闂寸殑鑳藉姏錛屼絾鏄洰鍓嶄簩緇村浘綰鎬緷鐒舵槸璁捐浜や粯銆佸姞宸ュ埗閫犱富瑕佷緷鎹傚伐紼嬬被璁捐杞歡涓昏鐨勫姛鑳藉氨鏄揩閫熷緩妯★紝紕版挒媯嫻嬪拰鑷姩鍥劇焊鐢熸垚銆傚綋妯″瀷閲忓ぇ鏃訛紝娑堥殣閫熷害蹇強鑷姩鐢熸垚鐨勬爣娉ㄦ枃瀛楁帓鍒楁暣榻愶紙鎴栨弧瓚沖伐紼嬩範鎯級鎴愪簡浜岀淮鍥劇焊鑷姩鐢熸垚鐨勬牳蹇冩妧鏈紝涔熸槸紼嬪簭澶勭悊涓殑闅劇偣銆?/p>

2 HLR

鍑犱綍鍐呮牳涓鑸兘鎻愪緵HLR綆楁硶錛岀敤鏉ユ牴鎹ā鍨嬫姇褰辯敓鎴愪簩緇村伐紼嬪浘銆侽penCASCADE鐨凥LR鎻愪緵浜嗛殣钘忕嚎娑堥殣綆楁硶銆?/p>

https://www.spatial.com/zh/products/cgm-hlr-hidden-line-removal

OpenCASCADE 鎻愪緵浜嗕袱縐嶆秷闅愮畻娉曪細HLRBRep_Algo鍜孒LRBRep_PolyAlgo銆傝繖浜涚畻娉曢兘鏄熀浜庣浉鍚岀殑鍘熺悊錛氭瘮杈冨艦鐘舵瘡鏉¤竟鐩稿姣忎釜闈㈢殑鍙鎬э紝騫?璁$畻姣忔潯杈圭殑鍙閮ㄥ垎涓庢秷闅愰儴鍒嗐傜畻娉曢氳繃璁$畻鍦ㄦ寚瀹氭姇褰辨柟鍚戜笂鐨勭墿浣撴樉紺虹壒鎬э紝鍘婚櫎鎴栨爣璁拌闈㈤伄鎸$殑杈廣傝繖涓や釜綆楁硶涔熶笌涓浜涙彁鍙栧姛鑳介厤鍚堜嬌鐢紝濡傞噸鏋勪竴 涓畝鍖栫殑妯″瀷絳夛紝綆鍖栧悗鏂扮殑妯″瀷鐢辮竟緇勬垚錛屽氨鏄湪鎶曞獎鏂瑰悜涓婄殑杞粨綰褲?/p>

3 杈圭殑鍒嗙被

OpenCASCADE鐨凥LR涓皢杈瑰垎涓轟互涓嬬被鍨嬶細

  • Sharp Edges
  • Smooth Edges
  • Sewn Edges
  • Outline Edges
  • Isoparameter Edges

浠庣被HLRBRep_HLRToShape鍜岀被HLRBRep_PolyHLRToShape涓粰鍑轟簡榪欎簺杈圭殑涓浜涘畾涔夈傚叾涓璖harp Edge琛ㄧずC0榪炵畫錛堥潪G1榪炵畫錛夌殑杈癸紝灝辨槸涓鑸珽dge錛?/p>

Smooth Edge琛ㄧずG1榪炵畫錛堥潪G2 榪炵畫錛夌殑杈癸紱

Sewn Edge琛ㄧずG2榪炵畫鐨勮竟錛?/p>

Outline Edge琛ㄧず妯″瀷鐨勮疆寤撹竟錛岃繖縐嶇被鍨嬬殑杈逛笉鍦˙REP鏁版嵁涓紝闇瑕佹牴鎹姇褰辨柟鍚戠敓鎴愶紱

Isoparameter Edge琛ㄧず闈㈢殑絳夊弬綰跨敓鎴愮殑杈癸紝榪欑綾誨瀷鐨勮竟涓嶄篃涓嶅湪BREP鏁版嵁涓紱

鍏朵腑Sharp Edge銆丼mooth Edge鍜孲ewn Edge涓鑸兘鏄疊REP涓殑EDGE鏁版嵁錛岃孫utline Edge鍜孖soparameter Edge鏄牴鎹緗澶栫敓鎴愮殑杈廣傜悊瑙h竟鐨勮繖浜涘畾涔夛紝鏂逛究瀵笻LR綆楁硶榪涜鐞嗚В銆侶LR綆楁硶鏄浉瀵圭畝鍗曠殑綆楁硶錛屼富瑕佹槸灝卞皢涓婅堪浜旂綾誨瀷鐨勮竟涓庨潰榪涜姹備氦錛屽垽鏂伄鎸″叧緋匯?/p>

鐩墠OpenCASCADE涓殑HLR綆楁硶浠g爜鍐欏緱鏈夌偣涔憋紝涓婃鍦ㄦ繁鍦硂gg鐨勪縿緗楁柉寮鍙戜漢鍛樻彁鍒拌閲嶆瀯HLR閮ㄥ垎鐨勪唬鐮併傛繁鍏ョ悊瑙?HLR綆楁硶錛屼負鑷姩鐢熸垚鍥劇焊鍔熻兘鎵撲笅鍩虹銆?/p>

 



eryar 2023-12-02 12:23 鍙戣〃璇勮
]]>
OpenCASCADE 綰塊潰姹備氦http://www.shnenglu.com/eryar/archive/2023/12/02/occt_intcs.htmleryareryarSat, 02 Dec 2023 04:23:00 GMThttp://www.shnenglu.com/eryar/archive/2023/12/02/occt_intcs.htmlhttp://www.shnenglu.com/eryar/comments/230216.htmlhttp://www.shnenglu.com/eryar/archive/2023/12/02/occt_intcs.html#Feedback0http://www.shnenglu.com/eryar/comments/commentRss/230216.htmlhttp://www.shnenglu.com/eryar/services/trackbacks/230216.htmlOpenCASCADE 綰塊潰姹備氦

eryar@163.com

1 Introduction

OpenCASCADE涓嚑浣曟洸綰夸笌鏇查潰姹備氦浣跨敤綾籊eomAPI_IntCS錛屾槸瀵圭被IntCurveSurface_HInter鐨勭畝鍗曞皝瑁呫傚湪IntCurveSurface_HInter涓鏇茬嚎鍜屾洸闈㈡眰浜ゅ垎涓轟互涓嬪嚑縐嶇被鍨嬶細

  • PerformConicSurf錛氫簩嬈℃洸綰夸笌鏇查潰姹備氦錛屽叾涓張鍒嗕負涓ょ被錛氫簩嬈℃洸綰夸笌浜屾鏇查潰姹備氦鍜屼簩嬈℃洸綰垮拰鑷敱鏇查潰姹備氦錛?/li>
  • InternalPerformCurveQuadric錛氳嚜鐢辨洸綰夸笌浜屾鏇查潰姹備氦錛?/li>
  • InternalPerform錛氳嚜鐢辨洸綰垮拰鑷敱鏇查潰姹備氦錛?/li>

鏈枃涓昏浠嬬粛鏇茬嚎涓庢洸闈㈡眰浜ょ殑瀹炵幇鍘熺悊銆?/p>

2 浜屾鏇茬嚎涓庝簩嬈℃洸闈㈡眰浜?/h2>

浜屾鏇茬嚎涓庝簩嬈℃洸闈㈡眰浜や嬌鐢↖ntAna_ConicQuad璁$畻錛屼富瑕佹濊礬鏄皢鏇茬嚎鐢ㄥ弬鏁版柟紼嬭〃紺猴紝浠e叆浜屾鏇查潰鐨勪唬鏁版柟紼嬨備簩嬈℃洸闈㈠彲浠ヤ嬌鐢ㄤ簩嬈″欏瑰紡琛ㄧず錛屽皢浜屾鏇茬嚎涓庝簩嬈℃洸闈㈢浉浜よ〃紺烘垚涓涓欏瑰紡鏂圭▼錛屼嬌鐢╩ath_DirectPolynomialRoots瀵瑰欏瑰紡鏂圭▼榪涜姹傝В銆?/p>

3 浜屾鏇茬嚎涓庤嚜鐢辨洸闈㈡眰浜?/h2>

浜屾鏇茬嚎涓庤嚜鐢辨洸闈㈡眰浜ゅ皢鏇查潰浣跨敤IntCurveSurface_Polyhedron鍦║錛孷涓婇噰鏍風鏁e緱鍒癵rid緗戞牸銆傝繖涓被瀹炵幇涓嶪ntPolyh_MaillageAffinage綾誨姛鑳芥湁閲嶅銆?/p>

IntCurveSurface_ThePolygon澶氭綰夸笌Intf_InterferencePolygonPolyhedron 緗戞牸姹備氦錛屾牴鎹孌電嚎涓庣綉鏍兼眰浜ゆ儏鍐碉紝鎵懼埌鍒濆鍊鹼紝浣跨敤IntImp_IntCS璁$畻綺劇‘鍊箋備笌鏇查潰姹備氦鐨凪arching綆楁硶綾諱技錛屼嬌鐢ㄨ凱浠f硶鍘昏綆楃簿紜氦鐐廣傝凱浠f柟紼嬩負IntImp_ZerCSParFunc錛屽啓鍑鴻繖涓柟紼嬬殑Value()鍊艱綆楀拰Derivatives()寰垎璁$畻鍏紡銆?/p>

灝嗘洸綰夸笌鏇查潰姹備氦闂杞寲涓烘眰鏇查潰鍙傛暟u,v鍜屾洸綰垮弬鏁皐錛屼嬌鏇茬嚎C(w)鏇查潰S(u,v)涓婄殑鐐歸噸鍚堬紝寤虹珛鍑芥暟濡備笅錛?/p>

F(u,v,w)=S(u,v) - C(w)

鎵姹傜殑綺劇‘浜ょ偣婊¤凍鏂圭▼F(u,v,w)=0錛孎涓轟竴鍚湁涓変釜鍧愭爣鐨勭煝閲忥紝瀵瑰簲鍑芥暟Value()錛?/p>

Fx(u,v,w)=Sx(u,v) - Cx(w) = 0

Fy(u,v,w)=Sy(u,v) - Cy(w) = 0

Fz(u,v,w)=Sz(u,v) - Cz(w) = 0

涓婇潰涓哄惈鏈変笁涓柟紼嬬殑浠,v,w涓哄彉閲忕殑闈炵嚎鎬ф柟紼嬬粍錛岀簿紜氦鐐瑰氨鏄潪綰挎ф柟紼嬬粍鐨勮В銆備嬌鐢ㄧ被math_FunctionSetRoot搴旂敤Newton-Raphson榪唬娉曟眰瑙i潪綰挎ф柟紼嬬粍鐨勮В銆備嬌鐢∟ewton榪唬娉曟湁涓墠鎻愭潯浠舵槸瑕佹眰闈炵嚎鎬ф柟紼嬬粍涓闃跺彲瀵鹼紝鍗寵鍐欏嚭Jacobian榪唬鐭╅樀錛屽嵆涓婅堪鍑芥暟Derivatives()鐨勫疄鐜板師鐞嗭細

4 鑷敱鏇茬嚎涓庝簩嬈℃洸闈㈡眰浜?/h2>

鑷敱鏇茬嚎涓庝簩嬈℃洸闈㈡眰浜ntCurveSurface_TheQuadCurvExactInter 錛岄氳繃綾籌ntCurveSurface_TheQuadCurvFuncOfTheQuadCurvExactHInter寤虹珛浜屾鏇查潰涓庢洸綰夸箣闂寸殑鍑芥暟錛屾槸姹傝В鏇茬嚎涓婂弬鏁癠鐨勪竴鍏冨嚱鏁般?/p>

5 鑷敱鏇茬嚎涓庤嚜鐢辨洸闈㈡眰浜?/h2>

鑷敱鏇茬嚎涓庤嚜鐢辨洸闈㈡眰浜ゅ拰浜岀淮鑷敱鏇茬嚎姹備氦綾諱技錛岄噰鐢ㄧ殑紱繪暎娉曘傚嵆灝嗘洸綰塊氳繃閲囨牱紱繪暎鎴愬孌電嚎Polygon錛屽皢鏇查潰閲囨牱鐢熸垚緗戞牸Polyhedron錛岄氳繃綾籌ntCurveSurface_TheInterferenceOfHInter鏉ヨ綆楀孌電嚎涓庣綉鏍肩殑鐩鎬氦銆?/p>

鍖匢ntf涓昏鐢ㄦ潵璁$畻浜岀淮澶氭綰褲佷笁緇村孌電嚎鍙婄綉鏍肩殑鐩鎬氦銆傛牴鎹鏁h綆楃殑綺椾氦鐐癸紝鍐嶆牴鎹被IntCurveSurface_TheExactHInter浣跨敤榪唬娉曟眰寰楃簿紜氦鐐廣傝繖涓濇兂涓庢洸闈㈠拰鏇查潰姹備氦鐩稿悓銆?/p>

6 姹備氦緇撴灉

鏇茬嚎涓庢洸闈㈡眰浜ょ殑緇撴灉涓昏涔熸槸淇濆瓨鍦ㄧ被IntCurveSurface_Intersection瀵硅薄涓紝榪欎釜綾葷殑璁捐涓庝簩緇存洸綰挎眰浜ょ被浼鹼紝涓嶅鐩存帴銆?/p>

鍙互鐪嬪埌IntCurveSurface_Intersection榪欎釜綾葷殑鏋勯犲嚱鏁版槸protected鐨勶紝鎰忔濇槸涓嶈兘鐩存帴浣跨敤錛岄氳繃媧劇敓綾籌ntCurveSurface_HInter璋冪敤SetValues()鍑芥暟灝嗘眰浜ょ粨鏋滀繚瀛樿搗鏉ャ傛眰浜ょ粨鏋滀負浜ょ偣IntCurveSurface_IntersectionPoint鍜屼氦綰縄ntCurveSurface_IntersectionSegment銆?/p>

鍏朵腑浜ょ偣涓璉ntCurveSurface_IntersectionPoint淇濆瓨浜嗕笁緇村潗鏍囩偣錛屼氦鐐瑰湪鏇查潰涓婄殑U,V鍙傛暟錛屼氦鐐瑰湪鏇茬嚎涓婄殑鍙傛暟U鍙婄浉浜ょ姸鎬併備氦綰夸富瑕佹槸綰跨幇闈㈠拰閲嶅悎閮ㄥ垎鐨勫嚑浣曞寮傛儏鍐墊暟鎹?/p>

浠庣被鍥句笂鍙互鐪嬪嚭錛岃繖涓璺悓鏍風敤鍒頒簡HLR綆楁硶涓紝鐞嗚В榪欎釜濂楄礬瀵圭悊瑙LR綆楁硶鏈夊府鍔┿?/p>

7 Conclusion

緇間笂鎵榪幫紝OpenCASCADE涓皢鏇茬嚎涓庢洸闈㈡眰浜ゆ牴鎹洸綰垮拰鏇查潰綾誨瀷鐨勪笉鍚屽垎鍒鐞嗐備簩嬈℃洸綰挎洸闈㈡眰浜や緷璧朓ntAna鍖咃紝鑷敱鏇茬嚎鍜岃嚜鐢辨洸闈㈡眰浜や嬌鐢ㄧ鏁f硶錛屾渶緇堝疄鐜扮畻娉曚笌涓や釜鏇查潰姹備氦鐨凪arching綆楁硶綾諱技錛岄氳繃紱繪暎寰楀埌鐨勭簿浜ょ偣錛屽啀浠e叆榪唬鏂圭▼姹傚緱綺劇‘瑙c傚叾涓妸鏇茬嚎鎴栨洸闈㈢鏁g殑閲囨牱鐐規病鏈夎冭檻鏇茬嚎鎴栨洸闈㈢殑鏇茬巼絳夛紝閲囨牱鐐規暟閲忚緝澶э紝浼氬獎鍝嶆ц兘 銆傛洸闈㈤噰鏍風鏁d唬鐮佷笌鏇查潰姹備氦涓殑鏈夐噸澶嶃備粠鍑犱綍姹備氦綾諱腑鍙互鐪嬪埌娌℃湁瀹瑰樊鐨勮緭鍏ワ紝鍙互鎬濊冧竴涓嬭繖涓棶棰樸?/p>

TKGeomAlgo涓櫎浜嗘嫙鍚堢畻娉曞錛屽ぇ閮ㄥ垎浠g爜涓昏灝辨槸綰跨嚎姹備氦銆佺嚎闈㈡眰浜ゅ強闈㈤潰姹備氦綆楁硶銆傜悊瑙h繖浜涚畻娉曠殑瀹炵幇鍘熺悊錛屼負Boolean綆楁硶鐨勬眰浜ら昏緫鎵撲笅鍩虹銆?/p>

 



eryar 2023-12-02 12:23 鍙戣〃璇勮
]]>
OpenCASCADE浜岀淮鏇茬嚎姹備氦http://www.shnenglu.com/eryar/archive/2023/12/02/occt_int_curve2d.htmleryareryarSat, 02 Dec 2023 04:22:00 GMThttp://www.shnenglu.com/eryar/archive/2023/12/02/occt_int_curve2d.htmlhttp://www.shnenglu.com/eryar/comments/230215.htmlhttp://www.shnenglu.com/eryar/archive/2023/12/02/occt_int_curve2d.html#Feedback0http://www.shnenglu.com/eryar/comments/commentRss/230215.htmlhttp://www.shnenglu.com/eryar/services/trackbacks/230215.htmlOpenCASCADE浜岀淮鏇茬嚎姹備氦

1 Introduction

OpenCASCADE涓浜岀淮鏇茬嚎姹備氦鍜屼笁緇存洸綰挎眰浜ゆ槸涓嶅悓鐨勶紝涓夌淮鏇茬嚎姹備氦緇熶竴浣跨敤紱繪暎娉曪紝浜岀淮鏇茬嚎姹備氦鏍規嵁鏇茬嚎綾誨瀷鐨勪笉鍚屽垎縐嶇被鍨嬭繘琛屽鐞嗐備簩緇存洸綰挎眰浜や腑榪樻彁渚涗簡璁$畻鑷氦鐨勭洿鎺ユ帴鍙c傚湪TKGeomAlgo涓紝涓昏鍐呭灝辨槸鎷熷悎銆佹眰浜ょ畻娉曪紝鐞嗚В姹備氦綆楁硶鐨勫疄鐜板師鐞嗭紝杈懼埌鑳介槄璇誨拰淇敼婧愮爜鐨勭姸鎬侊紝鑳藉鍒嗘瀽鍜岃В鍐沖疄闄呴亣鍒扮殑闂錛岀悊瑙penCASCADE鐨勮兘鍔涜竟鐣岋紝鏍規嵁闇瑕侀夋嫨鎵闇瑕佺殑鍔熻兘錛屼嬌杞歡緇撴灉鍙帶銆傛湰鏂囦富瑕佷粙緇嶄簩緇存洸綰跨浉浜ょ殑瀹炵幇鍘熺悊銆?/p>

鐢變簬OpenCASCADE寮鍙戞椂闂寸浉瀵逛箙榪滐紝鍦ㄤ簩緇存洸綰挎眰浜ょ浉鍏充唬鐮佷腑澶ч噺浣跨敤浜嗗畯瀹氫箟鐨勬柟寮忔潵瀹炵幇C++ 鐨勬ā鏉縯emplate鑳藉姏錛屽畯瀹氫箟鍦ㄧ被鐨刋XX_0.cxx鏂囦歡涓紝瀵瑰簲妯℃澘瀹炵幇鍦?.gxx涓細

榪欑瀹炵幇鏂瑰紡浼氳浠g爜鐨勫彲璇繪у彉宸紝涓嶅埄浜庝唬鐮佺淮鎶ゃ傚簲璇ョ敤C++鐨勬柟寮忓榪欎簺*.gxx浠g爜閲嶆瀯錛屽寮轟唬鐮佸彲璇繪у拰鍙淮鎶ゆс?/p>

2 姹備氦鍒嗙被

浜岀淮姹備氦浣跨敤綾籊eom2dAPI_InterCurveCurve錛?榪欎釜綾繪槸瀵圭被Geom2dInt_GInter鐨勫皝瑁呫傚湪綾籊eom2dInt_GInter涓紝濡傛灉鍙緭鍏ヤ竴鏉℃洸綰匡紝鍙互璁$畻鑷氦錛屽鏋滆緭鍏ヤ袱鏉℃洸綰匡紝璁$畻涓ゆ潯鏇茬嚎鐨勭浉浜ゃ?/p>

  • IntCurve_IntConicConic錛氫簩嬈℃洸綰夸笌浜屾鏇茬嚎姹備氦銆備簩嬈℃洸綰夸笌浜屾鏇茬嚎姹備氦閮藉厛浣跨敤鍑犱綍鏂規硶璁$畻浜ょ偣錛屽啀鍒ゆ柇鏄惁鍦ㄥ弬鏁拌寖鍥村唴錛?/li>
  • Geom2dInt_TheIntConicCurveOfGInter錛氫簩嬈℃洸綰夸笌浠繪剰鏇茬嚎姹備氦銆備簩嬈℃洸綰夸笌浠繪剰鏇茬嚎姹備氦閫氳繃綾籊eom2dInt_MyImpParToolOfTheIntersectorOfTheIntConicCurveOfGInter寤虹珛璺濈鏂圭▼錛屼嬌鐢ㄧ被math_FunctionAllRoots鏉ュ鏂圭▼榪涜姹傝В錛?/li>
  • Geom2dInt_TheIntPCurvePCurveOfGInter錛氫換鎰忔洸綰夸笌浠繪剰鏇茬嚎姹備氦銆傝嚜鐢辨洸綰挎眰浜や嬌鐢ㄧ鏁f硶IntCurve_IntPolyPolyGen錛屼嬌鐢ㄧ被Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter灝嗘洸綰塊氳繃閲囨牱鐐圭敓鎴愬孌電嚎Polyline錛屼嬌鐢ㄧ被Intf_InterferencePolygon2d璁$畻澶氭綰夸箣闂寸殑綺椾氦鐐癸紝鍐嶄嬌鐢ㄧ被IntCurve_ExactIntersectionPoint閫氳繃綺椾氦鐐規壘鍒版洸綰夸笂鐨勭簿紜氦鐐癸紱

榪欎簺綾婚兘鏄粠綾籌ntRes2d_Intersection媧劇敓錛?/p>

浠庝笂鍥懼彲鐭ワ紝浜岀淮姹備氦緇撴灉綾籌ntRes2d_Intersection鐩稿叧媧劇敓綾誨彲鐭ヤ簩緇存眰浜や笌HLR綆楁硶涔熸湁鍏崇郴錛岀悊瑙d簩緇存洸綰挎眰浜ら昏緫錛屽鐞嗚ВHLR浠g爜涔熸湁甯姪銆?/p>

3 鑷氦璁$畻

褰撳彧杈撳叆涓鏉℃洸綰挎椂錛屽彲浠ュ鏇茬嚎榪涜鑷氦璁$畻錛屼富瑕佸疄鐜伴昏緫涓猴細鑻ヤ負鏅氫簩嬈℃洸綰匡紝鍒欎笉浼氳嚜浜わ紱鑻ユ槸鍏朵粬鏇茬嚎錛屼嬌鐢ㄧ鏁f硶瀵規洸綰胯繘琛岃嚜浜よ綆椼備唬鐮佸涓嬪浘鎵紺猴細

4 姹備氦緇撴灉

浜岀淮鏇茬嚎姹備氦緇撴灉淇濆瓨鍒扮被IntRes2d_Intersection涓紝涓昏鍖呭惈涓ら儴鍒嗭細

  • IntRes2d_IntersectionPoint錛氫氦鐐規暟鎹紝淇濆瓨浜ょ偣鍧愭爣鍊鹼紝浜ょ偣鍦ㄤ袱涓洸綰夸笂鐨勫弬鏁幫紝鍙婁袱鏉℃洸綰垮湪浜ょ偣澶勭殑榪囨浮鐘舵乀ransition錛?/li>
  • IntRes2d_IntersectionSegment錛氫氦綰挎暟鎹紝褰撲袱鏉℃洸綰挎湁閲嶅彔鏃剁殑鍑犱綍濂囧紓鎯呭喌鏃訛紝姹備氦緇撴灉涓轟氦綰匡紱

鍥犱負綾籌ntRes2d_Interseciton鐨勬瀯閫犲嚱鏁皃rotected錛屾墍浠ヤ笉鑳界洿鎺ヤ嬌鐢ㄨ繖涓被錛岄兘鏄氳繃鍏舵淳鐢熺被浣跨敤鍑芥暟SetValues()灝嗚綆楀緱鍒扮殑浜ょ偣鍜屼氦綰挎暟鎹繚瀛樿搗鏉ャ傝繖閲岀被鐨勮璁℃瘮杈冪箒鐞愶紝浠g爜鍙鎬ц緝宸?/p>

5 Conclusion

OpenCASCADE瀵逛簬浜岀淮鏇茬嚎姹備氦榪涜鍒嗙被澶勭悊錛屾牴鎹洸綰跨被鍨嬫槸浜屾鏇茬嚎銆佸弬鏁版洸綰垮垎鎴愪笁綾伙細浜屾鏇茬嚎涓庝簩嬈℃洸綰挎眰浜ゃ佷簩嬈℃洸綰夸笌鍙傛暟鏇茬嚎姹備氦鍜屽弬鏁版洸綰夸笌鍙傛暟鏇茬嚎姹備氦錛屼笉鍚岀殑姹備氦綾誨瀷閲囩敤涓嶅悓鐨勭瓥鐣ュ彲浠ユ彁楂樻眰浜ゆц兘鍜岀ǔ瀹氭с備嬌鐢ㄧ鏁f硶璁$畻浜岀淮鏇茬嚎鑷氦銆備粠姹備氦緇撴灉鏉ョ湅錛屼篃澶勭悊浜嗗嚑浣曞寮傞棶棰橈紝鍗蟲洸綰塊噸鍙犳儏鍐點?/p>

瀵逛簬鏇茬嚎姹備氦榪樻湁寰堝ぇ鏀硅繘絀洪棿錛?/p>

  • 浣跨敤C++緙栫爜椋庢牸閲嶆瀯*.gxx浠g爜錛屾彁楂樹唬鐮佸彲璇繪э紝鏂逛究浠g爜緇存姢錛?/li>
  • 瀵逛簬鑷敱鏇茬嚎姹備氦鐨勭鏁f硶涓綆椾袱鏉″孌電嚎綆楁硶涓紩鍏VH鏉ュ姞閫燂紱
  • 灝嗘洸綰跨鏁f垚澶氭綰挎椂鑰冭檻​鏇茬嚎鐨勬洸鐜囧彉鍖栵紝涓嶈鍧囧寑閲囨牱錛屽噺灝戝孌電嚎鏁伴噺錛?/li>
  • 瀵逛簬涓夌淮鏇茬嚎姹備氦閮芥槸浣跨敤浜嗙鏁f硶錛屽緩璁儚浜岀淮鏇茬嚎姹備氦榪欐牱榪涜鍒嗙被澶勭悊錛屼互鍙婂紩鍏VH錛屾彁楂樻ц兘鍜岀ǔ瀹氭э紱

 



eryar 2023-12-02 12:22 鍙戣〃璇勮
]]>
OpenCASCADE鏇茬嚎涓婄偣鐨勫弽姹?/title><link>http://www.shnenglu.com/eryar/archive/2023/12/02/occt_extrema_pc.html</link><dc:creator>eryar</dc:creator><author>eryar</author><pubDate>Sat, 02 Dec 2023 04:21:00 GMT</pubDate><guid>http://www.shnenglu.com/eryar/archive/2023/12/02/occt_extrema_pc.html</guid><wfw:comment>http://www.shnenglu.com/eryar/comments/230214.html</wfw:comment><comments>http://www.shnenglu.com/eryar/archive/2023/12/02/occt_extrema_pc.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/eryar/comments/commentRss/230214.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/eryar/services/trackbacks/230214.html</trackback:ping><description><![CDATA[<h1 style="text-align: center;"><strong>OpenCASCADE鏇茬嚎涓婄偣鐨勫弽姹?/strong></h1> <p style="text-align: center;"><a href="mailto:eryar@163.com"><u>eryar@163.com</u></a></p> <h2>1 Introduction</h2> <p>鏇茬嚎鍙互鐢ㄤ唬鏁版柟紼嬭〃紺猴紝濡傚渾鍙互鐢╔^2+Y^2=R^2琛ㄧず錛屼篃鍙互鐢ㄥ弬鏁版柟紼媂(u)=RCos(u), Y(u)=RSin(u)琛ㄧず銆傝鍒ゆ柇鐐規槸涓嶆槸鍦ㄧ嚎涓婏紝鐢ㄦ洸綰夸唬鏁版柟紼嬪彲浠ュ緢鐩存帴寰楀嚭緇撴灉錛屼絾鏄嬌鐢ㄥ弬鏁版柟紼嬪氨娌℃湁閭d箞鐩存帴銆傝繖涔熸槸鍙傛暟鏇茬嚎涓婄偣鐨勫弽姹傞棶棰橈紝鍙傛暟鏇茬嚎涓婄偣鐨勫弽姹傞棶棰樺簲鐢ㄥ箍娉涳紝濡傚墠闈㈡墍榪板垽鏂偣鏄惁鍦ㄦ洸綰夸笂銆佺偣鍚戞洸綰挎姇褰便佺偣涓庣嚎鐨勬眰浜ゃ佺偣鍦ㄥ弬鏁版洸綰夸笂鐨勫弬鏁扮瓑錛岄兘涓庣偣鐨勫弽姹傞棶棰樼浉鍏熾傛湰鏂囦富瑕佺粨鍚堜唬鐮佷粙緇峅penCASCADE鏇茬嚎涓婄偣鐨勫弽姹傚疄鐜板師鐞嗗強浣跨敤榪囩▼涓殑涓浜涙敞鎰忎簨欏廣?/p> <h2>2 瀹炵幇鍘熺悊</h2> <p>鍦ㄣ奣he NURBS Book銆嬩功涓皢鐐圭殑鍙嶆眰闂褰掔粨涓虹偣鍚戞洸綰挎姇褰辮窛紱繪渶鐭殑闂錛屽涓嬪浘鎵紺猴細</p> <p><img src="https://img2023.cnblogs.com/blog/534255/202311/534255-20231121223308624-288654811.png" alt="" /></p> <p>寤虹珛鍑芥暟f(u)=C’(u).(C(u) - P)琛ㄧず鐐瑰埌鏇茬嚎璺濈錛屽綋f(u)=0鏃朵負鐐瑰埌鏇茬嚎鐨勬渶鐭窛紱伙紝涓嶇鐐筆鏄惁鍦ㄦ洸綰夸笂銆傚嚑浣曟剰涔夋槸鐐瑰埌鏇茬嚎浠繪剰鐐圭殑鍚戦噺涓庝換鎰忕偣澶勭殑鍒囧悜閲忕偣縐負闆訛紝琛ㄧず鍦ㄤ袱涓悜閲忓瀭鐩寸殑鏃跺欐眰寰楁瀬鍊肩偣銆傛敞鎰忔暟瀛︽柟紼嬩腑鍨傜洿榪欎釜鍑犱綍鎰忎箟銆?/p> <p>OpenCASCADE涓疄鐜版洸綰夸笂鐐圭殑鍙嶆眰鍘熺悊涓庛奣he NURBS Book銆嬩功涓竴鑷淬傜偣鐨勫弽姹備嬌鐢ㄧ被GeomLib_Tool::Parameter()鍑芥暟錛?/p> <p><img src="https://img2023.cnblogs.com/blog/534255/202311/534255-20231121223325985-1610888534.png" alt="" /></p> <p>杈撳叆鏇茬嚎銆佺偣鍜屾渶澶ц窛紱伙紝璁$畻鐐規槸鍚﹀湪鏇茬嚎涓婂強鑻ュ湪鏇茬嚎涓婏紝鐐瑰搴斿弬鏁版洸綰跨殑鍙傛暟U銆?/p> <p><img src="https://img2023.cnblogs.com/blog/534255/202311/534255-20231121223340394-1887945485.png" alt="" /></p> <p>綾籈xtrema_ExtPC璁$畻鐐筆鍒扮嚎C鐨勬瀬鍊糆xtrema銆傛牴鎹唬鐮佹敞閲婂彲浠ョ湅鍑虹偣鐨勫弽姹傛暟瀛︽柟紼嬩笌銆奣he NURBS Book銆嬩功涓竴鑷達細</p> <p><img src="https://img2023.cnblogs.com/blog/534255/202311/534255-20231121223354086-1220908578.png" alt="" /></p> <p>鏁板鏂圭▼瀵瑰簲鐨勭被鐨勫彉閲忎負myF錛岀被鍚嶄負Extrema_FuncExtPC錛屼粠綾籱ath_FunctionWithDerivative媧劇敓錛屾墍浠ュ繀欏誨疄鐜頒袱涓叧閿櫄鍑芥暟Value()鍜孌erivative()銆傚叾浠g爜娉ㄩ噴璇存槑浜嗚繖涓や釜鍑芥暟鐨勫疄鐜扮粏鑺傦細</p> <p><img src="https://img2023.cnblogs.com/blog/534255/202311/534255-20231121223407926-1740284446.png" alt="" /></p> <p>鍏朵腑F(u)瀵瑰簲鍑芥暟Value():</p> <p><img src="https://img2023.cnblogs.com/blog/534255/202311/534255-20231121223417144-1935074213.png" alt="" /></p> <p>DF(u)瀵瑰簲鍑芥暟Derivative()錛屾渶鍚庝嬌鐢∟ewton娉昺ath_FunctionRoots瀵規柟紼嬭繘琛屾眰鏍廣?/p> <h2>3 娉ㄦ剰浜嬮」</h2> <p>OpenCASCADE涓偣鐨勫弽姹侴eomLib_Tool::Parameter()銆佺偣鍚戞洸綰挎姇褰盙eomAPI_ProjectPointOnCurve銆佺偣涓庢洸綰跨殑浜ょ偣IntTools_Context::ComputeVE絳夌畻娉曢兘鏄嬌鐢ㄤ簡Extrema_ExtPC綾匯?/p> <p> </p> <p>褰撲嬌鐢℅eomLib_Tool::Parameter()鍑芥暟鏉ュ垽鏂偣鏄惁鍦ㄦ洸綰夸笂鏃訛紝娉ㄦ剰绔偣澶勭偣鐨勫弽姹傝婊¤凍鍨傜洿鐨勬潯浠訛紝鍗充嬌鐐逛笌鏇茬嚎鏌愪釜绔偣璺濈灝忎簬MaxDist鏃訛紝涔熸槸榪斿洖false銆傚嵆瀵逛簬鏇茬嚎绔偣澶勭殑鎯呭喌闇瑕佽嚜宸遍鍏堝鐞嗭紝鐩存帴綆楃偣P涓庢洸綰跨鐐硅窛紱諱笌MaxDist姣旇緝錛屽厛澶勭悊绔偣銆?/p> <p><img src="https://img2023.cnblogs.com/blog/534255/202311/534255-20231121223438492-2031001366.png" alt="" /></p> <p>鍙互鐪嬪埌榪欓噷涔熷鐞嗙殑绔偣澶勭殑鎯呭喌錛屼絾鏄渶鍚庢病鏈変笌MaxDist鏈夊叧緋伙紝鏈鍚庡宸槸Precision::SquareConfusion()銆?/p> <p><img src="https://img2023.cnblogs.com/blog/534255/202311/534255-20231121223453107-31137009.png" alt="" /></p> <p id="1700577295832"></p> <p> </p> <img src ="http://www.shnenglu.com/eryar/aggbug/230214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/eryar/" target="_blank">eryar</a> 2023-12-02 12:21 <a href="http://www.shnenglu.com/eryar/archive/2023/12/02/occt_extrema_pc.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>OpenCASCADE - 鏇茬嚎鑷氦http://www.shnenglu.com/eryar/archive/2023/12/02/occt_edge_self_intersect.htmleryareryarSat, 02 Dec 2023 04:21:00 GMThttp://www.shnenglu.com/eryar/archive/2023/12/02/occt_edge_self_intersect.htmlhttp://www.shnenglu.com/eryar/comments/230213.htmlhttp://www.shnenglu.com/eryar/archive/2023/12/02/occt_edge_self_intersect.html#Feedback0http://www.shnenglu.com/eryar/comments/commentRss/230213.htmlhttp://www.shnenglu.com/eryar/services/trackbacks/230213.htmlOpenCASCADE - 鏇茬嚎鑷氦

1 Introduction

OpenCASCADE涓轟簩緇存洸綰挎彁渚涗簡姹備氦鍙婅嚜浜ょ殑綾?Geom2dAPI_InterCurveCurve錛氬綋浼犲叆涓涓簩緇村嚑浣曟洸綰挎椂鍙互璁$畻鑷氦self-intersections銆備絾鏄病鏈夋彁渚涚洿鎺ョ殑涓夌淮鍑犱綍鏇茬嚎姹備氦鐨勭被錛屼篃娌℃湁鐩存帴鐨勮綆楄嚜浜ょ殑綾匯傛湁浜哄悓瀛﹂棶OpenCASCADE鏈夋病鏈変笁緇存洸綰胯嚜浜ょ殑鍔熻兘錛屽叾瀹炵悊瑙d袱涓狤dge姹備氦綆楁硶鍚庯紝鍙互鑷繁瀹炵幇涓涓嚜浜ゅ嚱鏁般?/p>

2 Self-Intersection

鍥犱負OpenCASCADE涓袱鏉′笁緇存洸綰挎眰浜ょ殑綾繪槸IntTools_EdgeEdge錛屽叾瀹炵幇鍘熺悊鏄熀浜庡寘鍥寸洅鐨勫垎鍓叉硶銆傚熀浜庤繖涓垎鍓查掑綊鎬濇兂錛屽疄鐜拌嚜浜や篃鍙互鍙傝冭繖涓濊礬銆傜畻娉曠殑嫻佺▼涓猴細杈撳叆涓鏉¤璁$畻鑷氦鐨勮竟Edge錛屽杈硅繘琛岀鏁i噰鏍鳳紝灝嗛噰鏍峰緱鍒扮殑姣忔鏇茬嚎鐨勫寘鍥寸洅鐢熸垚BVH榪涜鐩鎬氦媯嫻嬶紝灝咮VH涓寘鍥寸洅鐩鎬氦鐨勪袱鏉℃洸綰胯皟鐢↖ntTools_EdgeEdge鏉ヨ綆楃浉浜ゃ?/p>

紱繪暎寰楀埌鐨勬洸綰挎浼氭瘮杈冨錛屽鏋滅敤涓や釜寰幆鏉ユ嫻嬩袱涓ゆ洸綰挎鐨勭浉浜ゆ儏鍐墊ц兘宸紝鍙互寮曞叆BVH鎻愰珮鎬ц兘銆?/p>

3 Test

鍙互閫氳繃鎻掑糏nterpolate鏉ユ瀯閫犳洸綰挎祴璇曪紝鎸囧畾鍑犱釜鑷氦鐐規潵鏋勯犳彃鍊兼洸綰褲傝綆楃粨鏋滃涓嬪浘鎵紺猴細

涓庢洸綰挎眰浜ゅ師鐞嗙被浼鹼紝閮芥槸浣跨敤紱繪暎鐨勬柟娉曪紝鍙互鎬濊冧竴涓嬫暟鍊肩畻娉曞浣曞鐞嗐?/p>

eryar 2023-12-02 12:21 鍙戣〃璇勮
]]>
OpenCASCADE 鏇茬嚎姹備氦http://www.shnenglu.com/eryar/archive/2023/12/02/occt_int_edge_edge.htmleryareryarSat, 02 Dec 2023 04:20:00 GMThttp://www.shnenglu.com/eryar/archive/2023/12/02/occt_int_edge_edge.htmlhttp://www.shnenglu.com/eryar/comments/230212.htmlhttp://www.shnenglu.com/eryar/archive/2023/12/02/occt_int_edge_edge.html#Feedback0http://www.shnenglu.com/eryar/comments/commentRss/230212.htmlhttp://www.shnenglu.com/eryar/services/trackbacks/230212.htmlOpenCASCADE 鏇茬嚎姹備氦

eryar@163.com

1 Introduction

OpenCASCADE涓彁渚涗簡浜岀淮鍑犱綍鏇茬嚎鐨勬眰浜ょ被Geom2dAPI_InterCurveCurve錛屽搴斿埌涓夌淮鍑犱綍鍙彁渚涗簡GeomAPI_IntCS, GeomAPI_IntSS錛屾病鏈夋彁渚涘嚑浣曠殑GeomAPI_IntCC姹備氦綾匯傝繖浜涘嚑浣曟眰浜や竴鑸嬌鐢ㄧ殑鏄暟鍊肩畻娉曪紝鍗寵В鏂圭▼銆傚浜庝袱鏉″嚑浣曟洸綰縋(u1), Q(u2)錛屾眰浜ゅ氨鏄ВP(u1) - Q(u2) = 0榪欎釜鏂圭▼銆備負浠涔堝浜庝笁緇村嚑浣曟洸綰挎病鏈夋彁渚涙暟鍊肩畻娉曪紵

瀵逛簬鎷撴湸杈規彁渚涗簡姹備氦綆楁硶IntTools_EdgeEdge錛岃繖涓被鏄嬌鐢ㄧ被浼間簬鏇查潰姹備氦鐨勭鏁g綉鏍兼硶錛屼嬌鐢ㄤ簡紱繪暎鍖呭洿鐩掓硶銆?/p>

鍩轟簬鍖呭洿鍚堢洅鐨勭畻娉曟槸涓掑綊綆楁硶錛岀畻娉曟濊礬錛?/p>

  1. 1) 媯鏌ヤ袱鏉¤竟鍦ㄥ弬鏁拌寖鍥村唴鐨勫寘鍥寸洅錛岃嫢絀洪棿騫叉秹錛屽垯榪涜涓嬩竴姝ワ紱鍚﹀垯閫鍑烘湰嬈″垽鏂紱
  2. 2) 鎵懼嚭涓ゆ潯杈瑰寘鍥寸洅鐨勫叕鍏遍儴鍒嗗搴旂殑鍙傛暟錛岃嫢娌℃壘鍒幫紝鍒欓鍑烘湰嬈″垽鏂紱
  3. 3) 騫跺皢絎竴鏉¤竟鍦ㄥ弬鏁拌寖鍥村唴鍒嗗壊鎴?鎴?閮ㄥ垎錛屾墽琛岀涓姝ワ紱
  4. 4) 閫鍑烘潯浠訛細娌℃湁鐩鎬氦鎴栨壘鍒扮浉浜ょ殑鍙傛暟鍊鹼紱

絎竴嬈℃槸鍒嗗埆鍒嗘垚2閮ㄥ垎錛?/p>

鍦ㄩ掑綊鍑芥暟FindSolutions()涓紝鍙幓瀵圭涓鏉¤竟榪涜鍙傛暟鍒嗗壊鎴?閮ㄥ垎錛?/p>

2 杈呭姪鍑芥暟

絎竴涓緟鍔╁嚱鏁版槸FindParameters()錛岀敤鏉ユ洿鏂扮浜屾潯杈瑰湪絎竴鏉¤竟鐨勭殑鍖呭洿鐩掍腑鐨勫弬鏁拌寖鍥達紝浣跨敤榪欎釜鍙傛暟鑼冨洿鏇存柊鍖呭洿鐩掋?/p>

絎簩涓緟鍔╁嚱鏁版槸CheckCoincidence()錛岀敤鏉ユ嫻嬩袱孌佃竟鏄惁閲嶅悎銆傜涓姝ユ槸蹇熻綆楋紝瀵硅竟閲囨牱10涓偣錛岃嫢閫氳繃鍒濇綺楁嫻嬶紝鍚庨潰鍐嶆繁鍏ヨ綆椼傝繖浜涚畻娉曢兘涓嶅お楂樻晥銆?/p>

絎笁涓緟鍔╁嚱鏁版槸IsIntersection()鐢ㄦ潵鍒ゆ柇涓よ竟鏉″湪鍙傛暟鑼冨洿鍐呮槸鍚︾浉浜ゃ?/p>

3 嫻嬭瘯

灝嗕袱鏉¤竟姹備氦榪囩▼涓殑鍖呭洿鐩掓樉紺哄嚭鏉ワ紝鏂逛究鏌ョ湅鐞嗚В綆楁硶銆傚厛嫻嬭瘯涓や釜鍦嗕箣闂寸殑鐩鎬氦錛?/p>

鍏朵腑絎竴鏉¤竟鏄豢鑹茬殑鍦嗭紝姹備氦榪囩▼涓殑鍖呭洿鐩掍篃鐢ㄧ豢鑹茶〃紺猴紱絎簩鏉¤竟鏄孩鑹茬殑鍦嗭紝姹備氦榪囩▼涓殑鍖呭洿鐩掍篃鐢ㄧ孩鑹茶〃紺恒傚洜涓哄渾鏄棴鍚堢殑錛岀涓嬈¢兘鍒嗗壊鎴?閮ㄥ垎銆傚皢涓婇潰浜ょ偣澶勭悊鏀懼ぇ錛?/p>

鍚庨潰閮芥槸灝嗙涓鏉¤竟鍒嗗壊鎴?閮ㄥ垎錛岀劧鍚庡垎鍒敤榪?閮ㄥ垎鐨勫寘鍥寸洅鍘繪壘涓庣浜屾潯杈圭浉浜ょ殑鍙傛暟鑼冨洿錛屽啀鏇存柊絎簩鏉¤竟鐨勫寘鍥寸洅銆傜戶緇斁澶т笂闈氦鐐瑰錛?/p>

鍙戠幇瀵逛簬涓や釜鍦嗙殑姹備氦錛屾墽琛屼簡100嬈★紝鏁堢巼涓嶉珮銆傚張鐢ㄤ袱涓狟鏍鋒潯鏇茬嚎姹備氦鏉ユ祴璇曪細

鍙戠幇瀵逛簬B鏍鋒潯鏇茬嚎姹備氦閫熷害杈冨揩銆?/p>

4 Conclusion

鏇茬嚎姹備氦闇瑕佽冭檻閲嶅悎閮ㄥ垎錛宱pencascae涓病鏈変嬌鐢ㄦ暟鍊肩畻娉曟潵璁$畻錛岃屾槸閲囩敤鍩轟簬鍖呭洿鐩掔殑綆楁硶鏉ュ鐞嗐傝繖縐嶇畻娉曚竴鑸儏鍐典笅鍙互蹇熸壘鍒版眰浜よВ錛屾湁鏃墮掑綊杈冩繁錛屽浜庡熀鏈洸綰垮彲浠ュ儚鏇查潰姹備氦涓鏍峰垎綾誨鐞嗕互鎻愰珮鎬ц兘銆俹pencascade涓浜庝笁緇存洸綰挎眰浜ょ畻娉曟ц兘榪樻湁浼樺寲絀洪棿銆?/p>

 



eryar 2023-12-02 12:20 鍙戣〃璇勮
]]>
[涔-OpenCASCADE鍙傝冧功綾?/title><link>http://www.shnenglu.com/eryar/archive/2023/12/02/occt_book.html</link><dc:creator>eryar</dc:creator><author>eryar</author><pubDate>Sat, 02 Dec 2023 04:19:00 GMT</pubDate><guid>http://www.shnenglu.com/eryar/archive/2023/12/02/occt_book.html</guid><wfw:comment>http://www.shnenglu.com/eryar/comments/230210.html</wfw:comment><comments>http://www.shnenglu.com/eryar/archive/2023/12/02/occt_book.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/eryar/comments/commentRss/230210.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/eryar/services/trackbacks/230210.html</trackback:ping><description><![CDATA[<p>瀛﹁屼笉鎬濆垯緗旓紝鎬濊屼笉瀛﹀垯孌嗐傚厜鐪嬩功綾嶇殑鐞嗚鐭ヨ瘑錛屾病鏈夊疄璺電湅涓嶅埌鏁堟灉銆傚厜鐪媜cc鐨勬簮鐮侊紝娌℃湁鐞嗚鏀拺錛屼笉鑳芥姄浣忓嚑浣曢棶棰樼殑鏈川銆?/p> <p>闄や簡鍦∣penCASCADE鍏ラ棬鎸囧崡涓帹鑽愮殑涔︾睄涔嬪錛岃繕鏈変竴浜涜繘闃剁殑涔︾睄錛屾斁鍦ㄩ偅鍎挎湁鏃墮棿灝辯湅鐪嬶紝鎬諱細鏈変簺鏀惰幏銆傛偀鎬т笉瓚籌紝鍙湁鍕よ兘琛ユ嫏銆傚浜庣湅涓嶆噦鐨勶紝鍙兘鐢?ldquo;涔﹁鐧鵑亶錛屽叾涔夎嚜瑙?rdquo;瀹夋叞涓涓嬭嚜宸便?/p> <p><img src="https://img2023.cnblogs.com/blog/534255/202310/534255-20231030202652972-1591293169.jpg" alt="" /></p> <p id="1698668816128">鐜嬪厓 鏁板澶ц緸鍏?nbsp; 宸ュ叿涔?nbsp; 鏂逛究涓浜涘畾涔夛紝鍏紡錛屽畾鐞嗙殑鏌ユ壘銆?/p> <p><img src="https://img2023.cnblogs.com/blog/534255/202310/534255-20231030202814672-30785715.jpg" alt="" /></p> <p id="1698668897899">銆婅綆楁満杈呭姪鍑犱綍璁捐瀵艱銆嬫瘮杈冨叏闈㈠湴浠嬬粛浜嗚綆楁満杈呭姪鍑犱綍璁捐鐨勫彂灞曞巻鍙插強鍏朵富瑕佸唴瀹瑰拰鏈鏂拌繘灞曪紝鍖呮嫭鐜頒唬鐨凾鏍鋒潯鏇茬嚎鏇查潰銆?/p> <p><img src="https://img2023.cnblogs.com/blog/534255/202310/534255-20231030202949643-100965336.jpg" alt="" /></p> <p>銆婃牱鏉″嚱鏁頒笌璁$畻鍑犱綍銆嬪彊榪版牱鏉″嚱鏁板拰璁$畻鍑犱綍鐨勫熀鏈悊璁哄拰鏂規硶錛屽悓鏃訛紝鎬葷粨浜嗕綔鑰呭嚑騫存潵鍦ㄨ棰嗗煙涓殑鐮旂┒鎴愭灉.</p> <p><img src="https://img2023.cnblogs.com/blog/534255/202310/534255-20231030203039481-1856922148.jpg" alt="" /></p> <p id="1698669042045">銆婄幇浠f暟瀛﹀熀紜涓涗功165錛氭暎涔辨暟鎹嫙鍚堢殑妯″瀷銆佹柟娉曞拰鐞嗚錛堢浜岀増錛夈嬩粙緇嶄簡澶氬厓鏁d貢鏁版嵁鎷熷悎鐨勪竴鑸柟娉曪紝鍖呮嫭澶氬厓鏁d貢鏁版嵁澶氶」寮忔彃鍊箋佸熀浜庝笁瑙掑墫鍒嗙殑鎻掑兼柟娉曘丅oole鍜屼笌Loons鏇查潰銆丼ibson鏂規硶鎴栬嚜鐒墮偦榪戞硶銆丼hepard鏂規硶銆並riging鏂規硶銆佽杽鏉挎牱鏉℃柟娉曘丮Q鎷熸彃鍊兼硶銆佸緞鍚戝熀鍑芥暟鏂規硶銆佽繍鍔?灝忎簩涔樻硶銆侀殣鍑芥暟鏍鋒潯鏂規硶銆丷鍑芥暟娉曠瓑銆傚悓鏃惰繕鐗瑰埆浠嬬粛浜嗚繎騫存潵鍥介檯涓婅秺鏉ヨ秺鐑茍鍦ㄦ棤緗戞牸寰垎鏂圭▼鏁板艱В鏂歸潰鏈夎澶氬簲鐢ㄧ殑寰勫悜鍩哄嚱鏁版柟娉曞強鍏剁浉鍏崇悊璁恒?/p> <p><img src="https://img2023.cnblogs.com/blog/534255/202310/534255-20231030203210737-959037925.jpg" alt="" /></p> <p id="1698669133469">涓昏鍐呭鍖呮嫭鍑犱綍鍋忓井鍒嗘柟紼嬬殑鏋勯犳柟娉曘佸悇縐嶅井鍒嗗嚑浣曠畻瀛愮殑紱繪暎鍖栨柟娉曞強鍏剁鏁f牸寮忕殑鏀舵暃鎬с佸嚑浣曞亸寰垎鏂圭▼鏁板兼眰瑙g殑鏈夐檺宸垎娉曘佹湁闄愬厓娉曚互鍙婃按騫抽泦鏂規硶錛岃繕鍖呮嫭鍑犱綍鍋忓井鍒嗘柟紼嬪湪鏇查潰騫蟲粦銆佹洸闈㈡嫾鎺ャ丯杈規礊濉ˉ銆佽嚜鐢辨洸闈㈣璁°佹洸闈㈤噸鏋勩佹洸闈㈡仮澶嶃佸垎瀛愭洸闈㈡瀯閫犱互鍙婁笁緇村疄浣撳嚑浣曞艦鍙樹腑鐨勫簲鐢ㄣ?/p> <p id="1698668992693"></p> <img src ="http://www.shnenglu.com/eryar/aggbug/230210.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/eryar/" target="_blank">eryar</a> 2023-12-02 12:19 <a href="http://www.shnenglu.com/eryar/archive/2023/12/02/occt_book.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>OpenCASCADE 鎵帬鏇查潰http://www.shnenglu.com/eryar/archive/2023/09/29/occt_sweep.htmleryareryarFri, 29 Sep 2023 13:38:00 GMThttp://www.shnenglu.com/eryar/archive/2023/09/29/occt_sweep.htmlhttp://www.shnenglu.com/eryar/comments/230116.htmlhttp://www.shnenglu.com/eryar/archive/2023/09/29/occt_sweep.html#Feedback0http://www.shnenglu.com/eryar/comments/commentRss/230116.htmlhttp://www.shnenglu.com/eryar/services/trackbacks/230116.htmlOpenCASCADE 鎵帬鏇查潰

eryar@163.com

1 Introduction

钂欑毊錛?strong>Skinning錛夊氨鏄皢涓綈囨埅闈㈡洸綰匡紙section curves錛夎瀺鍚堝湪涓璧風敓鎴愭洸闈㈢殑榪囩▼銆傝挋鐨彧鏄?strong>鏀炬牱錛?strong>Lofting錛夌殑鏂板悕璇嶏紝鏀炬牱鍙互榪芥函鍒拌綆楁満娌℃湭璇炵敓鐨勬椂鍊欙紝浠庨偅鏃跺埌鐜板湪錛屽畠涓鐩村湪閫犺埞銆佹苯杞﹀拰鑸┖宸ヤ笟涓騫挎硾鍦板簲鐢ㄣ?/p>

鎵帬錛?strong>Sweep錛夌爺絀剁殑鏄竴鏉℃埅闈㈡洸綰挎部浠繪剰璺緞鏇茬嚎鎵帬鐨勯棶棰樸傛牴鎹壂鎺犳洸闈㈢殑瀹氫箟錛屾壂鎺犳洸闈㈡湭蹇呴兘鑳借〃紺烘垚NURBS褰㈠紡錛屾墍浠ヤ竴鑸噰鐢ㄦ嫙鍚堢畻娉曟潵閫艱繎銆備竴縐嶇畻娉曟槸鍩轟簬钂欑毊娉曪紝娌跨潃璺緞鏇茬嚎鍙樻崲鍜岄噰鏍種涓埅闈紝鐒跺悗灝嗗畠浠綔涓烘埅闈㈡洸綰胯繘琛岃挋鐨傞殢鐫閲囨牱鏁伴噺N鐨勫鍔狅紝鐢熸垚鐨勬嫙鍚堟洸闈㈢簿搴︿篃灝嗘彁楂樸?/p>

鏈枃涓昏浠嬬粛OpenCASCADE涓壂鎺犻犲瀷綆楁硶鐨勪嬌鐢紝闄や簡涓婇潰涓鑸殑鎵帬鏇查潰錛岃繕鏈変竴浜涢珮綰х敤娉曘?/p>

2 Sweep with Guide

鍦―Raw Test Harness涓緭鍏ュ懡浠etsweep鍙互鐪嬪埌鏈夋寚瀹氬紩瀵?綰縂uide鐨勯夐」錛?/p>

榪欎釜寮曞綰縂uide鏈変粈涔堢敤鍛紵涓嬮潰緇欏嚭涓涓ず渚嬶細

鍏朵腑Profile鏄壂鎺犳埅闈紝Spine涓烘壂鎺犺剨綰匡紝Guide涓烘壂鎺犲紩瀵肩嚎銆傛壂鎺犵粨鏋滃氨鏄竴涓灪鏃嬬殑閽誨ご妯″瀷銆傚湪Draw Test Harness鐨勪緥瀛愪腑錛岀粰鍑轟袱涓叧浜庡紩瀵肩嚎鎵帬鐨勭ず渚嬶紝涓や釜閽誨ご錛?/p>

鎶婅繖涓や釜渚嬪瓙鐞嗚В鍩烘湰鑳芥帉鎻℃壂鎺犵畻娉曠殑浣跨敤鏂規硶錛屼粠榪欎袱涓緥瀛愬彲浠ョ湅鍑猴紝OpenCASCADE鎵帬閫犲瀷鑳藉姏榪樹笉閿欍?/p>

3 Sweep on Face

鎵帬榪樻湁涓涓兘鍔涙槸浣挎壂鎺犳埅闈㈠瀭鐩翠簬涓涓敮鎾戦潰錛岃繖鏄竴涓湁鐢ㄧ殑閫夐」銆備笅闈㈣繕鏄湪Draw Test Harness涓祴璇曚竴涓嬶細

4 Conclusion

OpenCASCADE涓壂鎺犻犲瀷綆楁硶鍔熻兘榪樻瘮杈冨己澶э紝闄や簡鏀寔甯歌鐨勬壂鎺犲錛岃繕鏀寔甯﹀紩瀵肩嚎鐨勬壂鎺狅紝鍙婂甫寮曞綰跨殑澶氫釜鎴潰鐨勫彉褰㈡壂鎺狅紝榪樻敮鎸佹埅闈㈠緇堝瀭鐩翠簬鏀寔闈㈢殑鎵帬閫夐」銆傛壂鎺犵殑鍏抽敭鏄‘瀹氭埅闈㈢殑鍙樻崲瑙勫垯錛屽簳灞傜殑钂欑毊鎷熷悎綆楁硶榪樻槸姣旇緝紼沖畾鐨勩傛妸Draw Test Harness涓袱涓捇澶寸殑渚嬪瓙鐞嗚В鍚庯紝鍩烘湰涓婂簲璇ヨ兘澶熸帉鎻penCASCADE涓壂鎺犻犲瀷鐨勪嬌鐢ㄦ柟娉曘?/p>

 



eryar 2023-09-29 21:38 鍙戣〃璇勮
]]>
甯冨皵鏁版嵁 闈㈢殑鐩鎬氦http://www.shnenglu.com/eryar/archive/2023/09/29/occt_int_face.htmleryareryarFri, 29 Sep 2023 10:45:00 GMThttp://www.shnenglu.com/eryar/archive/2023/09/29/occt_int_face.htmlhttp://www.shnenglu.com/eryar/comments/230114.htmlhttp://www.shnenglu.com/eryar/archive/2023/09/29/occt_int_face.html#Feedback0http://www.shnenglu.com/eryar/comments/commentRss/230114.htmlhttp://www.shnenglu.com/eryar/services/trackbacks/230114.html甯冨皵鏁版嵁 闈㈢殑鐩鎬氦

eryar@163.com

1 Introduction

OpenCASCADE涓闈㈢殑鐩鎬氦瀹氫箟濡備笅鍥炬墍紺猴細

涓夌淮絀洪棿涓袱涓甫鏈塆eometry Surface鐨勯潰Face錛屽綋涓や釜Surface涔嬮棿鐨勮窛紱誨皬浜嶧ace涓殑瀹瑰樊Tolerance錛屽垯璁や負鏄浉浜ょ殑銆備竴鑸袱涓潰涔嬮棿鐩鎬氦寰楀埌鐨勬槸浜ょ嚎錛岃繕鏈変竴浜涙儏鍐靛緱鍒扮殑鏄氦鐐癸紝濡備笅鍥炬墍紺猴細

甯冨皵榪愮畻涓潰鐨勭浉浜ゆ槸鐩稿澶嶆潅鐨勯棶棰橈紝闄や簡鑰冭檻涓婅堪浜ょ嚎鍜屼氦鐐圭殑闂浠ュ錛岃繕瑕佽冭檻鏈夐噸鍙犵殑鎯呭喌錛涘浜庢柊鐢熸垚鐨勪氦綰匡紝榪樿鑰冭檻鐢熸垚PCurve錛涜嫢闈笂鏈夊紑瀛旓紝榪樿灝嗙┛榪囧紑瀛斿尯鍩熺殑浜ょ嚎鎺掗櫎絳夛紱鏈鍚庤鑰冭檻濡備綍淇濆瓨闈㈢浉浜ょ殑緇撴灉銆傜浉浜ょ殑璁$畻鍦ㄥ嚱鏁幫細

鏈緇堟槸璋冪敤IntTools_FaceFace鏉ヨ綆椾袱涓潰鐨勭浉浜ゃ傚茍灝嗚綆楃粨鏋滀氦綰垮拰浜ょ偣錛屾槸鍚﹂噸鍙犵瓑淇℃伅淇濆瓨鍒癇OPDS_InterfFF涓細

2 Face Info

綾籅OPDS_FaceInfo鐢ㄦ潵瀛樺偍浠ヤ笅淇℃伅錛?/p>

娉ㄦ剰PBo31鍜孭BSc1錛屼竴涓姸鎬佹槸On錛屼竴涓姸鎬佹槸Section銆傚湪鐩鎬氦澶勭悊綾籅OPAlgo_PaveFiller涓氳繃鍑芥暟BOPAlgo_PaveFiller::UpdateFaceInfo灝嗚繖浜涚浉浜ょ殑鐘舵佹洿鏂般?/p>

3 Tangent Face

浠庡墠闈㈢殑鏂囩珷鍏充簬媯嫻嬭竟涓庤竟銆佽竟涓庨潰鏄惁鏈夐噸鍙犳椂閲囩敤浜嗗浐瀹氶噰鏍風偣鏉ュ鐞嗙殑涓嶄弗璋ㄧ殑閫昏緫鏉ョ湅錛屽垽鏂嚎鐨勯噸鍙犳槸涓鏉傜殑闂錛屽垽鏂潰涓庨潰鐨勯噸鍙犲氨鐩稿鏇村鏉傘傛湰鏂囧厛浠庣畝鍗曞叆鎵嬶紝鍏堢湅瀵逛簬鏈綆鍗曠殑涓や釜騫抽潰閲嶅彔鐨勬嫻嬶紝寮曞嚭澶у瀵逛簬浠繪剰涓や釜闈㈤噸鍙犲尯鍩熸嫻嬬殑鎬濊冦傚榪欑鐗規畩鐨勬儏鍐靛鐞嗗湪IntTools_FaceFace涓殑鍑芥暟PerformPlanes()涓疄鐜般傚叾涓嬌鐢ㄤ簩嬈℃洸闈㈢殑鍑犱綍姹備氦娉曡繘琛屽鐞嗭紝婧愮爜濡備笅錛?/p>

閫氳繃婧愮爜鍙互鐪嬪嚭錛岃嫢涓や釜騫抽潰涔嬮棿鐨勬硶鍚戝す瑙掑皬浜嶵olAng鍙婅窛紱誨皬浜嶵ol鏃訛紝鍒欒涓轟袱涓潰鏄竴鏍風殑IntAna_Same錛涘綋璺濈澶т簬Tol鏃訛紝鍒欒涓烘病鏈夌浉浜ntAna_Empty銆?/p>

瀵逛簬閲嶅彔鐨勫鉤闈紝灝唗heTangentFaces璁劇疆鎴恡rue琛ㄧず鏄噸鍙犵殑銆傝繖閲岀暀涓嬩竴涓棶棰樺ぇ瀹舵濊冿細濡備綍鍒ゆ柇鑷敱鏇查潰鐨勯噸鍙犳儏鍐碉紵

4 Hole

褰撻潰涓婃湁瀛旀礊鏃訛紝榪樿瀵逛氦綰胯繘琛屽鐞嗭紝浠ユ帓闄ゆ帀瀛旀礊涓殑浜ょ嚎銆傚綋浣跨敤IntTools_FaceFace鏉ヨ綆椾袱涓潰鐨勪氦綰挎椂錛屽彲浠ョ湅鍒頒氦綰跨殑鑼冨洿涓嶆紜紝娌℃湁澶勭悊瀛旀礊鎯呭喌錛岀敋鑷充篃娌℃湁澶勭悊闈㈢殑杈圭晫銆傚涓嬪浘鎵紺虹孩鑹茬殑浜ょ嚎涓轟嬌鐢↖ntTools_FaceFace璁$畻寰楀埌鐨勶細

褰撲嬌鐢˙OPAlgo_PaveFiller璁$畻浜ょ嚎騫剁粨鍚圥aveBlock寰楀埌浜ょ嚎鏄劇ず濡備笅鍥炬墍紺猴細

铏界劧璁$畻涓や釜闈箣闂寸殑鐩鎬氦澶勭悊鏈緇堟槸璋冪敤鐨処ntTools_FaceFace錛屼絾鏄寰楀埌姝g‘鐨勪氦綰塊渶瑕佷嬌鐢ㄧ被BOPAlgo_PaveFiller銆傝繖閲屼篃鐣欎笅闂渚涘ぇ瀹舵濊冿細涓轟粈涔圛ntTools_FaceFace璁$畻鐨勪氦綰胯寖鍥翠笉姝g‘錛熶負浠涔圔OPAlgo_PaveFiller璁$畻鐨勪氦綰挎紜紵

5 Conclusion

緇間笂鎵榪幫紝甯冨皵鏁版嵁涓潰鐨勭浉浜ょ殑緇撴灉鍙兘鏈変氦綰匡紝涔熷彲鑳芥湁浜ょ偣銆傚皢姹備氦緇撴灉淇濆瓨鍒癋aceInfo涓備粠綆鍗曠殑涓や釜騫抽潰閲嶅彔鏉ョ湅錛屽皢閲嶅彔鐨勭姸鎬佺敤鍙橀噺theTangetFaces鏉ヤ繚瀛樸傞偅浠繪剰涓や釜鏇查潰閲嶅彔濡備綍鍒ゆ柇鍛紵闈㈢殑鐩鎬氦铏界劧鎻愪緵綾籌ntTools_FaceFace鏉ヨ綆楋紝浣嗘槸娌℃湁姝g‘澶勭悊浜ょ嚎鐨勮寖鍥達紝涓轟粈涔圔OPAlgo_PaveFiller涓彲浠ユ紜鐞嗕氦綰垮憿錛?/p>

 

紲濆ぇ瀹朵腑縐嬪浗搴嗚妭鏃ュ揩涔愶紒

 



eryar 2023-09-29 18:45 鍙戣〃璇勮
]]>
甯冨皵鏁版嵁 杈圭殑鐩鎬氦http://www.shnenglu.com/eryar/archive/2023/09/27/occt_edge_int.htmleryareryarWed, 27 Sep 2023 13:52:00 GMThttp://www.shnenglu.com/eryar/archive/2023/09/27/occt_edge_int.htmlhttp://www.shnenglu.com/eryar/comments/230108.htmlhttp://www.shnenglu.com/eryar/archive/2023/09/27/occt_edge_int.html#Feedback0http://www.shnenglu.com/eryar/comments/commentRss/230108.htmlhttp://www.shnenglu.com/eryar/services/trackbacks/230108.html甯冨皵鏁版嵁 杈圭殑鐩鎬氦

eryar@163.com

1 Introduction

鍦∣penCASCADE涓浜庤竟鐨勭浉浜ゅ垎涓轟笁綾伙細杈逛笌鐐癸紝杈逛笌杈癸紝杈逛笌闈紝杈逛笌鐐圭殑鐩鎬氦宸茬粡褰掔粨涓虹偣涓庤竟鐨勭浉浜ゅ鐞嗕簡錛岃竟鐨勭浉浜や富瑕佸鐞嗚竟涓庤竟錛岃竟涓庨潰鐨勭浉浜ゃ傝竟涓庤竟銆佽竟涓庨潰鐨勭浉浜や細寮曞叆涓涓柊鐨勬暟鎹粨鏋?鍏叡閮ㄥ垎Common Part錛岀敤浜庝繚瀛橀噸鍙犵殑鍏叡閮ㄥ垎鏁版嵁銆?/p>

2 Edge/Edge Interferences

瀵逛簬涓ゆ潯杈圭殑鐩鎬氦鏄寚鍦ㄤ袱鏉¤竟鐨勬煇浜涘湴鏂圭殑璺濈灝忎簬杈圭殑瀹瑰樊涔嬪拰錛屼富瑕佸垎涓轟袱縐嶆儏鍐碉紝涓縐嶆槸涓ゆ潯杈瑰彧鏈変竴涓氦鐐圭殑鎯呭喌錛涗竴縐嶆槸鏈夐噸鍙犻儴鍒嗙殑鎯呭喌錛涘厛鐪嬪彧鏈変竴涓氦鐐規儏鍐碉細

鎴戜滑鍦―RAW涓氳繃鑴氭湰鏋勯犳渶綆鍗曠殑鎯呭喌鏉ユ祴璇曘?/p>

鍦ㄥ鐞嗚竟涓庤竟鐩鎬氦鐨勫嚱鏁癇OPAlgo_PaveFiller::PerformEE()涓紝瀵規瘡涓ゆ潯杈硅皟鐢˙OPAlgo_EdgeEdge榪涜姹備氦銆備粠榪欓噷鍙互鐪嬪埌Pave Block鐨勪嬌鐢紝鐩稿綋浜庡姣忎袱鏉¤竟涓婄殑姣忓Pave Block閮ㄥ垎榪涜姹備氦銆傝繖閲屾湁涓浜涗紭鍖栫┖闂達紝鐩墠鏄嬌鐢ㄧ殑涓や釜寰幆澶勭悊錛屽彲浠ュ皾璇曚嬌鐢˙VH鏉ユ彁鍗囦竴浜涙ц兘銆傚綋姣忓Pave Block瀵瑰簲鐨勭偣鐨勭儲寮曞彿涓鑷存椂錛屽嵆姣忓Pave Block鐨勭鐐歸噸鍙犳椂錛屼嬌鐢ㄥ揩閫熻綆楃殑綆楁硶鏉ュ垽鏂槸鍚︽湁閲嶅彔銆?/p>

瀵逛簬杈圭殑姹備氦緇撴灉淇濆瓨鍒癇OPDS_InterfEE涓紝閮戒細淇濆瓨鏄摢涓ゆ潯杈圭浉浜ゅ強鐩鎬氦鐨勫叕鍏遍儴鍒嗐傚浜庣浉浜や簬涓鐐圭殑鍏叡閮ㄥ垎鐨勭被鍨嬩負TopAbs_VERTEX錛屽浜庢湁閲嶅彔閮ㄥ垎鐨勫叕鍏遍儴鍒嗙被鍨嬩負TopAbs_EDGE錛?/p>

褰撲袱杈規潯鏈夐噸鍙犻儴鍒嗘椂錛屽涓嬪浘鎵紺猴細

濡備綍媯嫻嬩袱鏉¤竟鐨勫叕鍏遍儴鍒嗗憿錛熷湪鍑芥暟IntTools_EdgeEdge::IsCoincident()涓疄鐜幫細

//=======================================================================
//function :  IsCoincident
//purpose  : 
//=======================================================================
Standard_Boolean IntTools_EdgeEdge::IsCoincident() 
{
  Standard_Integer i, iCnt, aNbSeg, aNbP2;
  Standard_Real dT, aT1, aCoeff, aTresh, aD;
  Standard_Real aT11, aT12, aT21, aT22;
  GeomAPI_ProjectPointOnCurve aProjPC;
  gp_Pnt aP1;
  //
  aTresh=0.5;
  aNbSeg=23;
  myRange1.Range(aT11, aT12);
  myRange2.Range(aT21, aT22);
  //
  aProjPC.Init(myGeom2, aT21, aT22);
  //
  dT=(aT12-aT11)/aNbSeg;
  //
  iCnt=0;
  for(i=0; i <= aNbSeg; ++i) {
    aT1 = aT11+i*dT;
    myGeom1->D0(aT1, aP1);
    //
    aProjPC.Perform(aP1);
    aNbP2=aProjPC.NbPoints();
    if (!aNbP2) {
      continue;
    }
    //
    aD=aProjPC.LowerDistance();
    if(aD < myTol) {
      ++iCnt; 
    }
  }
  //
  aCoeff=(Standard_Real)iCnt/((Standard_Real)aNbSeg+1);
  return aCoeff > aTresh;
}

浠庝笂榪頒唬鐮佸彲浠ョ湅鍑猴紝瀵逛簬閲嶅彔閮ㄥ垎鐨勬嫻嬫槸灝嗕竴鏉¤竟鏍規嵁媯嫻嬭寖鍥村垎鎴?3孌甸噰鏍風偣錛岃綆楁瘡涓偣鍒板彟涓鏉¤竟鐨勮窛紱伙紝婊¤凍鏉′歡鐨勯噰鏍風偣鐨勬暟閲忚秴榪?2涓紝鍩烘湰璁や負鏄噸鍙犵殑銆備粠榪欓噷鍙互鐪嬪嚭榪欐牱媯嫻嬮噸鍙犵◢寰湁鐐逛笉涓ヨ皚銆傚浐瀹氶噰鏍風偣鏁伴噺瀵逛簬灝忔鏇茬嚎鏉ヨ鏁伴噺榪囧ぇ錛屽浜庡緢闀跨殑鏇茬嚎鏉ヨ鏁伴噺鍙堝亸灝忥紝榪欓噷鏈夊緟鎻愰珮銆傚鏋滈噸鍙狅紝鍒欏皢鍏叡閮ㄥ垎鐨勬暟鎹繚瀛樿搗鏉ワ細

瀵逛簬嫻嬭瘯鐨凾CL鑴氭湰涓嶄細璧拌繖涓氱敤鐨勫垽鏂祦紼嬶紝浼氱洿鎺ユ湁IntTools_EdgeEdge::ComputeLineLine()鍑芥暟鏉ュ鐞嗚繖縐嶇壒孌婃儏鍐碉細

浠庝繚瀛樼殑鏁版嵁鍙互鐪嬪嚭錛屽叕鍏遍儴鍒嗙殑鐩鎬氦綾誨瀷涓篢opAbs_VERTEX錛屽強浜ょ偣鍒嗗埆鍦ㄤ袱鏉¤竟涓婄殑鍙傛暟銆傚叧浜庢湁閲嶅彔閮ㄥ垎鐨勪袱鏉¤竟鐩鎬氦錛屽悓瀛︿滑鍙互鑷浣跨敤DRAW鑴氭湰鏉ユ祴璇曚竴涓嬨?/p>

3 Edge/Face Interferences

杈逛笌闈㈢殑鐩鎬氦浼氶亣鍒板拰杈逛笌杈圭浉浜ょ被浼肩殑鎯呭喌錛屽嵆浼氭湁閲嶅彔閮ㄥ垎Common Part銆備篃鍒嗕負涓ょ鎯呭喌錛屼竴縐嶆儏鍐墊槸杈逛笌闈㈠彧鏈変竴涓氦鐐圭殑鎯呭喌錛屼氦鐐瑰彲鑳戒細鏈夊涓紱涓縐嶆儏鍐墊槸鏈夐噸鍙犻儴鍒嗙殑鎯呭喌銆?/p>

鎴戜滑鍙互鍦ㄤ嬌鐢ㄨ剼鏈潵嫻嬭瘯涓涓嬮噸鍙犵殑鎯呭喌錛?/p>

浠庝唬鐮佷腑鍙互鐪嬪嚭褰撹竟鐨勭鐐瑰湪闈笂鏃訛紝鍒欎細鍒ゆ柇杈逛笌闈細涓嶄細閲嶅彔Coincidence銆傚垽鏂昏緫涓庡垽鏂竟鏄惁閲嶅彔綾諱技錛岄兘鏄嬌鐢ㄥ浐瀹?3涓噰鏍風偣鐨勬柟寮忓鐞嗭紝騫跺姞涓婂畾浣嶅櫒鏉ュ垽鏂偣鏄惁鍦ㄩ潰涓婏紝鍥犱負闈笂鍙兘浼氭湁瀛旀礊錛?/p>

//=======================================================================
//function :  IsCoincident
//purpose  : 
//=======================================================================
Standard_Boolean IntTools_EdgeFace::IsCoincident() 
{
  Standard_Integer i, iCnt;
  Standard_Real dT, aT, aD, aT1, aT2, aU, aV;
  gp_Pnt aP;
  TopAbs_State aState;
  gp_Pnt2d aP2d;
  //
  GeomAPI_ProjectPointOnSurf& aProjector=myContext->ProjPS(myFace);
  Standard_Integer aNbSeg=23;
  if (myC.GetType() == GeomAbs_Line &&
      myS.GetType() == GeomAbs_Plane)
    aNbSeg = 2; // Check only three points for Line/Plane intersection
  const Standard_Real aTresh = 0.5;
  const Standard_Integer aTreshIdxF = RealToInt((aNbSeg+1)*0.25),
                         aTreshIdxL = RealToInt((aNbSeg+1)*0.75);
  const Handle(Geom_Surface) aSurf = BRep_Tool::Surface(myFace);
  aT1=myRange.First();
  aT2=myRange.Last();
  Standard_Real aBndShift = 0.01 * (aT2 - aT1);
  //Shifting first and last curve points in order to avoid projection
  //on surface boundary and rejection projection point with minimal distance
  aT1 += aBndShift;
  aT2 -= aBndShift;
  dT=(aT2-aT1)/aNbSeg;
  //
  Standard_Boolean isClassified = Standard_False;
  iCnt=0;
  for(i=0; i <= aNbSeg; ++i) {
    aT = aT1+i*dT;
    aP=myC.Value(aT);
    //
    aProjector.Perform(aP);
    if (!aProjector.IsDone()) {
      continue;
    }
    //
    aD=aProjector.LowerDistance();
    if (aD > myCriteria) {
      if (aD > 100. * myCriteria)
        return Standard_False;
      else
        continue;
    }
    //
    ++iCnt; 
    //We classify only three points: in the begin, in the 
    //end and in the middle of the edge.
    //However, exact middle point (when i == (aNbSeg + 1)/2)
    //can be unprojectable. Therefore, it will not be able to
    //be classified. Therefore, points with indexes in 
    //[aTreshIdxF, aTreshIdxL] range are made available 
    //for classification.
    //isClassified == TRUE if MIDDLE point has been chosen and
    //classified correctly.
    if(((0 < i) && (i < aTreshIdxF)) || ((aTreshIdxL < i ) && (i < aNbSeg)))
      continue;
    if(isClassified && (i != aNbSeg))
      continue;
    aProjector.LowerDistanceParameters(aU, aV);
    aP2d.SetX(aU);
    aP2d.SetY(aV);
    IntTools_FClass2d& aClass2d=myContext->FClass2d(myFace);
    aState = aClass2d.Perform(aP2d);
    if(aState == TopAbs_OUT)
      return Standard_False;
    if(i != 0)
      isClassified = Standard_True;
  }
  //
  const Standard_Real aCoeff=(Standard_Real)iCnt/((Standard_Real)aNbSeg+1);
  return (aCoeff > aTresh);
}

姹備氦緇撴灉涓庤竟涓庤竟鐩鎬氦綾誨瀷錛屼細淇濆瓨杈逛笌闈㈢殑绱㈠紩錛屽強鍏叡閮ㄥ垎鐨勬暟鎹傞櫎浜嗕繚瀛樿繖浜涙暟鎹互澶栵紝榪樺拰鐐逛笌闈㈢浉浜や竴鏍鳳紝鏇存柊闈笂鐨勪俊鎭疐aceInfo錛屽嵆鏈夊摢浜涜竟鍦ㄩ潰涓娿?/p>

4 Conclusion

緇間笂鎵榪幫紝杈逛笌杈廣佽竟涓庨潰鐩鎬氦浼氬緱鍒板叕鍏遍儴鍒咰ommon Part錛屽叕鍏遍儴鍒嗗彲鑳芥槸鐐癸紝涔熷彲鑳芥槸閲嶅彔鐨勮竟銆傚湪榪囨護鐩鎬氦鐨勮竟涓庤竟銆佽竟涓庨潰鏃墮兘鏈変竴瀹氱殑浼樺寲絀洪棿錛屽嵆浣跨敤BVH鏉ュ姞閫熸嫻嬬浉浜ら儴鍒嗐傚湪蹇熷垽鏂竟涓庤竟鏄惁閲嶅彔銆佽竟涓庨潰鏄惁閲嶅彔閮ㄥ垎鐨勪唬鐮侀噰鐢ㄥ浐瀹氭暟閲忕殑閲囨牱鐐圭殑澶勭悊鏂瑰紡涓嶅お涓ヨ皚銆傚皢鐩鎬氦鐨勭粨鏋滃強榪囩▼鏁版嵁閮戒繚瀛樺埌BOPDS_DS涓綔涓哄悗闈㈢畻娉曚嬌鐢ㄣ?/p>

eryar 2023-09-27 21:52 鍙戣〃璇勮
]]>
[寮婧怾-OpenCASCADE-IMGUIhttp://www.shnenglu.com/eryar/archive/2023/09/24/occt_imgui_glfw.htmleryareryarSun, 24 Sep 2023 11:33:00 GMThttp://www.shnenglu.com/eryar/archive/2023/09/24/occt_imgui_glfw.htmlhttp://www.shnenglu.com/eryar/comments/230102.htmlhttp://www.shnenglu.com/eryar/archive/2023/09/24/occt_imgui_glfw.html#Feedback0http://www.shnenglu.com/eryar/comments/commentRss/230102.htmlhttp://www.shnenglu.com/eryar/services/trackbacks/230102.html[寮婧怾-OpenCASCADE-IMGUI

1 IMGUI

ImGui 鏄竴涓敤浜嶤++鐨勭敤鎴風晫闈㈠簱錛岃法騫沖彴銆佹棤渚濊禆錛屾敮鎸丱penGL銆丏irectX絳夊縐嶆覆鏌揂PI錛屾槸涓縐嶅嵆鏃禪I錛圛mmediate Mode User Interface錛夊簱錛屼繚鐣欐ā寮忎笌鍗蟲椂妯″紡鐨勫尯鍒弬鑰?a target="_blank" rel="noopener">淇濈暀妯″紡涓庡嵆鏃舵ā寮?/strong>銆侷mGui娓叉煋闈炲父蹇紝浣嗙晫闈笂鏈夊ぇ閲忕殑鏁版嵁闆嗛渶瑕佹覆鏌撳彲鑳戒細鏈変竴浜涢棶棰橈紝闇瑕佷嬌鐢ㄤ竴浜涚紦瀛樻妧宸с傜紦瀛樺彧鏄伩鍏嶆暟鎹殑鏇存柊閫昏緫鑰楁椂澶箙褰卞搷娓叉煋錛屽疄闄呮覆鏌撹繃紼嬩笉瀛樺湪鐡墮銆?/p>

IMGUI寰堣交閲忥紝榪樻敮鎸佽法騫沖彴錛屽浜庡皬鐨勬祴璇曠▼搴廔MGUI鏄悊鎯崇殑GUI銆?/p>

2 OcctImgui

鍩轟簬opencascade鐨刧lfw sample鍔犲叆IMGUI錛岃繖鏍峰氨鍙互寮鍙戜竴浜涘甫鏈塆UI鐨勭▼搴忋傝繖浜涚▼搴忓皬宸т笖鑳芥柟渚胯法騫沖彴錛岀湅涓婂幓鏁堟灉涔熶笉閿欍?/p>

鐜板湪灝哋cctImgui寮婧愶紝寮婧愬湴鍧錛歨ttps://github.com/eryar/OcctImgui

浣跨敤Premake鏉ョ敓鎴愯В鍐蟲柟妗堬紝鍙渶瑕佸皢premake5.lua涓殑鐩稿叧絎笁鏂瑰簱鐨勮礬寰勪慨鏀逛竴涓嬶紝鍗沖彲浠ョ洿鎺ョ紪璇戣繍琛屻?/p>

3 Next

鐩墠occt鐨勮鍥句綔涓烘暣涓儗鏅紝涓嬩竴姝ュ彲浠ュ仛鎴愬儚CADRays涓偅鏍鳳紝灝唎cct鐨勮鍥句綔涓鴻鍥劇殑涓閮ㄥ垎錛岃繖鏍峰氨鍙互浣跨敤IMGUI鐨凞ocking鍔熻兘銆?/p>

浣跨敤IMGUI涔熷彲浠ュ紑鍙戝嚭寰圕ool鐨勭晫闈紝鏈鍚庢斁涓や釜鍩轟簬IMGUI寮鍙戠殑鍥懼艦鐣岄潰錛?/p>

https://github.com/adriengivry/Overload

https://github.com/sasobadovinac/CADRays

https://github.com/MeshInspector/MeshLib



eryar 2023-09-24 19:33 鍙戣〃璇勮
]]>
甯冨皵鏁版嵁 BOPDS_DShttp://www.shnenglu.com/eryar/archive/2023/09/23/BOPDS_DS.htmleryareryarSat, 23 Sep 2023 09:37:00 GMThttp://www.shnenglu.com/eryar/archive/2023/09/23/BOPDS_DS.htmlhttp://www.shnenglu.com/eryar/comments/230099.htmlhttp://www.shnenglu.com/eryar/archive/2023/09/23/BOPDS_DS.html#Feedback0http://www.shnenglu.com/eryar/comments/commentRss/230099.htmlhttp://www.shnenglu.com/eryar/services/trackbacks/230099.html甯冨皵鏁版嵁 BOPDS_DS

eryar@163.com

1 Introduction

鍦∣penCASCADE涓紝甯冨皵鐩稿叧鐨勭畻瀛怬perator鏈塆eneral Fuse Operator(GFA)錛孊oolean Operator(BOA)錛孲ection Operator(SA)錛孲plitter Operator(SPA)錛岃繖浜涘竷灝旂畻瀛愰兘鍏辯敤涓濂楁暟鎹粨鏋凚OPDS_DS錛屽叾涓瓨鍌ㄤ簡杈撳叆鏁版嵁鍙婁腑闂寸粨鏋滄暟鎹傚竷灝旂畻瀛愬寘鍚袱閮ㄥ垎錛?/p>

  • Intersection Part(IP)鐩鎬氦閮ㄥ垎錛氱浉浜ら儴鍒咺P涓昏鐢ㄦ潵璁$畻妯″瀷涔嬮棿鐨勭浉浜ゆ儏鍐碉紝騫跺皢璁$畻緇撴灉淇濆瓨鍒癇OPDS_DS涓紱
  • Building Part(BP)鏋勫緩閮ㄥ垎錛氭瀯寤洪儴浠禕P浠嶣OPDS_DS涓幏鍙栫浉浜ゅ拰鍏朵粬鏁版嵁鏉ユ瀯寤虹浉搴旂殑緇撴灉錛?/li>

鐢辨鍙錛屽竷灝旀暟鎹瓸OPDS_DS鏄竷灝旀搷浣滀腑鐨勬暟鎹腑杞珯錛屽皢甯冨皵鎿嶄綔鐨勮緭鍏ユ暟鎹強涓棿璁$畻緇撴灉鏁版嵁閮戒繚瀛樿搗鏉ャ傛湰鏂囦富瑕佷粙緇岯OPDS_DS淇濆瓨鐨勬暟鎹?/p>

 

2 BOPDS_DS

BOPDS_DS涓瓨鍌ㄧ殑淇℃伅鏈夛細

  • Arguments錛氳緭鍏ユā鍨嬫暟鎹紱
  • Shapes錛氭ā鍨嬩俊鎭紱
  • Interferences錛氱浉浜ゆ暟鎹紱
  • Pave Blocks錛氬瓧闈㈡剰鎬濇槸閾鴻礬鐮栵紝鎴戠悊瑙g殑鏄杈笶dge鍒嗗潡錛?/li>
  • Common Blocks錛氬叕鍏遍儴鍒嗭紝杈逛笌杈癸紝杈逛笌闈㈢殑閲嶅彔閮ㄥ垎錛?/li>

榪欓噷鐨凷hapes鏄ā鍨嬩俊鎭疊OPDS_ShapeInfo錛屽瓨鍌ㄦā鍨嬬被鍨嬶紝鍖呭洿鐩掔瓑鏁版嵁錛?/p>

榪欓噷搴旇涓嶉渶瑕佸啀鍙﹀淇濆瓨myType錛屽洜涓哄湪myShape涓彲浠ョ洿鎺ヨ幏鍙栫被鍨嬩俊鎭傛ā鍨嬩俊鎭湪鍒濆鍖栧嚱鏁癐nit()涓潵璁劇疆錛屼富瑕佹槸鍖呭洿鐩掔瓑淇℃伅錛?/p>

//=======================================================================
//function : Init
//purpose  : 
//=======================================================================
void BOPDS_DS::Init(const Standard_Real theFuzz)
{
  Standard_Integer i1, i2, j, aI, aNb, aNbS, aNbE, aNbSx;
  Standard_Integer n1, n2, n3, nV, nW, nE, aNbF;
  Standard_Real aTol, aTolAdd;
  TopAbs_ShapeEnum aTS;
  TopoDS_Iterator aItS;
  TColStd_ListIteratorOfListOfInteger aIt1, aIt2, aIt3;
  TopTools_ListIteratorOfListOfShape aIt;
  BOPDS_IndexRange aR;
  Handle(NCollection_BaseAllocator) aAllocator;
  TopTools_MapOfShape aMS;
  //
  // 1 Append Source Shapes
  aNb=myArguments.Extent();
  if (!aNb) {
    return;
  }
  //
  myRanges.SetIncrement(aNb);
  //
  aNbS=0;
  aIt.Initialize(myArguments);
  for (; aIt.More(); aIt.Next()) {
    const TopoDS_Shape& aSx=aIt.Value();
    //
    aNbSx=0;
    TotalShapes(aSx, aNbSx, aMS);
    //
    aNbS=aNbS+aNbSx;
  }
  aMS.Clear();
  //
  myLines.SetIncrement(2*aNbS);
  //-----------------------------------------------------scope_1 f
  aAllocator=
    NCollection_BaseAllocator::CommonBaseAllocator();
  //
  //
  i1=0; 
  i2=0;
  aIt.Initialize(myArguments);
  for (; aIt.More(); aIt.Next()) {
    const TopoDS_Shape& aS=aIt.Value();
    if (myMapShapeIndex.IsBound(aS)) {
      continue;
    }
    aI=Append(aS);
    //
    InitShape(aI, aS);
    //
    i2=NbShapes()-1;
    aR.SetIndices(i1, i2);
    myRanges.Append(aR);
    i1=i2+1;
  }
  //
  aTolAdd = Max(theFuzz, Precision::Confusion()) * 0.5;
  myNbSourceShapes = NbShapes();
  //
  // 2 Bounding Boxes
  //
  // 2.1 Vertex
  for (j=0; j<myNbSourceShapes; ++j) {
    BOPDS_ShapeInfo& aSI=ChangeShapeInfo(j);
    //
    const TopoDS_Shape& aS=aSI.Shape();
    //
    aTS=aSI.ShapeType();
    //
    if (aTS==TopAbs_VERTEX) {
      Bnd_Box& aBox=aSI.ChangeBox();
      const TopoDS_Vertex& aV=*((TopoDS_Vertex*)&aS);
      const gp_Pnt& aP=BRep_Tool::Pnt(aV);
      aTol = BRep_Tool::Tolerance(aV);
      aBox.SetGap(aTol + aTolAdd);
      aBox.Add(aP);
    }
  }

鍦ㄥ垵濮嬪寲鍑芥暟涓氳繃涓や釜閫掑綊鍑芥暟TotalShapes()鍜孖nitShape()鏉ユ敹闆嗘墍鏈夋ā鍨嬫暟鎹紝鐒跺悗鍐嶅垎鍒綆楃偣銆佽竟銆侀潰鐨勫寘鍥寸洅銆傝繖浜涘寘鍥寸洅鏁版嵁涓哄悗闈嬌鐢˙VH鐩鎬氦媯嫻嬪仛鍑嗗銆?/p>

3 Interferences

鐩鎬氦鏁版嵁Interferences涓昏鐢ㄦ潵淇濆瓨姹備氦緇撴灉鏁版嵁錛屼嬌鐢ㄤ簡綆鍗曠殑媧劇敓鍏崇郴錛屼笉鍚岀殑鐩鎬氦綾誨瀷寰楀埌涓嶅悓鐨勭浉浜ょ粨鏋溿?/p>

淇濆瓨鐨勬暟鎹湁錛?/p>

鍏朵腑Index1鍜孖ndex2涓虹浉浜ょ殑涓や釜妯″瀷鍦˙OPDS_DS涓殑绱㈠紩鍙楓傚浜庣偣Vertex鍜岃竟Edge鐨勭浉浜ょ粨鏋滐紝淇濆瓨浜嗙浉浜ょ偣鍦ㄨ竟涓婄殑鍙傛暟myParam錛?/p>

 

4 DRAW

鍦―RAW涓緭鍏ョ浉鍏崇殑鍛戒護鍙互鏂逛究鍦板榪欎簺鏁版嵁緇撴瀯榪涜Debug銆?/p>

浠庢簮鐮佸彲浠ョ湅鍑猴紝鍦ㄥ仛姹備氦鐨勫垵濮嬪嚱鏁頒腑鍑嗗浜嗕笁閮ㄥ垎鏁版嵁錛屼竴涓槸BOPDS_DS錛屼竴涓槸BOPDS_Iterator錛岃繕鏈変竴閮ㄥ垎鏄紦瀛樼殑姹備氦宸ュ叿鐨勬暟鎹甀ntTools_Context銆傚悗闈㈠皢緇撳悎DRAW浠g爜瀵笴++婧愮爜璋冭瘯錛屽垎鏋愬竷灝旀搷浣滀腑姹備氦鏁版嵁BOPDS_DS淇濆瓨鐨勫叿浣撴暟鎹?/p>

 



eryar 2023-09-23 17:37 鍙戣〃璇勮
]]>
甯冨皵鏁版嵁 BOPDS_Iteratorhttp://www.shnenglu.com/eryar/archive/2023/09/18/BOPDS_Iterator.htmleryareryarMon, 18 Sep 2023 13:13:00 GMThttp://www.shnenglu.com/eryar/archive/2023/09/18/BOPDS_Iterator.htmlhttp://www.shnenglu.com/eryar/comments/230092.htmlhttp://www.shnenglu.com/eryar/archive/2023/09/18/BOPDS_Iterator.html#Feedback0http://www.shnenglu.com/eryar/comments/commentRss/230092.htmlhttp://www.shnenglu.com/eryar/services/trackbacks/230092.html甯冨皵鏁版嵁 BOPDS_Iterator

eryar@163.com

1 Introduction

OpenCASCADE涓柊鐨勫竷灝斿伐鍏稵KBO鐩稿宸茬粡搴熷純鐨凾KBool浠g爜鏇磋鑼冿紝鏇存槗浜庣悊瑙c備笌ModelingData鍜孧odelingAlgorithms澶х殑妯″潡緇勭粐涓鏍鳳紝涓昏涔熸槸鏁版嵁緇撴瀯Data Structure+綆楁硶Algorithm鐨勭粍緇囧艦寮忋?/p>

鍏朵腑BOPDS涓哄竷灝斾腑鐨勬暟鎹粨鏋勯儴鍒嗭紝BOPAlgo涓哄竷灝斾腑鐨勭畻娉曢儴鍒嗐傜悊瑙g畻娉曠殑鍓嶆彁鏄厛鐞嗚В鏁版嵁緇撴瀯DS(Data Structure)錛屾墍浠ュ厛浠庢暟鎹粨鏋勫叆鎵嬶紝鏉ユ繁鍏ョ悊瑙e竷灝旀搷浣溿傛湰鏂囧厛浠庣畝鍗曠殑鏁版嵁緇撴瀯BOPDS_Iterator寮濮嬪婧愮爜榪涜鍒嗘瀽銆?/p>

 

2 BOPDS_Iterator

浠庣被鐨勬敞閲婂彲浠ョ湅鍑猴紝榪唬鍣˙OPDS_Iterator鏈変互涓嬩袱涓姛鑳斤細

- 鎵懼嚭鍖呭洿鐩掔浉浜ょ殑Shape錛?/p>

- 閬嶅巻鐩鎬氦鐨勪竴瀵筍hape錛?/p>

//! The class BOPDS_Iterator is
//! 1.to compute intersections between BRep sub-shapes
//! of arguments of an operation (see the class BOPDS_DS)
//! in terms of theirs bounding boxes
//! 2.provides interface to iterate the pairs of
//! intersected sub-shapes of given type
class BOPDS_Iterator 
{
public:

鍏朵腑鏍稿績鐨勭畻娉曞湪鍑芥暟Intersect()涓紝浠g爜濡備笅鎵紺猴細

//=======================================================================
// function: Intersect
// purpose: 
//=======================================================================
void BOPDS_Iterator::Intersect(const Handle(IntTools_Context)& theCtx,
                               const Standard_Boolean theCheckOBB,
                               const Standard_Real theFuzzyValue)
{
  const Standard_Integer aNb = myDS->NbSourceShapes();
  // Prepare BVH
  BOPTools_BoxTree aBoxTree;
  aBoxTree.SetSize (aNb);
  for (Standard_Integer i = 0; i < aNb; ++i)
  {
    const BOPDS_ShapeInfo& aSI = myDS->ShapeInfo(i);
    if (!aSI.HasBRep())
      continue;
    const Bnd_Box& aBox = aSI.Box();
    aBoxTree.Add (i, Bnd_Tools::Bnd2BVH (aBox));
  }
  // Build BVH
  aBoxTree.Build();
  // Select pairs of shapes with interfering bounding boxes
  BOPTools_BoxPairSelector aPairSelector;
  aPairSelector.SetBVHSets (&aBoxTree, &aBoxTree);
  aPairSelector.SetSame (Standard_True);
  aPairSelector.Select();
  aPairSelector.Sort();
  // Treat the selected pairs
  const std::vector<BOPTools_BoxPairSelector::PairIDs>& aPairs = aPairSelector.Pairs();
  const Standard_Integer aNbPairs = static_cast<Standard_Integer> (aPairs.size());
  Standard_Integer iPair = 0;
  const Standard_Integer aNbR = myDS->NbRanges();
  for (Standard_Integer iR = 0; iR < aNbR; ++iR)
  {
    const BOPDS_IndexRange& aRange = myDS->Range(iR);
    for (; iPair < aNbPairs; ++iPair)
    {
      const BOPTools_BoxPairSelector::PairIDs& aPair = aPairs[iPair];
      if (!aRange.Contains (aPair.ID1))
        // Go to the next range
        break;
      if (aRange.Contains (aPair.ID2))
        // Go to the next pair
        continue;
      const BOPDS_ShapeInfo& aSI1 = myDS->ShapeInfo (aPair.ID1);
      const BOPDS_ShapeInfo& aSI2 = myDS->ShapeInfo (aPair.ID2);
      const TopAbs_ShapeEnum aType1 = aSI1.ShapeType();
      const TopAbs_ShapeEnum aType2 = aSI2.ShapeType();
      Standard_Integer iType1 = BOPDS_Tools::TypeToInteger (aType1);
      Standard_Integer iType2 = BOPDS_Tools::TypeToInteger (aType2);
      // avoid interfering of the shape with its sub-shapes
      if (((iType1 < iType2) && aSI1.HasSubShape (aPair.ID2)) ||
          ((iType1 > iType2) && aSI2.HasSubShape (aPair.ID1)))
        continue;
      if (theCheckOBB)
      {
        // Check intersection of Oriented bounding boxes of the shapes
        const Bnd_OBB& anOBB1 = theCtx->OBB (aSI1.Shape(), theFuzzyValue);
        const Bnd_OBB& anOBB2 = theCtx->OBB (aSI2.Shape(), theFuzzyValue);
        if (anOBB1.IsOut (anOBB2))
          continue;
      }
      Standard_Integer iX = BOPDS_Tools::TypeToInteger (aType1, aType2);
      myLists(iX).Append (BOPDS_Pair (Min (aPair.ID1, aPair.ID2),
                                      Max (aPair.ID1, aPair.ID2)));
    }
  }
}

鍦ㄦ眰浜ゅ嚱鏁癐ntersect涓嬌鐢˙VH蹇熸壘鍑哄寘鍥寸洅鏈夌浉浜ょ殑姣忓Shape錛屽茍浠ョ儲寮曠殑褰㈠紡璁板綍涓嬫潵銆備粠榪欎釜鍑芥暟涓彲浠ョ湅鍑哄竷灝旀搷浣滄槸鍚︿嬌鐢∣BB鐨勯夐」鐨勪綔鐢細褰撲笉浣跨敤OBB鏃訛紝鍙互AABB鍖呭洿鐩掓潵媯嫻嬬浉浜ょ殑Shape錛涘綋浣跨敤OBB鏃訛紝鍦ˋABB鐨勫熀紜涓婅繘涓姝ヤ嬌鐢ㄥ寘鍥存洿绱у瘑鐨凮BB鏉ユ嫻嬬浉浜わ紝鍙互鎺掗櫎閮ㄥ垎銆傚綋鐩鎬氦鐨勬ā鍨嬩腑浠ABB媯嫻嬪氨鑳芥嫻嬪嚭鏉ョ殑錛屽啀鎵撳紑OBB閫夐」錛屼笉浼氭彁楂樻ц兘錛屽弽鑰屼細鏈夋墍闄嶄綆銆備負浜嗗噺灝戣繖涓獎鍝嶏紝鍦↖ntTools_Context涓紦瀛楥aching榪欎簺OBB錛岄伩鍏嶆瀯閫燨BB甯︽潵鐨勬ц兘鎹熷け銆?/p>

3 Conclusion

甯冨皵榪唬鍣˙OPDS_Iterator閫氳繃BVH鎵懼嚭姹備氦鐨勬ā鍨嬩腑姣忓鍖呭洿鐩掓湁鐩鎬氦鐨勬ā鍨嬪茍鎻愪緵閬嶅巻姣忓鍖呭洿鐩掔浉浜ょ殑妯″瀷鐨勫姛鑳斤紝涓哄悗闈㈡眰浜や綔鍑嗗銆備粠鍏朵唬鐮佸疄鐜板彲浠ョ湅鍑哄竷灝旈夐」浣跨敤OBB瀵規ц兘鎻愰珮鏄湁闄愮殑錛屽綋浣跨敤AABB鑳芥嫻嬪嚭鏉ョ殑錛屽啀浣跨敤OBB浼氶檷浣庢ц兘銆傚綋浣跨敤AABB媯嫻嬪嚭鏉ョ浉浜わ紝浣哋BB涓嶇浉浜ょ殑鍦烘櫙瀵規ц兘鎻愬崌鏄庢樉銆?/p>

浠婃棩鏄?#8220;涔濅竴鍏簨鍙?#8221;92鍛ㄥ勾錛岃惤鍚庡氨瑕佹尐鎵擄紝鍚捐緢浠嶉渶鍔姏銆?/p>

eryar 2023-09-18 21:13 鍙戣〃璇勮
]]>
鏋勫緩宸ュ叿Premakehttp://www.shnenglu.com/eryar/archive/2023/09/18/occt_premake.htmleryareryarMon, 18 Sep 2023 12:49:00 GMThttp://www.shnenglu.com/eryar/archive/2023/09/18/occt_premake.htmlhttp://www.shnenglu.com/eryar/comments/230091.htmlhttp://www.shnenglu.com/eryar/archive/2023/09/18/occt_premake.html#Feedback0http://www.shnenglu.com/eryar/comments/commentRss/230091.htmlhttp://www.shnenglu.com/eryar/services/trackbacks/230091.html鏋勫緩宸ュ叿Premake

緇忓父鐢╒isual Studio鍐欎竴浜涘皬紼嬪簭鏉ラ獙璇丱penCASCADE鐨勫姛鑳斤紝姣忔鍒涘緩欏圭洰鍚庨兘閰嶇疆澶存枃浠訛紝搴撹礬寰勶紝紼嬪簭榪愯鏃惰繕瑕侀厤緗瓺ebug鐨勭幆澧冨彉閲忥紝姣旇緝楹葷儲銆備篃灝濊瘯榪嘋Make鍜孮Make錛岄兘涓嶅お鐞嗘兂銆侰Make瀛︿範鏇茬嚎闄″抄涓鐐癸紝榪樹細鐢熸垚涓鍫嗘枃浠躲俀Make綆鍗曚簺錛屼絾鏄湁鐨勯夐」涓嶆敮鎸併傜洿鍒扮湅鍒頒竴涓紑婧愮殑娓告垙紼嬪簭Overload錛岀湅鍏剁紪璇戣鏄庝嬌鐢ㄤ簡Premake鏉ユ瀯寤恒?/p>

浣跨敤IMGUI鐢熸垚鐨勮蔣浠剁晫闈㈡瘮杈冮叿鐐紝浣跨敤Premake鐢熸垚Visual Studio瑙e喅鏂規銆?/p>

1 浠涔堟槸鏋勫緩緋葷粺

鏋勫緩緋葷粺錛圔uildSystem錛夋槸鐢ㄦ潵浠庢簮鐮佺敓鎴愮敤鎴峰彲浠ヤ嬌鐢ㄧ殑鐩爣錛圱argets錛夌殑鑷姩鍖栧伐鍏楓傜洰鏍囧彲浠ュ寘鎷簱錛屽彲鎵ц鏂囦歡錛屾垨鑰呯敓鎴愮殑鑴氭湰絳夌瓑銆?/p>

欏圭洰妯″潡渚濊禆鍏崇郴緇存姢 錛?/p>

鐩爣鐨勫彲閰嶇疆鍖栵紙涓嶅悓緋葷粺錛歐indows錛孧ac…錛涗笉鍚屽鉤鍙幫細Win32錛學in64錛孉md64…錛?/p>

鐩爣鐢熸垚鐨勮嚜鍔ㄥ寲

2 涓轟粈涔堜嬌鐢ㄦ瀯寤虹郴緇?/h2>

涓昏鐢ㄤ簬鎻愰珮寮鍙戜漢鍛樼殑鏁堢巼涓庣ǔ瀹氾紝嫻嬭瘯涓庡彂甯冪殑鏁堢巼

-鍑忓皯寮鍙戜漢鍛樼殑鐭ヨ瘑鎴愭湰錛堟瘮濡傚鍚屼竴嫻佺▼錛屼絾澶氱騫沖彴錛屽縐嶅紑鍙戠幆澧冨樊寮傚寲鐨勪簡瑙o級

-鍑忓皯欏圭洰欏圭洰鍙樺姩鐨勭淮鎶ゆ垚鏈?/p>

– VisualStudio 鐨勭紪璇戦夐」瑙勫垯錛岄厤緗柟娉?/p>

– Xcode 鐨勭紪璇戦夐」瑙勫垯錛岄厤緗柟娉?/p>

– 鍏朵粬銆傘傘?/p>

-鍑忓皯妯″潡鐨勭淮鎶ゆ垚鏈?/p>

– 鍗忓悓浜哄憳瀵瑰伐紼嬫枃浠訛紝鐩綍鐨勪慨鏀瑰啿紿?/p>

鍑忓皯騫沖彴錛岀郴緇熺敓鎴愮殑宸紓鍖栨垚鏈紙鍙互綆媧佸湴閰嶇疆涓嶅悓鐨勫鉤鍙頒笌緋葷粺錛?/p>

– 閫氳繃綆鍗曠殑閰嶇疆錛屽彲浠ョ伒媧伙紝蹇熷湴娣誨姞錛屼慨鏀癸紝鏇存柊妯″潡

– 鍙互鏂逛究鐨勫鐞嗕緷璧栧叧緋伙紝鎻愰珮紼沖畾鎬у拰緙栬瘧閫熷害

浣跨敤鑴氭湰鍜岄厤緗枃浠訛紝瀹炵幇鑷姩娓呯悊錛岀敓鎴愭墍闇騫沖彴錛岀郴緇燂紝璋冭瘯鐜錛屾祴璇曟祦紼嬶紝鐒跺悗鍙戝竷鐗堟湰銆?/p>

鎬葷殑鏉ヨ錛屽氨鏄嬌鐢熸垚榪囩▼鏇村姞綆媧侊紝鐏墊椿錛岄珮鏁堬紝鑷姩鍖栥?/p>

3 甯歌鐨勬瀯寤虹郴緇?/h2>

涓繪祦鐨勫彲浠ヨ法騫沖彴錛屾敮鎸丆++鐨勬瀯寤虹郴緇?/p>

- CMake

- Scons

- Premake

鍏朵粬榪樻湁 GNU Make錛孏NU autotools錛孉pache Ant錛堜富瑕佺敤浜嶫ava錛夛紝Gradle錛堜富瑕佺敤浜嶫ava錛?/p>

4 浠涔堟槸Premake

Premake 鏄竴縐嶅懡浠ゅ伐鍏鳳紝閫氳繃璇誨彇欏圭洰鑴氭湰錛屾潵鐢熸垚鍚勭寮鍙戠幆澧冪殑欏圭洰鏂囦歡銆備富瑕佺敤浜庯細

鐢熸垚寮鍙戜漢鍛樺枩嬈㈢殑騫沖彴錛屽伐鍏烽泦錛堝崗鍚屽紑鍙戠殑浜哄憳錛屽彲浠ヤ嬌鐢ㄤ笉鍚岀殑騫沖彴鍜屽紑鍙戝伐鍏鳳級

閫氳繃鑴氭湰淇濇寔涓嶅悓騫沖彴錛屽伐鍏烽泦涓嬬殑欏圭洰閰嶇疆鍚屾錛堟瘮濡傛柊寤烘枃浠跺す錛屽紩鍏ユ柊鐨勫簱鏂囦歡錛?/p>

閫氳繃鑴氭湰鏉ュ揩閫熸洿鏂拌澶氫笉鍚岀殑澶у瀷浠g爜搴擄紝騫墮噸鏂扮敓鎴愰」鐩紙姣斿瀵逛緷璧栫殑澶氱钁楀悕搴撶殑鐗堟湰鏇存柊錛?/p>

蹇熷崌綰у伐鍏烽泦鐨勭増鏈紙姣斿鏃犵紳鍦頒粠VisualStudio 2010鍗囩駭鍒癡isualStudio 2019錛?/p>

鐩墠鏀寔錛?/p>

Microsoft Visual Studio 2005-2019

GNU Make錛屽寘鎷?Cygwin 鍜?MinGW

XCode

Codelite

Premake 5.0 鐩墠鏀寔錛?/p>

32 鍜?64 浣嶅鉤鍙?/p>

Xbox 360錛堜粎鏀寔Visual Studio錛?/p>

鎻掍歡妯″潡鍙互鏀寔鍏朵粬璇█錛屾鏋訛紝鍜屽伐鍏烽泦

Premake 鏄瓨綺圭殑鏃х増C搴旂敤紼嬪簭錛屽彂甯冧負涓涓崟涓殑錛岄潪甯稿皬鐨別xe鏂囦歡銆傛敮鎸佸畬鏁寸殑Lua鑴氭湰鐜

寮婧愬湴鍧錛歨ttps://github.com/premake/premake-core

涓嬭澆鍦板潃錛歨ttps://premake.github.io/

瀹炰緥鍦板潃錛?a >https://github.com/wuguyannian/tutorial_premake

5 浣跨敤Premake

浣跨敤premake鏉ユ瀯寤轟竴涓嬌鐢ㄤ簡glfw, occt鍜宨mgui鐨勭▼搴忋備粠閰嶇疆鏂囦歡鍙互鐪嬪嚭錛岄厤緗瘮CMake瑕佺畝鍗曪細

workspace "OcctImgui"
    configurations {"Debug", "Release"}
    system "Windows"
    platforms {"Win64"}
    architecture "X64"
    language "C++"
project "OcctImgui"
    kind "ConsoleApp"
    language "C++"
    targetdir "build/bin/%{cfg.buildcfg}"
    objdir "build/obj/%{cfg.buildcfg}"
    files { "**.h",  "**.cpp"}
    -- Header files.
    includedirs
    {
        "C:/OpenCASCADE-7.6.0/opencascade-7.6.0/inc", 
        "C:/glfw-3.3.8/include"
    }
    -- Library files.
    links
    {
        "TKernel", "TKMath", "TKG2d", "TKG3d", "TKGeomBase", "TKGeomAlgo", "TKBRep", "TKTopAlgo", "TKPrim", "TKMesh", "TKService", "TKOpenGl", "TKV3d", 
        "glfw3"
    }
    filter "configurations:Debug"
      defines { "DEBUG" }
      symbols "On"
      libdirs
      {
          "C:/OpenCASCADE-7.6.0/opencascade-7.6.0/win64/vc14/libd", 
          "C:/glfw-3.3.8/lib"
      }
      debugenvs
      {
          "path=%path%;C:/OpenCASCADE-7.6.0/opencascade-7.6.0/win64/vc14/bind"
      }
   filter "configurations:Release"
      defines { "NDEBUG" }
      symbols "Off"
      optimize "On"
      libdirs
      {
          "C:/OpenCASCADE-7.6.0/opencascade-7.6.0/win64/vc14/lib", 
          "C:/glfw-3.3.8/lib"
      }
      debugenvs
      {
          "path=%path%;C:/OpenCASCADE-7.6.0/opencascade-7.6.0/win64/vc14/bin"
      }

閫氳繃premake鐢熸垚鐨刅isual Studio瑙e喅鏂規寰堝共鍑錛屾病鏈夊浣欑殑鏂囦歡銆傚悗闈㈠啀瑕佸啓涓涓皬鐨勯獙璇佺▼搴忔椂錛屽彧闇瑕佸鍒秔remake5.lua淇敼涓涓嬪嵆鍙紝寰堟柟渚褲傚浜庡皬鐨勯獙璇佺▼搴忔潵璇達紝浣跨敤premake鏄悊鎯崇殑鏋勫緩宸ュ叿銆?/p>

 



eryar 2023-09-18 20:49 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品揄拍500视频| 免费在线日韩av| 国产欧美一区二区三区久久| 欧美亚洲视频| 午夜精品一区二区三区在线视| 国产农村妇女毛片精品久久莱园子| 久久九九精品| 欧美ab在线视频| 亚洲永久精品国产| 欧美一区二区视频免费观看| 一区免费在线| 99国产麻豆精品| 国产在线精品成人一区二区三区 | 免费观看在线综合| 欧美成人一品| 性18欧美另类| 免费在线成人av| 午夜久久资源| 久久亚洲精选| 午夜视频在线观看一区二区三区| 久久不射电影网| 一区二区精品在线| 欧美中文字幕久久| 一区二区三区蜜桃网| 羞羞色国产精品| av成人国产| 久久精品国产欧美亚洲人人爽| 亚洲精品久久久久久久久久久久久| 日韩一级免费| 在线日韩电影| 亚洲欧美日韩网| 99riav1国产精品视频| 欧美一区=区| 亚洲综合999| 欧美成人一区二区| 久久人人爽人人爽爽久久| 欧美色视频一区| 欧美激情第1页| 国产欧美综合一区二区三区| 亚洲精品男同| 欧美在线视频a| 亚洲一二三区在线| 欧美高清一区| 欧美电影免费观看| 国产午夜亚洲精品羞羞网站| aⅴ色国产欧美| 亚洲人成久久| 毛片一区二区三区| 久久午夜精品| 国一区二区在线观看| 亚洲欧美日韩一区二区三区在线观看| 亚洲另类在线视频| 欧美va亚洲va香蕉在线| 欧美xx69| 亚洲韩国一区二区三区| 久久久免费精品| 久久欧美肥婆一二区| 国产视频在线观看一区二区三区| 中文成人激情娱乐网| 亚洲午夜精品17c| 欧美日韩视频不卡| 夜夜狂射影院欧美极品| 亚洲综合色激情五月| 国产精品你懂得| 午夜在线不卡| 久久美女艺术照精彩视频福利播放| 国产欧美激情| 久久精品理论片| 你懂的亚洲视频| 亚洲区在线播放| 欧美精品在线一区二区| 一本色道**综合亚洲精品蜜桃冫| 中文久久精品| 国产精品三区www17con| 亚洲欧美影音先锋| 久久中文在线| 亚洲每日更新| 国产精品日韩二区| 欧美一区二区在线观看| 免费看黄裸体一级大秀欧美| 亚洲国产岛国毛片在线| 欧美日本精品| 亚洲女人av| 亚洲第一级黄色片| 亚洲一区二区三区高清不卡| 国产视频精品免费播放| 久久躁狠狠躁夜夜爽| 亚洲精品美女| 久久av在线| 亚洲日本欧美天堂| 国产精品久久久久aaaa| 久久久久久国产精品mv| 亚洲人成啪啪网站| 欧美一区二区免费视频| 亚洲国产精品高清久久久| 欧美日韩精品国产| 久久精品国产精品亚洲| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲天堂免费观看| 国产一区二区三区久久久| 欧美激情国产日韩| 欧美一区二区三区在线播放| 亚洲日本aⅴ片在线观看香蕉| 亚洲欧美在线观看| 亚洲精品字幕| 伊人春色精品| 国产精品卡一卡二卡三| 欧美成人午夜激情视频| 欧美一区成人| 亚洲私人影吧| 亚洲人成绝费网站色www| 噜噜噜在线观看免费视频日韩| 国产精品毛片高清在线完整版| 美女精品网站| 久久精品成人一区二区三区| 亚洲午夜久久久| 亚洲欧洲在线视频| 欧美成人高清| 久久一区激情| 久久国产精品黑丝| 亚洲一区二区三区高清 | 狠狠爱www人成狠狠爱综合网| 欧美日韩成人综合天天影院| 久久一区欧美| 久久久精品日韩| 欧美在线观看一区| 亚洲欧美日韩成人| 亚洲一级在线| 亚洲视频在线看| 一区二区三区精品国产| 亚洲乱码国产乱码精品精| 欧美激情精品久久久久久黑人| 巨乳诱惑日韩免费av| 久久久久国产成人精品亚洲午夜| 亚洲欧美日韩中文播放| 亚洲午夜在线视频| 亚洲一区免费视频| 亚洲摸下面视频| 亚洲综合国产| 午夜在线电影亚洲一区| 欧美一区二区三区免费视| 午夜精品成人在线视频| 亚洲欧美日韩精品综合在线观看| 亚洲一区成人| 午夜精品一区二区三区在线视 | 久久理论片午夜琪琪电影网| 久久精品日韩一区二区三区| 久久精品国产久精国产爱| 久久成年人视频| 久久综合九色综合欧美狠狠| 免费看成人av| 亚洲日本成人网| 一本大道久久a久久精二百| 国产精品99久久不卡二区| 亚洲砖区区免费| 欧美制服丝袜| 嫩模写真一区二区三区三州| 欧美精品一区二区在线播放| 欧美色欧美亚洲另类二区| 国产精品亚洲产品| 国模吧视频一区| 亚洲精品一区二区三区99| 亚洲深夜福利视频| 久久精品国产69国产精品亚洲| 久久亚洲一区| 日韩一级黄色av| 久久国产精品网站| 欧美激情第六页| 国产女优一区| 亚洲精品美女久久久久| 亚洲欧美一区二区三区极速播放 | 亚洲性视频h| 久久国产主播精品| 亚洲电影在线| 午夜精品免费视频| 欧美成人中文字幕| 国产精品一区二区三区观看| 亚洲国产精品女人久久久| 亚洲一区二区黄| 欧美chengren| 亚洲欧美日韩国产精品| 欧美顶级大胆免费视频| 国产精品亚洲欧美| 日韩亚洲欧美成人| 榴莲视频成人在线观看| 亚洲一区二区在线免费观看| 美女诱惑黄网站一区| 国产视频一区欧美| 正在播放亚洲一区| 欧美电影免费观看高清完整版| 欧美一区二区三区喷汁尤物| 亚洲人成毛片在线播放| 久久精品国产清自在天天线| 欧美调教vk| 亚洲免费激情| 欧美成人小视频| 久久se精品一区精品二区| 国产精品久久999| 夜夜夜久久久| 最新亚洲一区|