diff --git a/src/editor/BulkCopy.vue b/src/editor/BulkCopy.vue
new file mode 100644
index 0000000..2064ca2
--- /dev/null
+++ b/src/editor/BulkCopy.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
diff --git a/src/editor/Model2DEditor.vue b/src/editor/Model2DEditor.vue
index 1c7e8e0..60d277d 100644
--- a/src/editor/Model2DEditor.vue
+++ b/src/editor/Model2DEditor.vue
@@ -17,6 +17,9 @@
:type="state?.view3DMode===Constract.Mode3D?'primary':''"
@click="state.view3DMode = Constract.Mode3D">3D
+
+ 批量复制
+
@@ -92,13 +95,14 @@
diff --git a/src/editor/widgets/property/PropertyPanel.vue b/src/editor/widgets/property/PropertyPanel.vue
index 1cf6e7b..a8182ca 100644
--- a/src/editor/widgets/property/PropertyPanel.vue
+++ b/src/editor/widgets/property/PropertyPanel.vue
@@ -9,23 +9,23 @@ import { defDataFormProps } from '@/editor/widgets/property/PropertyPanelConstan
import Viewport, { type ViewportState } from '@/core/engine/Viewport.ts'
defineOptions({
- name: 'PropertyPanel'
+ name: 'PropertyPanel'
})
// 定义 Props 类型
interface PropertyPanelProps {
- /** 待编辑数据 */
- data?: any;
- /** Viewport */
- viewport: Viewport;
- /** ViewportState */
- viewportState: ViewportState;
- /** 默认的DataFormProps */
- defDataFormProps?: DataFormProps;
- /** 最上面平铺的设置器 */
- flatten?: PropertyFlattenSetter;
- /** 设置器分组集合 */
- groups?: Array
;
+ /** 待编辑数据 */
+ data?: any;
+ /** Viewport */
+ viewport: Viewport;
+ /** ViewportState */
+ viewportState: ViewportState;
+ /** 默认的DataFormProps */
+ defDataFormProps?: DataFormProps;
+ /** 最上面平铺的设置器 */
+ flatten?: PropertyFlattenSetter;
+ /** 设置器分组集合 */
+ groups?: Array;
}
// 读取组件 props 属性
@@ -33,16 +33,16 @@ const props = withDefaults(defineProps(), {})
// 定义 State 类型
interface PropertyPanelState {
- /** 待编辑数据 */
- data?: any;
- /** 已展开的分组 */
- expandGroups: Array;
+ /** 待编辑数据 */
+ data?: any;
+ /** 已展开的分组 */
+ expandGroups: Array;
}
// state 属性
const state = reactive({
- data: lodash.cloneDeep(props.data),
- expandGroups: []
+ data: lodash.cloneDeep(props.data),
+ expandGroups: []
})
// 定义 Data 类型
@@ -54,84 +54,84 @@ const data: PropertyPanelData = {}
const flattenFormProps = computed(() => getDefFormProps(props.flatten))
function getDefFormProps(setter?: PropertyFlattenSetter) {
- const formProps: DataFormProps = {
- ...defDataFormProps,
- ...props.defDataFormProps
- }
- fillFormProps(setter)
- return formProps
+ const formProps: DataFormProps = {
+ ...defDataFormProps,
+ ...props.defDataFormProps
+ }
+ fillFormProps(setter)
+ return formProps
}
function fillFormProps(formProps: DataFormProps, setter?: PropertyFlattenSetter) {
- if (!setter) return
- if (setter.size) formProps.size = setter.size
- if (setter.labelWidth) formProps.labelWidth = setter.labelWidth
+ if (!setter) return
+ if (setter.size) formProps.size = setter.size
+ if (setter.labelWidth) formProps.labelWidth = setter.labelWidth
}
function getCollapseItemId(group: PropertySetterGroup, idx: number) {
- return `_${idx}_${group.title}`
+ return `_${idx}_${group.title}`
}
function onDataChange(newData: any) {
- const viewport = props.viewport
- if (!viewport) return
- viewport.stateManager.update(({ getEntity, putEntity }) => {
- const data = getEntity(props.data.id)
- lodash.assign(data, newData)
- // console.log('onDataChange@1', JSON.stringify(data.dt))
- putEntity(data)
- })
+ const viewport = props.viewport
+ if (!viewport) return
+ viewport.stateManager.update(({ getEntity, putEntity }) => {
+ const data = getEntity(props.data.id);
+ lodash.assign(data, newData);
+ // console.log('onDataChange@1', JSON.stringify(data.dt))
+ putEntity(data);
+ });
}
interface PropertyPanelExpose {
- state: PropertyPanelState;
- data: PropertyPanelData;
+ state: PropertyPanelState;
+ data: PropertyPanelData;
}
const expose: PropertyPanelExpose = {
- state,
- data
+ state,
+ data
}
// 定义组件公开内容
defineExpose(expose)
export type {
- PropertyPanelProps,
- PropertyPanelState
+ PropertyPanelProps,
+ PropertyPanelState
}
-
-
-
-
+
-
-
-
+
+
+
+
+
+