Quantcast
Channel: Adobe Community : Popular Discussions - Illustrator Scripting
Viewing all 12845 articles
Browse latest View live

Path points- get anchor point width (variable width stroke)

$
0
0

Hello,

 

I'm new to Illustrator scripting, trying to do this in JavaScript.

 

I'd like to retrieve the "width" property for each anchor point in a path.

 

When I use the Width Tool, I can change the width for each anchor point along a path. That's easy. Now what I'd like to do is (in a script) loop through each point in a path shape, retrieve the XY coords for the point, but in addition- retrieve the stroke width for each anchor point.

 

I am assuming this is possible, because when I hover the Width Tool over an anchor point, I get a pop-up that shows me- very clearly, what the stroke width is at that point. It shows Side 1, Side 2, and Width.

 

Ultimately I am trying to export a text file. The text file format would be something like this:

 

Path_01 : X , Y , width

pt_1 : 118 , -116 , 1

pt_2 : 664 , -377 , 36

pt_3 : 528 , -585 , 1

 

Should be simple, and any help greatly appreciated!

 

Thanks


Script UI, images + radio buttons

$
0
0

I am making a script to speed up proofing. I have a large portion of the work done but I've gotten a request to add an option to have more than one product per proof. I figure adding options for 2, 3, or 4 products per proof should cover most instances. The issue I'm having is with the UI. I have already been to ScriptUI for dummies | Peter Kahrel and it has been incredibly helpful. That is where I got the info for embedding the images. I don't know if what I want to do is possible. I would like my dialog to look like this:

CCproofMultiDialog_wish.png

Which I slapped together in photoshop. The closest I've gotten is this:

Screen shot 2015-06-25 at 7.56.35 AM.png

And it's not just that it's ugly, I can deal with ugly if it's functional, but as you can see you can select more than one radio button at the same time. I tried to play with replacing the "undefined" with [left, top, width, height] on each of my objects but then my dialog was entirely blank. Here is the code that makes the current UI:

#target Illustrator


if ( app.documents.length != 0 ){
  myDlg = new Window('dialog', 'Proof Multi Up');  myDlg.orientation = 'column';  myDlg.alignment = 'left';  var twoUpX = "\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x15\x00\x00\x00\x15\b\x02\x00\x00\x00&u2\u00C1\x00\x00\x01\x1BiTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00<?xpacket begin=\"\u00EF\u00BB\u00BF\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\n<x:xmpmeta xmlns:x=\"adobe:ns:meta/\" x:xmptk=\"XMP Core 5.1.2\">\n <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n  <rdf:Description rdf:about=\"\"/>\n </rdf:RDF>\n</x:xmpmeta>\n<?xpacket end=\"r\"?>1\u00A8qi\x00\x00\x00\tpHYs\x00\x00\x0B\x13\x00\x00\x0B\x13\x01\x00\u009A\u009C\x18\x00\x00\x019iCCPPhotoshop ICC profile\x00\x00x\u00DA\u00AD\u0091\u00B1J\u00C3P\x14\u0086\u00BF\x1BE\u00C5\u00A1V\b\u00E2\u00E0p'QPl\u00D5\u00C1\u008CI[\u008A X\u00ABC\u0092\u00ADIC\u0095\u00D2$\u00DC\u00DC\u00AA}\bG\u00B7\x0E.\u00EE>\u0081\u0093\u00A3\u00E0\u00A0\u00F8\x04\u00BE\u0081\u00E2\u00D4\u00C1!Hp\x12\u00C1o\u00FA\u00CE\u00CF\u00E1p\u00E0\x07\u00A3b\u00D7\u009D\u0086Q\u0086A\u00ACU\u00BB\u00E9H\u00D7\u00F3\u00E5\u00EC\x133L\x01@'\u00CCR\u00BB\u00D5:\x00\u0088\u00938\u00E2'\x02>_\x11\x00\u00CF\u009Bv\u00DDi\u00F07\u00E6\u00C3Ti`\x02lw\u00A3,\x04Q\x01\u00FA\x17:\u00D5 \u00C6\u0080\x19\u00F4S\r\u00E2\x0E0\u00D5I\u00BB\x06\u00E2\x01(\u00F5r\x7F\x01JA\u00EEo@I\u00B9\u009E\x0F\u00E2\x030{\u00AE\u00E7\u00831\x07\u0098A\u00EE+\u0080\u00A9\u00A3K\rPK\u00D2\u0091:\u00EB\u009DjY\u00B5,K\u00DA\u00DD$\u0088\u00E4\u00F1(\u00D3\u00D1 \u0093\u00FBq\u0098\u00A84Q\x1D\x1Du\u0081\u00FC?\x00\x16\u00F3\u00C5v\u00D3\u0091kU\u00CB\u00DA[\u00E7\u009Fq=_\u00E6\u00F6~\u0084\x00\u00C4\u00D2c\u0091\x15\u0084Cu\u00FE\u00DD\u0085\u00B1\u00F3\u00FB\\\u00DC\x18/\u00C3\u00E1-LO\u008Al\u00F7\nn6`\u00E1\u00BA\u00C8V\u00ABP\u00DE\u0082\u00FB\u00F1\x17\u00C2\u00B3O\u00FE\x1C\t\u00B3'\x00\x00\x00 cHRM\x00\x00z%\x00\x00\u0080\u0083\x00\x00\u00F9\u00FF\x00\x00\u0080\u00E8\x00\x00R\b\x00\x01\x15X\x00\x00:\u0097\x00\x00\x17o\u00D7Z\x1F\u0090\x00\x00\x00HIDATx\u00DAb\u00FC\u00FF\u00FF?\x03\x05\u0080\u0085\u0081\u0081AII\u0091<\u00CD\u00F7\u00EE\u00DDg\u00F8\u00FF\u00FF\u00BF\u00A2\u00A2\u00C2\x7F\x1C\u0080\u00A0\x14\x13\x03e`T\u00FF\u00A8\u00FEQ\u00FDCW?\x0B\u0084\u00C2S\x04\u00E1/\u009D\x18),\u00FF\x00\x00\x00\x00\u00FF\u00FF\x03\x00\u00AF\u008A@\u00DFM8\u0092\u0083\x00\x00\x00\x00IEND\u00AEB`\u0082";  var twoUpY = "\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x15\x00\x00\x00\x15\b\x02\x00\x00\x00&u2\u00C1\x00\x00\x01\x1BiTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00<?xpacket begin=\"\u00EF\u00BB\u00BF\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\n<x:xmpmeta xmlns:x=\"adobe:ns:meta/\" x:xmptk=\"XMP Core 5.1.2\">\n <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n  <rdf:Description rdf:about=\"\"/>\n </rdf:RDF>\n</x:xmpmeta>\n<?xpacket end=\"r\"?>1\u00A8qi\x00\x00\x00\tpHYs\x00\x00\x0B\x13\x00\x00\x0B\x13\x01\x00\u009A\u009C\x18\x00\x00\x019iCCPPhotoshop ICC profile\x00\x00x\u00DA\u00AD\u0091\u00B1J\u00C3P\x14\u0086\u00BF\x1BE\u00C5\u00A1V\b\u00E2\u00E0p'QPl\u00D5\u00C1\u008CI[\u008A X\u00ABC\u0092\u00ADIC\u0095\u00D2$\u00DC\u00DC\u00AA}\bG\u00B7\x0E.\u00EE>\u0081\u0093\u00A3\u00E0\u00A0\u00F8\x04\u00BE\u0081\u00E2\u00D4\u00C1!Hp\x12\u00C1o\u00FA\u00CE\u00CF\u00E1p\u00E0\x07\u00A3b\u00D7\u009D\u0086Q\u0086A\u00ACU\u00BB\u00E9H\u00D7\u00F3\u00E5\u00EC\x133L\x01@'\u00CCR\u00BB\u00D5:\x00\u0088\u00938\u00E2'\x02>_\x11\x00\u00CF\u009Bv\u00DDi\u00F07\u00E6\u00C3Ti`\x02lw\u00A3,\x04Q\x01\u00FA\x17:\u00D5 \u00C6\u0080\x19\u00F4S\r\u00E2\x0E0\u00D5I\u00BB\x06\u00E2\x01(\u00F5r\x7F\x01JA\u00EEo@I\u00B9\u009E\x0F\u00E2\x030{\u00AE\u00E7\u00831\x07\u0098A\u00EE+\u0080\u00A9\u00A3K\rPK\u00D2\u0091:\u00EB\u009DjY\u00B5,K\u00DA\u00DD$\u0088\u00E4\u00F1(\u00D3\u00D1 \u0093\u00FBq\u0098\u00A84Q\x1D\x1Du\u0081\u00FC?\x00\x16\u00F3\u00C5v\u00D3\u0091kU\u00CB\u00DA[\u00E7\u009Fq=_\u00E6\u00F6~\u0084\x00\u00C4\u00D2c\u0091\x15\u0084Cu\u00FE\u00DD\u0085\u00B1\u00F3\u00FB\\\u00DC\x18/\u00C3\u00E1-LO\u008Al\u00F7\nn6`\u00E1\u00BA\u00C8V\u00ABP\u00DE\u0082\u00FB\u00F1\x17\u00C2\u00B3O\u00FE\x1C\t\u00B3'\x00\x00\x00 cHRM\x00\x00z%\x00\x00\u0080\u0083\x00\x00\u00F9\u00FF\x00\x00\u0080\u00E8\x00\x00R\b\x00\x01\x15X\x00\x00:\u0097\x00\x00\x17o\u00D7Z\x1F\u0090\x00\x00\x00CIDATx\u00DAb\u00FC\u00FF\u00FF?\x03\x05\u0080\u0085\u0081\u0081AII\u0091<\u00CD\u00F7\u00EE\u00DDg\u0081\u00B3H\u00D5\f\u00B1\u0095\u0089\u008120\u00AA\x7F`\u00F5\u00B3 G&\u00F9\u00***\u00D3\u00CFh\u00FA!\x0B0RX\u00FE\x01\x00\x00\x00\u00FF\u00FF\x03\x00\u00FF\x18\x0F\u00F7\u00E2\u00A5\x1E\x0F\x00\x00\x00\x00IEND\u00AEB`\u0082";  var threeUpX = "\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x15\x00\x00\x00\x15\b\x02\x00\x00\x00&u2\u00C1\x00\x00\x01\x1BiTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00<?xpacket begin=\"\u00EF\u00BB\u00BF\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\n<x:xmpmeta xmlns:x=\"adobe:ns:meta/\" x:xmptk=\"XMP Core 5.1.2\">\n <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n  <rdf:Description rdf:about=\"\"/>\n </rdf:RDF>\n</x:xmpmeta>\n<?xpacket end=\"r\"?>1\u00A8qi\x00\x00\x00\tpHYs\x00\x00\x0B\x13\x00\x00\x0B\x13\x01\x00\u009A\u009C\x18\x00\x00\x019iCCPPhotoshop ICC profile\x00\x00x\u00DA\u00AD\u0091\u00B1J\u00C3P\x14\u0086\u00BF\x1BE\u00C5\u00A1V\b\u00E2\u00E0p'QPl\u00D5\u00C1\u008CI[\u008A X\u00ABC\u0092\u00ADIC\u0095\u00D2$\u00DC\u00DC\u00AA}\bG\u00B7\x0E.\u00EE>\u0081\u0093\u00A3\u00E0\u00A0\u00F8\x04\u00BE\u0081\u00E2\u00D4\u00C1!Hp\x12\u00C1o\u00FA\u00CE\u00CF\u00E1p\u00E0\x07\u00A3b\u00D7\u009D\u0086Q\u0086A\u00ACU\u00BB\u00E9H\u00D7\u00F3\u00E5\u00EC\x133L\x01@'\u00CCR\u00BB\u00D5:\x00\u0088\u00938\u00E2'\x02>_\x11\x00\u00CF\u009Bv\u00DDi\u00F07\u00E6\u00C3Ti`\x02lw\u00A3,\x04Q\x01\u00FA\x17:\u00D5 \u00C6\u0080\x19\u00F4S\r\u00E2\x0E0\u00D5I\u00BB\x06\u00E2\x01(\u00F5r\x7F\x01JA\u00EEo@I\u00B9\u009E\x0F\u00E2\x030{\u00AE\u00E7\u00831\x07\u0098A\u00EE+\u0080\u00A9\u00A3K\rPK\u00D2\u0091:\u00EB\u009DjY\u00B5,K\u00DA\u00DD$\u0088\u00E4\u00F1(\u00D3\u00D1 \u0093\u00FBq\u0098\u00A84Q\x1D\x1Du\u0081\u00FC?\x00\x16\u00F3\u00C5v\u00D3\u0091kU\u00CB\u00DA[\u00E7\u009Fq=_\u00E6\u00F6~\u0084\x00\u00C4\u00D2c\u0091\x15\u0084Cu\u00FE\u00DD\u0085\u00B1\u00F3\u00FB\\\u00DC\x18/\u00C3\u00E1-LO\u008Al\u00F7\nn6`\u00E1\u00BA\u00C8V\u00ABP\u00DE\u0082\u00FB\u00F1\x17\u00C2\u00B3O\u00FE\x1C\t\u00B3'\x00\x00\x00 cHRM\x00\x00z%\x00\x00\u0080\u0083\x00\x00\u00F9\u00FF\x00\x00\u0080\u00E8\x00\x00R\b\x00\x01\x15X\x00\x00:\u0097\x00\x00\x17o\u00D7Z\x1F\u0090\x00\x00\x00EIDATx\u00DA\u00EC\u00D4\u00B1\r\x00 \f\x03A\x071\b\u00C9\u00FE3\u00C1(OM\u0087H\u0085\u0094/-]k\x03\u0094\u00A8K\u008A\u00F07<\u00E7\x12\u00E0>8\u00BB_\u009Ar\u0095/_\u00FE_o@\u00E6\x7F,\u00F9\x7F\x1B\x00\x00\u00FF\u00FF\x03\x00\u00A1\u008DCt\u00DD\u0091{\x0F\x00\x00\x00\x00IEND\u00AEB`\u0082";  var threeUpY = "\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x15\x00\x00\x00\x15\b\x02\x00\x00\x00&u2\u00C1\x00\x00\x01\x1BiTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00<?xpacket begin=\"\u00EF\u00BB\u00BF\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\n<x:xmpmeta xmlns:x=\"adobe:ns:meta/\" x:xmptk=\"XMP Core 5.1.2\">\n <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n  <rdf:Description rdf:about=\"\"/>\n </rdf:RDF>\n</x:xmpmeta>\n<?xpacket end=\"r\"?>1\u00A8qi\x00\x00\x00\tpHYs\x00\x00\x0B\x13\x00\x00\x0B\x13\x01\x00\u009A\u009C\x18\x00\x00\x019iCCPPhotoshop ICC profile\x00\x00x\u00DA\u00AD\u0091\u00B1J\u00C3P\x14\u0086\u00BF\x1BE\u00C5\u00A1V\b\u00E2\u00E0p'QPl\u00D5\u00C1\u008CI[\u008A X\u00ABC\u0092\u00ADIC\u0095\u00D2$\u00DC\u00DC\u00AA}\bG\u00B7\x0E.\u00EE>\u0081\u0093\u00A3\u00E0\u00A0\u00F8\x04\u00BE\u0081\u00E2\u00D4\u00C1!Hp\x12\u00C1o\u00FA\u00CE\u00CF\u00E1p\u00E0\x07\u00A3b\u00D7\u009D\u0086Q\u0086A\u00ACU\u00BB\u00E9H\u00D7\u00F3\u00E5\u00EC\x133L\x01@'\u00CCR\u00BB\u00D5:\x00\u0088\u00938\u00E2'\x02>_\x11\x00\u00CF\u009Bv\u00DDi\u00F07\u00E6\u00C3Ti`\x02lw\u00A3,\x04Q\x01\u00FA\x17:\u00D5 \u00C6\u0080\x19\u00F4S\r\u00E2\x0E0\u00D5I\u00BB\x06\u00E2\x01(\u00F5r\x7F\x01JA\u00EEo@I\u00B9\u009E\x0F\u00E2\x030{\u00AE\u00E7\u00831\x07\u0098A\u00EE+\u0080\u00A9\u00A3K\rPK\u00D2\u0091:\u00EB\u009DjY\u00B5,K\u00DA\u00DD$\u0088\u00E4\u00F1(\u00D3\u00D1 \u0093\u00FBq\u0098\u00A84Q\x1D\x1Du\u0081\u00FC?\x00\x16\u00F3\u00C5v\u00D3\u0091kU\u00CB\u00DA[\u00E7\u009Fq=_\u00E6\u00F6~\u0084\x00\u00C4\u00D2c\u0091\x15\u0084Cu\u00FE\u00DD\u0085\u00B1\u00F3\u00FB\\\u00DC\x18/\u00C3\u00E1-LO\u008Al\u00F7\nn6`\u00E1\u00BA\u00C8V\u00ABP\u00DE\u0082\u00FB\u00F1\x17\u00C2\u00B3O\u00FE\x1C\t\u00B3'\x00\x00\x00 cHRM\x00\x00z%\x00\x00\u0080\u0083\x00\x00\u00F9\u00FF\x00\x00\u0080\u00E8\x00\x00R\b\x00\x01\x15X\x00\x00:\u0097\x00\x00\x17o\u00D7Z\x1F\u0090\x00\x00\x00BIDATx\u00DAb\u00FC\u00FF\u00FF?\x03\x05\u0080\u0085\u0081\u0081AII\u0091<\u00CD\u00F7\u00EE\u00DDg\u0081\u00B3H\u00D5\f\u00B1\u0095\u0089\u008120\u00D4\u00F5\u00B3 \x07\x06\u00F9\u00***\u00C3\x7F4\u00FCGd\u00F83RX\u00FE\x01\x00\x00\x00\u00FF\u00FF\x03\x00p\u0099\x13`\u0095\u00B6Q\u00E8\x00\x00\x00\x00IEND\u00AEB`\u0082";  var fourUp = "\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x15\x00\x00\x00\x15\b\x02\x00\x00\x00&u2\u00C1\x00\x00\x00\tpHYs\x00\x00\x0B\x13\x00\x00\x0B\x13\x01\x00\u009A\u009C\x18\x00\x00\x019iCCPPhotoshop ICC profile\x00\x00x\u00DA\u00AD\u0091\u00B1J\u00C3P\x14\u0086\u00BF\x1BE\u00C5\u00A1V\b\u00E2\u00E0p'QPl\u00D5\u00C1\u008CI[\u008A X\u00ABC\u0092\u00ADIC\u0095\u00D2$\u00DC\u00DC\u00AA}\bG\u00B7\x0E.\u00EE>\u0081\u0093\u00A3\u00E0\u00A0\u00F8\x04\u00BE\u0081\u00E2\u00D4\u00C1!Hp\x12\u00C1o\u00FA\u00CE\u00CF\u00E1p\u00E0\x07\u00A3b\u00D7\u009D\u0086Q\u0086A\u00ACU\u00BB\u00E9H\u00D7\u00F3\u00E5\u00EC\x133L\x01@'\u00CCR\u00BB\u00D5:\x00\u0088\u00938\u00E2'\x02>_\x11\x00\u00CF\u009Bv\u00DDi\u00F07\u00E6\u00C3Ti`\x02lw\u00A3,\x04Q\x01\u00FA\x17:\u00D5 \u00C6\u0080\x19\u00F4S\r\u00E2\x0E0\u00D5I\u00BB\x06\u00E2\x01(\u00F5r\x7F\x01JA\u00EEo@I\u00B9\u009E\x0F\u00E2\x030{\u00AE\u00E7\u00831\x07\u0098A\u00EE+\u0080\u00A9\u00A3K\rPK\u00D2\u0091:\u00EB\u009DjY\u00B5,K\u00DA\u00DD$\u0088\u00E4\u00F1(\u00D3\u00D1 \u0093\u00FBq\u0098\u00A84Q\x1D\x1Du\u0081\u00FC?\x00\x16\u00F3\u00C5v\u00D3\u0091kU\u00CB\u00DA[\u00E7\u009Fq=_\u00E6\u00F6~\u0084\x00\u00C4\u00D2c\u0091\x15\u0084Cu\u00FE\u00DD\u0085\u00B1\u00F3\u00FB\\\u00DC\x18/\u00C3\u00E1-LO\u008Al\u00F7\nn6`\u00E1\u00BA\u00C8V\u00ABP\u00DE\u0082\u00FB\u00F1\x17\u00C2\u00B3O\u00FE\x1C\t\u00B3'\x00\x00\x00 cHRM\x00\x00z%\x00\x00\u0080\u0083\x00\x00\u00F9\u00FF\x00\x00\u0080\u00E8\x00\x00R\b\x00\x01\x15X\x00\x00:\u0097\x00\x00\x17o\u00D7Z\x1F\u0090\x00\x00\x00KIDATx\u00DAb\u00FC\u00FF\u00FF?\x03\x05\u0080\u0085\u0081\u0081AII\u0091<\u00CD\u00F7\u00EE\u00DDg\u00F8\u00FF\u00FF\u00BF\u00A2\u00A2\u00C2\x7F\x1C\u0080\u00A0\x14\x13\x03e`T\u00FF\u00C0\u00EAg\u0081Px\u0092\x10\u0081\u00D45\u009A~F\u00D3\x0F\x05\u00E9\u0087\u0091\u00C2\u00F2\x0F\x00\x00\x00\u00FF\u00FF\x03\x00Lcx\u0099H\u00AC\u00D4\u00B5\x00\x00\x00\x00IEND\u00AEB`\u0082";  with(myDlg.add('group'))  {  orientation = 'row';  with(myDlg.add('group'))  {  // left, top, width, and height  orientation = 'column';  alignment = 'left';  add("Image", undefined, twoUpX);  twoUpXbutton = add('RadioButton', undefined, "Two items per proof arranged horizontally.");  twoUpXbutton.alignment = 'left';  add('statictext', undefined, "");  add("Image", undefined, twoUpY);  twoUpYbutton = add('RadioButton', undefined, "Two items per proof arranged vertically.");  twoUpYbutton.alignment = 'left';  add('statictext', undefined, "");  add("Image", undefined, threeUpX);  threeUpXbutton = add('RadioButton', undefined, "Three items per proof arranged horizontally.");  threeUpXbutton.alignment = 'left';  add('statictext', undefined, "");  add("Image", undefined, threeUpY);  threeUpYbutton = add('RadioButton', undefined, "Three items per proof arranged vertically.");  threeUpYbutton.alignment = 'left';  add('statictext', undefined, "");  add("Image", undefined, fourUp);  fourUpbutton = add('RadioButton', undefined, "Four items per proof.");  fourUpbutton.alignment = 'left';  }  }  with(myDlg.add('group'))  {  orientation = 'row';  alignment = 'left';  btnOk = add('button', undefined, "OK",{name: 'ok'});  add('button', undefined, "Cancel",{name: 'cancel'});  }  btnOk.onClick = function(){  alert("result" + "\n" + "Two up X value " + twoUpXbutton.value + "\n" + "Two up Y value " + twoUpYbutton.value + "\n" + "Three up X value " + threeUpXbutton.value + "\n" + "Three up Y value " + threeUpYbutton.value + "\n" + "Four up value " + fourUpbutton.value);  myDlg.close();  }  myDlg.show();
} else {  alert ( "A document must be open." );
}

Any advice would be appreciated.

 

P.S. I've got a superfluous group in there from some sloppy editing, whoops!

Batch combine files into one illustrator document - how to open target document?

$
0
0

I am making a script which will:

 

1) Open a folder of Illustrator files

2) Open each file in the folder (these files are called the source files)

3) Select all the contents of the source file

4) Copy the contents of the source file

5) Paste these contents into a target file as a new layer

6) Ensure the new layer has the same name as the old source file

 

 

However, I don't know how to tell Illustrator where my target file is. How can I do this?

 

Also, when I paste, how can I turn off paste rembers layers. (So the layers get pasted into the new layer that has the same name as the old document).

 

Here is my code:

 

 

// JavaScript Document

 

 

//Set up vairaibles

var destDoc, sourceDoc, sourceFolder;

 

 

// Select the source folder.

sourceFolder = Folder.selectDialog('Select the folder with Illustrator files that you want to mere into one', '~');

 

 

// If a valid folder is selected

if (sourceFolder != null) {

          files = new Array();

 

 

          // Get all files matching the pattern

          files = sourceFolder.getFiles();

 

 

          if (files.length > 0) {

                    // Get the destination to save the files

                    destDoc = document.selectDialog('Select the final saved document', '~');

                    for (i = 0; i < files.length; i++) {

                              sourceDoc = app.open(files[i]); // returns the document object

 

                              var myLayers = sourceDoc.layers; // All layers in Active Document

 

 

                              //Go through all layers of source document and copy artwork

                              for (i = 0; i < myLayers.length; i++) {

                                        myLayers[i].hasSelectedArtwork = true;

                              };

 

 

                              with(sourceDoc) {

                                        var count = pageItems.length;

                                        for (var i = 0; i < count; i++) {

                                                  pageItems[i].selected = true;

                                        }

                                        redraw();

                                        copy();

                                        for (var i = 0; i < count; i++) {

                                                  pageItems[i].selected = false;

                                        }

 

 

                              }

 

 

                              //Create a new title variable that has the title of the source document

                              var title = sourceDoc.name;

                              var title = title.substring(0, title.length - 4); //(remove extension from name)

                              //Close the Source Document

                              sourceDoc.close(SaveOptions.DONOTSAVECHANGES);

 

 

 

 

                              //Open the Destination Document and create a new layer in it that is named after the title variation

                              var newLayer = destDoc.layers.add();

                              newLayer.name = title;

 

 

                              //Paste into this new layer

                              destDoc = app.paste();

 

 

                    }

          }

          else {

                    alert('No matching files found');

          }

 

}

 

Thanks in advance for any help   

 

Edit: Also, when pasting, how can I paste in place instead of just pasting.

How to get fill overprint property of a compound path item via applescript

$
0
0

How to get fill overprint property of a compound path item via applescript

Script Help: Layer names based on Excel Data

$
0
0

Hello!

 

I'm a scripting noob and have been trying to learn but unfortunately I just don't have the time. Projects at work keeps me at bay. Anyhow, here is my scenario and hopefully someone can guide me.

 

I want a script that would look at a database (XML, CSV, excel or whatever works) and create separate layers in illustrator based on the data.

 

Example: part number and description is from a database. Illustrator Layer Name is what I want the script to automate. The reason for this request is a 200 item project that I don't want to re-type.

part numberdescriptionIllustrator Layer Name
33456Item 133456_Item 1
33457Item 233457_Item 2
33458Item 333458_Item 3
33459Item 433459_Item 4
33460Item 533460_Item 5
33461Item 633461_Item 6
33462Item 733462_Item 7
33463Item 833463_Item 8

 

After I have all my items laid out with correct layer names, i export each layer as a separate PDF. The file name of the export would be the same as the layer name with  "_1up" appended at the end. For example, 33456_Item 1_1up.ai.

 

I would have a separate illustrator file that contains all the same layer name as above and I would then place the exported file to it's respected layer. This is where the another script would be great. Is it possible make to a script that will place an image to a layer that has similar naming structures (the only differences would be the layer name wouldn't have "_1up")?

 

Hopefully this makes sense and I know I'm asking alot. Thank you very much in advance!

Can I get some value from user? (illustrator cs3 script)

$
0
0

I am Designer. But I have to write program.

 

I will making plugin about draw rectangle.

 

 

 

1. User run illustrator cs3.

 

2. User click File-Scripts-myDraw

 

3. Show dialog box. Dialog box have two inputField. User input values.(ex>53.32,   41.2)

 

4. click 'summit' button.

 

5. illustrator cs3 draw 53.32 * 41.2 size rectangle!!

 

 

 

I don't know How I made dialogbox...

 

Is it possible get value from user?

 

 

what is 'cin' code as illustrator javascript?  (cin : C++ style input code.)

 

 

please help me.

Arrowheads with Javascript

$
0
0

Hi all,

 

I'm using Illustrator CS 6 / ExtendScript Toolkit CS 6.

 

Is there any way to add arrowheads to a path with script (JavaScript or VBScript)? I don't want to make triangle or V-shaped path but add one of the built-in start and end arrowheads, scale them and set arrowhead alignment, all with script. There is no information about this topic in the Illustrator scripting references.

 

Thanks

 

Regards

Diszno

scriptui multiple buttons action

$
0
0

I want to create a dialog consisting of multiple buttons. As a result I want value which button was pressed by user.

 

The script (shortened to problematic part):

 

// I'm looping through elements on layer 'warstwa' from kolorStart to kolorStop, 'k' is used for number buttons                    for (i = kolorStart, k = 0; i <= kolorStop; k++, i++) {                              myButton[k] = myButtonGroup.add ("button", undefined, warstwa.pageItems[i].contents);                              myButton[k].label = warstwa.pageItems[i].contents;                              myButton[k].onClick = function () { wybranyKolor = myButton[k].label; myWindow.close(); }                    }

The result:

skrypt2.gif

 

but buttons don't work, wybranyKolor returning 'undefined'. If I change "wybranyKolor =  myButton[k].label" to "wybranyKolor =  myButton[k-1].label" I get proper answer but it is the same for all buttons so it looks that all buttons have the same acion assigned. How to get each button to has unique name which can be passed to variable?

 

Propably I can achive the same with radio buttons' list but with buttons it is one click less for the user.


Is there any way to convert recorded actions into JSX Javascript file?

Looking for "Replace with Symbol" script

$
0
0

So I am trying to replace gps points with a symbol I have created. I have found blogs referencing a script that can replace selected items with symbols saved in the symbols panel, but I can't seem to find the actual script! If anyone knows where I can find JET_ReplaceWithSymbol.jsx or any other script that can do the same function, it would be greatly appreciated!

Can javascript execute pathfinder commands?

$
0
0

Can javascript execute menu commands such as pathfinder options?

How do I access Adobe Illustrator CC reference library within Microsoft VB for Apps - Option not appearing in checkbox list under Tools / References

$
0
0

Hi,  I am wanting to use VBA with Adobe Ill CC2014.  I use an OSX version of Illustrator and a PC version of Office / Excel.  Within Microsoft's VB for Apps program I can't see any reference library relating to Adobe Ill.  Does anyone know how I can source the reference and make it available within the 'Available References' list?

How to construct a Rectangle element

$
0
0

I would like to use the Rectangle object described in the help to ExtendScript CS5:

 

>  Rectangle
>  Adobe Illustrator CS5 Type Library
>  Describes a rectangle. This class is also a four-element collection.

 

It has nine properties and methods.

 

This is not the same as PathItems.rectangle().

 

How can I construct a var of type Rectangle?

 

                var rect = new Rectangle

 

results in the error, "Rectangle does not have a constructor"

 

How can I create a var of type Rectangle and then set the values?  I would like to store it in an Array.

Show color picker dialog JSX / CSAW

$
0
0

Can someone guide me on how to show the color picker dialog in Illustrator programmatically?

In photoshop that's really easy, just:

 

     app.showColorPicker(true);

 

In Illustrator I couldn't find any reference to such a method or other possibility to show the dialog programmatically, that you would normally get when double clicking on the fill color square within Illustrator.

 

Is that possible by using app.executeMenuCommand or some other method?

 

I am writing a script that opens the color picker dialog in reaction to a click on a button. I want to be able to get the chosen color and use it within the script.

 

thanks for the help!

Dominik

List missing fonts in Illustrator

$
0
0

Hi all,

 

I've been working on a script to try and build a list of font's that not loaded in Illustrator. I know that Illustrator will alert missing fonts when a document is opened but this routine will be part of a larger script that will have the user dialogs turned off. My process is to build a list of fonts that are available to the the application, then build a list of fonts that are used within the active document and cross reference them to see if there are document fonts that are not in the application fonts list.

 

I have used a great function that I believe was posted originally by Moluapple and with some some brilliant advice from the always helpful CarlosCanto I thought that I had found the soultion but it appears to have some limitations. If I get a list of fonts available to the application and the document that I want to cross reference them against is open, the list that's returned contains fonts that are used in the document. Then when I get a list of fonts used in the document and cross reference them they will all be in the application list regardless of whether they're loaded or not.

The only way that I can get accurate results are if I run the script without any documents open and build a list of application fonts, then open a document and build a list of document fonts and then cross reference. This is the only way I can find out what fonts aren't loaded.

 

Does anybody know of another way to build a list of missing fonts without having to close documents first? I have searched through the XMP data and this doesn't seem to give me any clues and I've tried writing the code in applescript but it appears to work in the same way. Any help or comments would be welcome.

 

Here's my code:

 

#target illustrator

 

 

var doclist = app.textFonts

 

 

var appFontList = new Array ();

for (i=0;i< app.textFonts.length; i++){

    var fontName = app.textFonts[i].name;

    appFontList[i] = fontName;

    }

 

 

var myfile = File.openDialog ('Choose a file');

app.open (myfile);

 

 

var docFontsList = getUsedFonts(activeDocument);

 

 

// function accredited to Moluapple

 

 

function getUsedFonts (doc ){

     var xmlString = new XML(doc.XMPString);

     fontsInfo = xmlString.descendants("stFnt:fontName");

     var ln = fontsInfo.length(), arr = [];

     for (var i = 0; i<ln; i++){arr.push(fontsInfo[i])};

     return arr;

}

 

 

var missingFontsList = checkFonts();

alert(missingFontsList);

 

 

function checkFonts(){

    var fontArray = new Array ();

    for (i=0; i < docFontsList.length; i++){

        var thisDocFont = docFontsList[i];

        var activeFont = false;

        for (j = 0; j < appFontList.length; j++){

            var thisAppFont = appFontList[j];

            if (thisDocFont == thisAppFont){

                activeFont = true;

                }

            }

        if (activeFont == false){

            fontArray.push (thisDocFont);

            }

        }

    return fontArray;

    }

 

 

Many Thanks,

Nik


Execute Action from Javascript in CS6

$
0
0

I've seen on this forum a lot people saying that in CS6 you can now call an action from JavaScript. However, I haven't been able to find what the syntax is to do that in the reference or the guide. Can you actually do this now with Javascript? And if so, how?

select symbol on artboard and copy symbol name to art board name

$
0
0

I am generating icons in AI CS6

I have AI files with 100 artboards

Some art boards are still empty, while in progress.

On most artboard I have the raw paths and on a separate layer called Symbols with one Symbol only.

 

The symbol layer could be the only visible layer.

100 symbols in the document.

Now I want to copy those names to the art board names for export and to a text box on the art board for printing an overview.

 

I found a script to rename a layer to its content - but it does not recognize symbols

I found a script to rename an artboard to a layer

I found a script to place a text box with the art board name on the art board.

 

I cannot combine them, please help!

 

I can do applescript and Filemaker scripting, but I am new to Javascript.

 

 

 

Rename Layer to content - does not recognize Symbols!

 

function LayerNameMatch() { 

    if (app.documents.length == 0) { 

        alert("No Open / Active Document Found"); 

    } else { 

        var doc, i, l, ab, sel, n; 

        doc = app.activeDocument; 

        for (i = 0, l = doc.artboards.length; i < l; i++) { 

            ab = doc.artboards[i]; 

            doc.artboards.setActiveArtboardIndex(i); 

            doc.selectObjectsOnActiveArtboard(); 

            sel = doc.selection[0]; 

            sel.parent.name = sel.name; 

            doc.selection = false; 

        } 

    } 

LayerNameMatch();

 

 

 

Rename artboard to layer name:

 

 

if (app.documents.length == 0) { 

    alert("No Open / Active Document Found"); 

} else { 

    var doc = app.activeDocument; 

    if (doc.artboards.length == doc.layers.length && doc.layers.length == doc.artboards.length) { 

        for (var i = 0, l = doc.artboards.length; i < l; i++) { 

            var ab = doc.artboards[i]; 

            ab.name = doc.layers[i].name; 

        } 

        alert("Finished:\nRenaming of Artboards to match Layer names is complete"); 

    } else { 

        alert("Opps: This wont work!\n The number of Layers and Artboards do not match"); 

    } 

 

Make a Textbox with art board name

 

   //This script takes a document's artboard names and prints them into each artboard. 

    // Tell the script to only work on the open, focused document 

    var myDocument = app.activeDocument;

                                        var idoc = app.activeDocument;

                                        var ilayer = idoc.layers.add();

                                        ilayer.name = "0 SeitenName";

     

    // STEP ONE: Create the labels for each artboard    

    // grab ahold of the artboards 

    for (var i = 0; i < app.activeDocument.artboards.length; i++) 

    { 

              var artboard = app.activeDocument.artboards[i]; 

       

              // For each artboard, add a new text frame 

              var myLabel = myDocument.textFrames.add(); 

      

              // fill it with the artboard name 

              myLabel.contents = artboard.name; 

       

              // this line controls the font size 

              myLabel.textRange.characterAttributes.size = 12; 

       

              // this line positions the text relative to each artboard 

              myLabel.position = [artboard.artboardRect[0], artboard.artboardRect[1]]; 

       

    } 

Place PDF Pages in Illustrator

$
0
0

Carlos, you created a script i believe called AI_openMultiPagePDF.

 

And that is awesome, However i was wondering if you could change it just a bit and instead of opening the files, could you use the PLACE command instead?

 

The problem i have had is that some PDF's have embedde fonts that i dont have but if i place it, then flatten transparency>Convert Outlines i can use the PDF excatly as it was and not have it convert the fonts.

 

Is that an easy script change?

 

Here is your script

 

 

#target illustrator

#targetengine session

 

 

// script.name = AI_openMultiPagePDF_CS4_CS5_v1.02.jsx;

// script.description = opens a multipage PDF;

// script.required = requires CS4 or later

// script.parent = CarlosCanto // 01/07/12;  v1.2-01/15/12

// script.elegant = false;

 

 

// Notes: I didn't try opening a ridiculous amount of pages, I "only" open 35 pages....in about a minute and a half.

//                     Use with caution, save everything before running, script is memory intensive...

 

 

// Lion fix by John Hawkinson 01/15/12

 

 

//----------------------- START UI CODE, create user interface

var win = new Window ("dialog", "MTools - Open Multipage PDF");

 

 

var fileGroup = win.add("group"); // this is the group on the left, it holds the File button and the Font label note

 

 

var btnFile = fileGroup.add("button", undefined, "File..."); // button to select the PDF to open

var lblFonts = fileGroup.add("statictext",undefined,"Unavailable\nFonts\nwill be\nsubstituted.", {multiline:true}); //

 

 

var grpRight = win.add("group"); // group on the right, to hold everything else

var txtFile = grpRight.add("edittext",undefined); // to hold selected PDF file path

 

 

var grpPanel = grpRight.add("group");

var pagesPanel = grpPanel.add("panel", undefined, "Page Range");

var lblFrom = pagesPanel.add("statictext",undefined,"From:");

var txtFrom = pagesPanel.add("edittext",undefined, 1);

var lblTo = pagesPanel.add("statictext",undefined,"To:");

var txtTo = pagesPanel.add("edittext",undefined, 1);

 

 

var btnGroup = grpPanel.add("group");

var btnOk = btnGroup.add("button", undefined, "Open");

var btnCancel = btnGroup.add("button", undefined, "Cancel");

 

 

var lblStatus = grpRight.add("statictext",undefined,"Open Multipage PDF requires CS4 or later...");

 

 

win.orientation = pagesPanel.orientation = "row"; // two items fileGroup and grpRight

win.alignChildren = "right";

fileGroup.orientation = "column";

fileGroup.alignment = "top";

txtFile.alignment = ["fill","top"];

lblStatus.alignment = "left";

 

 

grpRight.orientation = "column";

btnGroup.orientation = "column";

btnOk.enabled = false; // disable this button until a valid file is supplied

 

 

txtFrom.characters = txtTo.characters = 3;

btnFile.active = true; // receive the first "Enter"

 

 

win.helpTip = "\u00A9 2012 Carlos Canto";

grpRight.helpTip = "Not tested with a ridiculous amount of pages";

 

 

 

 

//------------------------ get the PDF file

btnFile.onClick = function(){

          txtFile.text = ""; // clear previous File path if any

          btnOk.enabled = false; // disable the Ok button

          var fileRef = File.openDialog ("Select PDF...", "*.pdf"); // get the file

          fileRef = new File(fileRef.fsName.replace("file://","")); // Lion fix by John Hawkinson

          if(fileRef!= null && fileRef.exists) // check if it is valid file, it should be, unless after clicking a file, the name gets edited

                    {

                              txtFile.text = fileRef.fsName; // show the file Path here

                              btnOk.enabled = true; // enable the Ok button

                              txtTo.active = true; // move focus to change the last page to open

                    }

}

 

 

//------------------------

btnOk.onClick = function(){

          doSomething(); // call main function.

          win.close(); // close when done

}

 

 

//------------------------ on leaving this text, check again if file exist, in case file path is typed instead of clicking the File...button

txtFile.onDeactivate = function(){

          //alert("on deactivate")

          var file = File(txtFile.text); // create a file based on the text edit control

          if (file.exists){ // and chekc for existance, if it does

                    btnOk.enabled = true; // enable the Ok button

          }

          else { // if it does not exist

                    btnOk.enabled = false; // disable the Ok button

          }

}

 

 

//------------------------

 

 

win.center ();

win.show();

//-------------------------END UI CODE

 

 

function doSomething() // Open each page in the range, group all art, move to a new document, then

          {                                                                      // with all pages on top of each other, create artboards and move each page

                                                                                          // to its final own layer, own artboard.

// get first page and last page to open

$.hiresTimer; // start timer

                    var from = txtFrom.text;

                    var to = txtTo.text;

 

 

// create destination document, pdf open options, etc

                    app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;

                    var fileRef = File(txtFile.text); // get file from text edit

                    //alert(fileRef.name)

 

 

                    var idoc = app.documents.add(); // add a document;

                    var pdfOptions = app.preferences.PDFFileOptions;

                    pdfOptions.pDFCropToBox = PDFBoxType.PDFBOUNDINGBOX;

 

 

                    var spacing = 10; // space between artboards

                    var arrPagesInfo = []; // to hold each PDF page name, doc size and art position

 

                    for (j=from; j<=to; j++) // open all pages in range, group art, and move the dest document

                              {

                                        pdfOptions.pageToOpen = j;

// Open a file using these preferences

 

 

                                        var pdfDoc = open(fileRef, DocumentColorSpace.RGB);

                                        lblStatus.text = "\u00A9 2012 Carlos Canto - Opening page " + j;

                                        win.update();

                                        var pdfLayer = pdfDoc.activeLayer;

 

 

// add a group and group all items

                                        var items = pdfLayer.pageItems; // get all items in layer, there's only one layer, right?

                                        var tempGrp = pdfDoc.groupItems.add(); // to group everything in page

                                        tempGrp.name = "Page " + j; // name the group, "Page 1", "Page 2", etc

 

                                        for (i=items.length-1; i>0; i--) // group all items

                                                  {

                                                            items[i].move(tempGrp,ElementPlacement.PLACEATBEGINNING);

                                                  }

 

// get document bounds

 

                                        var pdfw = pdfDoc.width;

                                        var pdfh = pdfDoc.height;

                                        var activeAB = pdfDoc.artboards[0];

 

 

                                        pdfLeft = activeAB.artboardRect[0];

                                        pdfTop = activeAB.artboardRect[1];

 

 

                                        if (j==from)

                                                  {

                                                            firstabRect = activeAB.artboardRect;

                                                            abRect = firstabRect;

                                                            //$.writeln(abRect);

                                                  }

                                        else

                                                  {

// TODO                              // x = 8498 seems to be the canvas max X position, check and make another row if a page gets to here

                                                            if ((abRect[2]+spacing+pdfw)>=8494) // if rightmost artboard position surpases the canvas size,

                                                                      {

                                                                                var ableft = firstabRect[0]; // position next artboard below the first one

                                                                                var abtop = firstabRect[3]-spacing;

                                                                                var abright = ableft + pdfw;

                                                                                var abbottom = abtop - pdfh;

                                                                                firstabRect = [ableft, abtop, abright, abbottom];

                                                                      }

                                                            else // if we don't get to the canvas edge, position next artboard, to the right of the last one

                                                                      {

                                                                                var ableft = pageSpecs[3][2]+spacing; // pageSpecs[3] = abRect // abRect[2] = right position

                                                                                var abtop = pageSpecs[3][1]; // abRect[1] = top position

                                                                                var abright = ableft + pdfw;

                                                                                var abbottom = abtop - pdfh;

                                                                      }

                                                            abRect = [ableft, abtop, abright, abbottom];

                                                  }

 

 

// get this group position relative to top/left

                                        var deltaX = tempGrp.left-pdfLeft;

                                        var deltaY = pdfTop-tempGrp.top;

 

 

// make an array to hold each page Name, width, height, deltaX, deltaY

                                        pageSpecs = [tempGrp.name, deltaX, deltaY,abRect]; // pageSpecs holds last page info, it gets overwritten as we add pages

                                        arrPagesInfo.unshift(pageSpecs); // unshift to make first page, the last in the array

 

 

// duplicate grouped page 1 onto dest document

                                        newItem = tempGrp.duplicate( idoc,ElementPlacement.PLACEATBEGINNING);

 

 

// close current PDF page

                                        pdfDoc.close (SaveOptions.DONOTSAVECHANGES);

 

 

                              } // end for all pages to open

 

 

// Stage 2, create layers and artboards for each PDF page (group) and reposition

// loop thru the groups, add artboards for each and reposition

                              var ilayer = idoc.layers[idoc.layers.length-1]; // the one layer so far

                              for(k=arrPagesInfo.length-1; k>=0; k--) // last item in the array holds the first PDF page info

                                        {

// add new layer and new AB

                                                  var newAB = idoc.artboards.add(arrPagesInfo[k][3]);

                                                  var newLayer = idoc.layers.add();

                                                  newLayer.name = arrPagesInfo[k][0]

 

// reposition group relative to top/left

                                                  var igroup = ilayer.groupItems[k];

 

 

                                                  igroup.left = newAB.artboardRect[0]+arrPagesInfo[k][1];

                                                  igroup.top = newAB.artboardRect[1]-arrPagesInfo[k][2];

                                                  igroup.move(newLayer,ElementPlacement.PLACEATEND);

// add new artboard to the left of existing one

                                                  lblStatus.text = "Repositioning page " + k;

                                                  win.update();

                                        }

                              idoc.artboards[0].remove();

                              ilayer.remove();

 

                    app.userInteractionLevel = UserInteractionLevel.DISPLAYALERTS;

                    var time = $.hiresTimer/1000000; // end timer

                    lblStatus.text = "Copyright 2012 \u00A9 Carlos Canto";

                    alert(arrPagesInfo.length +" pages opened in " + time.toFixed(2) + " seconds" ); // 35 pages opened in 98-99 seconds

                    //$.writeln(time);

          }// end doSomething Function

How could I import pictures from files onto a 10m paper roll?

$
0
0

Hello, I'm quite new to AI and JavaScript.

 

I have different size, orientation, resolution of pictures. But I have their exact location( (x,y) coordinates ) and sizes in a txt file. 

 

How could I write a JavaScript, first to read the txt file to get the size and locaiton, then to import them on the 10m paper roll automatically?  Is AI the best tool?

 

Many thanks!

Script Panel - Work in progress

$
0
0

Hi All,

Working on a Script Panel to make scripts simpler to run in illustrator.

This is a work in progress...

Untitled-3-01.jpg

 

Looking for some people to help test and make suggestions.

 

at the moment this is a Windows only program... Sorry Mac users

and right now it is still an AHK file.

 

so I'm looking for people who already use AHK (AutoHotKey)

 

both files need to be saved in the same directory. would be best if they had their own folder.

Settings file needs to be manually updated at this point and will need the path to your desired script folder and the path to your illustrator updated for it to work.


once AHK file is running it will scan the script folder for scripts.

will also scan sub folders but only 1 deep, this way groups of scripts can be organized.

Window will appear center screen, just drag the panel to where you want it.

so far you can mouse click any script to run it.

it is also tied to the "Tilde" or "Back Tick" / "~" or "`" no shift needed.

This will make the window active and allow you keyboard access to the scripts. ie. "Tilde 24 Enter" will run script 24


I have plans for settings window so any variable such as paths, font etc. can be set from the program.

And also will make the sub folders collapsible for simpler viewing.


Can't wait for thoughts and suggestions.


http://qwertyfly.com/files/Script%20Menu/





Viewing all 12845 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>