멜 스크립트 내부에서 파이썬 함수를 호출하는 방법을 찾는데 약간의 문제가 있습니다. 나는 여전히 멍청한 놈으로 기본적으로멜과 아이콘 쉘프 문제에서 파이썬을 호출하는 방법
, 나는 (스포트 라이트, areaLights 등)
몇 조명 도구 버튼이고, 하나는 마야와 그 안에 새로운 선반 를 생성하는 몇 멜 scipts이 스크립팅에서 지금까지 언급 한 것은 아니지만 은 파이썬으로 만 공부했습니다. 멜은 조금 알고 있습니다. 은 없습니다. 이것은 나를 위해 커다란 장애물이다. 스크립트를 너무 많이 편집하지 않으려 고 혼란을 줄이고 내 발생하는 모든 오류를 줄이려고합니다.
내 시작 코드에는 아이콘으로 .xpm과 .png를 사용하는 버튼이 있습니다. 마지막 몇 줄에서 ext는 처음에는 .xpm이며 나는 .png로 변경합니다. 이것은 여전히 .xpm 아이콘이 필요하다는 것을 깨닫고 나쁘다고 여겨집니다. 그렇다면 MEL에는 OR 함수가 있습니까?
global proc shelf_lighting() { if (Dpublishmel("objGetMultiConfigs \"objkind\" \""+$show+"\" \"\" \"\" \"maya\" 1", $result)) { string $kindRows[] = stringToStringArray($result[0], ";;"); $objkinds = $kindRows; } string $aboutString = `about -v`; string $aboutStringArr[] = stringToStringArray($aboutString, " "); string $versionStringTemp = $aboutStringArr[0]; string $versionString = match("[0-9]+[\.]*[0-9]+", $versionStringTemp); float $version = $versionString; string $pycmd = "evalDeferred \"python(\\\"^1s\\\")\""; string $ext = ".png"; if (int($version) > 2009) { $ext = ".png"; } }
내가 에서 명령을 변경하는 것을 시도하고있다 "소스 \"rexLightFuncs.mel \ ", \ nrexSpotLightCreate \"\ ";"`; 아래 코드와 같이을 입력하십시오. 그것은 파이썬 함수이고 내가 멜에 통합하려고
이 파이썬 명령의 파일 /에서 온다import DLightBuild.DLightBuild as build light=build.DLightBuild();light.createLight('spotLight');
툴/유틸/마야/파이썬/DLightBuild의 평 파일을 포함 - DLightBuild하고, 웬일인지, 그것은 내가 나의 google 검색에서 어디인가에서 보았던보기에서 이것을 파생 시켰던 것에 따라 작용하지 않고있다.
$spotLightButton = `shelfButton -enableCommandRepeat 1 -enable 1 -width 34 -height 34 -manage 1 -visible 1 -label "Create a Spot Light" -image1 "spotLight.png" -style "iconOnly" -command "import sys;sys.path.insert(0, \"/tools/utils/maya/python/DLightBuild/\");import DLightBuild.DLightBuild as build;reload(build);light=build.DLightBuild(); light.createLight('spotLight')" -sourceType "python";
마지막으로, 나는 그것이 올바른 기능을 수행하는 경우 아이콘 이미지가 ... 바로이 있는지 여부 나는
shelfButton
에 의해 그냥 실행하면보고, 내 코드의 테스트 실행을하려고 할 때마다 (멜에서는 그런데) 코드의 두 번째 부분에서 볼 수 있듯이, 기존의 선반이나 새로운 선반 대신 scriptEditor의 끝 부분에 단추를 만듭니다 (아래의 다른 도킹 창과 같습니다). 이것에 대한 조언?
제기 된 질문에 대한 조언을 주시면 감사하겠습니다. 많은 사전에 감사합니다
현재 전체적으로 멜 코드를 실행할 때 구문 오류가 계속 발생합니다. '오류 : 줄 852.140 : 구문 오류 //'가 표시되며 나에게 잘못 된 부분을 찾아 낼 수 없습니다. ';'을 제거하거나 추가하면 선언되지 않은 변수로 다음 라인을 간주합니다. 일반적으로이 두 라인 사이의 어딘가에서 발생합니다 : '-command "python (\"import DLightBuild.DLightBuild as build; light = build.DLightBuild (); light.createLight ('spotLight') \ ")";'and'$ sunLightBtn = shelfButton' – dissidia
문자열에 반환 값이 있습니까? – theodox
구문 오류는'기호가 없기 때문에 발생합니다. 문제 해결됨 – dissidia