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 const entityId = viewport.state.selectedEntityId
if (!entityId) { 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 return
} }
@ -161,6 +181,7 @@ export function deletePointByKeyboard() {
}) })
system.msg('删除 [' + entityId + ']') system.msg('删除 [' + entityId + ']')
viewport.selectInspect.clearSelectionBox()
} }
export function escByKeyboard() { export function escByKeyboard() {

7
src/core/controls/SelectInspect.ts

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

6
src/core/engine/Viewport.ts

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

Loading…
Cancel
Save