跨境電商單頁(yè)網(wǎng)站的詳情頁(yè)怎么做的如何推廣自己成為網(wǎng)紅
AIS_InteractiveContext
前言
交互上下文(Interactive Context)允許您在一個(gè)或多個(gè)視圖器中管理交互對(duì)象的圖形行為和選擇。類方法使這一操作非常透明。需要記住的是,對(duì)于已經(jīng)被交互上下文識(shí)別的交互對(duì)象,必須使用上下文方法進(jìn)行修改。如果交互對(duì)象尚未加載到交互上下文中,您才能直接調(diào)用交互對(duì)象的方法。
每個(gè)可選擇的對(duì)象必須指定負(fù)責(zé)整體選擇對(duì)象的選擇模式(全局選擇模式)。交互上下文本身支持使用選擇過(guò)濾器進(jìn)行分解對(duì)象的選擇。默認(rèn)情況下,全局選擇模式等于0,但如果需要,可以重新定義。
Selection management 選擇管理
1:AddSelect
構(gòu)造1:將對(duì)象添加到選擇中
構(gòu)造2:將對(duì)象添加到選擇中
2:SelectRectangle
選擇在包圍矩形內(nèi)的對(duì)象。選擇后應(yīng)顯式重繪視圖。
參數(shù):
- thePntMin [輸入] 矩形的較小點(diǎn)(以像素表示)
- thePntMax [輸入] 矩形的較大點(diǎn)(以像素表示)
- theView [輸入] 定義矩形的活動(dòng)視圖
- theSelScheme [輸入] 選擇方案
返回值:選擇狀態(tài)
另請(qǐng)參閱:StdSelect_ViewerSelector3d::AllowOverlapDetection()
3:SelectPolygon
選擇多邊形邊界內(nèi)找到的所有內(nèi)容。選擇后應(yīng)顯式重繪視圖。
參數(shù):
- thePolyline [輸入] 定義多邊形邊界的折線(以像素表示)
- theView [輸入] 定義折線的活動(dòng)視圖
- theSelScheme [輸入] 選擇方案
返回值:選擇狀態(tài)
4:SelectPoint
選擇視圖中由點(diǎn)拾取的最頂層對(duì)象。選擇后應(yīng)顯式重繪視圖。
參數(shù):
- thePnt [輸入] 視圖內(nèi)的點(diǎn)的像素坐標(biāo)
- theView [輸入] 定義點(diǎn)所在的活動(dòng)視圖
- theSelScheme [輸入] 選擇方案
返回值:拾取狀態(tài)
5:SelectDetected
選擇并突出顯示之前通過(guò) AIS_InteractiveContext::MoveTo() 方法檢測(cè)到的對(duì)象;取消之前選中的對(duì)象的高亮顯示。選擇后應(yīng)顯式重繪視圖。
參數(shù):
- theSelScheme [輸入] 選擇方案
返回值:拾取狀態(tài)
另請(qǐng)參閱:HighlightStyle(),定義所選所有者的默認(rèn)高亮樣式(Prs3d_TypeOfHighlight_Selected 和 Prs3d_TypeOfHighlight_LocalSelected);PrsMgr_PresentableObject::HilightAttributes(),定義所選所有者的每個(gè)對(duì)象高亮樣式(覆蓋默認(rèn)設(shè)置)。
6:BoundingBoxOfSelection
返回所選對(duì)象的邊界框。
7:Select
重載方法1:
設(shè)置使用指定選擇方案選擇/取消選擇的所有者列表。
參數(shù):
- theOwners 要改變選擇狀態(tài)的所有者列表
- theSelScheme 選擇方案
返回值:拾取狀態(tài)
重載方法2:
存儲(chǔ)并突出顯示之前檢測(cè)到的對(duì)象;取消之前選擇的對(duì)象的高亮顯示。參見(jiàn) MoveTo()。已棄用:(“此方法已棄用 - 應(yīng)調(diào)用帶有 AIS_SelectionScheme_Replace 參數(shù)的 SelectDetected() 方法代替”)
重載方法3:
選擇在視圖中由像素最小值和最大值(XPMin、YPMin、XPMax 和 YPMax)定義的邊界矩形內(nèi)找到的所有內(nèi)容。檢測(cè)到的對(duì)象將傳遞給主視圖,然后進(jìn)行更新。
已棄用:(“此方法已棄用 - 應(yīng)調(diào)用帶有 AIS_SelectionScheme_Replace 參數(shù)的 SelectRectangle() 方法代替”)
重載方法4:
折線選擇;清除先前的選取列表。
已棄用:(“此方法已棄用 - 應(yīng)調(diào)用帶有 AIS_SelectionScheme_Replace 參數(shù)的 SelectPolygon() 方法代替”)
8:FitSelected
重載方法1、2:
將視圖適應(yīng)所選對(duì)象的邊界。如果將 AIS_InteractiveObject 的無(wú)限狀態(tài)設(shè)置為 true,則無(wú)限對(duì)象將被忽略。
9:ToHilightSelected
返回值指定當(dāng)鼠標(biāo)光標(biāo)移到選定對(duì)象上方時(shí)是否應(yīng)突出顯示該對(duì)象。
另請(qǐng)參閱 MoveTo()。
10:SetToHilightSelected
指定當(dāng)鼠標(biāo)光標(biāo)移到選定對(duì)象上方時(shí),是否應(yīng)突出顯示該對(duì)象(在 MoveTo 方法中)。默認(rèn)情況下,此值為 false,在這種情況下選定的對(duì)象不會(huì)被突出顯示。
另請(qǐng)參閱 MoveTo()。
11:AutomaticHilight
如果自動(dòng)高亮模式處于活動(dòng)狀態(tài),則返回 true;默認(rèn)情況下為 TRUE。
另請(qǐng)參閱 MoveTo()、Select()、HilightWithColor()、Unhilight()。
12:SetAutomaticHilight
設(shè)置檢測(cè)到和選定實(shí)體的突出顯示狀態(tài)。此函數(shù)允許您斷開(kāi)自動(dòng)模式。
MoveTo() 將填充檢測(cè)到實(shí)體的列表,而 Select() 將設(shè)置檢測(cè)到對(duì)象的選定狀態(tài),而不考慮此標(biāo)志,但如果禁用了 AutomaticHiligh(),它們的突出顯示狀態(tài)將不受影響,因此應(yīng)用程序可以根據(jù)需要以不同方式執(zhí)行自定義突出顯示。
此 API 應(yīng)與 SelectMgr_SelectableObject::SetAutoHilight() 區(qū)分開(kāi)來(lái),后者用于實(shí)現(xiàn)特定交互對(duì)象類的自定義突出顯示邏輯。
另請(qǐng)參閱 MoveTo()、Select()、HilightWithColor()、Unhilight()。
13:SetSelected
重載方法1
將交互式對(duì)象 aniObj
放入選定對(duì)象的列表中。執(zhí)行選擇過(guò)濾器檢查。
重載方法2
取消先前選定的所有者的高亮顯示,并將它們標(biāo)記為未選定狀態(tài)。將給定的所有者標(biāo)記為已選定并突出顯示它。執(zhí)行選擇過(guò)濾器檢查。
14:AddOrRemoveSelected
重載方法1
允許根據(jù)其選擇狀態(tài)來(lái)突出顯示或取消突出顯示給定的所有者。
重載方法2
允許根據(jù)其選擇狀態(tài)對(duì)給定的所有者進(jìn)行突出顯示或取消突出顯示操作。
15:IsSelected
重載方法1
返回 true 表示給定的對(duì)象已被選中。
重載方法2
返回 true 表示給定的所有者已被選中。
16:FirstSelectedObject
返回當(dāng)前選定列表中的第一個(gè)選定對(duì)象。
17:NbSelected
使用 InitSelected() + MoreSelected() + NextSelected() 迭代器計(jì)算當(dāng)前選定實(shí)體的數(shù)量。
另請(qǐng)參見(jiàn) SelectedOwner()、InitSelected()、MoreSelected()、NextSelected()。
18:InitSelected
初始化對(duì)選定對(duì)象的掃描。
另請(qǐng)參見(jiàn) SelectedOwner()、MoreSelected()、NextSelected()。
19:MoreSelected
如果在掃描選定對(duì)象列表時(shí)找到另一個(gè)對(duì)象,則返回 true。
另請(qǐng)參見(jiàn) SelectedOwner()、InitSelected()、NextSelected()。
20:NextSelected
繼續(xù)掃描到選定對(duì)象列表中的下一個(gè)對(duì)象。
另請(qǐng)參見(jiàn) SelectedOwner()、InitSelected()、MoreSelected()。
21:SelectedOwner
返回選定實(shí)體的所有者。
另請(qǐng)參見(jiàn) InitSelected()、MoreSelected()、NextSelected()。
22:SelectedInteractive
返回 Handle(AIS_InteractiveObject)::DownCast(SelectedOwner()->Selectable())
。
另請(qǐng)參見(jiàn) SelectedOwner()。
重點(diǎn) 轉(zhuǎn)換方法
23:HasSelectedShape
如果交互上下文中選擇了形狀,則返回 TRUE。
另請(qǐng)參見(jiàn) SelectedShape()。
24:SelectedShape
返回選定的形狀?;旧?#xff0c;它只是由 StdSelect_BRepOwner 存儲(chǔ)的形狀,并應(yīng)用了圖形變換:
const Handle(StdSelect_BRepOwner) aBRepOwner = Handle(StdSelect_BRepOwner)::DownCast(SelectedOwner());
TopoDS_Shape aSelShape = aBRepOwner->Shape();
TopoDS_Shape aLocatedShape = aSelShape.Located(aBRepOwner->Location() * aSelShape.Location());
另請(qǐng)參見(jiàn) SelectedOwner()、HasSelectedShape()。
重點(diǎn) 轉(zhuǎn)換方法
25:HasApplicative
如果上下文中存在通過(guò)鼠標(biāo)檢測(cè)到的實(shí)體,則返回 true。
另請(qǐng)參見(jiàn) DetectedOwner()、HasNextDetected()、HilightPreviousDetected()、HilightNextDetected()。
26:Applicative
返回 SelectedInteractive()->GetOwner()
。
另請(qǐng)參見(jiàn) SelectedOwner()。
用法用例
當(dāng)使用OpenCASCADE的AIS_InteractiveContext
進(jìn)行選擇管理時(shí),可以基于不同的交互需求和場(chǎng)景來(lái)執(zhí)行多種操作。以下是用例示例:
1. 利用選擇狀態(tài)進(jìn)行對(duì)象操作
-
獲取當(dāng)前選擇的對(duì)象:
Handle(AIS_InteractiveObject) selectedObject = myContext->SelectedInteractive(); if (!selectedObject.IsNull()) {// 對(duì)選定對(duì)象執(zhí)行操作,如獲取屬性、修改顏色等selectedObject->SetColor(Quantity_NOC_RED); }
通過(guò)
SelectedInteractive()
方法獲取當(dāng)前選定的交互式對(duì)象,并可以在此基礎(chǔ)上執(zhí)行相應(yīng)的操作,如修改顏色、獲取屬性等。 -
根據(jù)選擇執(zhí)行特定操作:
if (myContext->HasSelectedShape()) {TopoDS_Shape selectedShape = myContext->SelectedShape();// 執(zhí)行基于選定形狀的操作,如分析、處理等 }
使用
HasSelectedShape()
和SelectedShape()
方法檢查和獲取當(dāng)前選定的形狀,并在此基礎(chǔ)上執(zhí)行特定的操作。
2. 多選和集合操作
-
獲取所有選定的對(duì)象:
for (myContext->InitSelected(); myContext->MoreSelected(); myContext->NextSelected()) {Handle(AIS_InteractiveObject) selectedObject = myContext->SelectedInteractive();// 處理每個(gè)選定的對(duì)象,如打印信息、處理屬性等 }
使用
InitSelected()
、MoreSelected()
和NextSelected()
方法遍歷所有選定的對(duì)象,并執(zhí)行適當(dāng)?shù)牟僮鳌?/p> -
添加和移除選擇對(duì)象:
myContext->ShiftSelect(...); // 添加新對(duì)象到當(dāng)前選擇 myContext->ShiftSelect(...); // 再次選擇以移除對(duì)象
使用
ShiftSelect(...)
方法可以根據(jù)需要添加或移除對(duì)象到當(dāng)前選擇集合中。
3. 自定義高亮顯示和選擇模式
-
自定義高亮顯示:
myContext->HilightWithColor(anObject, Quantity_NOC_YELLOW);
使用
HilightWithColor()
方法為指定的對(duì)象設(shè)置自定義的高亮顯示顏色。 -
設(shè)置選擇模式:
myContext->SetSelectionMode(AIS_SelectionMode::AIS_SelectionMode_EntityOwner);
使用
SetSelectionMode()
方法設(shè)置選擇模式,以控制如何處理選擇操作,如選擇對(duì)象或選擇對(duì)象所有者等。
4. 事件處理和用戶交互
-
處理選擇事件:
void MyEventHandler::OnSelectEvent(const AIS_InteractiveObject& object, const Standard_Boolean isSelected) {// 處理選擇事件,根據(jù)選擇狀態(tài)執(zhí)行相應(yīng)操作if (isSelected) {// 對(duì)象被選中時(shí)執(zhí)行的操作} else {// 對(duì)象取消選中時(shí)執(zhí)行的操作} }
使用事件處理器(如自定義的
MyEventHandler
類)來(lái)處理選擇事件,根據(jù)選擇狀態(tài)執(zhí)行相應(yīng)的操作。
相關(guān)類和方法:
AIS_InteractiveContext
: 主要類,用于管理交互式對(duì)象、選擇和操作。AIS_SelectionMode
: 枚舉,定義不同的選擇模式,如選擇對(duì)象或選擇對(duì)象所有者。- 事件處理器類:用于處理選擇事件和與選擇相關(guān)的操作。
這些用例展示了如何利用OpenCASCADE中的 AIS_InteractiveContext
類進(jìn)行靈活的選擇管理和交互操作,以實(shí)現(xiàn)各種復(fù)雜的3D場(chǎng)景應(yīng)用需求。通過(guò)這些方法和技術(shù),可以有效地增強(qiáng)應(yīng)用程序的用戶體驗(yàn)和交互性。
immediate mode rendering 即時(shí)模式渲染
續(xù)看篇章5