├── .editorconfig ├── .gitattributes ├── .github └── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── .gitignore ├── CHANGELOG.md ├── README.md └── img ├── extension-update-panel.png ├── featured-new.png ├── specify-alerts-panel.png ├── specify-example.jpg ├── specify-options-panel.png ├── specify-styles-panel.png ├── specify-updates-panel.png └── specify-workplace-example.png /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # Unix-style newlines with a newline ending every file 7 | [*] 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace=true 11 | indent_style=space 12 | indent_size=2 13 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto eol=lf 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "[Bug Report] " 5 | labels: bug 6 | assignees: adamdehaven 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | 12 | 13 | **To Reproduce** 14 | 21 | 22 | **Expected behavior** 23 | 24 | 25 | **Screenshots** 26 | 27 | 28 | **Desktop (please complete the following information):** 29 | 33 | 34 | **Additional context** 35 | 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "[Feature Request] " 5 | labels: enhancement 6 | assignees: adamdehaven 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | 12 | 13 | **Describe the solution you'd like** 14 | 15 | 16 | **Describe anything you've already tried** 17 | 18 | 19 | **Additional context** 20 | 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # node modules 2 | node_modules 3 | 4 | # MacOS desktop services store 5 | .DS_Store 6 | 7 | # Log files 8 | *.log 9 | 10 | # Map files 11 | *.map 12 | 13 | # Editors 14 | .vscode 15 | 16 | # VuePress temp directory 17 | .temp 18 | 19 | # Dist 20 | dist 21 | 22 | # exe 23 | *.exe 24 | 25 | # Secure 26 | *.p12 27 | .env -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Specify Changelog 2 | 3 | ## 4.6.0 4 | 5 | - Add the ability to dimension the area of each selected object. 6 | - Fixes an issue where restoring defaults did not always reset all settings. 7 | 8 | ## 4.5.3 9 | 10 | - Resolves an issue where UI elements are hidden when Windows display 'Scale and Layout' settings are set to a value greater than 100%. 11 | 12 | ## 4.5.2 13 | 14 | - Tweaked button group widths. 15 | 16 | ## 4.5.1 17 | 18 | - Update layout to prevent inaccessible buttons. 19 | 20 | ## 4.5.0 21 | 22 | - Updated extension window layout to better accommodate smaller (in height) screen sizes. 23 | - Changed `Reset` button to 'Restore Defaults'. 24 | - Added close button on top of extension window. 25 | - Removed `updatePanel` method from being called after changing colors, etc. 26 | - Added new `Alerts` panel. 27 | 28 | ## 4.4.1 29 | 30 | - Automatically convert units when `RulerUnits` are changed. 31 | 32 | ## 4.4.0 33 | 34 | - Convert default values to proper units based on `RulerUnits`. 35 | - Scale denominator allows for decimal values (e.g. converting from centimeters to meters). 36 | - Custom units text should default to current ruler units if not enabled. 37 | - Add note in Styles panel for 'Unknown' ruler units. 38 | 39 | ## 4.3.3 40 | 41 | - Modified update instructions. 42 | 43 | ## 4.3.2 44 | 45 | - Added instructions on how to update the extension within the extension 'Updates' tab. 46 | 47 | ## 4.3.1 48 | 49 | - Resolves issue with Restore Defaults not checking for existence of field. 50 | - Resolves issue with Custom Units Label setting not persisting. 51 | 52 | ## 4.3.0 53 | 54 | ### New Features 55 | 56 | - Choose to display non-whole-number measurements in decimals or fractions. 57 | - When using decimals, measurements can now be displayed with up to 5 decimal places (previously, the maximum was 4). 58 | - When using fractions, the user can set the maximum denominator value which impacts how the rounding algorithm interprets the measurement (default is `64`). 59 | - Optionally include a dash between the whole number and the fraction, when applicable. Example: `1 3/4` or `1-3/4` 60 | - The decimal places setting has been moved from the `Styles` panel to the `Options` panel. 61 | - Allows for more customization in the custom label text by allowing additional character types. 62 | 63 | ### Fixes 64 | 65 | - Resolves issue with custom units field setting not persisting in some scenarios. 66 | - Resolves issue with dimension between multiple objects setting not persisting in some scenarios. 67 | - Properly trim leading and trailing whitespace in the custom units field. 68 | 69 | ## 4.2.3 70 | 71 | - Updating extension panel height and spacing. 72 | 73 | ## 4.2.2 74 | 75 | - Updating label text to a single space between units and measurement. 76 | 77 | ## 4.2.1 78 | 79 | - Detect whether settings can be reset based on new layer lock option (oops). 80 | 81 | ## 4.2.0 82 | 83 | ### New Feature 84 | 85 | - Add SPEC layer option panel, along with option to lock/not lock the SPEC layer after adding dimensions. 86 | 87 | ### Fixes 88 | 89 | - Resolves issue with some boolean (true/false) settings not persisting. 90 | 91 | ## 4.1.2 92 | 93 | - Handle if user does not select a compatible font. 94 | 95 | ## 4.1.1 96 | 97 | - Handle if user does not have a selected font installed. 98 | 99 | ## 4.1.0 100 | 101 | - Adding persistent font family selection for dimension label text. 102 | 103 | ## 4.0.1 104 | 105 | - Fixing extension panel icons. 106 | 107 | ## 4.0.0 108 | 109 | - Releasing as Adobe Exchange compatible extension. 110 | 111 | ## 3.2.2 112 | 113 | - Updating artwork files and external URLs. 114 | 115 | ## 3.2.0 116 | 117 | ### Updates 118 | 119 | - User-defined options, styles, and settings are now persistent after closing the application. 120 | 121 | ## 3.1.0 122 | 123 | ### Updates 124 | 125 | - Changed custom scale dropdown to an editable text field to allow for a scales ranging from 1/1 to 1/999. 126 | 127 | ## 3.0.3 128 | 129 | ### Fixes 130 | 131 | - Properly convert stroke width, gap, and head and tail units. 132 | 133 | ## 3.0.2 134 | 135 | - Formatting - no script/extension changes. 136 | 137 | ## 3.0.1 138 | 139 | - Revert back to CEP 9 - Adobe doesn't seem to know what they're doing with Illustrator updates and causing crashes 140 | 141 | ## 3.0.0 142 | 143 | - Updated to [CEP 10](https://github.com/Adobe-CEP/CEP-Resources/blob/master/CEP_10.x/Documentation/CEP%2010.0%20HTML%20Extension%20Cookbook.md) 144 | 145 | ## 2.0.4 146 | 147 | ### Fixes 148 | 149 | - Adjusting default stroke with to 1 unit (instead of 0.5) 150 | - Updated internal build process 151 | 152 | ## 2.0.2 153 | 154 | ### New Features 155 | 156 | - Completely updated the Specify dialog UI 157 | - **New Dialog UI and Adobe Extension**: Added a version packaged as a [Free Creative Cloud Extension available via Adobe Exchange](https://exchange.adobe.com/creativecloud.details.106345.html) for Illustrator CC users. 158 | 159 | ## 1.3.1 160 | 161 | ### Fixes 162 | 163 | - Automatically adds a leading zero to the font size field if user enters a value such as `.25` instead of `0.25`. For reference, font sizes require a leading zero on input. 164 | 165 | ## 1.3.0 166 | 167 | ### New Features 168 | 169 | - **User-defined custom scale for dimensions and labels**: Allows the user to specify a working scale along with allowing for customizable unit labels. This release enables the user to specify a working scale along with allowing for customizable unit labels. 170 | 171 | ## 1.2.2 172 | 173 | ### Fixes 174 | 175 | - Prevents the script from generating a dashed line when specifying the dimensions of an object with dashed paths. 176 | 177 | ## 1.2.1 178 | 179 | ### Fixes 180 | 181 | - The font size input in the options panel now allows the user to specify the size of the label text in the same units as the document ruler. 182 | - Fixes a bug with the help text that appears when hovering over an input field in the Specify dialog box. Help text was showing the current settings as Defaults rather than the script's default values. 183 | 184 | ## 1.2.0 185 | 186 | ### New Features 187 | 188 | - Implemented environmental variables to persist settings (to persist options between running the script multiple times, even between multiple documents) until application is closed. 189 | - Added a 'Restore Defaults' button to roll back to initial settings. 190 | 191 | ### Fixes 192 | 193 | - Removed 'Advanced Options' toggle and section; moved all items into 'Options' panel. 194 | 195 | ## 1.1.0 196 | 197 | ### New Features 198 | 199 | - Now possible to specify multiple objects simultaneously. 200 | - Added 'Select All' option to easily select all dimensions to specify. 201 | - Added 'Advanced Options' panel: 202 | - Easily change font size. 203 | - Easily change RGB color of dimension lines and labels. 204 | - Easily change number of decimal places for dimension labels. 205 | - Added help tips (hover over options in dialog). 206 | 207 | ### Fixes 208 | 209 | - Updated 'Specify' button and added 'Cancel' button. 210 | - Improved error handling. 211 | - Fixed issue with label spacing. 212 | - Improved UI of dialog box and options. 213 | 214 | ## 1.0.0 215 | 216 | Initial release. 217 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Specify: A dimensioning extension for Adobe Illustrator 2 | 3 | Adobe Illustrator extension to automate specifying dimension measurements (and adding dimension lines) of single or multiple objects, and specifying the dimensions between two objects. 4 | 5 | - [Specify Homepage](https://specify.dehaven.org) 6 | - [Install Specify from Adobe Creative Cloud](https://exchange.adobe.com/creativecloud.details.106345.html) 7 | 8 | ![Specify Hero Image](img/featured-new.png) 9 | 10 | ## Installation 11 | 12 | ### Extension Install 13 | 14 | Simply [download the Specify extension from Adobe Exchange](https://exchange.adobe.com/creativecloud.details.106345.html). 15 | 16 | ### Extension Updates 17 | 18 | To update to the latest version of the Specify extension: 19 | 20 | 1. Open the Creative Cloud desktop app. 21 | 2. Click to activate the `Marketplace` tab. 22 | 3. Click `Plugins`, then `Manage Plugins` on the sidebar. 23 | 4. Find the Specify extension in the list of plugins. If an update is available, simply click the `Update` button and then restart Illustrator. 24 | 25 | ![Specify extension update panel in Adobe Exchange](img/extension-update-panel.png) 26 | 27 | ## Usage 28 | 29 | To run the extension, first select one or more objects in your open Illustrator document. You must have at least one object selected via Illustrator's Selection Tool V or Direct Selection Tool A. 30 | 31 | After [installing the Specify extension from Adobe Exchange](https://exchange.adobe.com/creativecloud.details.106345.html), simply navigate to `Window > Extensions > Specify` to get started. Run the extension by simply clicking the "Specify Object(s)" button in the extension panel. 32 | 33 | > **NOTE**: If you receive an error that the extension is not compatible with your installed version of Adobe Illustrator, or if the extension becomes incompatible after an Adobe update, navigate to "Manage Plugins" within the Creative Cloud desktop application. Uninstall the Specify extension, and then simply re-install the extension. 34 | 35 | ### Options and Styles 36 | 37 | When the extension initializes, you will be presented with a dialog that allows you to choose which dimension(s) of your object(s) you would like to specify. The dialog also allows for the customization of several options. 38 | 39 | Any changes to the settings defined in the Specify Dialog (including both the [Options Panel](#options-panel) and the [Styles Panel](#styles-panel)) will persist even after closing the Adobe Illustrator application (version `3.2.0` and newer). 40 | 41 | After configuring your desired settings, make sure to select which dimension(s) to dimension, and then simply click the "Specify Object(s)" button at the bottom right of the dialog. Specify will quickly output all selected dimensions onto a new **SPEC** layer, and then lock the layer to prevent accidental edits. 42 | 43 | ### SPEC Layer 44 | 45 | You are free to unlock the **SPEC** layer and edit as needed. You may change the color of individual dimension labels, adjust the placement of dimension groups, or even remove dimensions you no longer need. 46 | 47 | If you make a mistake, no problem! Simply select the desired objects and run the extension again. 48 | 49 | ## Options Panel 50 | 51 | The Options Panel allows the user to select the side(s) of the object(s) to dimension, to use decimals or fractions for non-whole-number measurements, whether to dimension the object itself or between objects, and the scale of the artwork. 52 | 53 | ![Specify Illustrator Extension Options Panel](img/specify-options-panel.png) 54 | 55 | ### Dimensions 56 | 57 | The options panel allows you to first choose which dimension(s) of your Illustrator object you would like to specify. You may choose top, right, bottom, left, or any combination of sides. 58 | 59 | ### Multiple Objects 60 | 61 | If exactly two objects are selected on your artboard, you will be given the option to dimension between the two objects, instead of their individual sides. When checked, this option will specify the selected dimension(s) between the two chosen objects. 62 | 63 | ### Scale 64 | 65 | You may define a custom scale for your artwork, which will apply a multiplier to the displayed units label. 66 | 67 | For example, if you are designing an engineering drawing at 1/4 scale (or 1:4), you simply choose this ratio from the **Scale** dropdown menu, and then optionally enable the checkbox for [Custom Units Text](#custom-units-text) on the Styles Panel that corresponds to the unit labels you would like to output. In this example, choosing '1/4' will indicate the artwork is drawn at one-fourth scale, resulting in dimension values that are 4 times their drawn dimensions. 68 | 69 | ### Decimals or Fractions 70 | 71 | You may choose to use decimals or fractions for measurements that contain non-whole-numbers. 72 | 73 | #### Decimals 74 | 75 | If you choose **Decimals**, you can specify how many decimal places to use for the measurement (0-5 decimal places). Trailing zeros will be automatically removed. Default is `2`. 76 | 77 | #### Fractions 78 | 79 | If you choose to use **Fractions** you can specify the maximum denominator number to use. This setting will impact the rounding algorithm. Default is `64`. You may also choose whether to include a dash `-` between the whole number and the fraction. With this setting enabled, the measurement `1 3/4` is displayed as `1-3/4`. 80 | 81 | ### SPEC Layer 82 | 83 | Choose whether to lock the **SPEC** layer after adding the dimensions. 84 | 85 | ## Styles Panel 86 | 87 | The Styles Panel allows the user to completely customize the label styles and the line styles for all dimensions. 88 | 89 | ![Specify Illustrator Extension Styles Panel](img/specify-styles-panel.png) 90 | 91 | ### Include Units in Label 92 | 93 | When checked, inserts the units in the label alongside the dimension measurement. 94 | 95 | The extension automatically dimensions objects based on the Document's default units. To dimension in different units (i.e. Inches, Centimeters, etc.), first, select show Rulers via `View > Rulers > Show Rulers` ( ⌘Cmd + R on Mac, Ctrl + R on PC ). 96 | 97 | Next, right-click on the Ruler, and select your desired units. Otherwise, the extension will use the Document's selected units by default. 98 | 99 | ### Custom Units Text 100 | 101 | When checked, allows the user to customize the text of the units label. For example, displaying the abbreviation for feet, "ft" instead of the ruler measurement unit. 102 | 103 | ### Font Family 104 | 105 | Set the desired font family for the dimension label(s). Default is "Tahoma". 106 | 107 | ### Font Size 108 | 109 | Set the desired font size for the dimension label(s). If the value is less than one (e.g. 0.25) you must include a leading zero before the decimal point. 110 | 111 | ### Color 112 | 113 | Click to select the color for the dimension label(s). 114 | 115 | ### Gap 116 | 117 | Set the size of the desired gap between the dimension label(s) and the object. 118 | 119 | ### Stroke Width 120 | 121 | Set the desired stroke width of the dimension line. 122 | 123 | ### Head & Tail Length 124 | 125 | Set the desired length of the line at both ends of the dimension line. 126 | 127 | ## Reset 128 | 129 | At the bottom left of the Specify dialog is a Reset button that restores all defaults in both the Options Panel and the Styles panel. 130 | 131 | ## Support 132 | 133 | Do you have questions? Would you like to contribute? Something else? Feel free to [open an issue on GitHub](https://github.com/adamdehaven/specify/issues). 134 | 135 | Not into looking at code? No worries. Reach out on Twitter [@adamdehaven](https://twitter.com/adamdehaven). 136 | 137 | ## Examples 138 | 139 | ![specify-example](img/specify-example.jpg) 140 | 141 | ![specify-workplace-example](img/specify-workplace-example.png) 142 | -------------------------------------------------------------------------------- /img/extension-update-panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamdehaven/specify/e2fbb4609b5f9890572ecaa02a01d66b653eeef3/img/extension-update-panel.png -------------------------------------------------------------------------------- /img/featured-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamdehaven/specify/e2fbb4609b5f9890572ecaa02a01d66b653eeef3/img/featured-new.png -------------------------------------------------------------------------------- /img/specify-alerts-panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamdehaven/specify/e2fbb4609b5f9890572ecaa02a01d66b653eeef3/img/specify-alerts-panel.png -------------------------------------------------------------------------------- /img/specify-example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamdehaven/specify/e2fbb4609b5f9890572ecaa02a01d66b653eeef3/img/specify-example.jpg -------------------------------------------------------------------------------- /img/specify-options-panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamdehaven/specify/e2fbb4609b5f9890572ecaa02a01d66b653eeef3/img/specify-options-panel.png -------------------------------------------------------------------------------- /img/specify-styles-panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamdehaven/specify/e2fbb4609b5f9890572ecaa02a01d66b653eeef3/img/specify-styles-panel.png -------------------------------------------------------------------------------- /img/specify-updates-panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamdehaven/specify/e2fbb4609b5f9890572ecaa02a01d66b653eeef3/img/specify-updates-panel.png -------------------------------------------------------------------------------- /img/specify-workplace-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamdehaven/specify/e2fbb4609b5f9890572ecaa02a01d66b653eeef3/img/specify-workplace-example.png --------------------------------------------------------------------------------