bill пре 1 дан
родитељ
комит
80182e92ff

+ 6 - 0
public/icons/DoorWindow.svg

@@ -0,0 +1,6 @@
+<svg width="1201" height="861" viewBox="0 0 1201 861" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M800.5 800.5H1200.5" stroke="black"/>
+<path d="M1200.5 740.5H800.5V860.5H1200.5V740.5Z" stroke="black"/>
+<path d="M40.5 0.5H0.5V800.5H40.5V0.5Z" stroke="black"/>
+<path d="M40.5 800.5H800.5C800.5 400.5 420.5 0.5 40.5 0.5" stroke="black"/>
+</svg>

+ 6 - 0
public/icons/MotherDoor.svg

@@ -0,0 +1,6 @@
+<svg width="1201" height="801" viewBox="0 0 1201 801" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M40.5 400.5C220.5 400.5 400.5 602 400.5 800.5C307.5 800.5 40.5 800.5 40.5 800.5" stroke="black"/>
+<rect x="0.5" y="400.5" width="40" height="400" stroke="black"/>
+<rect x="1160.5" y="0.5" width="40" height="800" stroke="black"/>
+<path d="M1160.5 0.5C780.5 0.5 400.5 400.5 400.5 800.5C629.5 800.5 1160.5 800.5 1160.5 800.5" stroke="black"/>
+</svg>

+ 4 - 0
public/icons/PullGate.svg

@@ -0,0 +1,4 @@
+<svg width="1001" height="123" viewBox="0 0 1001 123" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M400.5 0.78125V120.781L300.5 0.78125L200.5 120.781L103.849 0.78125L0.5 120.781V0.78125" stroke="black"/>
+<path d="M1000.5 0.78125V120.781L900.5 0.78125L800.5 120.781L703.849 0.78125L600.5 120.781V0.78125" stroke="black"/>
+</svg>

+ 5 - 0
public/icons/RevolutionDoor.svg

@@ -0,0 +1,5 @@
+<svg width="1001" height="1001" viewBox="0 0 1001 1001" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="500.5" cy="500.5" r="500" stroke="black"/>
+<path d="M500.5 0.5V1000.5" stroke="black"/>
+<path d="M1000.5 500.5H0.5" stroke="black"/>
+</svg>

+ 10 - 0
public/icons/RollerShutter.svg

@@ -0,0 +1,10 @@
+<svg width="1003" height="127" viewBox="0 0 1003 127" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect x="0.5" y="44.5" width="12" height="80" stroke="black"/>
+<rect x="990.5" y="44.5" width="12" height="80" stroke="black"/>
+<rect x="12.5" y="14.5" width="978" height="90" stroke="black"/>
+<rect x="12.5" y="44.5" width="978" height="30" stroke="black"/>
+<path d="M325 126L330.5 120.5L325 115" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M654 126L659.5 120.5L654 115" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M330.5 120.5C297.363 120.5 270.5 93.6371 270.5 60.5C270.5 27.3629 297.363 0.5 330.5 0.5" stroke="black" stroke-linecap="round"/>
+<path d="M659.5 120.5C626.363 120.5 599.5 93.6371 599.5 60.5C599.5 27.3629 626.363 0.5 659.5 0.5" stroke="black" stroke-linecap="round"/>
+</svg>

+ 8 - 0
public/icons/SingleBayWindow.svg

@@ -0,0 +1,8 @@
+<svg width="1801" height="601" viewBox="0 0 1801 601" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect x="0.5" y="0.5" width="100" height="600" stroke="black"/>
+<rect x="1700.5" y="0.5" width="100" height="600" stroke="black"/>
+<path d="M1700.5 120.5H100.5" stroke="black"/>
+<path d="M900.5 0.5V120.5" stroke="black"/>
+<rect x="100.5" y="0.5" width="1600" height="60" stroke="black"/>
+<path d="M100.5 600.5H1700.5" stroke="black"/>
+</svg>

+ 6 - 0
public/icons/SlidingWindow.svg

@@ -0,0 +1,6 @@
+<svg width="801" height="121" viewBox="0 0 801 121" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect x="0.5" y="0.5" width="800" height="120" stroke="black"/>
+<rect x="0.5" y="0.5" width="800" height="60" stroke="black"/>
+<rect x="384.5" y="16.5" width="400" height="28" stroke="black"/>
+<rect x="90.5" y="76.5" width="400" height="28" stroke="black"/>
+</svg>

+ 183 - 66
src/example/constant.ts

@@ -6,7 +6,7 @@ export type IconItem = {
   icon: string;
   name: string;
   color?: string;
-  type?: string
+  type?: string;
   parse?: {
     key?: string;
     fill?: string;
@@ -53,7 +53,11 @@ const traceIcons: IconItem[] = [
   },
   { parse: { key: "trace" }, icon: "shitiz_o", name: getIT("shitiz_o") },
   { parse: { key: "trace" }, icon: "shitib_o", name: getIT("shitib_o") },
-  { parse: { key: "trace" }, icon: "shitifuhao_o", name: getIT("shitifuhao_o") },
+  {
+    parse: { key: "trace" },
+    icon: "shitifuhao_o",
+    name: getIT("shitifuhao_o"),
+  },
 
   { parse: { key: "trace" }, icon: "handprint", name: getIT("handprint") },
   { parse: { key: "trace" }, icon: "footprint", name: getIT("footprint") },
@@ -71,7 +75,11 @@ const traceIcons: IconItem[] = [
     icon: "physics_and_chemistry",
     name: getIT("physics_and_chemistry"),
   },
-  { parse: { key: "trace" }, icon: "folder_close", name: getIT("folder_close") },
+  {
+    parse: { key: "trace" },
+    icon: "folder_close",
+    name: getIT("folder_close"),
+  },
   { parse: { key: "trace" }, icon: "check", name: getIT("check") },
   {
     parse: { key: "trace" },
@@ -92,6 +100,37 @@ export const iconGroups: IconGroup[] = [
         children: [
           {
             wall: true,
+            icon: "MotherDoor",
+            name: getIT("MotherDoor"),
+            parse: { type: "align-bottom" },
+          },
+          {
+            wall: true,
+            icon: "PullGate",
+            name: getIT("PullGate"),
+            parse: { type: "full" },
+          },
+          {
+            wall: true,
+            icon: "RollerShutter",
+            name: getIT("RollerShutter"),
+            parse: { type: "full" },
+          },
+          {
+            wall: true,
+            icon: "RevolutionDoor",
+            name: getIT("RevolutionDoor"),
+            parse: { type: "align-bottom" },
+          },
+          {
+            wall: true,
+            icon: "DoorWindow",
+            name: getIT("DoorWindow"),
+            parse: { type: "align-bottom" },
+          },
+
+          {
+            wall: true,
             icon: "men_l",
             name: getIT("men_l"),
             parse: { type: "align-bottom" },
@@ -108,13 +147,36 @@ export const iconGroups: IconGroup[] = [
             name: getIT("yimen"),
             parse: { type: "full" },
           },
-          { wall: true, icon: "yakou", name: getIT("yakou"), parse: { type: "full" } },
+          {
+            wall: true,
+            icon: "yakou",
+            name: getIT("yakou"),
+            parse: { type: "full" },
+          },
         ],
       },
       {
         name: getGT("chuang"),
         children: [
-          { wall: true, icon: "chuang", name: getIT("chuang"), parse: { type: "full" } },
+          {
+            wall: true,
+            icon: "SlidingWindow",
+            name: getIT("SlidingWindow"),
+            parse: { type: "full" },
+          },
+
+          {
+            wall: true,
+            icon: "SingleBayWindow",
+            name: getIT("SingleBayWindow"),
+            parse: { type: "align-bottom-fix", width: 180, height: 70 },
+          },
+          {
+            wall: true,
+            icon: "chuang",
+            name: getIT("chuang"),
+            parse: { type: "full" },
+          },
           {
             wall: true,
             icon: "piaochuang",
@@ -141,77 +203,133 @@ export const iconGroups: IconGroup[] = [
   },
   {
     name: getGT("jiaju"),
-    
+
     children: [
       {
         name: getGT("kecan"),
         children: [
-          { type: 'realScale', icon: "TV", name: getIT("TV") },
-          { type: 'realScale', icon: "HangingTV", name: getIT("HangingTV") },
-          { type: 'realScale', icon: "Cabinet", name: getIT("Cabinet") },
-          { type: 'realScale', icon: "CombinationSofa", name: getIT("CombinationSofa") },
-          { type: 'realScale', icon: "ThreeSofa", name: getIT("ThreeSofa") },
-          { type: 'realScale', icon: "SingleSofa", name: getIT("SingleSofa") },
-          { type: 'realScale', icon: "SingleSofaR", name: getIT("SingleSofaR") },
-          { type: 'realScale', icon: "CurvedSofa", name: getIT("CurvedSofa") },
-          { type: 'realScale', icon: "CornerSofa", name: getIT("CornerSofa") },
-          { type: 'realScale', icon: "TwoSofa", name: getIT("TwoSofa") },
-          { type: 'realScale', icon: "TeaTable", name: getIT("TeaTable") },
-          { type: 'realScale', icon: "Carpet", name: getIT("Carpet") },
-          { type: 'realScale', icon: "Plant", name: getIT("Plant") },
-          { type: 'realScale', icon: "TeaTableR", name: getIT("TeaTableR") },
-          { type: 'realScale', icon: "TeaTableO", name: getIT("TeaTableO") },
-          { type: 'realScale', icon: "SideTableR", name: getIT("SideTableR") },
-          { type: 'realScale', icon: "SideTableS", name: getIT("SideTableS") },
-          { type: 'realScale', icon: "DiningTableC", name: getIT("DiningTableC") }, 
-          { type: 'realScale', icon: "Chair", name: getIT("Chair") },
-          { type: 'realScale', icon: "DiningTableRC", name: getIT("DiningTableRC") },
-          { type: 'realScale', icon: "DiningTable", name: getIT("DiningTable") },
-          { type: 'realScale', icon: "DiningTableR", name: getIT("DiningTableR") },
-          { type: 'realScale', icon: "Stool", name: getIT("Stool") },
+          { type: "realScale", icon: "TV", name: getIT("TV") },
+          { type: "realScale", icon: "HangingTV", name: getIT("HangingTV") },
+          { type: "realScale", icon: "Cabinet", name: getIT("Cabinet") },
+          {
+            type: "realScale",
+            icon: "CombinationSofa",
+            name: getIT("CombinationSofa"),
+          },
+          { type: "realScale", icon: "ThreeSofa", name: getIT("ThreeSofa") },
+          { type: "realScale", icon: "SingleSofa", name: getIT("SingleSofa") },
+          {
+            type: "realScale",
+            icon: "SingleSofaR",
+            name: getIT("SingleSofaR"),
+          },
+          { type: "realScale", icon: "CurvedSofa", name: getIT("CurvedSofa") },
+          { type: "realScale", icon: "CornerSofa", name: getIT("CornerSofa") },
+          { type: "realScale", icon: "TwoSofa", name: getIT("TwoSofa") },
+          { type: "realScale", icon: "TeaTable", name: getIT("TeaTable") },
+          { type: "realScale", icon: "Carpet", name: getIT("Carpet") },
+          { type: "realScale", icon: "Plant", name: getIT("Plant") },
+          { type: "realScale", icon: "TeaTableR", name: getIT("TeaTableR") },
+          { type: "realScale", icon: "TeaTableO", name: getIT("TeaTableO") },
+          { type: "realScale", icon: "SideTableR", name: getIT("SideTableR") },
+          { type: "realScale", icon: "SideTableS", name: getIT("SideTableS") },
+          {
+            type: "realScale",
+            icon: "DiningTableC",
+            name: getIT("DiningTableC"),
+          },
+          { type: "realScale", icon: "Chair", name: getIT("Chair") },
+          {
+            type: "realScale",
+            icon: "DiningTableRC",
+            name: getIT("DiningTableRC"),
+          },
+          {
+            type: "realScale",
+            icon: "DiningTable",
+            name: getIT("DiningTable"),
+          },
+          {
+            type: "realScale",
+            icon: "DiningTableR",
+            name: getIT("DiningTableR"),
+          },
+          { type: "realScale", icon: "Stool", name: getIT("Stool") },
         ],
       },
       {
         name: getGT("woshi"),
         children: [
-          { type: 'realScale', icon: "DoubleBed", name: getIT("DoubleBed") },
-          { type: 'realScale', icon: "SingleBed", name: getIT("SingleBed") },
-          { type: 'realScale', icon: "Wardrobe", name: getIT("Wardrobe") },
-          { type: 'realScale', icon: "DoubleBedB", name: getIT("DoubleBedB") },
-          { type: 'realScale', icon: "Dresser", name: getIT("Dresser") },
-          { type: 'realScale', icon: "BedsideCupboard", name: getIT("BedsideCupboard") },
-          { type: 'realScale', icon: "Pillow", name: getIT("Pillow") },
+          { type: "realScale", icon: "DoubleBed", name: getIT("DoubleBed") },
+          { type: "realScale", icon: "SingleBed", name: getIT("SingleBed") },
+          { type: "realScale", icon: "Wardrobe", name: getIT("Wardrobe") },
+          { type: "realScale", icon: "DoubleBedB", name: getIT("DoubleBedB") },
+          { type: "realScale", icon: "Dresser", name: getIT("Dresser") },
+          {
+            type: "realScale",
+            icon: "BedsideCupboard",
+            name: getIT("BedsideCupboard"),
+          },
+          { type: "realScale", icon: "Pillow", name: getIT("Pillow") },
         ],
       },
       {
         name: getGT("chuwei"),
         children: [
-          { type: 'realScale', icon: "GasStove", name: getIT("GasStove") },
-          { type: 'realScale', icon: "Cupboard", name: getIT("Cupboard") },
-          { type: 'realScale', icon: "Bathtub", name: getIT("Bathtub") },
-          { type: 'realScale', icon: "Closestool", name: getIT("Closestool") },
-          { type: 'realScale', icon: "Washstand", name: getIT("Washstand") },
-          { type: 'realScale', icon: "CupboardU", name: getIT("CupboardU") },
-          { type: 'realScale', icon: "WaterChannel", name: getIT("WaterChannel") },
-          { type: 'realScale', icon: "WaterChannelD", name: getIT("WaterChannelD") },
-          { type: 'realScale', icon: "FridgeS", name: getIT("FridgeS") },
-          { type: 'realScale', icon: "FridgeD", name: getIT("FridgeD") },
-          { type: 'realScale', icon: "CabinetB", name: getIT("CabinetB") },
-          { type: 'realScale', icon: "SquattingPan", name: getIT("SquattingPan") },
-          { type: 'realScale', icon: "Shower", name: getIT("Shower") },
+          { type: "realScale", icon: "GasStove", name: getIT("GasStove") },
+          { type: "realScale", icon: "Cupboard", name: getIT("Cupboard") },
+          { type: "realScale", icon: "Bathtub", name: getIT("Bathtub") },
+          { type: "realScale", icon: "Closestool", name: getIT("Closestool") },
+          { type: "realScale", icon: "Washstand", name: getIT("Washstand") },
+          { type: "realScale", icon: "CupboardU", name: getIT("CupboardU") },
+          {
+            type: "realScale",
+            icon: "WaterChannel",
+            name: getIT("WaterChannel"),
+          },
+          {
+            type: "realScale",
+            icon: "WaterChannelD",
+            name: getIT("WaterChannelD"),
+          },
+          { type: "realScale", icon: "FridgeS", name: getIT("FridgeS") },
+          { type: "realScale", icon: "FridgeD", name: getIT("FridgeD") },
+          { type: "realScale", icon: "CabinetB", name: getIT("CabinetB") },
+          {
+            type: "realScale",
+            icon: "SquattingPan",
+            name: getIT("SquattingPan"),
+          },
+          { type: "realScale", icon: "Shower", name: getIT("Shower") },
         ],
       },
       {
         name: getGT("qita"),
         children: [
-          { type: 'realScale', icon: "Desk", name: getIT("Desk") },
-          { type: 'realScale', icon: "BalconyChair", name: getIT("BalconyChair") },
-          { type: 'realScale', icon: "MopPool", name: getIT("MopPool") },
-          { type: 'realScale', icon: "WashingMachine", name: getIT("WashingMachine") },
-          { type: 'realScale', icon: "Elevator", name: getIT("Elevator") },
-          { type: 'realScale', icon: "WaterFountain", name: getIT("WaterFountain") },
-          { type: 'realScale', icon: "AirConditioner", name: getIT("AirConditioner") },
-          { type: 'realScale', icon: "Tablelamp", name: getIT("Tablelamp") },
+          { type: "realScale", icon: "Desk", name: getIT("Desk") },
+          {
+            type: "realScale",
+            icon: "BalconyChair",
+            name: getIT("BalconyChair"),
+          },
+          { type: "realScale", icon: "MopPool", name: getIT("MopPool") },
+          {
+            type: "realScale",
+            icon: "WashingMachine",
+            name: getIT("WashingMachine"),
+          },
+          { type: "realScale", icon: "Elevator", name: getIT("Elevator") },
+          {
+            type: "realScale",
+            icon: "WaterFountain",
+            name: getIT("WaterFountain"),
+          },
+          {
+            type: "realScale",
+            icon: "AirConditioner",
+            name: getIT("AirConditioner"),
+          },
+          { type: "realScale", icon: "Tablelamp", name: getIT("Tablelamp") },
         ],
       },
     ],
@@ -238,7 +356,6 @@ export const getIconItem = (icon: string) => {
   }
 };
 
-
 export const aiIconMap = {
   SingleDoor: "men_l",
   DoubleDoor: "shuangkaimen",
@@ -295,19 +412,19 @@ export const overviewBorderMMToPixel = 7.69;
 if (import.meta.env.DEV) {
   const icons = iconGroups.flatMap((group) =>
     group.children.flatMap((itemGroup) =>
-      itemGroup.children.flatMap((item) => item.icon)
-    )
+      itemGroup.children.flatMap((item) => item.icon),
+    ),
   );
-  const prev = '../../public/icons/'
-  const svgModules = import.meta.glob('../../public/icons/*.svg');
+  const prev = "../../public/icons/";
+  const svgModules = import.meta.glob("../../public/icons/*.svg");
 
   // 示例:获取所有路径
-  const unusesdIcons: string[] = []
+  const unusesdIcons: string[] = [];
   for (const path in svgModules) {
-    const name = path.substring(prev.length, path.length - 4)
+    const name = path.substring(prev.length, path.length - 4);
     if (!icons.includes(name)) {
-      unusesdIcons.push(name)
+      unusesdIcons.push(name);
     }
   }
-  console.log('未使用svg: ', unusesdIcons)
+  console.log("未使用svg: ", unusesdIcons);
 }

+ 7 - 0
src/lang/locales/zh.json

@@ -112,6 +112,7 @@
       "DiningTableC": "餐桌椅",
       "DiningTableR": "餐桌-圆",
       "DiningTableRC": "餐桌",
+      "DoorWindow": "门联窗",
       "DoubleBed": "双人床",
       "DoubleBedB": "双人床1.8m",
       "Dresser": "梳妆台",
@@ -121,14 +122,20 @@
       "GasStove": "燃气灶",
       "HangingTV": "电视-壁挂",
       "MopPool": "拖把池",
+      "MotherDoor": "子母门",
       "Pillow": "抱枕",
       "Plant": "植物",
+      "PullGate": "拉闸门",
+      "RevolutionDoor": "旋转门",
+      "RollerShutter": "卷闸门",
       "Shower": "花洒",
       "SideTableR": "边几-圆形",
       "SideTableS": "边几-方形",
+      "SingleBayWindow": "单面飘窗",
       "SingleBed": "单人床",
       "SingleSofa": "单人沙发",
       "SingleSofaR": "组合沙发",
+      "SlidingWindow": "推拉窗",
       "SquattingPan": "蹲便器",
       "Stool": "条凳",
       "TV": "电视柜",