duh vor 6 Jahren
Ursprung
Commit
14030ecea6
4 geänderte Dateien mit 97 neuen und 12 gelöschten Zeilen
  1. 28 1
      phxb/utils/GetAllModule.py
  2. 1 1
      phxb/utils/conf.py
  3. 49 1
      phxb/utils/getarray.py
  4. 19 9
      phxb/utils/main.py

+ 28 - 1
phxb/utils/GetAllModule.py

@@ -38,9 +38,36 @@ def moveBlockReferenceToWall(blockReference,wallIndex):
   else:
     blockReference.move(APoint(blockReference.InsertionPoint),APoint(0,conf.roomUsedLengths[3]))
     conf.roomUsedLengths[3] = conf.roomUsedLengths[3]+conf.moduleLengths[blockIndex];
+# 根据新顺序移动模块
+def moveBlockReferenceWithNewIndex(position,moduleIndex):
+  print(conf.moduleLengths)
+  blockReferences = []
+  for blockReference in acad.iter_objects("BlockReference"):
+    print(blockReference.name)
+    for item in conf.names:
+      if(blockReference.name == item):
+        blockReferences.append(blockReference)
+  for index in moduleIndex:
+    moveBlockReferenceToWall(blockReferences[index],position[conf.names.index(item)])
+# 重置已使用墙的长度
 def resetConfUsed():
   conf.roomUsedLengths=[1200,0,0,1000]
+# 对模块重新排序
+def changeConfModuleIndex(moduleIndex):
+  names=[]
+  moduleLengths=[]
+  for index in range(len(conf.moduleLengths)):
+    names.append(conf.names[moduleIndex[index]])
+    moduleLengths.append(conf.moduleLengths[moduleIndex[index]])
+  conf.names = names
+  conf.moduleLengths = tuple(moduleLengths)
+# 重置模块顺序
+def resetModuleIndex():
+  conf.names=['md_py','md_xs','md_rc']
+  conf.moduleLengths = (800,1000,800)
 # printObjects()
 # printTheTypeObject("BlockReference")
 
-moveBlockReference('012')
+# moveBlockReference('222')
+# a=[1,0,2]
+# moveBlockReferenceWithNewIndex('222',a)

+ 1 - 1
phxb/utils/conf.py

@@ -5,7 +5,7 @@ roomWallLengths = (2000,2200,3000,1200)
 roomUsedLengths = [1200,0,0,1000]
 roomLengths = (3000,2200)
 # 模块长度
-moduleLengths = (800,1000,800)
+moduleLengths = (800,1000,900)
 doorLength=800
 # 门与左右上下的间距
 doorAlign=[100,200,200,0]

+ 49 - 1
phxb/utils/getarray.py

@@ -83,6 +83,29 @@ def getitemIndexArray(itemIndex,m,n):
         a[item]=indexNum
     print("a=",a)
     return a
+#获取单个组合的各边重复项及其位置
+def getitemIndexArrayAndIndex(itemIndex,m,n):
+    a = {};
+    for item in range(m):
+        index = 0;
+        indexList = [];
+        while(index < n):
+            if(itemIndex[index] == str(item)):
+                indexList.append(index)
+            index = index+1
+        a[item]=indexList
+    print("a=",a)
+    return a
+#如[0, 1, 3]转成6个位置[0,1,3],[0,3,1],[1,0,3],[1,3,0],[3,0,1],[3,1,0]
+def getPositionArray(positions):
+    newPositons = []
+    jiechen_array = jiechenarray(len(positions))
+    for item in jiechen_array:
+        m_position = []
+        for item_item in item:
+            m_position.append(positions[item_item-1])
+        newPositons.append(m_position)
+    return newPositons
 #获取单个组合的各边重复项及重复项顺序
 def getitemIndexArrayAndPosition(itemIndex,m,n):
     a = getitemIndexArray(itemIndex,m,n)
@@ -94,6 +117,28 @@ def getitemIndexArrayAndPosition(itemIndex,m,n):
             a[item] = newItem
     print("getitemIndexArrayAndPosition=",a)
     return a
+#获取模板的插入顺序,必定大于1个
+def getModuleIndex(itemIndex,m,n):
+    indexArrayAndIndex = getitemIndexArrayAndIndex(itemIndex,m,n)
+    positions=[]
+    for item in indexArrayAndIndex:
+        item1 = indexArrayAndIndex[item]
+        if(len(item1)>0):
+            position_array = getPositionArray(item1)
+            if(len(positions) == 0):
+              positions= position_array
+            else:
+              temp_positions=[]
+              for temp_item in positions:
+                  for this_temp_item in position_array:
+                      new_temp_item = temp_item.copy()
+                      for item1_item in item1:
+                          item1_item_index=item1.index(item1_item)
+                          new_temp_item.insert(this_temp_item[item1_item_index],item1_item)
+                      temp_positions.append(new_temp_item)
+              positions=temp_positions
+    return positions
+
 #获取单个组合的各边重复项--包含各项位置
 # 如{0: {0: 0, 1: {}}, 1: {0: 0, 1: {}}, 2: {0: 2, 1: {0: 0, 1: 4}}, 3: {0: 3, 1: {0: 1, 1: 2, 2: 3}}, 4: {0: 0, 1: {}}}
 def getitemIndexAndPositionArray(itemIndex, m, n):
@@ -129,9 +174,12 @@ def getitemIndexArrayNumber(itemIndex,m,n):
 # getAllPosition(3, 3)
 # getAllArrayNumber(4,3)
 # getitemIndexArray("11213",5,5)
+# getitemIndexArrayAndIndex("11213",5,5)
+print(getModuleIndex("11212",5,5))
 # getitemIndexArrayAndPosition("11213",5,5)
 # getitemIndexAndPositionArray("113", 4, 3)
 # number = getitemIndexArrayNumber("11143",5,5)
 # print(number)
 # getAllArrayNumber(11,2)
-# print(jiechenarray(3))
+# print(jiechenarray(3))
+# print(getPositionArray([0,3,4]))

+ 19 - 9
phxb/utils/main.py

@@ -105,15 +105,17 @@ def myprocess(m, n):
         number = getarray.getitemIndexArrayNumber(positons[positon], m, n)
         if (number == 1):
             newFileName = _rootPath + "newfile" + str(positons[positon]) + ".dwg"
-            if(not os.path.exists(newFileName)):
-                copyfile(_rootPath + _originFile, newFileName)
-                moveSingleTemplate(newFileName,positons[positon])
+            # if(not os.path.exists(newFileName)):
+            #     copyfile(_rootPath + _originFile, newFileName)
+            #     moveSingleTemplate(newFileName,positons[positon])
                 # break
-        # else:
-        #     for index in range(number):
-        #         newFileName = _rootPath + "newfile" + str(positons[positon]) + str(index + 1) + ".dwg"
-        #         copyfile(_rootPath + _originFile, newFileName)
-        # break
+        else:
+            moduleIndexs = getarray.getModuleIndex(positons[positon],m,n)
+            for moduleIndex in moduleIndexs:
+                newFileName = _rootPath + "newfile" + str(positons[positon]) + str(moduleIndex) + ".dwg"
+                copyfile(_rootPath + _originFile, newFileName)
+                moveMultipleTemplate(newFileName,positons[positon],moduleIndex)
+            break
 def moveSingleTemplate(fileName,position):
     # openFile(fileName)
     GetAllModule.resetConfUsed()
@@ -124,7 +126,15 @@ def moveSingleTemplate(fileName,position):
     acad.doc.SaveAs(fileName)
     time.sleep(1)
     getHandler.backToOrigin()
-
+def moveMultipleTemplate(fileName,position,moduleIndex):
+    GetAllModule.resetConfUsed()
+    GetAllModule.moveBlockReferenceWithNewIndex(position,moduleIndex)
+    time.sleep(3)
+    acad = Autocad(create_if_not_exists = False)
+    acad.prompt("Hello, Autocad from Python\n")
+    acad.doc.SaveAs(fileName)
+    time.sleep(1)
+    getHandler.backToOrigin()
 # openOriginFile()
 # tempStorageModules()
 # print(is_open(_rootPath+_originFile))