!2118 开发:布局打印改进需求,提供设计师,日期时间选项,补充页码提供总页数

pull/2135/MERGE
黄诗津 2 years ago committed by ChenX
parent 19c10c576c
commit 505d28fdd5

@ -13,9 +13,9 @@ import { EditViewSettingStore } from "./EditViewport";
export class EditFrameStore
{
@observable hName: [string, boolean][] = [["隐藏门板", false], ["隐藏抽屉", false], ["隐藏标注", false], ["隐藏曲线", false]];
@observable cName: [string, boolean][] = [["房间名", false], ["柜名", false], ["板材名", false], ["材料", false], ["颜色", false], ["页码", false]];
@observable sName: [string, boolean][] = [["左视图", false], ["概念", false]];
@observable HideOptions: [string, boolean][] = [["隐藏门板", false], ["隐藏抽屉", false], ["隐藏标注", false], ["隐藏曲线", false]];
@observable BoardInfoOptions: [string, boolean][] = [["房间名", false], ["柜名", false], ["板材名", false], ["材料", false], ["颜色", false], ["页码", false], ["日期/时间", false], ["设计师", false]];
@observable ViewAndVisionOption: [string, boolean][] = [["左视图", false], ["概念", false]];
}
export class EditFrame implements Command
@ -42,39 +42,39 @@ export class EditFrame implements Command
let nens = [];
this._Texts = [];
for (let i = 0; i < store.sName.length; i++)
for (let i = 0; i < store.ViewAndVisionOption.length; i++)
{
if (store.sName[i][1])
if (store.ViewAndVisionOption[i][1])
{
let t = new Text;
if (i == 0)
t.TextString = "@" + store.sName[i][0];
t.TextString = "@" + store.ViewAndVisionOption[i][0];
else if (i == 1)
t.TextString = "@@" + store.sName[i][0];
t.TextString = "@@" + store.ViewAndVisionOption[i][0];
t.ColorIndex = this._TextColor;
t.Height = this.store.config.option.hight;
this._Texts.push(t);
nens.push(JigUtils.Draw(t));
}
}
for (let i = 0; i < store.hName.length; i++)
for (let i = 0; i < store.HideOptions.length; i++)
{
if (store.hName[i][1])
if (store.HideOptions[i][1])
{
let t = new Text;
t.TextString = "@@@" + store.hName[i][0];
t.TextString = "@@@" + store.HideOptions[i][0];
t.ColorIndex = this._TextColor;
t.Height = this.store.config.option.hight;
this._Texts.push(t);
nens.push(JigUtils.Draw(t));
}
}
for (let i = 0; i < store.cName.length; i++)
for (let i = 0; i < store.BoardInfoOptions.length; i++)
{
if (store.cName[i][1])
if (store.BoardInfoOptions[i][1])
{
let t = new Text;
t.TextString = "$" + store.cName[i][0];
t.TextString = "$" + store.BoardInfoOptions[i][0];
t.ColorIndex = this._TextColor;
t.Height = this.store.config.option.hight;
this._Texts.push(t);

@ -7,6 +7,24 @@ import { KeyBoard } from "../../Common/KeyEnum";
import { ModalState } from "../../UI/Components/Modal/ModalInterface";
import { EditFrameStore } from "./EditFrame";
const ViewAndVisionOptions = [[
{ label: "左视图", value: "左视图" },
{ label: "右视图", value: "右视图" },
{ label: "俯视图", value: "俯视图" },
{ label: "前视图", value: "前视图" },
{ label: "仰视图", value: "仰视图" },
{ label: "后视图", value: "后视图" },
{ label: "西南等轴侧", value: "西南等轴侧" }
], [
{ label: "打印模式", value: "打印模式" },
{ label: "二维线框", value: "二维线框" },
{ label: "概念", value: "概念" },
{ label: "真实", value: "真实" },
{ label: "真实带线框", value: "真实带线框" },
{ label: "封边", value: "封边" },
{ label: "排板面", value: "排板面" }
]];
@observer
export class EditFrameModal extends React.Component<{ store: EditFrameStore; }>
{
@ -39,9 +57,10 @@ export class EditFrameModal extends React.Component<{ store: EditFrameStore; }>
render()
{
const { BoardInfoOptions, HideOptions, ViewAndVisionOption } = this.props.store;
return (
<div id="EditFrameModal" className={Classes.DIALOG_CONTAINER}>
<div className={Classes.DIALOG} style={{ height: "100%" }}>
<div className={Classes.DIALOG}>
<div className={Classes.DIALOG_HEADER} data-id="dragArea">
<Icon icon="new-text-box" iconSize={18} />
<h4 className={Classes.HEADING}></h4>
@ -53,110 +72,72 @@ export class EditFrameModal extends React.Component<{ store: EditFrameStore; }>
/>
</div>
<div className={Classes.DIALOG_BODY}>
<div style={{ height: "45px" }}>
<div style={{ float: "left" }}>
<Checkbox
checked={this.props.store.sName[0][1]}
onClick={(event) =>
{
this.props.store.sName[0][1] = !this.props.store.sName[0][1];
event.currentTarget.blur();
app.Editor.ModalManage.ChangeFoucus();
}}
>
<HTMLSelect
style={{ height: "28px" }}
value={this.props.store.sName[0][0]}
options={[
{ label: "左视图", value: "左视图" },
{ label: "右视图", value: "右视图" },
{ label: "俯视图", value: "俯视图" },
{ label: "前视图", value: "前视图" },
{ label: "仰视图", value: "仰视图" },
{ label: "后视图", value: "后视图" },
{ label: "西南等轴侧", value: "西南等轴侧" },
]}
onChange={(e) => { this.props.store.sName[0][0] = e.target.value; }}
/>
</Checkbox>
</div>
<div style={{ float: "left", position: "absolute", marginLeft: "160px" }}>
<Checkbox
checked={this.props.store.sName[1][1]}
onClick={(event) =>
{
this.props.store.sName[1][1] = !this.props.store.sName[1][1];
event.currentTarget.blur();
app.Editor.ModalManage.ChangeFoucus();
}}
>
<HTMLSelect
style={{ height: "28px" }}
value={this.props.store.sName[1][0]}
options={[
{ label: "打印模式", value: "打印模式" },
{ label: "二维线框", value: "二维线框" },
{ label: "概念", value: "概念" },
{ label: "真实", value: "真实" },
{ label: "真实带线框", value: "真实带线框" },
{ label: "封边", value: "封边" },
{ label: "排板面", value: "排板面" },
]}
onChange={(e) => { this.props.store.sName[1][0] = e.target.value; }}
/>
</Checkbox>
</div>
<div className="frame-view">
{
ViewAndVisionOption.map((opt, i) =>
{
return (
<div key={opt[0]}>
<Checkbox
checked={opt[1]}
onClick={(event) =>
{
opt[1] = !opt[1];
event.currentTarget.blur();
app.Editor.ModalManage.ChangeFoucus();
}}
>
<HTMLSelect
style={{ height: "28px" }}
value={opt[0]}
options={ViewAndVisionOptions[i]}
onChange={(e) => { opt[0] = e.target.value; }}
/>
</Checkbox>
</div>
);
})
}
</div>
<div>
<div style={{ position: "absolute", float: "left" }}>
<div className="frame-options">
{
new Array(BoardInfoOptions, HideOptions).map((opts, i) =>
{
this.props.store.cName.map((e) =>
{
return <Checkbox
label={e[0]}
checked={e[1]}
onClick={(event) =>
return (
<div key={i.toString()}>
{
e[1] = !e[1];
event.currentTarget.blur();
app.Editor.ModalManage.ChangeFoucus();
}}
/>;
})
}
</div>
<div style={{ position: "absolute", float: "left", marginLeft: "120px" }}>
opts.map(opt =>
{
return (
<Checkbox
key={opt[0]}
label={opt[0]}
checked={opt[1]}
onClick={(event) =>
{
opt[1] = !opt[1];
event.currentTarget.blur();
app.Editor.ModalManage.ChangeFoucus();
}}
/>);
})}
</div>);
})}
</div>
<div>
<Checkbox
style={{ marginTop: 10, width: 100 }}
label={"全选/反选"}
onChange={(e) =>
{
this.props.store.hName.map((e) =>
for (let name of [...HideOptions, ...BoardInfoOptions, ...ViewAndVisionOption])
{
return <Checkbox
label={e[0]}
checked={e[1]}
onClick={(event) =>
{
e[1] = !e[1];
event.currentTarget.blur();
app.Editor.ModalManage.ChangeFoucus();
}}
/>;
})
}
</div>
name[1] = e.currentTarget.checked;
}
}}
/>
</div>
</div>
<div >
<Checkbox
style={{ marginLeft: 20, marginBottom: 0 }}
label={"全选/反选"}
onChange={(e) =>
{
for (let name of [...this.props.store.hName, ...this.props.store.cName, ...this.props.store.sName])
{
name[1] = e.currentTarget.checked;
}
}}
/>
</div>
<div className={Classes.DIALOG_FOOTER}>
<div className={Classes.DIALOG_FOOTER_ACTIONS}>
<div className="foot_right">

@ -25,6 +25,7 @@ import { ViewportEntity } from "../../DatabaseServices/ViewportEntity";
import { Command } from "../../Editor/CommandMachine";
import { PromptStatus } from "../../Editor/PromptResult";
import { SelectBox, SelectType } from "../../Editor/SelectBox";
import { userConfig } from "../../Editor/UserConfig";
import { Box3Ext } from "../../Geometry/Box";
import { AsVector2 } from "../../Geometry/GeUtils";
import { RenderType } from "../../GraphicsSystem/RenderType";
@ -33,6 +34,7 @@ import { ModalState } from "../../UI/Components/Modal/ModalInterface";
import { AppToaster } from "../../UI/Components/Toaster";
import { ViewDirection } from "../../UI/Store/BoardInterface";
import { DownPanelStore } from "../../UI/Store/DownPanelStore";
import { TopPanelStore } from "../../UI/Store/TopPanelStore";
import { DrawCustomViewports, Get4Viewport, ICustomViewportInfo } from "../DrawViewport";
import { OneKeyLayoutStore } from "./OneKeyLayoutStore";
@ -77,6 +79,8 @@ export class OneKeyLayout implements Command
let tkPolylineDrawObjects: Object3D[] = [];//图框内的多段线绘制对象
let specialTexts = new Set<Entity>();
let pagTexts = new Set<Entity>();
let dateTexts = new Set<Entity>();
let userTexts = new Set<Entity>();
let texts: Text[] = [];
let file: string;
let tkEntitys: Entity[] = [];//图框实体
@ -101,6 +105,10 @@ export class OneKeyLayout implements Command
if (cloneC.TextString.startsWith("$"))
if (cloneC.TextString.startsWith("$页码"))
pagTexts.add(cloneC);
else if (cloneC.TextString.startsWith("$日期/时间"))
dateTexts.add(cloneC);
else if (cloneC.TextString.startsWith("$设计师"))
userTexts.add(cloneC);
else
specialTexts.add(cloneC);
}
@ -361,10 +369,21 @@ export class OneKeyLayout implements Command
if (pagTexts.has(c))
{
let text = cloneC as Text;
text.TextString = "第 " + (i + 1) + " 页";
text.TextString = `${i + 1} 页/共${box2entitys_map.size}`;
if (!(<Text>cloneC).TextString)
continue;
}
if (dateTexts.has(c))
{
let text = cloneC as Text;
let date = new Date();
text.TextString = `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`;
}
if (userTexts.has(c))
{
let text = cloneC as Text;
text.TextString = `${userConfig.designer ? userConfig.designer : TopPanelStore.GetInstance().userName}`;
}
app.LayoutTool.AppendDatabaseSpace(cloneC);
g.Entitys.push(cloneC.Id);
cloneC.Position = cloneC.Position.add(new Vector3(i * Total_Length, 0, 2000));

@ -36,7 +36,8 @@ export interface IUCSGridConfig extends IBaseOption
export class UserConfig implements IConfigStore
{
private readonly _version = 31; //🌟🌟每次更新必须向上添加一次版本号🌟🌟
private readonly _version = 32; //🌟🌟每次更新必须向上添加一次版本号🌟🌟
@observable designer = ""; //一键布局的设计师
_renderType: RenderType = RenderType.Wireframe;
@observable maxSize: IMaxSizeProps = {
isShow: false,
@ -236,6 +237,7 @@ export class UserConfig implements IConfigStore
this.dxfImportBlock = false;
this.titleWidthMap = new Map();
this.dxfImportFrontView = false;
this.designer = "";
}
SaveConfig()
{
@ -284,6 +286,7 @@ export class UserConfig implements IConfigStore
dxfImportBlock: this.dxfImportBlock,
titleWidthMap: Object.fromEntries(this.titleWidthMap.entries()),
dxfImportFrontView: this.dxfImportFrontView,
designer: this.designer,
}
};
}
@ -424,6 +427,10 @@ export class UserConfig implements IConfigStore
{
this.dxfImportFrontView = config.option.dxfImportFrontView;
}
if (config.option.version > 31)
{
this.designer = config.option.designer;
}
}
}

@ -186,6 +186,17 @@ export class DrawConfigPanel extends React.Component<IConfigProps, {}> {
/>
</Label>
<H5></H5>
<Label className={Classes.INLINE}>
<span></span>
<input
type="text"
className={Classes.INPUT}
value={userConfig.designer}
onChange={e => userConfig.designer = e.target.value}
/>
</Label>
<H5></H5>
<Checkbox label="保持上次配置" checked={userConfig.keepConfig} onChange={() => userConfig.keepConfig = !userConfig.keepConfig} />
</Card>

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save