-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
147 lines (109 loc) · 5.82 KB
/
Copy pathmain.js
File metadata and controls
147 lines (109 loc) · 5.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
async function modelBreakViewDemo() {
try {
hwv.view.setTransparencyMode(Communicator.TransparencyMode.Unsorted);
hwv.view.getNavCube().enable();
await hwv.view.getNavCube().setAnchor(Communicator.OverlayAnchor.UpperRightCorner);
const subtreeConfig = new Communicator.LoadSubtreeConfig();
subtreeConfig.ignoreCadViews = true;
hwv.pauseRendering();
let mainModel = hwv.model.createNode(hwv.model.getAbsoluteRootNode(), "Collection");
let model1 = await hwv.model.loadSubtreeFromScsFile(mainModel, 'models/Tubing_assembly.scs');
await hwv.model.setViewAxes(new Communicator.Point3(0,-1,0), new Communicator.Point3(0,0,1));
hwv.view.setViewOrientation(Communicator.ViewOrientation.Iso, 0);
hwv.view.getAxisTriad().enable();
hwv.resumeRendering();
// Set up model break manager:
const modelBreakManager = new ModelBreakManager(hwv);
// Attach it to the window for console interaction:
window.modelBreakManager = modelBreakManager;
// Activate the Model Break Manager when a break axis is selected:
document.getElementById("modelBreakPlane").addEventListener("click", async (e)=>{
const breakPlane = e.target.value;
if (breakPlane === "noBreak") {
modelBreakManager.clear();
return;
}
try {
await modelBreakManager.activate(breakPlane);
}
catch(error) {
console.log('Error in model break manager activation:');
console.log(error);
}
});
// Perform the break:
document.getElementById("modelBreakBtn").addEventListener("click", ()=>{
// Show the loading element:
document.getElementById("loadingDiv").style.display = "inline";
// Execute the break immediately and hide the "loading" display when done:
setTimeout(()=>{
let showFaces = false;
if (document.getElementById("showFacesCheckbox").checked) {
showFaces = true;
}
modelBreakManager.break(showFaces).then((viewId)=>{
document.getElementById("loadingDiv").style.display = "none";
if (viewId === undefined) return;
console.log("View ID created: " + viewId);
let view = document.createElement("p");
view.setAttribute("class", "clickable");
view.innerHTML = "Break View ID: " + viewId;
view.addEventListener("click", ()=>{
modelBreakManager.isolate(viewId, 1000);
});
document.getElementById("savedViews").appendChild(view);
}).catch((error)=>{
console.log("Model break failed:");
console.log(error);
});
}, 0);
});
// Reset button:
document.getElementById("resetBtn").addEventListener("click", async() => {
await hwv.view.isolateNodes([parseInt(mainModel)]);
});
// Measure button:
const measureOp = new MeasureBreakViewOperator(hwv, modelBreakManager);
const measureOpId = hwv.operatorManager.registerCustomOperator(measureOp);
let measureActive = false;
document.getElementById("measureBtn").addEventListener("click", () => {
if (!measureActive) {
hwv.operatorManager.push(measureOpId);
hwv.getViewElement().style.cursor = "crosshair";
measureActive = true;
document.getElementById("measureBtn").style.fontWeight = "bold";
document.getElementById("measureBtn").style.backgroundColor = "rgb(100,255,100)";
}
else {
hwv.operatorManager.remove(measureOpId);
hwv.getViewElement().style.cursor = "default";
measureActive = false;
document.getElementById("measureBtn").style.fontWeight = "normal";
document.getElementById("measureBtn").style.backgroundColor = "rgb(240,240,240)";
}
});
// Load multiple models:
document.getElementById("loadMultipleBtn").addEventListener("click", async () => {
try {
let model2 = await hwv.model.loadSubtreeFromScsFile(mainModel, 'models/Tubing_assembly.scs');
let model3 = await hwv.model.loadSubtreeFromScsFile(mainModel, 'models/Tubing_assembly.scs');
let model4 = await hwv.model.loadSubtreeFromScsFile(mainModel, 'models/Tubing_assembly.scs');
let model5 = await hwv.model.loadSubtreeFromScsFile(mainModel, 'models/Tubing_assembly.scs');
await hwv.model.setNodeMatrix(model2[0], hwv.model.getNodeNetMatrix(model2[0]).setTranslationComponent(0,200,0));
await hwv.model.setNodeMatrix(model3[0], hwv.model.getNodeNetMatrix(model3[0]).setTranslationComponent(0,-200,0));
await hwv.model.setNodeMatrix(model4[0], hwv.model.getNodeNetMatrix(model4[0]).setTranslationComponent(0,400,0));
await hwv.model.setNodeMatrix(model5[0], hwv.model.getNodeNetMatrix(model5[0]).setTranslationComponent(0,-400,0));
await hwv.view.isolateNodes([parseInt(mainModel)]);
document.getElementById("loadMultipleBtn").style.display = "none";
}
catch(error) {
console.log("Error loading multiple models:");
console.log(error);
}
});
}
catch(err){
console.log("Error:");
console.log(err);
}
}