I have attempted to create a custom stroke style. There is a property in the interface called Pattern Length which doesn't seem to have a counterpart in the InDesign CS4 (6.0) Object Model (DashedStrokeStyle entry):
Style as created in InDesign:
My code. First part to try and read a style's properties and see what InDesign uses (I know it's Dotted vs. Dashed, but the properties for these two types follow the same paradigm). Second part to create a custom style:
var thisDoc = app.activeDocument;
var thisPage = thisDoc.pages[0];
// Reading an existing style:
//
var thisPremadeStrokeStyle = thisDoc.dottedStrokeStyles.item("Crazy Dots");
$.writeln(thisPremadeStrokeStyle);
// outputs: resolve("/document[@name=\"test strokes.indd\"]/
$.writeln(thisPremadeStrokeStyle.toSource());
// outputs: dotted-stroke-style[@name=\"Crazy Dots\"]")
$.writeln(thisPremadeStrokeStyle.getElements());
// outputs: [object DottedStrokeStyle]
$.writeln(thisPremadeStrokeStyle.getElements().properties);
// outputs: undefined
// Writing a new custom stroke style
//
thisDoc.dashedStrokeStyles.add({name:"Crazy Dashes"});
var thisNewStrokeStyle = thisDoc.dashedStrokeStyles.item("Crazy Dashes");
//thisNewStrokeStyle.patternLength = "0.5i";
// Object does not support the property or method "patternLength"
//
//thisNewStrokeStyle.length = "0.5i";
// Object does not support the property or method "length"
//
//thisNewStrokeStyle.range = "0.5i";
// Object does not support the property or method "range"
//
// ???
//
thisNewStrokeStyle.dashArray = [0,0.0625, 0.125,0.125, 0.375,0.125];
thisNewStrokeStyle.strokeCornerAdjustment = StrokeCornerAdjustment.DASHES_AND_GAPS;
Style as created with the above code:
The document I want to make is done entirely programmatically. I'm willing to create the styles in InDesign first, export to a StrokeStyles file and import back again to a programmatically created document (though there are problems with that approach), but wanted to see if there was some other solution first.