#選択辺の隣接面を選択 #選択している辺に隣接している面を選択状態にします def return_menlist(edgenumber): #その辺を共有する面の面番号をリストで返す(引数 辺番号) menlist=[] edgevertex=[xshade.scene().active_shape().edge(edgenumber).v0,xshade.scene().active_shape().edge(edgenumber).v1] totalmenmen=xshade.scene().active_shape().number_of_faces for i in range(totalmenmen): konomen=0 temppoint=list(xshade.scene().active_shape().face(i).vertex_indices) for j in temppoint: if edgevertex[0]==j: konomen+=1 if edgevertex[1]==j: konomen+=1 if konomen==2: menlist.append(i) return menlist def erase_same_num(list1): #リスト内に同じ値が重複する場合は一つに減らす関数 例[1,1,1,3,3,4]→[1,3,4] list1.sort() nagasa=len(list1) if nagasa>1: kesu=[] for i in range(nagasa-1): if list1[i]==list1[i+1]: kesu.append(list1[i]) kesukaisuu=len(kesu) if kesukaisuu>0: for i in kesu: list1.remove(i) dousasuru=0 if xshade.scene().selection_mode==1 and xshade.scene().is_modify_mode==True and xshade.scene().active_shape().type==7: dousasuru=1 if dousasuru==1: #選択されてる辺の辺番号リストをつくる totaledge=xshade.scene().active_shape().number_of_edges activeedgelist=[] for i in range(totaledge): if xshade.scene().active_shape().edge(i).active_order>0: activeedgelist.append(i) #辺番号リストから、隣接面リストを作成し、重複分を消す menlist=[] for i in activeedgelist: menlist+=return_menlist(i) erase_same_num(menlist) #面選択モードに移行し、面を選択 xshade.scene().selection_mode=0 for i in menlist: xshade.scene().active_shape().face(i).active=True