#選択ラインを瞬間表示 #あらかじめ「選択状態の記憶」スクリプトで頂点や辺の選択状態を記憶しておく必要があります。 #このスクリプトを実行すると兄階層の形状の選択状態を一瞬表示した後、元の選択状態に戻ります。 #例えば断面の辺を選択して「選択状態の記憶」を行った後、頂点編集モードで断面上の頂点を移動して #編集する際に、このスクリプトをショートカットキーで起動すると瞬間的に先ほど登録した断面の辺が #ハイライト表示されて、断面を確認しながら頂点の調整が行えるようになります。 #動作条件 #選択形状がポリゴンメッシュ #編集モードに入っていること #現在選択している形状の真上(兄階層)に同じ頂点数、辺の数のポリゴンメッシュが置かれていること #(選択状態の記憶をやった後に頂点数や辺の数を変更しない場合は兄階層に上記条件の形状が置かれた状態になってます) #兄階層の形状の名前の頭が「~v」か「~e」となっていること xscene=xshade.scene() ashape=xshade.scene().active_shape() dousasuru=0 if ashape.type==7 and xscene.is_modify_mode==True: if ashape.has_sis==True: tempname=ashape.sis.name if tempname[0]=='~': if tempname[1]=='v' or tempname[1]=='e': if ashape.total_number_of_control_points==ashape.sis.total_number_of_control_points: if ashape.number_of_edges==ashape.sis.number_of_edges: dousasuru=1 if dousasuru==1: imamode=xscene.selection_mode activelist=[] if imamode==0: for i in range(ashape.number_of_faces): if ashape.face(i).active==True: activelist.append(i) if imamode==1: for i in range(ashape.number_of_edges): if ashape.edge(i).active==True: activelist.append(i) if imamode==2: for i in range(ashape.total_number_of_control_points): if ashape.vertex(i).active==True: activelist.append(i) xscene.exit_modify_mode() if tempname[1]=='v':xscene.selection_mode=2 else:xscene.selection_mode=1 #兄形状の選択状態を記憶 xscene.enter_modify_mode() xscene.select_sister(1) ashape=xshade.scene().active_shape() # ashape.modifiable=1 activelist2=[] if tempname[1]=='v': for i in range(ashape.total_number_of_control_points): if ashape.vertex(i).active==True: activelist2.append(i) else: for i in range(ashape.number_of_edges): if ashape.edge(i).active==True: activelist2.append(i) # ashape.modifiable=0 xscene.select_brother(1) ashape=xshade.scene().active_shape() # xscene.enter_modify_mode() #一度選択状態をクリア if tempname[1]=='v': for i in range(ashape.total_number_of_control_points): ashape.vertex(i).active=False else: for i in range(ashape.number_of_edges): ashape.edge(i).active=False #選択状態変更 # print activelist2 for i in activelist2: if tempname[1]=='v':ashape.vertex(i).active=True if tempname[1]=='e':ashape.edge(i).active=True #ラインハイライト kaisuu=20 while(kaisuu>0): if xscene.selection_mode==2:xscene.selection_mode=1 kaisuu-=1 if xscene.selection_mode==2:xshade.idle(60) else:xshade.idle(60) # if xscene.selection_mode==2:xscene.selection_mode=1 # else:xscene.selection_mode=2 #元の選択状態に戻す if imamode==0: xscene.selection_mode=0 for i in range(ashape.number_of_faces): ashape.face(i).active=False for i in activelist: ashape.face(i).active=True if imamode==1: xscene.selection_mode=1 for i in range(ashape.number_of_edges): ashape.edge(i).active=False for i in activelist: ashape.edge(i).active=True if imamode==2: xscene.selection_mode=2 for i in range(ashape.total_number_of_control_points): ashape.vertex(i).active=False for i in activelist: ashape.vertex(i).active=True xscene.exit_modify_mode() xscene.enter_modify_mode()