Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

CAD-style dimension tools?

Community Beginner ,
Aug 28, 2018 Aug 28, 2018

Have there been any new developments on CAD-style dimension tools for Illustrator?

There are some old discussions on the forums that I have read dozens of times over the years, and I am aware of Hot Door's CADtools plug-in, but I keep hoping for a less expensive alternative. CADtools looks brilliant, but it does about a million things that I do not need. I really just need basic dimension tools to mark the height and width of objects on 2D drawings.

Right now, we are manually drawing lines, adding the flat arrowheads, and then typing the dimensions - which is prone to human error.

Some people might call these technical drawings, but they are all files that we need to print on a large format printer. My clients just want to know what size the images are before we print them.

We used CorelDRAW about 10 years ago, and it had very useful dimension tools, but at the time it was a huge hassle because all of my clients provide Illustrator and/or InDesign files - and CorelDRAW had trouble reading them.

Are there any alternatives to what we are doing now, or is CADtools the only viable option?

7.1K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Aug 28, 2018 Aug 28, 2018

Another script:

Re: Illustrator CS6 - Adding dimensional information to a drawing

And another:

EDIT: This appears to be the same script as previously posted.

GitHub - adamdehaven/Specify: A script to automate specifying dimensions (and adding dimension lines) of objects in Adob…

https://raw.githubusercontent.com/adamdehaven/Specify/master/Specify.jsx

And one more:

/*

Dimensioning - Nick Blakey 2007

This will add measurement marks and dimensions to any selected item.

This script requires that a swatch alre

...
Translate
Adobe
Community Expert ,
Aug 28, 2018 Aug 28, 2018
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 28, 2018 Aug 28, 2018

Another script:

Re: Illustrator CS6 - Adding dimensional information to a drawing

And another:

EDIT: This appears to be the same script as previously posted.

GitHub - adamdehaven/Specify: A script to automate specifying dimensions (and adding dimension lines...

https://raw.githubusercontent.com/adamdehaven/Specify/master/Specify.jsx

And one more:

/*

Dimensioning - Nick Blakey 2007

This will add measurement marks and dimensions to any selected item.

This script requires that a swatch already exist for the colour "Cutter" (or "cutter")

*/

var myDocument = app.activeDocument;

var selectedObject = myDocument.selection;

var activeLayer = app.activeDocument.activeLayer;

var layerName = activeLayer.name;

activeLayer.name = "Source4Measure";

// Get position of selection bounds

var myBounds = selectedObject[0].geometricBounds;

// Set up X and Y co-ordinates

var x1 = myBounds[0];

var x2 = myBounds[2];

var y1 = myBounds[1];

var y2 = myBounds[3];

// Set up data for the Measurements

var ptWidth = myBounds[2] - myBounds[0];

var ptHeight = myBounds[1] - myBounds[3];

var tmpWidth = Math.round(ptWidth / 0.02834645);

var tmpHeight = Math.round(ptHeight / 0.02834645);

var finalWidth = tmpWidth / 100;

var finalHeight = tmpHeight / 100;

//Find Centre of Object

var xCentre = x1 + (ptWidth / 2);

var yCentre = y1 - (ptHeight / 2);

// Find Cutter swatch position

var origSwatches = myDocument.swatches;

var swatchesLength = origSwatches.length;

for (i=0;i<swatchesLength;i++) {

  if (origSwatches.name == "Black" || origSwatches.name == "black") {

  var cutterSwatch = origSwatches;

  }

  }

// Check if Cutter swatch is defined

if (cutterSwatch == undefined) {

  alert("Please create a cutter swatch");

  }

else {

  makeDimensions();

  releaseLayer();

}

function makeDimensions() {

// Lock the active layer to prevent colour change

activeLayer.locked = true;

// Create Measurements Layer

//Now moved to separate function

/*var mLayer = myDocument.layers.add();

//mLayer.name = "Measurements";*/

mLayerCreate();

// Set Document colors to Cutter

myDocument.defaultFillColor = cutterSwatch.color;

myDocument.defaultStrokeColor = cutterSwatch.color;

// Create White Color Object for Measurement Boxes

newWhite = new CMYKColor();

newWhite.black = 0;

newWhite.cyan = 0;

newWhite.magenta = 0;

newWhite.yellow = 0;

// Create groups for measurements

var yMeasure = mLayer.groupItems.add();

yMeasure.name = "Height";

var xMeasure = mLayer.groupItems.add();

xMeasure.name = "Width";

// X Measurement Line and Endpoints

var xLine1 = xMeasure.pathItems.add();

xLine1.stroked = true;

xLine1.setEntirePath ([[x1,y1+36],[xCentre - 30,y1+36]]);

var xLine2 = xMeasure.pathItems.add();

xLine2.stroked = true;

xLine2.setEntirePath ([[xCentre + 30,y1+36],[x2,y1+36]]);

var xLineEnd1 = xMeasure.pathItems.add();

xLineEnd1.stroked = true;

xLineEnd1.setEntirePath ([[x1,y1+40],[x1,y1+32]]);

var xLineEnd2 = xMeasure.pathItems.add();

xLineEnd2.stroked = true;

xLineEnd2.setEntirePath ([[x2,y1+40],[x2,y1+32]]);

// Y Measurement Line and Endpoints

var yLine1 = yMeasure.pathItems.add();

yLine1.stroked = true;

yLine1.setEntirePath ([[x2+36,y1],[x2+36,yCentre + 30]]);

var yLine2 = yMeasure.pathItems.add();

yLine2.stroked = true;

yLine2.setEntirePath ([[x2+36,yCentre - 30],[x2+36,y2]]);

var yLineEnd1 = yMeasure.pathItems.add();

yLineEnd1.stroked = true;

yLineEnd1.setEntirePath ([[x2+32,y1],[x2+40,y1]]);

var yLineEnd2 = yMeasure.pathItems.add();

yLineEnd2.stroked = true;

yLineEnd2.setEntirePath ([[x2+32,y2],[x2+40,y2]]);

/* Create Box for X Measurement text

Deprecated by use of two lines in measurement line

var xBox = xMeasure.pathItems.rectangle (y1 + 46, xCentre - 30, 60, 20);

xBox.filled = true;

xBox.fillColor = newWhite;

xBox.fillOverprint = false;

xBox.stroked = false;*/

// Create Text for X Measurement

var xText = xMeasure.textFrames.add();

xText.contents = finalWidth + "mm";

xText.top = y1 + 42;

xText.left = xCentre;

xText.paragraphs[0].paragraphAttributes.justification = Justification.CENTER;

for (i=0;i<xText.textRange.characters.length;i++) {

  xText.characters.characterAttributes.fillColor = cutterSwatch.color;

}

/* Create Box for Y Measurement Text

Deprecated by use of two lines in measurement line

var yBox = yMeasure.pathItems.rectangle (yCentre + 30, x2 + 26, 20, 60);

yBox.filled = true;

yBox.fillColor = newWhite;

yBox.fillOverprint = false;

yBox.stroked = false;*/

// Create Text for Y Measurement

var yText = yMeasure.textFrames.add();

yText.contents = finalHeight + "mm";

yText.rotate (-90); //, true, false, false, false, Transformation.CENTER);

yText.top = yCentre;

yText.left = x2 + 30;

yText.paragraphs[0].paragraphAttributes.justification = Justification.CENTER;

for (i=0;i<yText.textRange.characters.length;i++) {

  yText.characters.characterAttributes.fillColor = cutterSwatch.color;

  }

}

function mLayerCreate() {

  var mLayerNotExists = true;

// Check if measurements layer exists

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

  if(activeDocument.layers.name == "Measurements"){

  mLayer = activeDocument.activeLayer = activeDocument.layers; // not using var to declare makes it global

  mLayerNotExists = false;

  }

}

// Create Measurements Layer

if(mLayerNotExists){

mLayer = myDocument.layers.add();// not using var to declare makes it global

mLayer.name = "Measurements";

}

}

function releaseLayer(){

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

  if(activeDocument.layers.name == "Source4Measure") {

  activeDocument.layers.name = layerName;

  activeDocument.layers.locked = false;

  activeDocument.activeLayer = activeDocument.layers;

  }

  }

  // Set Document colors back to Default

  black = new CMYKColor();

  black.black = 100;

  myDocument.defaultFillColor = newWhite;

  myDocument.defaultStrokeColor = black;

  }

Prepression: Downloading and Installing Adobe Scripts

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 28, 2018 Aug 28, 2018

I taught a session a little about this at MAX a few years ago. I showed people how we were using the 3D features in Illustrator to build a library of specific depths, angles, perspectives, etc, for our clients product (a smart phone). The client always needed the same angles to match up between the different products.

Once you set the 3D appearance style you want, rather than typing the numbers in each time, save it as a Graphic Style in the Graphic Styles panel. We save a styles set of presets for that client that we can share amongst our peers/production artists so we are all consistent. This is very easy to manage and allows us to use the advanced 3D settings where we can set extra lighting, etc.
Hope that helps,

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Aug 31, 2018 Aug 31, 2018
LATEST

Well, it looks like Specify is the winner. I tried it initially and thought it could not do what I needed, but I was able to modify the code to make it work. My problem was that I work with very large prints, and the scaling feature did not use a large enough scale (many of my drawings need a 1/32 scale or even 1/50). Fortunately, the code was written in such a way that changing one number made it all work.

I also found and like using Specctr a lot. I would be willing to pay for it, but they no longer support Illustrator CS6 and their support seems to be abysmal. I've contacted them two different ways and have received no response about whether or not the older version of extension (which still supports CS6) is available as an option. I even paid for one month of service to see if I could get answers.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines