2013-10-27 2 views
1

나는 스마트 오브젝트 센터로 변환 된 레이어를 스크립팅으로 진행 한 캔버스에 정렬하는 방법을 찾기 위해 하루 종일 인터넷 검색을 해왔지만 지금까지는 해결책을 찾지 못했습니다. 아래 코드로 끝나지 만 작업을 수행하지 않습니다. 아무도 도와 줄 수 있니?스마트 오브젝트 레이어 중심을 캔버스에 정렬하는 방법은 무엇입니까?

var baseFile = new File(openDialog()); //open base JPEG file 
var workFile = new File(openDialog()); //open work JPEG file 
var baseDoc = app.open(baseFile); 
var workDoc = app.open(workFile); 

createSO(workDoc.layers[0]); 
workDoc.resizeImage(280,280); 
workDoc.artLayers[0].duplicate(baseDoc, ElementPlacement.INSIDE); 
app.activeDocument = baseDoc; 

var Hoffset = (baseDoc.width - workDoc.width)/2; 
var Voffset = (baseDoc.height - workDoc.height)/2; 
baseDoc.layers[1].position = Array(Hoffset, Voffset); 

function createSO(){ 
    var doc = app.activeDocument; 
    var idnewPlacedLayer = stringIDToTypeID("newPlacedLayer"); 
    executeAction(idnewPlacedLayer, undefined, DialogModes.NO); 
    return doc.activeLayer; 
} 

답변

0

나는이 방법으로 비트를 단순화 할 수 있다고 생각 :

var baseFile = new File(openDialog()); //open base JPEG file 
var workFile = new File(openDialog()); //open work JPEG file 
var baseDoc = app.open(baseFile); 
var workDoc = app.open(workFile, undefined, true); 

workDoc.resizeImage(280, 280); 
var duplicated = workDoc.artLayers[0].duplicate(baseDoc, ElementPlacement.INSIDE); 
var Hoffset = (baseDoc.width - workDoc.width)/2; 
var Voffset = (baseDoc.height - workDoc.height)/2; 

app.activeDocument = baseDoc; 

duplicated.translate(Hoffset, Voffset); 

여기에 주요 포인트는 translate 방법을 사용한다; 그러나 app.open (즉 asSmartObject)의 세 번째 인수를 사용하여 createSO 함수를 만들지 않아도됩니다.

관련 문제