Illustrator javascript 및 C#의 PageItem

메일 대상


illustrator의 대상은 그룹Item,PathItem 등 각양각색의 종류가 있다
그런 작은 종류로 분류되지 않고 우선 모든 대상이 있다. 바로
PageItem 및 PageItems
예를 들어서 레이어에 Group, Path, CompoundPath 등 다양한 것들이 들어가 있어요.
참조할 속성은 디스플레이 상태 또는 잠금 상태 등입니다.
모든 객체가 공통으로 사용되는 경우 PageItem을 사용하는 것이 더 쉽습니다.
※ 어떤 대상인지 판단할 필요 없음
따라서 PageItem을 자주 사용합니다.
예를 들어, PageItems를 회전하여 각 PageItem의 속성에 액세스하는 경우

javascript는 다음과 같다


pageItem.js
for(var i = 0; i < layer.pageItems.length; i++){
    var pageItem = layer.pageItems[i];

    $.writeln(pageItem.locked);
    $.writeln(pageItem.visible);
}

C#일 경우...(↓ 컴파일 오류)


그러나 C#의 경우 PageItems는 있지만 PageItem은 없습니다...
pageItem.cs
foreach (PageItem pageItem in pageItems)
{
    Console.WriteLine(pageItem.Locked));
    Console.WriteLine(pageItem.Visible));
}
그럼 var로 하면 되지 않을까요?
var로 바꾸면 틀이 Object가 됩니다.
그나저나 원래 PageItem 자체가 없기 때문에 틀 추론도 쓰레기도 없다.

어떻게 하면 좋을까요?


그 활기찬 녀석이 여기 등장하다니


C# 정답입니다.


pageItem.cs
foreach (dynamic pageItem in pageItems)
{
    Console.WriteLine(pageItem.Locked));
    Console.WriteLine(pageItem.Visible));
}

이름처럼dynamic


여기에dynamic의 설명이 없지만 대체적으로 실행하기 전에 모델인 자바스크립트의 var을 몰랐습니다
PageItem을 설치하지 않고 dynamic 사양을 사용하는 이유를 알 수 없습니다.
C#에서 PageItem을 사용할 때 이 방법을 사용할 수 있을 것 같습니다.
다만 실행할 때 형식을 알지 못하기 때문에 IDE 속성의 후보는 큰 글자와 작은 글자 등의 오자가 나오지 않는다. 번역 오류도 알려주지 않기 때문에 그곳은 약간 미묘하다.

좋은 웹페이지 즐겨찾기