├── .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 | 
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 | 
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 | 
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 | 
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 | 
140 |
141 | 
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
--------------------------------------------------------------------------------