Browse Source

红选模式

master
修宁 7 months ago
parent
commit
e921b66004
  1. 23
      src/core/ModelUtils.ts
  2. 7
      src/core/controls/SelectInspect.ts
  3. 6
      src/core/engine/Viewport.ts

23
src/core/ModelUtils.ts

@ -140,7 +140,27 @@ export function deletePointByKeyboard() {
const entityId = viewport.state.selectedEntityId
if (!entityId) {
system.msg('没有选中任何点')
const multiSelectedEntityIds = viewport.state.multiSelectedEntityIds
if (!multiSelectedEntityIds && multiSelectedEntityIds.length === 0) {
system.msg('请选中要删除的实体', 'error')
return
}
const stateManager = viewport.stateManager
stateManager.beginStateUpdate()
const deleteItems = _.remove(stateManager.vdata.items, (item) => multiSelectedEntityIds.includes(item.id))
stateManager.endStateUpdate()
if (deleteItems.length === 0) {
system.msg('没有找到要删除的实体', 'error')
} else {
system.msg('删除了 ' + deleteItems.length + ' 个实体')
}
for (const deleteEntityId of multiSelectedEntityIds) {
EventBus.dispatch('entityDeleted', {
deleteEntityId: deleteEntityId
})
viewport.selectInspect.clearRedSelectionBoxes()
}
return
}
@ -161,6 +181,7 @@ export function deletePointByKeyboard() {
})
system.msg('删除 [' + entityId + ']')
viewport.selectInspect.clearSelectionBox()
}
export function escByKeyboard() {

7
src/core/controls/SelectInspect.ts

@ -167,7 +167,7 @@ export default class SelectInspect implements IControls {
* 线
*/
updateSelectionBox(selectedObject: THREE.Object3D) {
this.disposeSelectionBox()
this.clearSelectionBox()
if (!selectedObject) {
return
@ -214,11 +214,12 @@ export default class SelectInspect implements IControls {
puFn = undefined
// 销毁选择工具
this.disposeSelectionBox()
this.clearSelectionBox()
this.disposeRect()
this.clearRedSelectionBoxes()
}
disposeSelectionBox() {
clearSelectionBox() {
if (this.selectionBox) {
this.viewport.scene.remove(this.selectionBox)
this.selectionBox.geometry.dispose()

6
src/core/engine/Viewport.ts

@ -37,10 +37,12 @@ export default class Viewport {
dragControl: any // EsDragControls
animationFrameId: any = null
scene: SceneHelp
selectInspect = new SelectInspect()
mouseMoveInspect = new MouseMoveInspect()
tools: IControls[] = [
new MouseMoveInspect(),
new SelectInspect()
markRaw(this.selectInspect),
markRaw(this.mouseMoveInspect)
]
// 状态管理器

Loading…
Cancel
Save