1. 가입인사
  2. 자유게시판
  3. 구인정보

※질문은 포럼(QnA)에 하세요.
※질문 전 통합검색 필수.
※타이틀 제작시 Copyright 넣으세요.
오늘:
0
어제:
0
전체:
443,160

fxnut_TabMenu v1.1.xsiaddon

 

이라고 말하는건 훼이크구요...

 

아이쓰 뷰 여는것도 간단합니다. 걍 Tab 키 누르시고 PPG 뜨면 i 키를 누르시고

엔터 하면 아이스 창이 쨔쟌 하고 열립니다.

사용방법은 간단합니다. tab 키를 누르시고 알고 있는 노드명을 치시고
엔터 탁~ 하시면 됩니다.  또는 명령어를 입력하지 않은 상태에서는 tab 치시면

사라집니다. 혹시라도 명령어가 안먹거나 작동 불능일때는 엔터 치세요~

 

익숙해지면 작업속도 배배배배 빨라질것 입니다.

 
더 대단한건 아이쓰 뷰에서 랜더트리 뷰로 이동이 가능하다는 겁니다..
tab 키 누르셔서 R 치시면 랜더트리 뷰로 변환 됩니다.. 그리고

아시는 쉐이더들 검색해보세요....ㅋㅋㅋㅋ

 

삼백원은 죽을때까지 초보유저와 함께 합니다....

2010년은 XSIuser 분들의 부흥기가 될거라고 삼백원은 확신 합니다.

 

출처 : http://www.andynicholas.com/

 

 이 아저씨 블로그 참 대단한것 같습니다.  요기조기 둘러보심 좋은 정보들 많습니다.

 

 

 

 

 

 

SOFTIMAGE | XSI USER 만쉐이~

조회 수 :
1745
등록일 :
2010.03.01
15:14:47
엮인글 :
http://www.xsiuser.com/xe/83558/12c/trackback
게시글 주소 :
http://www.xsiuser.com/xe/83558

三百元

2010.03.01
15:29:51

일정기간 이후 자료실로 이동합니다.

샤이닝

2010.03.01
18:27:46

인스톨로 설치 했는데 이상하게 저는 Tab키를 눌러도 반응이 없네요. 엔터 눌러봐도 그렇구요. 쓰고 싶은데 너무 답답하네요. ㅜ_ㅜ 혹시 탭키에 다른 단축키가 설정되어있으면 안되는것인가요?

소프트 이미지 기본 키로 놓고 해도 안되서 원인을 못찾겠네요.

아무튼 좋은자료 알려주셔서 감사합니다 ^^

三百元

2010.03.01
19:22:19

저도 자세한 버그 리포트에 대한 정보는 없습니다.  전 그냥 드래그엔 드랍으로 설치한후 테스트해봤는데 정상적으로 사용이

가능합니다.  어떤것이든 선택하신후에 Tab 키를 눌러 보심이... 아무것도 선택되어 있지 않는 상태에서는 작동되지 않는것 같습니다.

visualFX

2010.03.02
11:33:26

http://images.autodesk.com/adsk/files/pythoninstall64.rar


저도 안됐는데 python을 까니까 되네요. win7에 xsi 7.01사용하고 있습니다.

링크 받아서 설치해보세요. readme.txt순서대로 설치하였습니다.


c:\python26 설치폴더를 환경변수에 꼭 추가해주셔야 xsi에서 인식합니다.


더불어 삼백원님 좋은정보 감사합니다 ^^

environment.png




첨부 :
environment.png [File Size:127.5KB/Download4]

三百元

2010.03.01
19:25:57

 

 

# HoudiniTabMenu2
# Initial code generated by XSI SDK Wizard
# Executed Tue May 27 19:38:28 UTC+0100 2008 by andyn
#
# Tip: To add a command to this plug-in, right-click in the
# script editor and choose Tools > Add Command.
#
# Tip: To get help on a callback, highlight the callback name
# (for example, "Init", "Define", or "Execute") and press F1.
import win32com.client
from win32com.client import constants

g_pluginName = "fxnut_XSITabMenu"

def XSILoadPlugin( in_reg ):
 in_reg.Author = "Andy Nicholas"
 in_reg.Name = g_pluginName
 in_reg.Email = ""
 in_reg.URL = "www.andynicholas.com"
 in_reg.Major = 1
 in_reg.Minor = 1

 in_reg.RegisterEvent("siOnKeyDownEvent",constants.siOnKeyDown)
 #RegistrationInsertionPoint - do not remove this line

 return True

def XSIUnloadPlugin( in_reg ):
 strPluginName = in_reg.Name
 Application.LogMessage(str(strPluginName) + str(" has been unloaded."),constants.siVerbose)
 return True


def TabMenu_OnInit():
 Application.SetGlobal("TAB_PPG",PPG);
 BuildLookupTables()
 
LOOKUP_TABLE=None

# Callback for the siOnKeyDownEvent event.
def siOnKeyDownEvent_OnEvent( in_ctxt ):

 keycode = in_ctxt.GetAttribute("KeyCode")
 
 if Application.GetGlobal("TAB_ACTIVE"): 
  if keycode>127:
   return True
   
  in_ctxt.SetAttribute("Consumed",True) 

  ppg = Application.GetGlobal("TAB_PPG")
  tabprop = Application.GetGlobal("TAB_PROP")
  tabdisplay = Application.GetGlobal("TAB_DISPLAY")  
  typedsofar = Application.GetGlobal("TAB_TYPEDSOFAR")
  curstring = Application.GetGlobal("TAB_CURSTRING")
  treename = Application.GetGlobal("TAB_TREENAME")
  treeid = Application.GetGlobal("TAB_TREEID")
  
  lookupTable = BuildLookupTables()
  dic = lookupTable[treeid]
    
  if curstring==None:
   curstring=""   
  
  #Ignore spaces
  if keycode==32:
   return True 
  
  if keycode==13 or keycode==9:
   if keycode==13:
    result = GetAbbreviatedMatch(curstring,dic)
    if result!=None:
     match=result[0]
     
     execString = match[1]
     if execString=='Application.UpdatePlugins()':
      #Special case for update plugins command due to XSI bug
      #causing it to sometimes fail on first call
      try:
       Application.UpdatePlugins()
      except:
       Application.UpdatePlugins()
     else:
      if treeid>0:
       execString = execString.replace("%TREE%",treename)
       
      exec execString
     
   Application.SetGlobal("TAB_ACTIVE",False)

   if ppg:
    ppg.Close()

   Application.SetGlobal("TAB_PPG",None)
   Application.SetGlobal("TAB_PROP",None)
   Application.SetGlobal("TAB_DISPLAY",None)  
   Application.SetGlobal("TAB_CURSTRING","") 
   return True
  
  if keycode==8:
   curstring=curstring[:-1]
  else:
   curstring+=chr(keycode)
   
  if len(curstring)!=0:
   result = GetAbbreviatedMatch(curstring,dic)
   if result!=None:
    matchName=result[0][0]
    extStr=result[1]
 
    displayString = ExpandMatchToIncludeSpaces(extStr, matchName)
    
    typedsofar.Label = displayString
    tabdisplay.Label = matchName
    Application.SetGlobal("TAB_CURSTRING",curstring)
    if ppg:
     ppg.Refresh();
  else:
   Application.SetGlobal("TAB_CURSTRING","")
   tabdisplay.Label = ""
   typedsofar.Label = ""
   if ppg:
    ppg.Refresh();
  
 elif keycode==9:
  tabprop = XSIFactory.CreateObject("CustomProperty");
  layout = tabprop.PPGLayout

  treeInfo = GetActiveNodeTree()
  treeType = treeInfo[1]
  
  tabtypedsofar = layout.AddStaticText("");
  tabdisplay = layout.AddStaticText("");
  if treeType==0:
   tabprop.Name = "Tab Menu (Main)";
  if treeType==1:
   tabprop.Name = "Tab Menu (ICE Tree)";
  if treeType==2:
   tabprop.Name = "Tab Menu (Render Tree)";
    
  Application.SetGlobal("TAB_ACTIVE",True)
  Application.SetGlobal("TAB_PROP",tabprop)
  Application.SetGlobal("TAB_DISPLAY",tabdisplay)
  Application.SetGlobal("TAB_TYPEDSOFAR",tabtypedsofar)
  Application.SetGlobal("TAB_CURSTRING","")
  Application.SetGlobal("TAB_TREENAME", treeInfo[0])
  Application.SetGlobal("TAB_TREEID", treeInfo[1])
    
  layout.Language = "Python"
  layout.SetAttribute(constants.siUILogicPrefix, "TabMenu_")
  layout.SetAttribute(constants.siUILogicFile, Application.Plugins(g_pluginName).Filename)

  Application.InspectObj(tabprop);

  in_ctxt.SetAttribute("Consumed",True);  
 
 return True
 
def ExpandMatchToIncludeSpaces(match,fullString):
 nchar = len(match)
 result=""
 for c in fullString:
  result+=c
  if c!=" ":
   nchar-=1
  if nchar==0:
   break
 return result
 
def GetAbbreviatedMatch(curstring,dic):
 matchStr = ""
 for c in curstring:
  matchStr += c
  result = GetFirstMatch(matchStr,dic)
  if result==None:
   break
  matchStr = result[1]
 return result


def AddDefinition(name,cmd, dic={}):
 curdic=dic
 for c in name.upper():
  if c==" ":
   continue
  if not curdic.has_key(c):
   curdic[c]={}
  curdic = curdic[c]
 curdic['   node']=[name,cmd]


def GetFirstMatch(name,dic):
 curdic=dic
 for c in name:
  if not curdic.has_key(c):
   return None
  curdic = curdic[c]
 
 if curdic.has_key('   node'):
  return [curdic['   node'],name]

 longestMatch=name
 longestFound=False
 
 #Don't know how deep the tree goes, so set this to a big number instead of
 #using while(true) to make sure we never enter an infinite loop
 #(it should never happen but it's good practice to check)
 i=0
 while i<1000:
  keys = curdic.keys()
  keys.sort()
  
  if keys[0]=='   node':
   return [curdic['   node'], longestMatch]

  curdic = curdic[keys[0]]
  if not longestFound:
   if len(keys)==1:
    longestMatch+=keys[0]
   else:
    longestFound=True
  i+=1

 LogMessage("Infinite loop detected: Aborting")
 return None


def BuildLookupTables():
 global LOOKUP_TABLE

 if LOOKUP_TABLE != None:
  return LOOKUP_TABLE
 
 lookupTables=[{},{},{}]

 pluginPath = Application.Plugins(g_pluginName).OriginPath

 ReadTabDefinitionFile(pluginPath+"/Main_TabDefinitions.txt",lookupTables[0])
 ReadTabDefinitionFile(pluginPath+"/ICE_TabDefinitions.txt",lookupTables[1])
 ReadTabDefinitionFile(pluginPath+"/Render_TabDefinitions.txt",lookupTables[2]) 
 
 LOOKUP_TABLE=lookupTables
 return LOOKUP_TABLE
 
 
def ReadTabDefinitionFile(filename, dic):
 try:
  defFile = open(filename)
 except:
  LogMessage("Can't find Tab Definition File: "+filename,constants.siError)
  return False

 homeDir = Application.GetInstallationPath2(constants.siFactoryPath)  
    
 try:
  for line in defFile:
   curLine = line.strip()
   if curLine!="":
    cmdName = curLine[:curLine.find(",")].strip()
    cmdLine = curLine[curLine.find(",")+1:].strip()
    
    #We need to replace this because some of the commands don't resolve it correctly,
    #and we need to have it work independently of install location
    cmdLine = cmdLine.replace("$XSI_HOME",homeDir)
    
    AddDefinition(cmdName,cmdLine,dic)
 except:
  defFile.close()
  
 return True

 

def GetActiveNodeTree():
 try:
  vm = Application.Desktop.ActiveLayout.Views.Find( "View Manager" )
  fc = vm.GetAttributeValue("focusedviewport")
 except:
  return ("",0)
  
 activeView = vm.Views(fc)
 iceTreeName = activeView.GetAttributeValue("container")
 
 if iceTreeName=="None":
  return ("",0)
 col = win32com.client.Dispatch( "XSI.Collection" )
 try:
  col.SetAsText(iceTreeName)
 except:
  return ("",0)
 container = col(0)
 
 if container.Type=="ICETree":
  return (container.FullName,1)
 if container.Families.find("NodeOperators")!=-1: #ICE Compound
  return (container.FullName,1) 
 if container.Type=="material":
  return (container.FullName,2) 
 if container.Families.find("Shader Compounds")!=-1: #Render Compound 
  return (container.FullName,2)
 return ("",0)

三百元

2010.03.01
19:28:22

파이썬 코드 분석해보고  만져보면 뭐가 나오지 않을까요?   전 파이썬을 모르는 관계로 패쓰~

테스트 해보니 아키텍쳐럴 쉐이더 같은 경우 연결이 안되더군요... 등록 지정도 할수 있을것으로 예상 됩니다.

Edmond

2010.03.02
01:31:54
profile

오 ~ 간만에 들어와서 좋은 애드온을 알게되었네요 감사해요~

이전에 쓰던 저의 엑스팝업 탭키 하키는 밀려나겠군요 안녕...

CGnDEV

2010.03.02
10:25:24

ㅋㅋㅋㅋ

이분 대박이죠.

블로그 가시면 카테고리를 봐도 포스가 좔좔입니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 일반 싸이트 업데이트 안내. [6] 강병철 2011-12-29 6654
공지 일반 !!!!!!!!!!!!!! 공지사항 !!!!!!!!!!!! 필독하세요~ 아이디지워지신분들!!! [6] 우주토끼 2011-12-20 7347
공지 일반 자유게시판 사용안내 2010.05 XSIuser 2008-07-10 64439
1129 일반 ICE 책 샀습니다... [7] 三百元 2010-03-03 1115
1128 일반 감동의 softimage 2010 설치.... [5] jinjin80 2010-03-03 1025
1127 일반 우리 서로 메신저 공개해요~ [31] CGnDEV 2010-03-03 8331
1126 일반 가입인사겸~ ^^ [9] 마초 2010-03-02 896
» CG참고 대박 xsiaddon 발견 했습니다....ㅋ [8] file 三百元 2010-03-01 1745
1124 일반 오랜만에 들어오내요..^^ [3] 빨강머리훈 2010-02-27 1007
1123 일반 마음을 ctrl+r 하였습니다. [5] 미니 2010-02-27 1051
1122 일반 이런 망할 오른쪽 손목을 다쳤습니다. [7] 三百元 2010-02-27 960
1121 일반 오랜만에 뵙습니다! [7] 새의선물 2010-02-26 973
1120 일반 XSIuser 번역~ 써비스 [5] file 三百元 2010-02-26 1171
1119 일반 음 이런 쉐이더 사이트도 있었군요... 三百元 2010-02-25 1132
1118 일반 엑시유져 벙개~! [14] 김태선 2010-02-25 1233
1117 일반 생일 축하 합니다. [9] file 三百元 2010-02-24 1463
1116 CG소식 Digitall Tutors 이제 영업방식을 완전히 바꿨군요. [3] file 三百元 2010-02-24 1240
1115 CG소식 ZBrush UVMaster [9] Merchi 2010-02-24 2043
1114 CG소식 천재 스크립터 발견...^^;; [4] file 三百元 2010-02-23 1196
1113 일반 페이블3에 XSI가 쓰이는군요~ [4] 이제쿵치딱 2010-02-22 1196
1112 일반 초보 XSIuser 유저분들이 정보를 얻을만한곳들... [11] 三百元 2010-02-22 1105
1111 일반 절대 미스터리.. [8] 三百元 2010-02-22 1040
1110 CG소식 Create Face Rig Panel [1] file 三百元 2010-02-21 1114