Frage

Ich mag Gruppe Textframes in meinem InDesign CS3 vb.net Skript. Er arbeitete für InDesign 2.0, aber es funktioniert nicht mit InDesign CS3 arbeiten. Hier ist mein Code:

Dim myDoc As InDesign.Document = Nothing
Dim myGroup As InDesign.Group = Nothing
Dim myObjectList(2)

myObjectList.SetValue(myOuterTextFrame, 0)
myObjectList.SetValue(myInnerTextFrame, 1)
myObjectList.SetValue(myContentTextFrame, 2)

myGroup = myDoc.Groups.Add(myObjectList) 

Erste Fehler "Kann nicht Gussobjekt des Typs 'System.Object []' eingeben 'InDesign.Objects'."

War es hilfreich?

Lösung 3

fand ich meine Antwort in den InDesign Scripting Samples - das Neon Beispielskript gab Beispiele Gruppierung

Andere Tipps

Ich weiß, dass Sie diese angeben vor langer Zeit, damit ich vor allem für zukünftige Suchen zu beantworten bin. Ich habe nicht eine vollständig verwaltete Weg, dies zu tun mit dem .Net Framework und glauben Sie mir, ich habe gesucht für sie gefunden. Ich habe versucht, eine Million verschiedene Würfe, Subklassen, Reflexion, nennen Sie es. Was letztlich am Ende gearbeitet war JavaScript. Nachfolgend finden Sie eine Methode, die ein Objekt InDesign.Document und zwei oder mehr Zahlen nimmt, die InDesign Element-IDs darstellen. Es erstellt dann einige JavaScript und hat InDesign ausführen. Schließlich gibt es eine InDesign.Group von diesen Objekten erstellt.

Public Function GroupObjects(ByVal indesignDocument As InDesign.Document, ByVal ParamArray objectIds() As Integer) As InDesign.Group
    'Sanity checks
    If indesignDocument Is Nothing Then Throw New ArgumentNullException("indesignDocument")
    If objectIds Is Nothing OrElse objectIds.Count < 2 Then Throw New ArgumentException("You must pass at least 2 object ids")

    'We'll assign a unique label to the group that we create in JavaScript so that we can find it in managed code later
    Dim GID = Guid.NewGuid().ToString()

    'Create the JavaScript
    Dim Buf As New StringBuilder()
    Buf.AppendLine("var items = new Array();")
    For Each ID In objectIds
        Buf.AppendFormat("items.push(app.activeWindow.activePage.pageItems.itemByID({0}));", ID)
        Buf.AppendLine()
    Next
    Buf.AppendLine("var g = app.activeWindow.activePage.groups.add(items);")
    Buf.AppendFormat("g.label='{0}';", GID)

    Dim IA = indesignDocument.Parent
    IA.DoScript(Buf.ToString(), InDesign.idScriptLanguage.idJavascript)

    'Loop through all document groups looking for the object with the label created above
    For Each G As InDesign.Group In indesignDocument.Groups
        If Not String.IsNullOrWhiteSpace(G.Label) AndAlso G.Label = GID Then Return G
    Next
    Return Nothing
End Function

Um es in Ihrem Code verwenden Sie würden sagen:

Dim MyGroup = GroupObjects(myOuterTextFrame, myInnerTextFrame, myContentTextFrame)

Dieser arbeitete für mich:

        Type type = Type.GetTypeFromProgID("InDesign.Application");
        Host = (InDesign.Application)Activator.CreateInstance(type);

        InDesign.Objects o = Host.CreateCollection();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top