-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAIGaugeTest.jsx
More file actions
130 lines (115 loc) · 4.23 KB
/
AIGaugeTest.jsx
File metadata and controls
130 lines (115 loc) · 4.23 KB
1
#target "Illustrator"#targetengine main// Create the dialog box firstvar result = gaugeDialog();$.writeln("Result was: " + result);var radius = parseInt(result.radius);var steps = parseInt(result.steps);var value_offset = parseInt(result.offset);var value_multiplier = parseInt(result.value_multiplier);var minticks = parseInt(result.minticks);var rotation_offset = parseInt(result.rotation_offset);var total_angle = parseInt(result.total_angle);var align_values = parseInt(result.align_values);var width = 1000;var height = 1000;var centre = width/2;var offset = rotation_offset - (360-total_angle)/2;draw_gauge();function position_from_angle(radius,angle){ x = centre + radius*Math.cos(angle*Math.PI/180); y = centre + radius*Math.sin(angle*Math.PI/180); return [x,y] ;}function radius_put_value(doc,radius,angle,value,align) { this_text = doc.textFrames.pointText(position_from_angle(radius,angle)); this_text.contents = value.toString(); this_text.paragraphs[0].paragraphAttributes.justification = Justification.CENTER; if (align == 1) { this_text.rotate(angle-90); }}function place_tick(doc,radius,angle,start,end,width) { var this_path = doc.pathItems.add(); this_path.setEntirePath ([position_from_angle(radius-start,angle), position_from_angle(radius-end,angle)]); this_path.strokeWidth = width;}function draw_gauge() { var doc = app.documents.add(null,width,height); $.writeln("Draw Gauge Called: " + radius + " steps " + steps); var step; for (step = 0; step <= steps; step++) { $.writeln("Calling Put Radius Value"); radius_put_value(doc, radius, (-step*total_angle/steps)+offset, value_offset+(step*steps*value_multiplier), align_values); } $.writeln("Add Minor Ticks"); // Add the Minor Ticks doc.layers.add().name = "TicksMinor" ; minsteps = steps * minticks ; for (step = 0; step <= minsteps; step++) { place_tick(doc, radius, (-step*total_angle/minsteps)+offset, 10, 20, 5) ; } $.writeln("Add Major Ticks"); // Add the Major Ticks doc.layers.add().name = "TicksMajor" ; for (step = 0; step <= steps; step++) { place_tick(doc, radius, (-step*total_angle/steps)+offset, 10, 40, 10) ; } return 1;}function gaugeDialog() { function add_child(name,def_value,units){ this.line = myDialog.add('group'); name_title = this.line.add('statictext',undefined,name); name_title.characters = 20; var ret_val = this.line.add('edittext',undefined,def_value); ret_val.characters = 6; this.line.add('statictext',undefined,units); return ret_val; } var myDialog = new Window ('dialog', 'Radial Gauge'); myDialog.alignChildren = "left"; var radius = add_child('Radius',400,'mm'); var steps = add_child('Steps',10,'number'); var offset = add_child('Start Offset',0,'value'); var minticks = add_child('SubDivisions',10,'value'); var value_multiplier = add_child('Multiplier',1,'value'); var total_angle = add_child('Total Angle',240,'degrees'); var rotation_offset = add_child('Rotation Offset',-90,'degrees'); var align_values = add_child('Align Values',1,'0/1'); var rgo = myDialog.add ('group'); rgo.alignment = "right"; rgo.add('button', undefined, 'Cancel', {name: 'cancel'}); rgo.add('button', undefined, 'OK', {name: 'ok'}); var myResult = myDialog.show(); if (myResult == 1) { $.writeln("Will return: " + radius.text ) return { radius : radius.text, steps : steps.text, offset : offset.text, minticks : minticks.text, value_multiplier : value_multiplier.text, total_angle : total_angle.text, rotation_offset : rotation_offset.text, align_values : align_values.text }; } if (myResult == 2) { exit(); } }