#選択状態の記憶 #現在の選択状態(頂点、辺、面)を記憶します。 #記憶した情報は別のスクリプト(選択状態の復帰)などで利用します。 #上位パートに変換がかかっていると使用できないように変更(2010.03.03) #兄階層に選択状態の情報を格納したポリゴンメッシュが追加されます。 #(表示はOFF、編集はロック、レンダリングOFF) #shadeを再起動すると選択状態はクリアされます。 #選択の順番は記憶されません。 #動作条件 #選択形状がポリゴンメッシュ #編集モードに入っていること xscene=xshade.scene() ashape=xshade.scene().active_shape() dousasuru=0 if ashape.type==7 and xscene.is_modify_mode==True: dousasuru=1 if dousasuru>0: #上位パートに変換がかかっているなら動作しない if xshade.scene().active_shape().local_to_world_matrix!=((1.0, 0.0, 0.0, 0.0), (0.0, 1.0, 0.0, 0.0), (0.0, 0.0, 1.0, 0.0), (0.0, 0.0, 0.0, 1.0)): dousasuru=0 dialog=xshade.create_dialog() dialog.append_push_button('上位パートに変換がかかっているため') dialog.append_push_button('スクリプトが実行できません') dialog.ask('エラー') if dousasuru==1: #デフォルト値 tex='' tyouten=0#頂点選択モードに切り替えて記憶 imamode=xscene.selection_mode if imamode==0:initex='~f' if imamode==1:initex='~e' if imamode==2:initex='~v' #ダイアログ表示 dialog=xshade.create_dialog() idx1=dialog.append_text('名前',1) idx2=dialog.append_bool('頂点選択モードに切り替えて記憶') dialog.set_value(idx1,tex) dialog.set_value(idx2,tyouten) kekka=dialog.ask('選択状態の記憶') if kekka==True: 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) tex=dialog.get_value(idx1) tyouten=dialog.get_value(idx2) xshade.scene().exit_modify_mode() ashape.copy() ashape.paste() xshade.scene().enter_modify_mode() xscene.select_sister(1) if tyouten==1 and xshade.scene().selection_mode!=2: xshade.scene().selection_mode=2 initex='~v' xshade.scene().active_shape().rendering=0 namet=initex+'選択状態:'+tex xshade.scene().active_shape().name=namet xshade.scene().hide_active() xscene.exit_modify_mode() xshade.scene().active_shape().modifiable=0 xscene.select_brother(1) xshade.scene().enter_modify_mode() if tyouten==1: if imamode!=2: if imamode==0: xscene.selection_mode=0 for i in activelist: xshade.scene().active_shape().face(i).active=True if imamode==1: xscene.selection_mode=1 for i in activelist: xshade.scene().active_shape().edge(i).active=True xshade.scene().exit_modify_mode() xshade.scene().enter_modify_mode()