This repository was archived by the owner on Aug 6, 2025. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -27,3 +27,53 @@ TopoDS_Shape AisHelper::GetShapeFromEntityOwner(const Handle(SelectMgr_EntityOwn
2727
2828 return TopoDS_Shape (brepOwner->Shape ());
2929}
30+
31+ int AisHelper::GetPickedFromSelector (const Handle (StdSelect_ViewerSelector3d)& selector,
32+ std::vector<Handle(AIS_InteractiveObject)>& interactives,
33+ std::vector<TopoDS_Shape>& shapes)
34+ {
35+ int count = 0 ;
36+ bool doInteractives = !interactives.empty ();
37+ bool doShapes = !shapes.empty ();
38+
39+ // 清空输出向量
40+ interactives.clear ();
41+ shapes.clear ();
42+
43+ // 遍历拾取结果
44+ for (Standard_Integer aPickIter = 1 ; aPickIter <= selector->NbPicked (); ++aPickIter)
45+ {
46+ Handle (SelectMgr_EntityOwner) owner = selector->Picked (aPickIter);
47+ if (owner.IsNull () || !owner->HasSelectable ())
48+ {
49+ continue ;
50+ }
51+
52+ count++;
53+
54+ // 处理交互对象
55+ if (doInteractives)
56+ {
57+ Handle (AIS_InteractiveObject) interactive =
58+ Handle (AIS_InteractiveObject)::DownCast (owner->Selectable ());
59+ interactives.push_back (interactive); // 空 Handle 表示 nullptr
60+ }
61+
62+ // 处理形状
63+ if (doShapes)
64+ {
65+ Handle (StdSelect_BRepOwner) brepOwner =
66+ Handle (StdSelect_BRepOwner)::DownCast (owner);
67+ if (!brepOwner.IsNull () && brepOwner->HasShape ())
68+ {
69+ shapes.push_back (brepOwner->Shape ());
70+ }
71+ else
72+ {
73+ shapes.push_back (TopoDS_Shape ()); // 空形状表示 nullptr
74+ }
75+ }
76+ }
77+
78+ return count;
79+ }
Original file line number Diff line number Diff line change @@ -19,53 +19,8 @@ public:
1919 // 静态函数:从选择器中获取拾取的交互对象和形状
2020 static int GetPickedFromSelector (const Handle (StdSelect_ViewerSelector3d)& selector,
2121 std::vector<Handle(AIS_InteractiveObject)>& interactives,
22- std::vector<TopoDS_Shape>& shapes)
23- {
24- int count = 0 ;
25- bool doInteractives = !interactives.empty ();
26- bool doShapes = !shapes.empty ();
22+ std::vector<TopoDS_Shape>& shapes);
2723
28- // 清空输出向量
29- interactives.clear ();
30- shapes.clear ();
31-
32- // 遍历拾取结果
33- for (Standard_Integer aPickIter = 1 ; aPickIter <= selector->NbPicked (); ++aPickIter)
34- {
35- Handle (SelectMgr_EntityOwner) owner = selector->Picked (aPickIter);
36- if (owner.IsNull () || !owner->HasSelectable ())
37- {
38- continue ;
39- }
40-
41- count++;
42-
43- // 处理交互对象
44- if (doInteractives)
45- {
46- Handle (AIS_InteractiveObject) interactive =
47- Handle (AIS_InteractiveObject)::DownCast (owner->Selectable ());
48- interactives.push_back (interactive); // 空 Handle 表示 nullptr
49- }
50-
51- // 处理形状
52- if (doShapes)
53- {
54- Handle (StdSelect_BRepOwner) brepOwner =
55- Handle (StdSelect_BRepOwner)::DownCast (owner);
56- if (!brepOwner.IsNull () && brepOwner->HasShape ())
57- {
58- shapes.push_back (brepOwner->Shape ());
59- }
60- else
61- {
62- shapes.push_back (TopoDS_Shape ()); // 空形状表示 nullptr
63- }
64- }
65- }
66-
67- return count;
68- }
6924};
7025
7126#endif // OCCT_OCCTHELPER_AISHELPER_H_
You can’t perform that action at this time.
0 commit comments