#選択辺の隣接面を選択 #選択している辺に隣接している面を選択状態にします #アルゴリズム変更(2010.01.30) def return_menlist(edgenumber): #その辺を共有する面の面番号をリストで返す(引数 辺番号) #新版  処理が速いが三面稜線があるところなどでは不具合が出るかも? #使う前後に必ずsetup_winged_edgeとclean_winged_edgeを行うこと edgev0=xshade.scene().active_shape().edge(edgenumber).v0 face1=xshade.scene().active_shape().fccwev(edgenumber,edgev0,False) face2=xshade.scene().active_shape().fcwev(edgenumber,edgev0,False) menlist=[] if face1>0:menlist.append(face1) if face2>0:menlist.append(face2) 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) #面の向きを統一 xshade.scene().active_shape().adjust_face_direction() xshade.scene().active_shape().setup_winged_edge() #辺番号リストから、隣接面リストを作成し、重複分を消す menlist=[] for i in activeedgelist: menlist+=return_menlist(i) erase_same_num(menlist) xshade.scene().active_shape().clean_winged_edge() #面選択モードに移行し、面を選択 xshade.scene().selection_mode=0 for i in menlist: xshade.scene().active_shape().face(i).active=True