Escolar Documentos
Profissional Documentos
Cultura Documentos
What is a Macro?
Macros are a way to automatically perform a sequence of functions. Typcially they are special commands which
the user makes a recording of, while interactively performing the function he wishes to replicate. However, a
CAM350 macro is much more than just a record and play back proposition. A CAM350 macro can also interact
with the user, make decisions, and get information from the database.
Some users may be familiar with the term Script. Scripts are common in UNIX products and are basically the
same thing as macros. Of course not all UNIX products use scripts, and a script may only provide for record and
play back functions, rather than allowing for full user interaction, including database queries.
A Simple Process
Creating, editing, and using a macro is fairly easy with the Macro Menu commands, but more advanced use does
require a knowledge of BASIC programming. A macro typically begins by turning on macro record and then
recording a series of steps. When played back, the macro merely plays back the recorded steps. Next, you may
want to modify certain parameters for subsequent runs of the macro, so you can edit the macro using a text
editor and prompt the user to enter parameters. This makes the same macro useful across other databases.
Then you may realize that it would be nice to have the macro itself detect certain problems for you (such as not
allowing a drill sort unless drill data exists), and perhaps repeat a series of commands automatically. Once you
have a useful set of macros you may want to make them easier to execute, so you assign them to the menu or
a function key.
One of the sample macros provided with your CAM350 software, Automatic Panelizer, panelizes any database
onto a specified panel size. It then queries the database to find the smallest apertures used for draws and
flashes. It uses the smallest shapes to build a test coupon. The test coupon is placed ½" below the resultant
panel images centered on the X axis. It also queries the database to get all the drill tools. It then builds a drill
coupon and it places it ½" below the images and right justified on the X axis. This is an example of how a macro
can be used to build a "Panelization Station" that requires very little user input. Using a macro like this results in
more productivity with fewer errors and yields consistent results.
Macros are not required to use the application, but they can become quite handy for optimizing a production
environment, accelerating multiple processes and making sure that all steps in a process are followed in a
consistent manner.
Macro Syntax
BASIC is a common programming language. Knowledge of BASIC is not required to record and play back
macros. BASIC is only needed for the more advanced user who may want to add capabilities to their macros. If
you want the macro to perform other functions, such as interact with the user, test values, or repeat a command
sequence (looping), you have to use a little BASIC.
Overview of BASIC
BASIC commands
Product Macro Commands
Pag. 1 di 1
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Types of BASIC Commands
BASIC commands fall under some simple categories, depending on the functions they perform. Some commands
deal specifically with string processing, while others can only perform file input and output procedures. Below is
a categorized list of all BASIC commands used in CAM350: for a more detailed description of each command,
click on its link to view the full description.
These are commands which control the structure of a BASIC program, including its termination, etc.
Commands which organize a macro's execution sequence. These commands determine which aspects of a macro
will run, based on conditional values or numeric counters.
Pag. 1 di 4
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
String Functions
These are commands which manipulate string variables, by returning substrings within the main string,
modifying strings, changing strings to upper/lowercase, etc.
ASC returns the ASCII code number for any given character
CHR$ returns the string equivalent of an ASCII code number
FMTUSING$ can be used to assign a string to a variable that is
formatted as if a PRINT USING statement was used
INSTR determines if a given string exists within another string
LCASE$ returns a copy of a string with all characters converted to
lower case
LEFT$ returns a given number of characters from the left side of
a string
LEN tells how many characters are in a string
LTRIM$ returns a copy of a string which has had the leading
blank spaces stripped away
MID$ has two uses:
1) as a function, returns a specified number of characters
from any location in a string
2) as a statement, replaces part of a string with another
string
RIGHT$ returns a given number of characters from the right side
of a string
RTRIM$ returns a copy of a string which has had the trailing blank
spaces stripped away
STR$ converts a numeric value to a string
UCASE$ returns a copy of a string with all characters converted to
upper case
VAL converts a numeric string to a number value
Commands which allow you to perform operations on integer and real numbers.
Pag. 2 di 4
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
File Functions
Commands to allow a macro to read and write data from an ASCII text file, manipulate files/directories on the
host system, and launch external programs.
These commands allow you to place message boxes on screen for warnings or to receive input from the
operator.
Pag. 3 di 4
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Debugging Commands
These commands are intended to help in the debugging of macro programs themselves. As such they are not
useful in programming macros themselves, but are extremely useful in determining why a macro isn't
functioning as expected. The commands are executed only while running a macro through the Macro
Debugger.
Miscellaneous Commands
These are commands which are not categorized in any of the sections above.
DEF can be used to set the data type for a series of variables
DIM used to specify the variables in an array
SWAP can be used to exchange the values of two variables
Pag. 4 di 4
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
BASIC Commands
Most of the following commands operate as standard BASIC commands. However, some have been added,
modified, or expanded in order to suit the needs of the software. They use a BASIC Keyword, along with one or
more of the following expressions:
Boolean - Expressions which to evaluate a condition as either true or false. (See the IF/THEN/ELSE
Statement for more information.)
Macro Commands
Database Queries
Forms
ABS Function
Example:
n = -6
y = ABS(n)
y = 6
ASC Function
Returns a numeric value that is the ASCII code for the first character in a string expression.
Example:
n$ = "April"
y = ASC(n$)
y = 65
ATN Function
Returns the arctangent of a numeric expression (the angle whose tangent is equal to the numeric expression).
Example:
n% = 30
PRINT ATN (n%)
Output: 1.537475
Pag. 1 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
BREAK Command
Pauses a macro at the point the command is present in the program. To be used only in conjunction with the
Macro Debugger to determine problems in the execution of a macro script.
Syntax:
BREAK
Example:
X% = Y%
BREAK 'pause after variable definition
CHR$ Function
Example:
PRINT CHR$(65)
Output is "A"
CLOSE Statement
Example:
CLOSE_MSG Statement
Example:
FOR n = 1 to 10
PRINT_MSG "Number is",n
DELAY 500
CLOSE_MSG
COS Function
Pag. 2 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Returns the cosine of an angle given in radians.
Example:
n% = 30
PRINT COS (n%)
Output: 0.154251
DEFtype Statements
Sets the default data type for variables. DEFINT sets the data type as an Integer (%), DEFREAL sets it as a Real
number (#), and DEFSTRING sets it as a String ($).
Syntax:
Example:
DEFINT a-b,e
a = 34
b = 100
eagle = 10
PRINT eagle, a + b
Output: 10 134
DEFREAL q
quest = 3.45
quarry = 78.31
PRINT quest + quarry
Output: 81.76
DEFSTRING r-v
roger = "wilco, "
r = "and "
s = "out"
type = "over "
voice = "Roger, "
PRINT voice + roger + type + r + s
DELAY Statement
The delay is used to slow down the playback of a macro. For example, you may want to display a message for a
set period of time. This function is independent of computer speed.
Syntax:
DELAY <n>
Pag. 3 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
n is the delay in milliseconds (1/1000 of a second).
Example:
FOR n = 1 to 10
PRINT_MSG "Number is",n
DELAY 500 'half second delay)
CLOSE_MSG
DIM Statement
Allocates space for an n dimensional array. The maximum number of dimensions is currently 20. The type of the
array is determined by the type of variable used.
Example:
DIM C%(10)
Examples of DIM Statements using multidimensional arrays, as well as arrays from one index to another:
DIM a%(10)
DIM b#(-10 to 0)
DIM c$(5)
DIM d%(10,10)
DO/LOOP Statements
Repeats a block of statements while a condition is true, or until a condition becomes true.
Example:
DO
INPUT "Enter a number less than 10",i
LOOP UNTIL i >= 10
PRINT "End of do test"
END
END Statement
Example:
DO
INPUT "Enter a number less than 10",i
LOOP UNTIL i >= 10
PRINT "End of do test"
END
EOF Function
Pag. 4 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Tests for the end-of-file condition (returns 1 if end of file is reached).
Syntax:
EOF (File#)
Example:
Ends the macro while leaving the command processor in its current state (even in the middle of a command).
Syntax:
EXIT MACRO
Example:
edit_aperture@ 10,1,10.0000,10.0000,0,""
update_dcodebar@
add_line@
axy@ 0.0000,0.0000
axy@ 125.0000,-125.0000
axy@ 250.0000,0.0000
view_redraw@
EXIT MACRO
EXP Function
Example:
x = 10
PRINT EXP (x)
Output: 22026.465795
Syntax:
FILEEXISTS(File$)
Pag. 5 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
File$ is the full filepath of the file being checked.
Example:
if FileExists("d:\temp\test.doc") = 1 then
OK_Cancel "There is already a file of that name in the directory. Overwrite file?", OK
end if
FMTUSING$ Statement
Syntax:
FMTUSING$(formatstring$,expressionlist)
formatstring$ is a character string which contains formatting characters. The syntax of this string is the
same as for PRINT USING.
# Digit position
, Placed left of the decimal point, prints a comma every third digit
$$ Prints leading $.
Example:
s$ = FMTUSING$(" ###.##",x,y,z)
Pag. 6 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
FOR/NEXT Statement
Repeats the statements enclosed in the loop a definite number of times, counting from a starting value to an
ending value by increasing or decreasing the loop counter. As long as the loop counter has not reached the
ending value, the loop continues to execute. Note that when playing a macro that has For/Next statements, the
system checks for "suspect logic." Specifically, if there is more than one Next for a For statement, an error is
reported.
In a FOR...NEXT loop, the counter variable initially has the value of the expression start. After each repetition of
the loop, the value of counter is adjusted. If you leave off the optional STEP keyword, the default value for this
adjustment is one (one is added to counter each time the loop executes).
If you use STEP, then counter is adjusted by the stepsize amount. The stepsize argument can be any numeric
value; if it is negative, the loop counts down from start to end. After the counter is increased or decreased, its
value is compared with end. At this point, if either of the following is true, the loop is completed:
The loop is counting up (stepsize is positive) and counter is greater then end.
The loop is counting down (stepsize is negative) and counter is less then end.
Syntax:
Example:
FOR a# = 1 to 10 step .5
PRINT_MSG "a# = ",a#
DELAY 10
NEXT
PRINT "a# = ",a#
END
GETOPENFILENAME Statement
Functions similarly to the Windows "Open" file dialog box: obtains a filename from the user by displaying a
Windows-style drop down list (see the Forms topic). The returned filename can be used for file input/output
purposes.
Syntax:
filename$ is the variable which will return the retrieved filename. Returns the full filepath of the file.
filter$ is a file filter to limit which file types are displayed (such as *.txt). More than one file type can be
indicated by separating them with semi-colons ( "*.gbr;*.lgr"). If omitted, the default will be *.*.
Pag. 7 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
NoFileMustExist Does not verify if the file exists or not.
NoChangeDir Will not allow the user to change the current working directory.
Multiple FLAGS are permitted, separated by commas. If none of the above FLAGS are used, then their
opposite, default functions will be used.
Example:
GETSAVEFILENAME Statement
Functions similarly to the Windows "Save As" file dialog box: obtains a filename from the user by displaying a
Windows-style drop down list (see the Forms topic). The returned filename can be used for file input/output
purposes.
Syntax:
filename$ is the variable which will return the retrieved filename. Returns the full filepath of the file.
default_ext$ is the default extension of the file being saved. It is a three character string with no period
(e.g. "txt").
filter$ is a file filter to limit which files are displayed (such as "*.txt"). If omitted, will be "*.*".
NoOverWritePrompt If the filename already exists, it does not prompt the user to verify before
overwriting it.
NoChangeDir Will not allow the user to change the current working directory.
Multiple FLAGS are permitted, separated by commas. If none of the above FLAGS are used, then the
opposite, default functions will be used.
Example:
GOSUB/RETURN Statements
Transfers control to, and returns from, a subroutine. The target, or return, for a gosub may be a number or
alphanumeric notation. The label may be on the same line as a command or it may be on its own line. Note that
labels which are not numeric must be ended in a colon.
Example:
Pag. 8 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
This macro draws a box around any coordinate.
Use a subroutine whenever a task must be repeated. Note also that all variables are "global," meaning that a
variable has the same value in a subroutine as in the main program.
GOTO Statement
Branches unconditionally to the specified line. A goto is a way to control the macro flow. The target, or label, for
a goto may be a number or alphanumeric notation. The label may be on the same line as a command or it may
be on its own line. Note that Labels which are not numeric must be ended in a colon
Example:
GOTO 100
100 PRINT "this is a numeric label"
GOTO label1
label1: PRINT "this is an alphanumeric label"
HEX$ Function
Example:
x = 10
PRINT HEX$ (x)
Output: A
HTMLHELP Statement
Allows the programmer to open an individual HTML document from a compressed HTML help file (*.chm).
Pag. 9 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Syntax:
htmlhelpfile$ = the filename for the HTML Help format file (e.g. help.chm)
htmlhelppage$ = the specific HTML topic file within that help file (e.g. TOC.html)
Example:
Htmlhelp "help.chm","basic_commands.html"
IF/THEN/ELSE Statements
Allows conditional execution, based on the evaluation of a Boolean expression. This statement may be a single
line, or a block
Block Syntax:
If the expression is true then the statement is executed. Strings can also be compared using the If/Then
statement.
Example:
!INCLUDE Statement
!INCLUDE functions like the MACRO_PLAY Statement, except for the following differences.
!INCLUDE can see variables which are used in the macro program calling the !INCLUDE statement,
whereas MACRO_PLAY cannot.
When the subprogram called by MACRO_PLAY comes to an END statement, the calling macro continues on
the next line. If an END statement is encountered in a macro called by !INCLUDE, then the main macro is
also ended.
Unlike MACRO_PLAY, you cannot use a variable for the filename parameter of the command. (The full
filename path for the macro to be included must be entered in the parameter).
Syntax:
Pag. 10 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
!INCLUDE Filename
Example:
if Add% = 1 then
!INCLUDE "d:\temp\testscript.scr"
end if
INPUT Statement
The input command opens a dialog box, displays a string, and waits for the user to enter a value and press OK.
Adding CR! to your message inputs a carriage line feed. This allows you to have multiple lines in the dialog box,
and control where the line breaks.
Example:
INPUT# Statement
Reads data items from a sequential device or file and assigns them to variables.
Example:
INSTR Statement
Determines if a string exists within another string. It returns a numeric value for the position the substring
begins, relative to the beginning of the string.
Syntax:
INSTR(position,string,substring)
where:
position = character position in the string to begin the search (optional - defaults to first char. in string)
Pag. 11 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
substring = the string expression to be searched for
Example:
KILL Statement
Example:
KILL "c:\Act_Inc\Scripts\testing1.scr"
LCASE$ Function
Example:
LCLOSE Statement
Closes the printer and sends any unprinted characters to the printer.
Example:
FOR i = 32 to 127
s$ = s$ + chr$(i)
NEXT
FOR i = 1 to 190
LPRINT s$;
NEXT
LCLOSE
END
LEFT$ Function
Example:
a$ = "Microsoft Qbasic"
PRINT LEFT$(a$, 5)
Output is "Micro"
Pag. 12 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
LEN Statement
Returns the number of characters in a string, or the number of bytes required by a variable.
Example:
Temp$ = "1234567"
PRINT LEN (Temp$)
Output: "7"
Inputs an entire line (up to 255 characters) to a string variable, without the use of delimiters.
Syntax:
Example:
Reads an entire line, without delimiters, from a sequential file to a string variable.
Example:
Pag. 13 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
LOG Function
Example:
x = 10
PRINT LOG (x)
Output: 2.302585
LPRINT prints data to the default printer (as defined by the printer settings under Macro > Setup Printer).
LPRINT USING prints the data in a specified format. These statements function exactly the same as PRINT and
PRINT USING, but instead of the output going to the screen it goes to a printer
# Digit position
, Placed left of the decimal point, prints a comma every third digit
$$ Prints leading $.
Example:
FOR i = 32 to 127
Pag. 14 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
s$ = s$ + chr$(i)
NEXT
FOR i = 1 to 190
LPRINT s$;
NEXT
LCLOSE
END
Example:
x# = 1441.2318
LPRINT USING "No Decimal ####";x#
LPRINT USING "The number with a dollar sign and 2 decimals $$##.##";x#
b$ = "ABCDEFG"
LPRINT USING "The entire string &";b$
LTRIM$ Function
Example:
MACRO_LINK Statement
Pag. 15 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Links an existing macro file to your macro. Control will not return when the new macro ends. If you do not
specify a path in the filename, the system will assume it is the same as the path of the macro you are linking
from.
Syntax:
Macro_link "filename.ext"
MACRO_PLAY Statement
Starts the macro script indicated. When this new macro ends, the existing macro resumes with the next
instruction after the MACRO_PLAY command.
Syntax:
MACRO_PLAY "filename.ext"
This command displays a Windows-style message box, with configurable buttons and titles. A number of choices
are offered for the display title. Each command returns a numeric value, depending on the buttons used in the
box, which can be used as a conditional value in other statements.
Note: This command is recommended for intermediate to advanced macro programmers. Beginning macro
programmers should use the OK_CANCEL or PRINT commands
Syntax:
flags = specifies the style of box to display (again, INFORMATION is assumed default) The following flags
are available:
Pag. 16 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
# = an integer representing the code for other Windows-style buttons (requires knowledge of MS codes;
negative integer is possible).
Example:
MID$ Function
The MID$ Function returns a substring of a string. The MID$ statement replaces part of a string variable with
another string.
Syntax:
As a Function:
MID$<stringexpression$,start%[,length%]>
As a Statement:
MID$<stringvariable$,start%[,length%]>=stringexpression$
Example:
a$ = "Where is Paris?"
PRINT MID$(a$, 10, 3)
Output is "Par"
MID$(Text$, 8) = "Texas"
PRINT Text$
Pag. 17 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
MKDIR Statement
Example:
MKDIR "c:\MacroTest"
MOD Function
Divides one number by another and returns the remainder. Real numbers are rounded to integers.
Syntax:
Example:
NAME Statement
Syntax:
Example:
OK_CANCEL Statement
The OK_CANCEL command is similar to the Print Statement except there are two buttons: Yes and No. The
command returns a value (1=Yes, 0=No) which can be used as a conditional in other macro commands.
Pag. 18 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Syntax:
Example:
FOR n = 1 to 10
PRINT "Number is",n
OK_CANCEL "Continue?",OK
IF OK = 1 THEN next
END
OPEN Statement
Enables I/O to a file. In CAM350, it is ASCII Text based, not binary, so only the following syntaxes are accepted:
In each case, n is the number between 1 and 255, and is used to refer to the file in subsequent PRINT, WRITE,
and INPUT statements
Example:
PRINT Statement
Print opens a dialog box to display a message. The message may include variables, and can be multiple lines.
This dialog box has an OK button. This box stays up, and macro execution is suspended, until OK is pressed.
Syntax:
PRINT "message",variable(s)
Example:
Pag. 19 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Adding CR! to your message inputs a carriage line feed. This allows you to have multiple lines in the dialog box,
and control where the line breaks.
Example:
PRINT "Number of times the current Dcode Type"+CR!+"is used as a flash: ", NumdcodetypeF!
Because quotation marks are used to specify file names or text to print in macros, a special database query
command, Quote!, will insert the character (") into the text that you are printing
Example:
# Digit position
, Placed left of the decimal point, prints a comma every third digit
$$ Prints leading $.
Pag. 20 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
**$ Combines ** and $$
Example:
x# = 1441.2318
PRINT USING "No Decimal ####";x#
PRINT USING "The number with a dollar sign and 2 decimals $$##.##";x#
b$ = "ABCDEFG"
PRINT USING "The entire string &";b$
PRINT# writes data to a sequential file. PRINT# USING writes the strings or numbers using a specified format.
Pag. 21 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Characters that format a numeric expression
# Digit position
, Placed left of the decimal point, prints a comma every third digit
$$ Prints leading $.
Example:
Example:
Output is 123.46
PRINT_MSG is similar to PRINT: you may include variables and have multiple lines. The only difference is there
is no OK button. The message will remain until another print_msg or close_msg command, or until macro
execution stops.
Syntax:
Pag. 22 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
PRINT_MSG "message",variable(s)
Adding CR! to your message inputs a carriage line feed. This allows you to have multiple lines in the dialog box,
and control where the line breaks.
Because quotation marks are used to specify file names or text to print in macros, a special database query
command, Quote!, will insert the character (") into the text that you are printing.
PRINT_MSG USING prints the strings and numbers using a specified format.
# Digit position
, Placed left of the decimal point, prints a comma every third digit
$$ Prints leading $.
Example:
PRINT_MSG Quote!+"Promise only what you can deliver."+CR+"Then deliver more than you
promise."+Quote!
DELAY 5000
NEXT
Example:
a# = 123.4567
PRINT_MSG USING "###.##"; a#
PRINT_MSG USING "+###.####"; a#
a$ = "ABCDEFG"
PRINT_MSG USING "!"; a$
PRINT_MSG USING "\ \"; a$
Pag. 23 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
RESET Statement
Example:
RETURN Statement
Example:
RIGHT$ Function
Example:
a$ = "Microsoft Qbasic"
PRINT RIGHT$(a$, 5)
Output is "basic"
RMDIR Statement
Pag. 24 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Example:
RMDIR "c:\MacroTest"
RTRIM$ Function
Example:
This is similar to the If/Then statement, but it evaluates a single expression then executes different statements
or branches to different parts of the script, based on results.
Syntax:
If the expression is true, then the statement is executed. A numeric or string expression can be evaluated. End
select terminates statement.
Example:
SGN Function
Pag. 25 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Example:
n = -5
PRINT SGN (n)
Output: -1
Y = 10
PRINT SGN (y)
Output: 1
SIN Function
Example:
n% = 30
PRINT SIN (n%)
Output: =0.988032
SQR Function
Example:
n% = 25
PRINT SQR (n%)
Output: 5.000000
STR$ Function
Example:
SUSPEND stops running the macro and puts up a message box with a Resume button so you can return to the
macro later. While the macro is suspended, you can use the software as if the macro weren't running at all.
When you press the Resume button, execution of the macro resumes with the next instruction after the
SUSPEND command.
Pag. 26 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Syntax:
SUSPEND <message$>
message$ is the text in the message box which is displayed when the macro is executed.
# Digit position
, Placed left of the decimal point, prints a comma every third digit
$$ Prints leading $.
Example:
FOR n = 1 to 10
PRINT_MSG "number is", n
DELAY 500
SUSPEND
CLOSE_MSG
Example:
SWAP Statement
Example:
Pag. 27 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Temp$ = "123456"
Temp2$ = "789"
SWAP Temp$, Temp2$
PRINT Temp$
PRINT Temp2$
Output: "789"
Output: "123456"
TAN Function
Example:
n% = 30
PRINT TAN (n%)
Output: -6.405331
UCASE$ Function
Example:
VAL Function
Example:
n$ = 3456
PRINT VAL (n$)
Output: 3456
WINCALL Statement
Allows the macro to execute an external application (Notepad, etc), and waits for the application to exit before
returning control to the calling macro.
Pag. 28 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Syntax:
commandline$ is the full path and name of the external program, along with all parameters (e.g.
"d:\mybin\prog.exe param1 param2").
Spaces may be used in parameters and paths, but they must be surrounded by quotes ("):
e.g. commandline$ = chr$(34) + "d:\my bin\prog.exe" + chr$(34) + " " + chr$(34) + "param" +
chr$(34) produces the following character string: "\"d:\my bin\prog.exe\" \"param\"" (Here \" is " in the
string)
cmdshow is a keyword for how a Windows-based application window is to be shown. Values for cmdshow
are (if value is not provided, NormalFocus is assumed):
Show = window has focus and is restored to its original size and position.
NormalFocus = window has focus and is restored to its original size and position.
NormalNoFocus = window is restored to its most recent size and position. The currently active window
remains active.
MinimizedNoFocus = wiindow is displayed as an icon. The currently active window remains active.
cmdshow can be an integer instead. (See the "Microsoft Win32 API" for more information about the
integer values for cmdshow, under ShowWindow).
return% is the return code from the external program. This is a value defined by the external program,
so you must check its documentation for the appropriate value. (Note: 0 usually means the program
finished successfully - but that is not guaranteed).
Example:
WINEXEC Statement
Like WinCall, allows the macro to execute an external application (Notepad, etc), but does not wait for the
application to exit before returning control to the calling macro (like WinCall does).
Syntax:
commandline$ is the full path and name of the external program, along with all parameters (e.g.
"d:\mybin\prog.exe param1 param2").
Pag. 29 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/Basic...
Spaces may be used in parameters and paths, but they must be surrounded by quotes ("):
e.g. commandline$ = chr$(34) + "d:\my bin\prog.exe" + chr$(34) + " " + chr$(34) + "param" +
chr$(34) produces the following character string: "\"d:\my bin\prog.exe\" \"param\"" (Here \" is " in the
string)
cmdshow is a keyword for how a Windows-based application window is to be shown. Values for cmdshow
are (if value is not provided, NormalFocus is assumed):
Show = window has focus and is restored to its original size and position.
NormalFocus = window has focus and is restored to its original size and position.
NormalNoFocus = window is restored to its most recent size and position. The currently active window
remains active.
MinimizedNoFocus = wiindow is displayed as an icon. The currently active window remains active.
cmdshow can be an integer instead. (See the "Microsoft Win32 API" for more information about the
integer values for cmdshow, under ShowWindow).
Example:
WRITE# Statement
Example:
Pag. 30 di 30
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Macro Search Tips
Most CAM350 commands have macro's that can be recorded and played back. Macros that relate to each
command are noted in each of the main Help topics. These macro commands end with the @ sign.
As commands are added or modified, the recorded CAM350 commands may change. To verify a recorded
command, just select the Macro > Record command, execute the desired command(s), and view the saved
macro file.
Pressing the M hotkey changes the prompt on the status bar between (1) the actual prompt, (2) the memory
used, and (3) the actual macro command that would be saved. Using the M hotkey is a fast way to see each
macro command without going through the steps of recording a macro and then opening the macro file in an
editor.
Restriction: The availability of product macro commands is dependant on your product and its specific
modules. Some macro commands are available only to specific modules. If you encounter problems when using
specific macro commands, refer to the Editor List icon for each Menu Command you're attempting to use: this
will display a list of Editors the command is available for. If you do not have a listed Editor, you cannot run the
macro command.
Macro Basics
Macro commands are the RESULT of a command rather than the command itself. For example, to set the size
and shape of Dcode 71 you would interactively select Tables, then Apertures, then click in the Dcode 71 field,
enter an r (for round), and then 100 for the size. The recorded result for this process is:
edit_aperture@ 71,1,100.0000,100.0000,71,""
Where 71 is Dcode 71, 1 is the round shape, 100-100 are the X and Y values, the second 71 is the default
swap Dcode, and the "" is reserved for the name if it was a custom aperture.
Other commands are almost the same as what you would do if you selected them from the menu. For example,
the macro recorded for adding a line is something like this:
setdcode@ 12
setlayer@ 0
add_line@
axy@ 505.0000,4670.0000
axy@ 3753.0000,4751.0000
axy@ 1341.0000,2810.0000
back@
back@
All of the macro commands listed below appear in the order you would need to add them to your macro. In
other words, they must placed in the same sequence as they are listed to function properly.
INCORRECT:
axy@ 2.144,3.455
add_flash@
back@
Pag. 1 di 2
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Would NOT add a flash at the given coordinates, because the coordinates were specified before the command
was called.
CORRECT:
add_flash@
axy@ 2.144,3.455
back@
The commands follow the proper sequence, and a flash will be added at the coordinates.
Common Macros
axy@ x,y
X,Y are coordinates (same as selecting a point with the left mouse button).
back@
Backs out of (cancels) a command (same as clicking the right mouse button to cancel a command). Useful
for terminating the previous macro command state before initiating a new one.
edit_selectall2@
Selects all data within the database extents. Can be used in commands which require a selection window to
specify the area being checked, etc. (Replaces commands, such as edit_group@, which must specify two points
on a rectangular selection window).
Example:
edit_selectall2@
back@
replaces
edit_group@
axy@ 10.1200,45.7500
axy@ 46.8700,15.8900
back@
end@
Ends a command. (Only certain commands need end@). An example is the + hotkey for zoom in. Since this
command is recursive the end@ is necessary to stop the zoom in function.
Pag. 2 di 2
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Data Analysis Macros
The following macros collect tolerance information about the designated layers. They are used solely in
preparation for the Database Analysis Queries that report their findings.
analyze_data@
analyze_data_in_box@ llx,lly,urx,ury
Looks at data which is inside the prescribed box (parameters are lower-left X coordinate, lower-left Y
coordinate, upper-right X, upper-right Y), for all ON NC and electrical layers.
analyze_data_out_box@ llx,lly,urx,ury
Looks at data which is outside the prescribed box (parameters are lower-left X coordinate, lower-left Y
coordinate, upper-right X, upper-right Y), for all ON NC and electrical layers.
Note: For the last two commands, data which crosses the box edge is considered both inside and outside the
box (it will be included in both analyze box commands).
Pag. 1 di 1
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/CAM350_Family_...
Hotkeys
Pag. 1 di 2
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/CAM350_Family_...
A Select All
B Toggle group display box
mode/ghost mode
C Toggle window mode
crossing/non-crossing
I Toggle windowed selection edit_inside@
inside/outside edit_outside@
M Mirror a part during Add > quickpart_mirror@
Part and Quick Part, or
Mirror the Reference
Designator or Device
Name during Build Part or
in the Part Editor.
T Rotate a part during Add quickpart_turn@
> Part and Quick Part, or partname_turn@
rotate the Reference setturn100angle@ #
Designator or Device Sets the turn angle. # is 100 times the angle
Name during Build Part or (650=6.5 degrees)
in the Part Editor
W Enable group Window
mode
Keyboard/Mouse Equivalents
Pag. 2 di 2
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Layer Bar Macros
setlayer@ 4
settoplayer@ 5
Displays this layer on top. Remember layers start from 0 (layer 1 = layer 0 in a macro).
layer_alloff@ 1
Turns all layers expect the active layer on or off: 1 = all off and 0 = all on.
update_layerbar@
edit_layer@ Layer#,drawcolor,flashcolor,type,on/off,"name.gbr"
The layer bar can only turn layers on/off, set the active layer, bring a layer to the top, and set the draw and
flash colors. The numbers associated with each of the colors depends upon the current positions of each of the
colors in the palette. Here is an example of a color palette, with the numbers that are assigned to each position.
Since the numbers correlate to the position and not the color itself, please refer to the palette in your CAM350
software to determine which number is assigned to your desired color. (Right-click on any of the colors in the
layer bar to open the palette editor.)
savecolors@ "name.pal"
If you've customized your display with unique colors, this command allows you to save the palette.
loadcolors@ "name.pal"
view_LayerFlash #, #
Flashes can be turned off, even though the active layer is On.
view_layerDraw #,#
Draws can be turned off even though the active layer is On.
Pag. 1 di 2
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Second #: 0=Draws are Off, 1=Draws are On.
Pag. 2 di 2
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Status Bar Macros
Coordinate Readout/Input
setabsrel@ 1
H button
Used to highlight the active Dcode in the Tool Bar. Dcode must be made active first: see Active Dcode.
Hilite_dcode_on@
Hilite_dcode_off@
S button
setgridsnap@ #
Sets the grid snap: (1=on, 0=off). Grid may be set using Grid Selection.
T button
setvmtrans@ #
V button
setgridvis@ #
Pag. 1 di 2
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Z button
setsnap@ #
Desirable to turn off when in macros, to avoid snapping to objects accidentally when providing exact
coordinates.
Pag. 2 di 2
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Tool Bar Macros
The Tool Bar changes depending what editor you are in and what menu command you have selected. Only those
functions which have associated macro commands are listed here.
update_buttonbars@
Causes the display of the Tool Bar buttons and Units Measurement field to be refreshed to reflect the current
settings.
Active Dcode
setdcode@ 19
update_dcodebar@
Active Layer
setlayer@ 5
Check Boxes
There are a variety of check boxes available during Edit Menu commands, which allow you to limit the types of
data being selected. The availability of a check box for an Edit command is dependant on the editor.
Each check box is a yes/no toggle to indicate if the data type should be available to the Edit command.
CMP
seteditcmp@ #
If Set, you can select Components ('parts') in the database for editing. If Cleared, the components are not
selectable. 0 = clear, 1 = set the "Cmp" selection filter.
Pag. 1 di 12
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
seteditdrill@ #
seteditmill@ #
seteditflash@ #
seteditdraw@ #
Via
seteditvia@ #
0 = Clear
1 = Set the "Via" selection filter.
If Set, you can select entire vias for deletion (though not component pins). This also allows you to delete
empty vias (padstacks without any apertures assigned). If Clear, and the "Flsh" selection filter is set, only
the individual pads of vias will be selected for deletion.
Note: This check box is only available for the Edit > Delete command.
Example
edit_delete@
seteditvia@ 1
seteditcmp@ 1
seteditdraw@ 1
seteditflash@ 0
seteditdrill@ 1
seteditmill@ 0
axy@ 3000.4000,1586.2000
back@
Check button
Config button
Pag. 2 di 12
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Fixture Setup:
Each fixture (top and bottom) must be setup individually, using the following commands:
bn_fixture_width@ 1,20000.0000
Sets the width of the fixture being added (in inches or mm).
bn_fixture_height@ 1,20000.0000
Sets the height of the fixture being added (in inches or mm).
bn_add_newgrid@ 1,100.0000,100.0000
Second and third parameters are the X and Y values (respectively) for the grid spacing.
bn_add_newplt@ 1,"4,2540000,-95250000,-95250000,158750000,158750000,0,3"
bn_add_newplt@ 1,"1,1587500,-95250000,-95250000,158750000,158750000,76200,1"
bn_add_newplt@ 1,"4,2540000,-95250000,-95250000,158750000,158750000,0,3"
bn_add_newplt@ 1,"3,1270000,-95250000,-95250000,158750000,158750000,76200,1"
bn_add_newplt@ 1,"4,2540000,-95250000,-95250000,158750000,158750000,0,3"
bn_add_newplt@ 1,"2,2374900,-95250000,-95250000,158750000,158750000,76200,1"
bn_fitboard@ 1,20000.0000,20000.0000
Fixture Modification
Use these commands to modify existing fixtures. Commands must be run for each fixture side.
bn_grid_init@ 1
bn_pltlyr_init@ 1
Removes the fixture plates for the designated fixture (1=topside, 2=bottomside).
bn_error_init@ 1
Deletes the error flags for the designated fixture (1=topside, 2=bottomside).
bn_testpin_init@ 1
Removes the test probes for the designated fixture (1=topside, 2=bottomside).
bn_stiffener_init@ 1
bn_plate_init@ 1
Probe Setup
Test Probe
Pag. 3 di 12
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
bn_testpin_rebuild@ 1
bn_stiffener_rebuild@ 1
bn_grid_reset@ 1
Resets the grid for the designated fixture to the default values (1=topside, 2=bottomside).
bn_add_testpindef@ "3,3175000,12700,254000,2540,2000,5000,200,0"
bn_add_testpindef@ "3,3175000,12700,127000,2540,2000,5000,200,0"
bn_testpindef_init@
Removes all test probe definitions for the designated fixture (1=topside, 2=bottomside).
Stiffener
bn_stiffenerdef_init@
Removes all stiffener definitions for the designated fixture (1=topside, 2=bottomside).
bn_add_stiffenerdef@ "4,3175000,12700,635000,2000,2000,5000,200,200"
bn_add_stiffenerdef@ "4,3175000,12700,127000,2000,2000,5000,200,200"
Drill Table
See the Tables > NC Tool Tables macro commands. A Fixture Drill table is identical to a normal NC Tool Table,
but must be assigned to the fixture NC drill layers created for each fixture (top and/or bottom).
Drill Rule
bn_set_mindrloversize@ 2.0000
Tells the system that the drill hole size must be this amount greater than the probe size (in user units), so
that the probe will not touch the plate.
bn_set_maxdrloversize@ 5.0000
If you do not have a drill tool that exactly matches a particular drill size, the system will use the next biggest
drill tool in the table that is within this range (in user units).
Create button
Drill button
Pag. 4 di 12
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
bn_adddrill@ 23.0000
Adds a drill to the fixture NC drill layer. Parameter is the size of the drill being added.
bn_drill@ 1
Creates the NC Data layers for fixture drills. Must follow bn_adddrill@ command to assign the drill to the
correct NC drill table.
1=top fixture side
2=bottom fixture side.
bn_droppin@ #
Export button
See the following topics for the specific Bed-of-Nails export format:
TTI, Circuit-Line
See the following topics for the specific Flying Probe export format:
ATG, Integri-test, Probot, PROBOTECH, ACT Neutral
Filter button
setbydcode@ "18"
Sets selection Dcode filter. Notice the Dcode number is a string. This is required since the Dcode filter can
have many Dcodes, Dcode ranges, etc.
set_polyvector_filter@ #
set_polyoutline_filter@ #
Pag. 5 di 12
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Includes/Excludes outline polygons from selection. (1=include, 0=exclude)
set_polyraster_filter@ #
set_textstroked_filter@ #
set_texttruetype_filter@ #
set_pldrill_filter@ #
set_upldrill_filter@ #
set_drillcircle_filter@ #
set_drillslot_filter@ #
set_drilltext_filter@ #
set_millcircle_filter@ #
set_millpath_filter@ #
set_millslot_filter@ #
set_operatormsg_filter@ #
set_optionalstop_filter@ #
Grid Selection
Pag. 6 di 12
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
setgrid@ 3,55.0000,55.0000
First parameter sets the grid number (Remember, like macro layers, they begin at 0: i.e. grids 1-5 are
numbered 0-4).
Orthogonal Lock
setortho@ 2
Output button
Camtek interface
First parameter sets the server notification: 0 = do not notify server or 1 = notify server.
Second parameter specifies export directory: 0 = export to 2V20 directory or 1 = export to 2V50 directory.
Prev button
addprevious@
Pag. 7 di 12
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Return To CAM Editor button
util_camed@
SelectAll button
edit_selectall2@
Selects all data within the database extents. Can be used in commands which require a selection window to
specify the area being checked, etc. (Replaces commands, such as edit_group@, which must specify two
points on a rectangular selection window).
Example:
edit_selectall2@
back@
Test Pt button
Specifies the Dcode filter to use for each test probe type. Must be set for each style of probe being used, and
each fixture side being used (see example below).
Side sets the fixture for the test points being added:
0=top and bottom
1=top
2=bottom
Dcode is a string stating a single Dcode or range of Dcode numbers to filter by.
testpt_genfil@ Filter,Set
Sets Selection Criteria filter being applied to the test probes. Must be set on or off for each filter criteria type.
Pag. 8 di 12
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
2=use end points only
3=offset through hole
4=include single point nets
testpt_genfil_minsize@ 40.0000
If you elect to offset through hole test probes, this command sets the minimum size (in user units) a through
hole must be before it should be offset.
testpt_sidefil@ Type,Side,Used
Sets the board side to use when generating test points. Must be set for each type of test point being used and each side
being used for that type of test point.
Side sets the fixture for the test points being added: 0=top, 1=bottom.
Used determines whether that fixture is used for this test point type: 0=no, 1=yes
testpt_minsizefil@ Type,Size
Command sets the minimum size a potential test point can be for selection as a test point. Must be set for
each type of test point being used.
Type sets the test point style: 1=through-hole pin, 2=SMT pin, 3=plated through-hole, 4=surface pad
Size is the minimum size the data can be (in user units)
Once test point settings have been defined, the following commands create the actual test points.
testpt_clear@
If you have previously created test points, this command deletes them before placing test points again.
singlenetextract@
testpt_startcreatefil@
A necessary "internal" function that gathers the information from the filter that has been set up by the above
commands, and applies it to the test point creation process.
testpt_create@
testpt_stagger@
view_settestpt@ 1
Pag. 9 di 12
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Displays created test points: 0 = do not show test points, 1=show test points
testpt_endcreatefil@
Ends test point creation. A necessary "internal" function that clears the filter information from memory.
Example
Visibility button
bn_view_pincircle@ 1,1
bn_view_pinline@ 1,0
Pag. 10 di 12
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
First parameter is the fixture side (1=top side, 2=bottom side)
bn_view_stiffener@ 1,1
Shows stiffeners.
bn_view_plate@ 1,1
Shows plates.
bn_view_grid@ 1,0
bn_view_testpin@ 1,1
bn_view_violation@ 1,0
bn_view_gridcolor@ 1,4
bn_view_pincolor@ 1,6
bn_view_toolcolor@ 1,7
Each of the above commands control the color of the Grid, Pins, and and Stiffener, respectively.
The first parameter is the Fixture side (1=top, 2=bottom) and the second parameter is the color code.
bn_view_gridsize@ 1,5.0000
testpt_setsize@ 30.0000
Pag. 11 di 12
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Parameter is the test point graphic size, in mils.
testpt_setcolor@ 8,9,11
First # is the Top color, second is the Bottom color, and third is the Through-Hole color.
view_setbottf@ 1
view_settoptestpt@ 1
view_setbottestpt@ 1
view_setthrutestpt@ 0
Controls visibility of top, bottom, and through-hole test points, respectively. 1=visible, 0=not visible
Example
testpt_setsize@ 45.0000
testpt_setcolor@ 0,10,14
bn_view_pincircle@ 2,1
bn_view_pinline@ 2,1
bn_view_stiffener@ 2,1
bn_view_plate@ 2,1
bn_view_grid@ 2,1
bn_view_testpin@ 2,1
bn_view_violation@ 2,1
bn_view_gridcolor@ 2,12
bn_view_pincolor@ 2,5
bn_view_toolcolor@ 2,3
bn_view_gridsize@ 2,15.0000
view_settoptf@ 0
view_setbottf@ 1
view_settoptestpt@ 0
view_setbottestpt@ 1
view_setthrutestpt@ 1
Pag. 12 di 12
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Markers
Markers are a visual reference that you can use in any macro: they appear like a small X, in the same color as
the cursor. It is a visual reference only: you cannot snap to it because it is not part of your design. The X is
scaleable, just as if it were real data (the size changes with a zoom in or out). Markers are not saved with the
database, though they will remain visible for the entire time your data is loaded, unless you use the
clearmarkers@ command to turn them off.
addmarker@ N,X,Y,S
Adds a marker. It can also be used to move a marker or change its size, by entering a marker number that
currently exists.
delmarker@ N
clearmarkers@
currentmarker@ N
markerX!
markerY!
markerX! and markerY! always return a value. 0 is returned for both if no markers are present or the
currentmarker@ value is not valid.
Pag. 1 di 1
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Getting Mouse Coordinates
Sometimes it is required to get the current mouse cursor coordinates for use in your macro. For example, a
macro that builds a test coupon from the current database needs to know where to place the test coupon. In
other cases a macro may need to process data only after the user is prompted to select it.
getmousepos@ "Text"
Causes macro execution to pause until a mouse button or key is pushed. The text string will be displayed as
message on the prompt line to assist the user.
button!
Returns the action taken on the mouse, following the getmousepos@ command:
1=left mouse button
2=right mouse button
3=middle mouse button
0=keyboard action
Coordinates of the mouse when the button/key is pushed are stored internally until requested by either of these
sets of queries:
coordx!
coody!
These queries return the actual coordinates of the mouse cursor. If grid snap is on, they return the nearest
grid coordinate. If object snap is on, they return the coordinate of the object within the snap box.
If you do not want the effects of snapping and want the exact coordinate of the mouse cursor when the button
was pushed, either turn all snapping off prior to the command's execution, or use these queries:
mouseposx!
mouseposy!
Example
100
Getmousepos@ "Select FIRST Point (Right Button Exits)"
If Button! = 1 then goto 110
If Button! = 2 then goto 820
Goto 100
110
Marker = 1
Gosub 840
...
...
' Exit routine
820
OK_Cancel "OK to EXIT? ",OK
If OK = 0 then goto 110
end@
' Add the marker subroutine
' Coord X & Y are after the effects of all snap modes.
840
CoordX# = CoordX!
CoordY# = CoordY!
Addmarker@ Marker,CoordX#,CoordY#,60
Getmousepos@ "Button 1 to MOVE, Button 2 to ACCEPT!"
If Button! = 1 then goto 840
If Button! = 2 then Return
Goto 840
end@
Pag. 1 di 1
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
Database Queries
Once you start writing macros you quickly recognize how important it is to be able to get data from the
database: what is the current active layer, what size is Dcode 10, what is the name of the current database, or
what is the date and time? Database queries provide you information on the current state of the database, and
its various elements.
Database query functions all end with the ! symbol and can return either real, integer or string values.
An example of a database query is dbminx! The code: MX% = dbminx! results in the integer variable MX% being
set to a whole value (in mils), representing the minimum X coordinate of the current database.
Pag. 1 di 1
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
Database Analysis Queries
These queries give specific design information about the current database. All of the following database queries
must be preceded by one of the Analyze Data macros. These queries only retrieve information that is gathered
by those macros. Otherwise, no information will be given by the query. All data returned is only for ACTIVE
layers.
Tip: Remember, macro language layer numbering starts at 0. For example, layer 1 in a database returns layer
ID 0 within a macro.
Requirement: Most of these queries require the data be part of the netlist. If the design doesn't have extracted
nets, you can use Utilities > Netlist Extract to do so.
Select a query:
Smallest Pad
Returns the smallest round Dcode used in a trace (if nets are present)
Pag. 1 di 4
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
Dcode occurs on.
Returns the smallest round Dcode used in a graphic line (if nets are not present in the database).
Returns the number of SMT pads present on the selected layer(s). They must be part of nets.
Pag. 2 di 4
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
SMT Pitch
Returns the air gap when nets are present. If no nets are detected, returns the area between any graphical
objects.
Returns the smallest width of material between a pad and the drill piercing it (to assure proper plating).
Smallest Drill
Pag. 3 di 4
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
Command Type Description/Example
min_drill_valid! I Returns a 1 if drills are found in design, 0 if not.
min_drill_ref! I Returns the drill reference number of the smallest
drill.
min_drill_size! R Size of the smallest drill.
min_drill_layer! I Layer number of the drill layer with the smallest
drill.
min_drill_loc_x! R Returns the X coordinate of the smallest drill hit.
min_drill_loc_y! R Returns the Y coordinate of the smallest drill hit.
Returns the smallest distance between a drill and a trace that does not touch it. Must be on a positive electrical
layer (top, internal, bottom, pos. plane, etc.).
Pag. 4 di 4
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
Database Properties Queries
Queries which return information about the extents of the database, workspace, etc., as well as general
database information.
Restriction: Database extent queries take into account all data in the design or specific layer, including any
Step&Repeat and Panel data present.
Pag. 1 di 1
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
Dcode Queries
Returns information on the active Dcode in the design. Interactively this is indicated by the Dcode on the Tool
Bar. Within a macro, dcodes can be made active by using the setdcode@ command.
Tip: It is recommended you familiarize yourself with the available intrinsic apertures (especially their
parameters) and aperture macro commands before attempting to use them in a macro.
Pag. 1 di 1
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
Drill & Mill Queries
NC Data macro queries have two states for determining tool information: current layer or current table.
For Current Layer mode, the NC data layer must be ON for tool queries. Information is derived about the NC
tools from the table which is assigned to that NC data layer. Tool information for other layers or NC Tables is
ignored.
For Current Table mode, the NC Table itself is referenced directly for the tool information, regardless of layer.
This state will return values for NC tools on all layers the table is assigned to.
Each state has its own set of macro queries assigned to it. The table below are formatted to provide all queries
from the same state.
In addition, there are a number of miscellaneous NC data queries which are not tool or table dependant.
Current Layer:
Current Table:
Miscellaneous NC Queries
NC EDITOR
To access current tool information, you must first turn ON the NC layer you wish to query. If you wish to get
tool-specific information, you will need to use the following command to set the tool to retrieve information
from:
set_current_toolref@ # where the # is the Reference number of the tool in the table attached to the NC
layer.
Once you have set a tool, you may use these queries to retrieve information about it:
Rule: Each NC tool is automatically assigned a reference number by the system, which should be used to
manipulate the tool when writing macros related to NC data. The tool ID number, which is more familiar to most
operators, is used to identify the tool for import/export purposes.
Tool-Specific Information:
Table-Specific Information:
Pag. 2 di 5
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
highest tool ID number in the table, irregardless of
usage.
Highestdefdrillnum! I Same as above, but returns highest drill tool ID
number in the table.
Highestdefmill! I Returns the tool reference of the mill tool with the
highest tool ID number in the table, irregardless of
usage.
Highestdefmillnum! I Same as above, but returns the highest mill tool ID
number in the table.
Highestdeftool! I Returns the tool reference of the tool with the
highest ID number in the table, irregardless of tool
type.
Highestdeftoolnum! I Same as above, but returns highest tool ID number.
Highesttoolref! I Returns the highest tool reference in the table.
Toolexportorder! I Returns tool export order (note that drill tools are
always exported before mill tools).
Tooltable! I Returns the number of the current tool table
The following NC data queries retrieve information from a specific tool table. Note that these queries perform the
same functions as the ones just listed in the previous section, but do so regardless of the NC layer. The queries
themselves share a similar naming format, with the exception of the addition text "dbq_" indicating these are
database queries.
To activate the tool table to be checked, you must use this command:
Tool-Specific Information:
Pag. 3 di 5
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
3 = Drill tool
dbq_toolinfeed! I Returns in feed value, 0 implies use machine
default.
dbq_tooloutfeed! I Returns out feed value, 0 implies use machine
default.
dbq_toolfeedrate! I Returns feed rate value, 0 implies use machine
default.
dbq_toolrpms! I Returns tool RPM, 0 implies use machine default.
dbq_toollinktool! I Returns tool reference of link tool (tool to be used
when maxhits reached on this tool).
dbq_toolshape! I Returns shape to be used when displaying the tool:
-1 = Unknown
1 = Round
4 = Target
6 = Custom Aperture
dbq_toolusesize! I Returns the setting of the Use Tool Size checkbox in
the NC Table (ignored when shape is custom
aperture):
0 = Display user-supplied size (value is 0 when
shape is custom aperture)
1 = Match displayed size to tool size (shape must
be round or target)
dbq_tooldisplaysize! R Returns the size used in the Display Size field of the
NC Table. Value returned is not applicable if shape
is Custom Aperture. Only returns a value if Use Tool
SIze is selected in table.
dbq_toolcapname! I If tool is assigned a Custom Aperture display shape,
query returns the name of the custom aperture.
Ta ble-Specific Information:
Pag. 4 di 5
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
number in the table.
dbq_highestdeftool! I Returns the tool reference of the tool with the
highest ID number in the table, irregardless of tool
type.
dbq_highestdeftoolnum! I Same as above, but returns highest tool ID number.
dbq_highesttoolref! I Returns the highest tool reference in the table.
dbq_toolexportorder! I Returns tool export order (note that drill tools are
always exported before mill tools).
dbq_tooltable! I Returns the number of the current tool table
Pag. 5 di 5
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
Layer Queries
Tip: Remember, macro language layer numbering starts at 0. For example, layer 1 in a database returns layer
ID 0 within a macro.
Pag. 1 di 2
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
Composite_plot_name! S Returns the plot (file) name of the current
composite.
First_composite_layer! I Returns the layer ID of the first layer in the
composite. -1 if no composite layer.
Next_composite_layer! I Returns the layer ID of the next layer in the
composite. -1 if no more composite layers.
Composite_layer_polarity! I Returns 1 for dark, -1 for clear, 0 if no composite
selected.
Pag. 2 di 2
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
Misc. Queries
Marker Macros
Pag. 1 di 1
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
Mouse/Cursor Queries
Pag. 1 di 1
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
Net & Padstack Queries
Pag. 1 di 1
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
System & Product Queries
Pag. 1 di 1
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
Text Queries
Allows you to query the text style and contents of any current text in the database. For more information see
the macro commands for Add > Text.
Pag. 1 di 1
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
Analysis Queries
These queries return various information found by the Analysis Menu commands they refer to. In each case, the
Analysis command must be run either interactive, or in the course of the macro, for the query to return a value.
Pag. 1 di 2
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/Q...
must be run first).
Number_Part2Part_errors! I Reports the number of part to
part spacing errors found
(Analysis > Part to Part Spacing
must be run first).
Number_SilkScreen_errors! I Reports the number of silkscreen
to solder mask spacing errors
found (Analysis > Silk to Solder
Spacing must be run first).
Number_ElecSolder_errors! I Reports the number of solder
mask to trace layer spacing errors
found (Analysis > Solder Mask to
Trace Spacing must be run first).
Pag. 2 di 2
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/M...
Forms
A form is a dialog box similar to a Windows-style dialog: it is used to query input from the user. Instead of
relying upon combinations of Print and Input to obtain user-entered data, forms in BASIC allow macro
programmers to design a more powerful user interface by creating data entry forms which are custom-tailored
to a specific job function. Forms relieve the macro programmer from having to follow the traditional method of
using several input statements to get simple information from the user. If there is a choice between multiple
options, the programmer may now list the options within a single Form instead of using Yes/No tree answers or
having the user enter a number, letter, name, etc. to determine which path to follow. However, it is an
advanced piece of programming and not recommended for the beginning BASIC programmer.
Each form is comprised of a title bar, a control area, and one to three buttons at the bottom.
Example:
To add a form to a macro, you must use the macro commands listed below to create it, place controls inside the
control area, and then display the form for user interaction. There are a number of input options available to the
form writer: Input, Check, and Choice, as well as the ability to retrieve filenames from the user, and to Print
descriptive lines in the form. All of these input controls can be assigned variables which can be used by the
calling macro.
During the course of running a macro, the form is displayed on screen for the user to fill out. When the user has
finished filling out the form, they press one of the buttons at the bottom of the form to delete it and continue the
macro. If either the OK or the Yes button is pressed, the values entered into the input controls are saved in the
user-supplied variables. If either the Cancel or the No button is pressed, the values entered into the controls are
thrown away and the user's variables are left unchanged.
Each form must contain an OpenForm, a DisplayForm and a DeleteForm statement. The number of controls and
print lines contained in the form can be variable; the only limitations occur depending on the type of display
units chosen for the form:
Pixel display units show the form in direct screen resolution, giving you absolute control over the size of
the form, but can make it more difficult to arrange the layout of the form, especially when dealing with
line-spacing issues between the controls.
Pag. 1 di 9
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/M...
Character display assumes the width and height of a screen font as its display unit. This allows you to
more easily space out lines and controls, but can result in limitations on the number of lines your form can
display, dependant on the resolution of the screen the macro is running on.
Using either display mode, the form cannot be larger or wider than the CAM350 work area (which includes any
toolbars that are currently turned on). To increase the available space in the work area, you may turn off the
toolbars while the form is being displayed on screen, using the macro commands for View > Toolbar, View >
Status Bar, and View > Layer Bar. Once the form has been deleted, these toolbars may be turned back on
again.
STATEMENTS
These commands create, populate, and close the form. Each command has should appear in the sequence
below: the exception is the AddForm command, which may be repeated multiple times to fill the form with
controls, before calling the DisplayForm command brings the Form up on screen.
Note: Any parameters enclosed in brackets [] are optional. If these parameters are not specified in a macro, the
system uses default values.
OpenForm
Creates a blank form and gives it the identifier n. This must be done before controls can be placed on a form.
Syntax:
#n is a number used to identify the form for adding controls, and for displaying and deleting the form. It
must be in the range 1 to 255.
width% is the width of the forms control area (based on the setting for unit)
height% is the height of the form's control area (based on the setting for unit) This value does not
make provisions for any buttons that you might put at the bottom of the form; you must factor those
into the overall height of the form.
unit is either PIXEL or CHARACTER. If the unit is PIXEL, then all form coordinates (as well as the form
height and width) are in pixels. (Note that if you have a 640X480 display, then the display has 640 pixels
across by 480 pixels down.) If unit is CHARACTER, then all form coordinates (as well as the form height
and width) are in characters across and lines down. (A line is the height of a capital letter plus some
space to separate it from the next line.)
buttons indicates which buttons will appear at the bottom of the form (these are not in the control
area). You can choose between several combinations of buttons:
AddForm
Pag. 2 di 9
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/M...
Adds a control to the form identified by n in OpenForm.
Syntax:
x% is the distance the control is offset from the left side of the form; this value uses the unit set in
OpenForm.
If CHARACTER, then this is the number of lines from the left of the control area.
If PIXEL, then this is the number of pixels from the left of the control area.
y% is the distance the control is offset from the top of the control area of the form (ignoring the
distance for the title bar); this value is in the unit set in OpenForm.
If CHARACTER, then this is the number of lines from the top of the cotnrol area.
If PIXEL, this is the number of pixels from the top of the control area.
prompt$ is a character string (either a literal or a string variable) which is displayed as a prompt line.
type is the kind of control to be added. This is either PRINT, INPUT, CHECK or CHOICE. Two other
controls may also be used here (GetOpenFilename and GetSaveFilename), but these alter the syntax
of the AddForm command (see their descriptions for the proper syntax).
variable applies to all control types except PRINT. The control will have a default state, which is set
based upon the value of the variable.
DisplayForm
Displays the form and waits for the user to fill it out. Control returns after the user presses one of the buttons
specified in OpenForm (OK, Cancel, etc.)
Syntax:
where indicates where the form is to be displayed within the main application window. The setting can
be one of the following:CENTER, UPPERLEFT, UPPERRIGHT, LOWERLEFT or LOWERRIGHT. If not
specified, then CENTER is assumed.
DeleteForm
Frees the form ID n so that it can be reused. This should be called when the form is no longer needed.
Syntax:
DeleteForm #n
CONTROLS
Pag. 3 di 9
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/M...
Controls use the standard values explained in the AddForm command. However, each control may have unique
variables:
Check
Displays a check box, which the user may check and uncheck with the mouse or keyboard.
Syntax:
state% is a variable that records the current state of the check box: 0 = off, 1 = on. It may be used
initially to set the box state, but returns the value the user has set after the form is displayed.
Example:
Choice
Displays radio buttons, surrounded by a box, which the user may select one option from, using the mouse or
keyboard.
Syntax:
AddForm #n, x% y%, prompt$, Choice, which%, choice1$, choice2$[, choice3$, .....]
which% is the variable that returns the choice the user made: choices are numbered in sequence from
0 to n This value can be set initially to a specific choice before the form is displayed, but returns
whatever value the user chose while the form was displayed.
choicen$ represents the set of choices made available to the user. Each choice must have its own
variable. Two or more choices must be given.
Example:
GetOpenFileName
Functions similarly to the Windows "Open" file dialog box: obtains a filename from the user by displaying a
Windows-style drop down list. The returned filename can be used for file input/output purposes.
Syntax:
AddForm #n, x%, y%, prompt$, GetOpenFilename, filename$[, filter$[, filter_desc$[, FLAG[,
FLAG]]]]
filename$ is the variable which will return the retrieved filename. Returns the full filepath of the file.
filter$ is a file filter to limit which file types are displayed (such as *.txt). More than one file type can be
indicated by separating them with semi-colons ( "*.gbr;*.lgr"). If omitted, the default will be *.*.
Pag. 4 di 9
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/M...
FLAG is any one of the following:
NoChangeDir Will not allow the user to change the current working directory.
Multiple FLAGS are permitted, separated by commas. If none of the above FLAGS are used, then their
opposite (default) functions will be used.
Example:
GetSaveFileName
Functions similarly to the Windows "Save As" file dialog box: obtains a filename from the user by displaying a
Windows-style drop down list. The returned filename can be used for file input/output purposes.
Syntax:
AddForm #n,x%,y%,prompt$,GetSaveFilename,filename$[,default_ext$[,filter[,filter_desc$[,FLAG
[,FLAG]]]]]
filename$ is the variable which will return the retrieved filename. Returns the full filepath of the file.
default_ext$ is the default extension of the file being saved. It is a three character string with no
period (e.g. "txt").
filter$ is a file filter to limit which files are displayed (such as "*.txt"). If omitted, will be "*.*".
NoOverWritePrompt If the filename already exists, it does not prompt the user to verify before
overwriting it.
NoChangeDir Will not allow the user to change the current working directory.
Multiple FLAGS are permitted, separated by commas. If none of the above FLAGS are used, then the
opposite, default functions will be used.
Example:
Input
Accepts typed input from the user. There are three types of input controls: integer, real, and string:
1. Integer Input
Pag. 5 di 9
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/M...
Syntax for integer controls:
Example:
AddForm #1, 0, 1, "Enter the current year:", Input, Year%, 1990 to 2999
2. Real Input
Example:
AddForm #1, 0, 2, "Enter the offset in Inches:", Input, Offset#, 0.0 to 5.0
3. String Input
Example:
low% to high% is an optional range of values which the user input must lie within. The control will
automatically validate this range, if it is present. It may be used for either integer or real input values.
width% is the optional string width (in characters) of the input box. If width% is not given, then the
width of the control is approximately 21 characters. The input box automatically scrolls to the left if more
characters are entered.
Syntax:
width% is the width (in characters) of the text. If necessary, the string will wrap either at this width%
number of characters or at the right edge of the control area (whichever is less).
Example:
Pag. 6 di 9
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/M...
AddForm #1, 0, 0, "this is a string", Print, 40
FUNCTIONS
All these functions are used to check if a given button is pressed. They return n, which is either a 1 or a 0 and
may all be used in a Boolean expression. These functions only refer to the buttons on the bottom of the form,
they are not used by the macro programmer to add buttons to a form.
BUTTON FUNCTIONS
Button Function
OK FORMOK(n)
CANCEL FORMCANCEL(n)
YES FORMYES(n)
NO FORMNO(n)
OTHER FUNCTIONS
OpenNameOK
SaveNameOK
Both functions check to see if the last GetOpenFileName or GetSaveFileName were completed properly (by the
user selecting a file and pressing OK)..
Syntax:
OpenNameOK(n) = ok%
SaveNameOK(n) = ok%
1 = completed
0 = not completed
Example:
FileExists
Syntax:
Pag. 7 di 9
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/M...
FileExists(filename$) = ok%
Example:
EXAMPLE OF A FORM:
Following is an example of a macro that creates a form, and the resulting form.
label1$ = "This is an eighty character string to be used as a test for the Print command."
i% = 4
d# = 12345.678
s$ = "The quick brown fox"
j% = 1
k% = 2
skipit:
DeleteForm #1
End
Pag. 8 di 9
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/M...
Pag. 9 di 9
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Add Menu Macros
add_probot_marker@
Initiates command.
alignpt_side@ #
axy@ 0.0000,0.0000
Adds a new alignment pin, at the coordinates given. Multiple sets of coordinates may be given to add
additional pins. Parameter sets the type of alignment pin to use:
1=Top
2=Bottom
3=Through-Hole
Example
add_probot_marker@
alignpt_side@ 1
axy@ 1225.0000,2725.0000
axy@ 2175.0000,2275.0000
alignpt_side@ 2
axy@ 1750.0000,2500.0000
axy@ 2000.0000,2000.0000
alignpt_side@ 3
axy@ 1500.0000,2675.0000
axy@ 1250.0000,2250.0000
back@
Center-Angle
Pag. 1 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
add_arc@
axy@ -50.0000,100.0000
axy@ 0.0000,100.0000
axy@ -150.0000,100.0000
back@
Adds an arc. Points specified are the center, start, and point that defines the angle.
In addition to the command sequence above, several commands may be added after the add_arc@ command
to assign the layer(s) which arc will appear on in the symbol, once the symbol is placed in a panel.
setlayer@ #
Sets the layer in the Symbol Editor that the arc will be added to. (Remember macro layering begins at 0).
SymSetLayerSpec@ Lay
1 = ALL Layers
2 = All Electric Layers
3 = All Layers of the type data is being created on
4 = Current Layer (active layer # in the symbol editor)
SymSetLayerOfType@ Type
When choosing 3 in SymSetLayerSpec@, this command specifies the layertype of the layer.
Type:
Same as the above CAM Editor command sequence, but commands listed below may be added after
add_arc@ command to define attributes of the arc's graphic:
setpolarity@ Value
setwidth@ Width
3-Point
add_arc3pts@
axy@ -50.0000,-50.0000
axy@ 100.0000,-50.0000
axy@ 50.0000,100.0000
back@
Pag. 2 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
The first two points are the end points of the arc. The third point is any other point (except the end points)
on the arc.
In addition to the command sequence above, several commands may be added after the add_arc3pts@
command to assign the layer(s) which arc will appear on in the symbol, once symbol is placed in a panel.
setlayer@ #
Sets the layer in the Symbol Editor that the arc will be added to. (Remember macro layering begins at 0).
SymSetLayerSpec@ Lay
1 = ALL Layers
2 = All Electric Layers
3 = All Layers of the type data is being created on
4 = Current Layer (active layer # in the symbol editor)
SymSetLayerOfType@ Type
When choosing 3 in SymSetLayerSpec@, this command specifies the layertype of the layer.
Same as the above CAM Editor command sequence, but commands listed below may be added after
add_arc3pts@ command to define attributes of the arc's graphic:
setpolarity@ Value
setwidth@ Width
2-Point
add_arctang@
axy@ -100.0000,50.0000
axy@ 200.0000,200.0000
back@
In addition to the command sequence above, several commands may be added after the add_arctang@
command to assign the layer(s) which arc will appear on in the symbol, once symbol is placed in a panel.
setlayer@ #
Pag. 3 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Sets the layer in the Symbol Editor that the arc will be added to. (Remember macro layering begins at 0).
SymSetLayerSpec@ Lay
1 = ALL Layers
2 = All Electric Layers
3 = All Layers of the type data is being created on
4 = Current Layer (active layer # in the symbol editor)
SymSetLayerOfType@ Type
When choosing 3 in SymSetLayerSpec@, this command specifies the layertype of the layer.
Same as the above CAM Editor command sequence, commands listed below may be added after
add_arctang@ command to define attributes of the arc's graphic:
setpolarity@ Value
setwidth@ Width
Adds a polygonal border to the one-up design in the CAM Editor. This border will be used to determine
step&repeat image spacing in the Panel Editor, as well as provide a border for panel venting. Any number of
points describing the border may be entered - the command will automatically close the polygon after the
final point is specified.
add_border@
Inititates command.
setortho@ #
0 = 90 degrees
1 = 45 degrees
2 = any angle
axy@ -118.6000,2355.5000
axy@ 2355.9000,2367.9000
axy@ 2268.8000,769.4000
back@
Pag. 4 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Axy@ commands select each susequent point on the polygonal outline. Back@ command closes polygon and
ends function.
add_symbol_border@
axy@ -25.0000,100.0000
axy@ 75.0000,0.0000
back@
Draws a rectangular border for the symbol, as defined by two opposite corner coordinates.
3 Points
add_circle3pts@
axy@ -50.0000,150.0000
axy@ 100.0000,150.0000
axy@ 0.0000,250.0000
back@
Adds a circle given three points: the first two points are the end-points of the circle's arc. The third point is
any point on the circle EXCEPT an end point.
Same as the above command sequence, but command listed below may be added after add_circle3pts@
command to define attributes of the circle's graphic:
setpolarity@ Value
Similar to the CAM Editor 3 Point Circle command above, but several commands may be added after
add_circle3pts@ to assign the layer(s) which circle will appear on, in the symbol, once symbol is placed in a
panel.
add_circle3pts@
setlayer@ #
Sets the layer in the Symbol Editor that the circle will be added to. (Remember macro layering begins at 0).
SymSetLayerSpec@ Lay
Pag. 5 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
1 = ALL Layers
2 = All Electric Layers
3 = All Layers of the type data is being created on
4 = Current Layer (active layer # in the symbol editor)
SymSetLayerOfType@ Type
When choosing 3 in SymSetLayerSpec@, this command specifies the layertype of the layer.
axy@ -50.0000,150.0000
axy@ 100.0000,150.0000
axy@ 0.0000,250.0000
back@
Creates the circle, given three points: the first two points are the end-points of the circle's arc. The third
point is any point on the circle EXCEPT an end point.
Center Radius
add_circle@
axy@ -100.0000,200.0000
axy@ -50.0000,200.0000
back@
This adds a normal 2 point circle, with the first point defining the center and the second point defining a point
on the radius.
Same as the above command sequence, but command listed below may be added after add_circle@
command to define attributes of the circle's graphic:
setpolarity@ Value
Similar to the CAM Editor Center Radius command above, but several commands may be added after
add_circle@ to assign the layer(s) which circle will appear on, in the symbol, once symbol is placed in a panel.
add_circle3pts@
setlayer@ #
Sets the layer in the Symbol Editor that the circle will be added to. (Remember macro layering begins at 0).
SymSetLayerSpec@ Lay
1 = ALL Layers
2 = All Electric Layers
Pag. 6 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
3 = All Layers of the type data is being created on
4 = Current Layer (active layer # in the symbol editor)
SymSetLayerOfType@ Type
When choosing 3 in SymSetLayerSpec@, this command specifies the layertype of the layer.
add_name@
partname_Turn@
Turns the Device Name attached to the cursor. Each instance of the command turns the Device Name a fixed
degree counter-clockwise. Degree is specified by setturn100angle@ command.
setturn100angle@ #
Sets the turn angle. # is 100 times the angle (650=6.5 degrees)
partname_Mirror@ #
textcapheight@ #
Sets the text height of the Device Name (capital letter height), in current user units.
Example
add_name@
setturn100angle@ 4500
partname_Turn@
partname_Turn@
textcapheight@ 45.0000
partname_Mirror@
axy@ -325.0000,0.0000
back@
Adds a single drill hit in a drill coupon. Hit must be associated with the drill tools in the NC Table.
add_symbol_drill@
Pag. 7 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Initiates the command.
Select one of the following to set the tool value for the drill:
Sets the first drill based on the smallest drill in the design. Parameters are:
Nth: sets how far offset from the smallest drill in the table it should be: 0 means smallest, 1 is next to
smallest, etc.
min/max: sets a value for the smallest size the first tool in the sequence can be (i.e. 45 indicates a tool
larger than 45 mils must be the first tool in the sequence)
Sets the first drill based on the largest drill in the design. Parameters are:
Nth: sets how far offset from the largest drill in the table it should be: 0 means largest, 1 is one below
largest, etc.
min/max: sets a value for the largest size the first tool in the sequence can be (i.e. 100 indicates a tool
no larger than 100 mils must be the first tool in the sequence)
Sets the first tool in the sequence based on the ID number of the tool.
SymDrlSpecToolSize@ Size
Sets the first tool in the sequence based on the size of the tool (in user units).
SymSetDrillType@ 1
axy@ x,y
Example
add_symbol_drill@
SymDrlSpecLargest@ 0,0,0.0000
SymSetDrillType@ 0
axy@ -375.0000,-100.0000
back@
nc_add_drilled_circle@
Pag. 8 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
set_current_toolref@ #
Specifies the tool being used to make the circle. # is the tool REF number of the new tool.
axy@ -3075.0000,1300.0000
axy@ -2150.0000,825.0000
back@
This adds a drilled circle using the same format as a normal 2 point circle, with the first point defining the
center and the second point defining a point on the radius.
nc_add_drill_hit@
Initiates command.
set_current_toolref@ #
Specifies the tool being used to make the hit. # is the tool REF number of the new tool.
set_nc_plated_add_drill@ #
axy@ 525.0000,5000.0000
back@
Ends command.
Example
nc_add_drill_hit@
set_current_toolref@ 4
set_nc_plated_add_drill@ 0
axy@ 15.0800,53.7200
back@
Adds a series of drill hits to a drill coupon. Drills may be ordered from smallest to largest, largest to smallest,
etc.: once the coupon is used in a panel, the command will space drill hits evenly along the path specified by the
two end points of the sequence. These "anchor" drills may be defined by their relationship to the smallest or
largest tool in the NC Table, by tool number, or by tool size. The hits will be propagated using the NC tool table
in the design.
add_drill_sequence@
Pag. 9 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Select one of the following to set the FIRST anchor tool's value.
Sets the first drill based on the smallest drill in the design. Parameters are:
Nth: sets how far offset from the smallest drill in the table it should be: 0 means smallest, 1 is next to
smallest, etc.
min/max: sets a value for the smallest size the first tool in the sequence can be (i.e. 45 indicates a tool
larger than 45 mils must be the first tool in the sequence)
Sets the first drill based on the largest drill in the design. Parameters are:
Nth: sets how far offset from the largest drill in the table it should be: 0 means largest, 1 is one below
largest, etc.
min/max: sets a value for the largest size the first tool in the sequence can be (i.e. 100 indicates a tool
smaller than 100 mils must be the first tool in the sequence)
Sets the first tool in the sequence based on the ID number of the tool.
FirstSymDrlSpecToolSize@ Size
Sets the first tool in the sequence based on the size of the tool (in user units).
Select one of the following to set the LAST anchor tool's value.
Sets the last drill based on the smallest drill in the design. Parameters are:
Nth: sets how far offset from the smallest drill in the table it should be: 0 means smallest, 1 is next to
smallest, etc.
min/max: sets a value for the smallest size the first tool in the sequence can be (i.e. 45 indicates a tool
larger than 45 mils must be the first tool in the sequence)
Sets the first drill based on the largest drill in the design. Parameters are:
Nth: sets how far offset from the largest drill in the table it should be: 0 means largest, 1 is one below
largest, etc.
min/max: sets a value for the largest size the first tool in the sequence can be (i.e. 100 indicates a tool
smaller than 100 mils must be the first tool in the sequence)
Pag. 10 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
LastSymDrlSpecToolNum@ Tool Number
Sets the first tool in the sequence based on the ID number of the tool.
LastSymDrlSpecToolSize@ Size
Sets the first tool in the sequence based on the size of the tool (in user units).
SymSetDrillType@ 1
axy@ 32.8000,153.6000
axy@ 340.2000,-27.7000
Indicate the positions of the First and Last anchor drills in the sequence.
Example
add_drill_sequence@
FirstSymDrlSpecLargest@ 0,0,0.0000
LastSymDrlSpecSmallest@ 0,0,0.0000
SymSetNumHits@ 0
SymSetDrillType@ 0
axy@ 32.8000,153.6000
axy@ 340.2000,-27.7000
back@
nc_add_drilled_slot@
set_current_toolref@ #
Specifies the tool being used to make the slot. # is the tool REF number of the new tool.
setortho@ #
0 = 90 degrees
1 = 45 degrees
2 = any angle
axy@ 50.0000,2800.0000
axy@ 625.0000,2325.0000
back@
Coordinates are the beginning and ending drill hits of the slot.
Pag. 11 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Example
nc_add_drilled_slot@
set_current_toolref@ 7
setortho@ 1
axy@ 7.5300,63.6000
axy@ 23.9900,49.5100
back@
LyrID is the number of the layer the text is being created on (must be an NC layer).
Example
Add an Ellipse
This special macro command sequence adds filled ellipses (sectorized representations of an ellipse).
Exception: this command is for macro use only, and does not have an Add Menu command equivalent.
add_filledellipse@
Initializes command.
set_filledellipsesize@ 100,200,10
Third #: Angle (in degrees) of each sector of the ellipse (must be between -90 and 90 degrees, and not 0
degrees)
axy@ 500,500
Pag. 12 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Creates an ellipse at each X,Y coordinate. X,Y coordinate is the center of the ellipse.
Tip: you may use the set_filledellipsesize@ command between coordinates to change the size of the ellipse
being added.
Example
add_filledellipse@
set_filledellipsesize@ 100,200,10 'Sets first ellipse size
axy@ 500,500 'Adds two ellipses using this size
axy@ -500,-500
set_filledellipsesize@ 150,75,5 'Changes size of ellipse
axy@ -400,400 'Adds new ellipse of that size
back@
On Bottom Fixture
bn_addbotpin@
axy@ 442.4000,4276.1000
axy@ 493.6000,4187.8000
back@
Adds a probe on bottom fixture. First coordinates are the test point location. Second set is the grid point
where the probe enters the first plate.
On Top Fixture
bn_addtoppin@
axy@ 442.4000,4276.1000
axy@ 493.6000,4187.8000
back@
Adds a probe on top fixture. First coordinates are the test point location. Second set is the grid point where
the probe enters the first plate.
add_flash@
axy@ 5704.0000,17412.0000
back@
Adds a flash (using the Active Dcode) on the active layer, at the given location. Layer and Dcode must be
predefined before use.
In addition to the command sequence above, several commands may be added after the add_flash@ command
Pag. 13 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
to assign the layer(s) which flash will appear on in the symbol, once symbol is placed in a panel.
setlayer@ #
Sets the layer in the Symbol Editor that the flash will be added to. (Remember macro layering begins at 0).
SymSetLayerSpec@ Lay
1 = ALL Layers
2 = All Electric Layers
3 = All Layers of the type data is being created on
4 = Current Layer (active layer # in symbol editor)
SymSetLayerOfType@ Type
When choosing 3 in SymSetLayerSpec@, this command specifies the layertype of the layer.
Type:
add_line@
axy@ 5666.0000,17043.0000
axy@ 5856.0000,17240.0000
back@
Draws a line from the given beginning point to end point (using the Active Dcode) on the active layer. Layer
and Dcode must be predefined before use.
In addition to the command sequence above, several commands may be added after the add_line@ command
to assign the layer(s) which line will appear on in the symbol, once symbol is placed in a panel.
setlayer@ #
Sets the layer in the Symbol Editor that the line will be added to. (Remember macro layering begins at 0).
SymSetLayerSpec@ Lay
1 = ALL Layers
2 = All Electric Layers
3 = All Layers of the type data is being created on
4 = Current Layer (active layer # in the symbol editor)
SymSetLayerOfType@ Type
When choosing 3 in SymSetLayerSpec@, this command specifies the layertype of the layer.
Pag. 14 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
add_line@
setpolarity@ Value
setendcap@ Value
setwidth@ Width
axy@ 5666.0000,17043.0000
axy@ 5856.0000,17240.0000
back@
Sets beginning and end coordinates for the line being drawn.
Example
add_line@
setpolarity@ 2
setendcap@ 0
setwidth@ 20.0000
axy@ -53.8000,7.0000
axy@ 38.4000,3.3000
back@
nc_add_milled_circle@
set_current_toolref@ #
Specifies the mill tool being used. # is the tool REF number of the new tool.
nc_set_circ_inout@ 1
nc_set_circ_dir@ 1
Pag. 15 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Denotes the direction the circle is to be milled. (0 = counter-clockwise, 1 = clockwise)
axy@ -1200.0000,1950.0000
axy@ -825.0000,1675.0000
Example
nc_add_milled_circle@
set_current_toolref@ 1
nc_set_circ_inout@ 1
nc_set_circ_dir@ 1
axy@ 1400.0000,4350.0000
axy@ 1700.0000,4275.0000
back@
nc_add_mill_path@
Setup commands:
These commands may be set at the beginning of the path, or at subsequent new sections being added (i.e. if an
arc is added as the first section, setting nc_set_mill_path_seg_type@ 1 will change the path to a line for the
next section).
set_current_toolref@ #
Specifies the mill tool being used. # is the tool REF number of the new tool.
setortho@ #
Sets the orthagonal placement angle of the mill path section being added.
0 = 90 degrees
1 = 45 degrees
2 = any angle
nc_set_mill_path_seg_type@ 1
nc_set_mill_path_tang_type@ 1
Sets Tangential state of the path (smoothing connections between sections). 0 = off, 1 = on.
Coordinates:
axy@ -5875.0000,2875.000
Pag. 16 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
axy@ -4250.0000,2875.0000
Any subsequent coordinate will set the end point of the first segment, and become the beginning point of a
new segment. There is no limit to the number of sections that can be added in this manner.
back@
You may continue adding more paths by using the commands outlined above, but these will be completely new
paths, unconnected to the original one.
back@
Example
nc_add_mill_path@
set_current_toolref@ 2
setortho@ 0
nc_set_mill_path_seg_type@ 0
nc_set_mill_path_tang_arc@ 0
axy@ 2050.0000,2875.0000 'Create first section of path
axy@ 4125.0000,2775.0000
setortho@ 1 'Add new settings for next section
nc_set_mill_path_seg_type@ 1
nc_set_mill_path_tang_arc@ 1
axy@ 5100.0000,1700.0000 'Add next section of path
axy@ 4300.0000,925.0000
setortho@ 2 'Change settings for last section
setortho@ 0
nc_set_mill_path_seg_type@ 0
nc_set_mill_path_tang_arc@ 0
axy@ 2100.0000,825.0000
back@ 'Add last section of path and close path
axy@ 5625.0000,4325.0000 'Start a new path here
axy@ 7000.0000,3675.0000
back@
back@ 'Exit Add Path command
nc_add_milled_slot@
set_current_toolref@ #
Specifies the mill tool being used. # is the tool REF number of the new tool.
setortho@ #
Sets the orthagonal placement angle of the mill slot being added.
0 = 90 degrees
1 = 45 degrees
2 = any angle
Pag. 17 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
axy@ -125.0000,5125.0000
axy@ 900.0000,5075.0000
Example
nc_add_milled_slot@
set_current_toolref@ 1
setortho@ 2
axy@ 675.0000,1975.0000
axy@ 3825.0000,1750.0000
back@
nc_add_mill_tab@
Initiates command.
set_current_tabid@ 2
Selects the mill tab to be used. Parameter is Tab ID number. Tabs must be defined before they can used (see
Tables Define Mill Tabs).
axy@ 436.0769,3399.3846
Places tab at the assigned coordinates. You may continue adding tabs by specifying more coordinate points.
back@
Example
nc_add_mill_tab@
set_current_tabid@ 2
axy@ 1372.4480,3991.8251
axy@ 1340.9424,3995.6548
axy@ 625.0000,3525.0000
back@
nc_add_operator_msg@
Pag. 18 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
axy@ -525.0000,3650.0000
This is a point on the drill/mill path that will have the operator message.
set_current_toolref@ #
If so desired, can be used to change the drill/mill tool used for the path. # is the tool REF number of the new
tool. (Optional)
nc_set_operator_msg_pos@ 0
0=message is displayed after the selected path, 1=message is displayed before the selected path.
nc_set_operator_msg_text@ "Test"
axy@ -525.0000,3700.0000
back@
Closes command.
Example
nc_add_operator_msg@
axy@ 2474.6724,4148.0181
nc_set_operator_msg_pos@ 1
set_current_toolref@ 2
nc_set_operator_msg_text@ "this is a test"
axy@ 6150.0000,4325.0000
back@
nc_add_optional_stop@
Initiates command.
axy@ -290.1188,3457.9083
Any point on the drill/mill path to which the stop will be added.
axy@ -290.1188,3457.9083
back@
Ends command.
Pag. 19 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Add > Padstack
add_padstack@
Initiates command.
setpadstack@ 1
Chooses the padstack to add (remember padstacks, like layers, start from 0).
axy@ -150.0000,0.0000
back@
add_component@
Initiates command.
Part settings:
You may set the library and part to use. Project library is default, unless external library is selected. You
must also set the Device Name and Ref/Des number.
Selects external part library. Only required when using external, not project, library.
Pag. 20 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Part$ is the part name in the library.
addcomp_dev@ "Devname"
addcomp_refdes@ "RefDes"
Part Placement:
addcomp_makecmp@
axy@ 1750.0000,4350.0000
Prior to giving the coordinates, you may rotate the part or mirror it using the following commands:
addcomp_turn@
setturn100angle@ #
Sets the turn angle. # is 100 times the angle (650=6.5 degrees)
addcomp_mirror@
back@
Stops command. Used twice in sequence it completes the placement of one part. Macro may continue adding
parts by giving another coordinate point. Used 3 times it ends the command completely (see example).
Example
add_component@
lib_setextpartlib_wmap@ 1,0,"d:\CAM350\product\t-bird dev\demo.plb"
openlibitem@ 2,"DCASE"
addcomp_dev@ "Resistor"
addcomp_refdes@ "R1"
addcomp_makecmp@
setturn100angle@ 18000
addcomp_turn@
addcomp_mirror@
axy@ 2556.4000,18.4000 'Adds first part
back@
back@
axy@ 3232.9000,94.1000 'Adds another part of same type
back@
back@
back@ 'ends command
add_pin@
Pag. 21 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Begins command.
set_pintype@ 1
0 = Thru
1 = SMD Device side (mounted on the same side as part)
2 = SMD Opposite side (mounted on opposite side to part; used to denote edge connectors).
axy@ 0.0000,0.0000
Specifies the point to insert the new pin. The device's pin numbering will automatically be updated to include
the new pin you've entered, but if you want to designate the pin number, use the set_pinseq@ command:
set_pinseq@ "1"
Example
add_pin@
set_pintype@ 1
axy@ 50.0000,325.0000
set_pinseq@ "5"
back@
Style 1
Style 2
Style 3
Style 4
Style 1
Polygon parameters can be set at any time prior to the actual adding of the polygon:
polylayer@ lyrID
Sets the layer for the polygon to be created on. (-1 values specifies using the current layer).
polyfilldcode@ Dcode
Sets the Dcode for the polygon fill (Vector-filled polygons only).
polyclearance@ Clear
Clear specifies the offset distance from the border the polygon will pour up to. (0 offset fills the polygon).
polyfillpattern@ "Pattern"
Designates the fill pattern for a Vector-filled polygon.The pattern can be SOLID, HATCHED, or DCODE.
Pag. 22 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
polyfillmethod@ "Fill_method"
polyaddtype@ "Polygon_type"
polyfilltoborder@ "Yes"
polydeleteislands@ "No"
Determines the treatment of clearances (islands) within the polygon's area."Yes" indicates to Pour the
polygon, preserving islands, "No" indicates to Flood it, filling any islands.
polycenterline@ "No"
Determines the treatment of outlines within the polygon's area."Yes" indicates that any new polygon outline
and internal islands will trace exactly the outer edge of existing shapes. "No" indicates that the normal
polygon clearance will be used during outline generation. The polycenterline@ can only be "Yes: if the
polyfillmethod@ is "OUTLINE".
HATCHED fill pattern: a hatched pattern uses 3 lines that make up the pattern, so the following values must be
set for all 3 lines (see example at end of section):
Sets the Dcode number for a line in the polygon. Line# can be any line in the polygon (remember, like
layers, line numbers start at 0).
Sets the Angle for the Line# being added to the hatch.
Sets the step distance (in mils) for the Line# being added to the hatch.
DCODE fill pattern: a Dcode pattern uses 3 lines that are spaced by offsetting and step distance, with the final
line representing only the Y-step value of the pattern. Lines 1 & 2 must set all three commands listed below,
while line 3 (the Y-step line) only needs to set the polypatstep@ command (see example at end of section):
Sets the Dcode number for a line in the polygon. Line# can be any line in the polygon (remember, like
layers, line numbers start at 0).
Sets the X-step distance (in mils) for the Line# being added.
Note: this command also sets the Y-step for the final line in the pattern.
Pag. 23 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
After setup is finished, there are two types of pouring commands available to create the polygon:
add_pouring@
axy@ 225.0000,1575.0000
axy@ 225.0000,1375.0000
axy@ 450.0000,1375.0000
back@
add_pouring@ creates the polygon itself based on settings from the above macro commands. The resultant
polygon always deletes islands when it is poured.
add_poly_pouring@
axy@ 225.0000,1575.0000
axy@ 225.0000,1375.0000
axy@ 450.0000,1375.0000
back@
add_poly_pouring@ uses the polydeleteislands@ macro command to determine if islands should be deleted
during the pour.
Example
Raster Polygon:
polylayer@ -1
polyfilldcode@ 10
polyclearance@ 0.0000
polyfillpattern@ "SOLID"
polyfillmethod@ "RASTER"
polyaddtype@ "DRAWBORDER"
polydeleteislands@ "No"
add_poly_pouring@
axy@ 8416.9000,8477.8000
axy@ 9675.8000,8499.1000
axy@ 9789.2000,7407.8000
axy@ 8473.6000,7360.6000
back@
HATCH Pattern:
polylayer@ -1
polyfilldcode@ 10
polyclearance@ 20.0000
polyfillpattern@ "HATCHED"
polypatdcode@ 0,232
polypatangle@ 0,45
polypatstep@ 0,400.0000
polypatdcode@ 1,232
polypatangle@ 1,30
polypatstep@ 1,400.0000
polypatdcode@ 2,232
polypatangle@ 2,45
polypatstep@ 2,400.0000
polyfillmethod@ "VECTOR"
polyaddtype@ "DRAWBORDER"
polydeleteislands@ "No"
add_poly_pouring@
axy@ 9054.6000,8034.9000
axy@ 9570.7000,8045.5000
axy@ 9642.7000,7574.3000
axy@ 8962.5000,7505.8000
back@
Pag. 24 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
DCODE Pattern:
polylayer@ -1
polyfilldcode@ 10
polyclearance@ 20.0000
polyfillpattern@ "DCODE"
polypatdcode@ 0,15
polypatoffset@ 0,0.0000
polypatstep@ 0,100.0000
polypatdcode@ 1,15
polypatoffset@ 1,50.0000
polypatstep@ 1,100.0000
polypatstep@ 2,100.0000
polyfillmethod@ "VECTOR"
polyaddtype@ "DRAWBORDER"
polydeleteislands@ "No"
add_poly_pouring@
axy@ 8960.1000,8112.9000
axy@ 9645.1000,8077.4000
axy@ 9645.1000,7551.9000
axy@ 8925.9000,7547.2000
back@
back@
SOLID fill:
polylayer@ -1
polyfilldcode@ 10
polyclearance@ 0.0000
polyfillpattern@ "SOLID"
polyfillmethod@ "VECTOR"
polyaddtype@ "DRAWBORDER"
polydeleteislands@ "No"
add_pouring@
axy@ 7995.0000,8766.8000
axy@ 9839.1000,8833.2000
axy@ 10146.9000,7272.8000
axy@ 8004.0000,7179.2000
back@
Style 2
Creating polygons in these editors is more simplified than in the CAM or Panel Editors: the editors are only
capable of creating solid polygons, requiring only basic commands:
add_gr_poly@
axy@ 0.0000, 0.0000
Adds a solid polygon, as denoted by a created border. The placement coordinates designate the end points of
one line segment in the border. Any number of line segments can be added in the border using new
coordinates for end points. Exiting the command, using back@, automatically closes the polygon.
Example
add_gr_poly@
axy@ -100.0000,80.0000
axy@ 40.0000,76.0000
axy@ 40.0000,-56.0000
axy@ -148.0000,-72.0000
back@
Pag. 25 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Style 3
Creating polygons in the Symbol Editor is more simplified than in the CAM or Panel Editors: the editor is only
capable of creating solid polygons, requiring only basic commands:
add_gr_poly@
axy@ 0.0000, 0.0000
Adds a solid polygon, as denoted by a created border. The placement coordinates designate the end points of
one line segment in the border. Any number of line segments can be added in the border using new coordinates
for end points. Exiting the command, using back@, automatically closes the polygon.
In addition to the command sequence above, several commands may be added after the add_gr_poly@
command to assign the layer(s) which polygon will appear on in the symbol, once symbol is placed in a panel.
setlayer@ #
Sets the layer in the Symbol Editor that the polygon will be added to. (Remember macro layering begins at
0).
SymSetLayerSpec@ Lay
1 = ALL Layers
2 = All Electric Layers
3 = All Layers of the type data is being created on
4 = Current Layer (active layer # in the symbol editor)
SymSetLayerOfType@ Type
When choosing 3 in SymSetLayerSpec@, this command specifies the layertype of the layer.
Example
add_gr_poly@
SymSetLayerSpec@ 2
setlayer@ 2
axy@ -275.0000,200.0000
axy@ 250.0000,200.0000
axy@ 225.0000,-150.0000
axy@ -275.0000,-125.0000
back@
Style 4
You may use this macro-only command to add a positive polygon to your design. The polygon is solid-fill only,
and will be created on the active layer. However, unlike the add_pouring@ command, you may add "cut-
line" polygon voids during the course of creating the polygon:
add_polygon@
axy@ 870.0000,3885.0000
axy@ 870.0000,3910.0000
Pag. 26 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
axy@ 885.0000,3910.0000
back@
Each coordinate denotes the end point of a line segment in the polygon's border. Entering the final coordinate
pair automatically closes the polygon.
Circle
add_polyvoid_cir@
Adds a circular void in a solid raster polygon. (Command will not work on vector-filled polygons).
axy@ 3129.6000,10784.2000
axy@ 3246.3000,10709.9000
axy@ 3458.6000,10571.9000
3 points follow the initial command: first point selects the polygon to add the void to (can be any point in
polygon), second is center of circular void, and third is the radius of the void.
back@
Ends command.
Line
add_polyvoid@
Adds a polygonal-shaped void in a solid raster polygon. (Command will not work on vector-filled polygons).
setortho@ #
Sets the orthagonal angle for placing line segments that will form the void's outline.
0 = 90 degrees
1 = 45 degrees
2 = any angle
Each coordinate following the initial command designates the end point of a line segment on the void's "outline".
Multiple coordinates may be entered to create the void.
back@
Ends the command; polygonal void will automatically close itself, forming a clearance in the polygon.
Example
add_polyvoid@
setortho@ 2
axy@ 3904.4000,10784.2000
axy@ 3893.7000,10954.0000
axy@ 6048.2000,10168.6000
Pag. 27 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
axy@ 6048.2000,10943.4000
axy@ 4318.3000,11155.6000
back@
add_rectangle@
axy@ -150.0000,-100.0000
axy@ 150.0000,-300.0000
back@
Draws a rectangle, as defined by the coordinates of two opposite corners, using the Active Dcode, on the
active layer (both must be pre-defined).
In addition to the command sequence above, several commands may be added after the add_rectangle@
command to assign the layer(s) which line will appear on in the symbol, once symbol is placed in a panel.
setlayer@ #
Sets the layer in the Symbol Editor that the rectangle will be added to. (Remember macro layering begins at
0).
SymSetLayerSpec@ Lay
1 = ALL Layers
2 = All Electric Layers
3 = All Layers of the type data is being created on
4 = Current Layer (active layer # in the symbol editor)
SymSetLayerOfType@ Type
When choosing 3 in SymSetLayerSpec@, this command specifies the layertype of the layer.
add_refdes@
setturn100angle@ #
Sets the turn angle. # is 100 times the angle (650=6.5 degrees)
partname_Turn@
Pag. 28 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Turns the Reference Designator attached to the cursor, at the angle defined by setturn100angle@.
partname_Mirror@ #
textcapheight@ 70.0000
setdcode@ 10
Selects the Dcode to use to create the Ref/Des text in the finished part.
axy@ 0.0000,50.0000
back@
Specifies the placement point for the Ref/Des designator and ends command.
Example
add_refdes@
setturn100angle@ 4500
partname_Turn@
partname_Mirror@
textcapheight@ 45.0000
setdcode@ 10
update_dcodebar@
axy@ 0.0000,50.0000
back@
add_step_image@
axy@ X#, Y#
back@
Command adds a copy of the one-up design to the panel. axy@ command specifies placement coordinates:
note - these coordinates correspond to the location of the image's space origin in the one-up image.
On Bottom Fixture
bn_addbottool@
axy@ 74.9000,4701.9000
back@
Places a stiffener on the bottom fixture. Coordinates are the location point of the stiffener.
On Top Fixture
Pag. 29 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
bn_addtoptool@
axy@ 74.9000,4701.9000
back@
Places a stiffener on the top fixture. Coordinates are the location point of the stiffener.
add_symbol@
Initializes command.
openlibitem@ 3,"change"
Specifies symbol to add: parameters are library being used (3 defaults to project library) and name of the
symbol.
setturn100angle@ #
Sets the turn angle. # is 100 times the angle (650=6.5 degrees)
add_symbinst_turn@
Turns the symbol attached to the cursor, at the angle defined by setturn100angle@.
axy@ -3875.0000,24700.0000
change_symbInstName@ "test"
Changes the symbol being added to a new selection (same effect as using the drop-down menu in the tool
bar while running command interactively).
Example
add_symbol@
openlibitem@ 3,"drill"
setturn100angle@ 4500
add_symbinst_turn@
axy@ -12250.0000,21825.0000
back@
Manually adds inidividual test points to a database. To add them automatically, use File > Create > Test
Points.
add_testpt@
Pag. 30 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Intializes command.
testpt_startcreatefil@
axy@ 1075.0000,4275.0000
Coordinates define the location for each test point. Any number can be added.
back@
testpt_endcreatefil@
back@
Example
add_testpt@
testpt_startcreatefil@
axy@ 3875.0000,1925.0000
axy@ 7825.0000,3100.0000
axy@ 200.0000,1575.0000
axy@ 200.0000,2175.0000
axy@ 200.0000,2375.0000
back@
testpt_endcreatefil@
back@
Text parameters can be set at any time prior to the actual addition of the text with the add_text@ command.
For more information on these parameters see Edit > Change > Text.
Font Settings:
Specifies the font to use for text. May be set prior to or after text settings in the Text Settings section below.
textfont@ "SIMPLE.EFN"
This is used if an EFN font is used. Otherwise, the following command is used:
textfontface@ 2, "Arial"
Specifies a non-EFN font to use. This is the font face name, not a filename.
2=True Type
4=Autocad SHP
8=Autocad SHX
Pag. 31 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Text Settings:
Once the text and font to be changed have been selected, any of the following commands can be issued (in any
order) to change the text attributes:
textfullheight@ 100.0000
Sets the full text height, in user units, taking into account characters with descenders (as well as a little
additional font-dependent spacing so that lines will not overlap). The old command textheight@, used with
version 2.X and earlier, will still function with this macro.
textcapheight@ 50
Specifies the exact height for the font's capital letters, in user units. All other characters are based relative to
this set height.
Note: the above two macro commands are mutually exclusive. When used in a macro, each overrides the
previous one's settings for any new text being added.
textangle@ 4500
textmirror@ 1
textjust@ 4
33 = Left Baseline
36 = Center Baseline
34 = Right Baseline
17 = Left Bottom
20 = Center Bottom
18 = Right Bottom
5 = Left Center
4 = Center Center
6 = Right Center
9 = Left Top
12 = Center Top
10 = Right Top
textfitting@ 1
textcspace@ 20.0000
textlspace@ 100.0000
textslant@ 0
Text slant is set in degrees times 100. Positive values slant the font to the right, negative values slant it to
the left. You can italicize a non-italics font face by specifying a slant angle. (Typical italic font faces are
slanted about 10 to 15 degrees.)
Pag. 32 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
textxscale@ 500
Sets a text scale value (times 100). This applies to the width of individual characters. For example,
textxscale@ 200 would make each character twice a wide as initially defined, while textxscale@ 50 would
make the characters half as wide as initially defined.
textvertical@ 1
Text creation:
add_text@
BeginX and BeginY are the beginning coordinates of the text being added.
PointX & PointY is a coordinate anywhere within the text being added. This second set of coordinates finalizes
the addition of the text; for ease of use, it is recommended you reuse the beginning coordinates for these
coordinates.
Text is the text to be added. Notice that the text is carried as a string, and is limited to 250 characters per
string. You may use +CR!+ as a carriage return, so for example, a Text value of "This is line 1"+CR!+"Line
2" will display as:
This is line 1
Line 2
back@
Example
add_text@
textfontface@ 2,"Arial Black"
textfullheight@ 100.0000
textfitting@ 0
textcspace@ 0.0000
textlspace@ 30.0000
textangle@ 27000
textslant@ 3400
textxscale@ 200
textmirror@ 1
textvertical@ 1
textjust@ 4
addtext@ 2017.1000,3547.0000,2489.2555,4246.9994,"this is a test"
back@
Commands are identical to the CAM Editor Add > Text commands above, but several additional commands may
be added after the add_text@ command to assign the layer(s) which text will appear on in the symbol, once
symbol is placed in a panel.
Pag. 33 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
setlayer@ #
Sets the layer in the Symbol Editor that the text will be added to. (Remember macro layering begins at 0).
SymSetLayerSpec@ Lay
1 = ALL Layers
2 = All Electric Layers
3 = All Layers of the type data is being created on
4 = Current Layer (active layer # in the symbol editor)
SymSetLayerOfType@ Type
When choosing 3 in SymSetLayerSpec@, this command specifies the layertype of the layer.
Drill Origin
add_drillorg@
axy@ 1125.0000,2575.0000
back@
Sets the tooling offset drill origin (G93 command), as specified by the coordinates.
Mill Origin
add_millorg@
axy@ 1350.0000,2525.0000
back@
Sets the tooling offset mill origin (G93 command), as specified by the coordinates.
Similar to Add > Text command, but adds Variable Text to a Symbol.
Text parameters can be set at any time prior to the actual addition of the variable text. For more information on
these parameters see Edit > Change > Text.
Font Settings:
Specifies the font to use for text. May be set prior to or after text settings in the Text Settings section below.
textfont@ "SIMPLE.EFN"
This is used if an EFN font is used. Otherwise, the following command is used:
Pag. 34 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
textfontface@ 2, "Arial"
Specifies a non-EFN font to use. This is the font face name, not a filename.
Text Settings:
Once the text and font to be changed have been selected, any of the following commands can be issued (in any
order) to change the text attributes:
textfullheight@ 100.0000
Sets the full text height, in user units, taking into account characters with descenders (as well as a little
additional font-dependent spacing so that lines will not overlap). The old command textheight@, used with
version 2.X and earlier, will still function with this macro.
textcapheight@ 50
Specifies the exact height for the font's capital letters, in user units. All other characters are based relative to
this set height.
Note: the above two macro commands are mutually exclusive. When used in a macro, each overrides the
previous one's settings for any new text being added.
textangle@ 4500
textmirror@ 1
textjust@ 4
33 = Left Baseline
36 = Center Baseline
34 = Right Baseline
17 = Left Bottom
20 = Center Bottom
18 = Right Bottom
5 = Left Center
4 = Center Center
6 = Right Center
9 = Left Top
12 = Center Top
10 = Right Top
textfitting@ 1
textcspace@ 20.0000
Pag. 35 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
textlspace@ 100.0000
textslant@ 0
Text slant is set in degrees times 100. Positive values slant the font to the right, negative values slant it to
the left. You can italicize a non-italics font face by specifying a slant angle. (Typical italic font faces are
slanted about 10 to 15 degrees.)
textxscale@ 500
Sets a text scale value (times 100). This applies to the width of individual characters. For example,
textxscale@ 200 would make each character twice a wide as initially defined, while textxscale@ 50 would
make the characters half as wide as initially defined.
textvertical@ 1
Text Creation:
add_variable_text@
Initializes command.
setlayer@ #
Sets the layer in the Symbol Editor that the variable text will be added to. (Remember macro layering begins
at 0).
SymSetLayerSpec@ Lay
1 = ALL Layers
2 = All Electric Layers
3 = All Layers of the type data is being created on
4 = Current Layer (active layer # in the symbol editor)
SymSetLayerOfType@ Type
When choosing 3 in SymSetLayerSpec@, this command specifies the layertype of the layer.
BeginX and BeginY are the beginning coordinates of the text being added.
PointX & PointY is a coordinate anywhere within the text being added. This second set of coordinates finalizes
the addition of the text; for ease of use, it is recommended you reuse the beginning coordinates for these
coordinates.
Variable is the text to be added. This is a string, and is limited to 250 characters per string.
Note: Spaces, tabs and carriage returns are not allowed in Variable Text. The text being added is considered a
single variable. To separate words/ideas, use an underscore "_".
back@
Pag. 36 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Exits the command.
Example
add_variable_text@
setlayer@ 2
SymSetLayerSpec@ 2
setdcode@ 10
update_dcodebar@
textfontface@ 2,"Algerian"
textfullheight@ 120.0000
textcspace@ 5.0000
textlspace@ 10.0000
textangle@ 4500
textxscale@ 100
textmirror@ 1
textjust@ 33
add_variable_text_do@ -1050.0000,175.0000,-790.6253,175.0000,"jobnumber"
back@
add_via@
setpadstack@ 1
Chooses the padstack to add (remember padstacks, like layers, start from 0).
axy@ -150.0000,0.0000
back@
Adds sections to a trace that maintain electrical conductivity with the net. Can also be used to add new nets
to the design.
add_wire@
Initiates command.
setnetname@ "netname"
Sets net name for new net being added (not required if command is ammending a previous net. i.e. the first
section begins on a net).
setortho@ #
Sets the orthagonal angle for placing the line segments of the wire.
Pag. 37 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
0 = 90 degrees
1 = 45 degrees
2 = any angle
axy@ X, Y
Sets the begin/end points for line segments on the wire. Initial axy@ command is the first point, while all
other subsequent coordinates represent end point of each new section. If first coordinate is on an existing
net, wire is merged as part of that net. Any number of segments may be added to the wire.
back@
Example
add_wire@
setnetname@ "test$"
setortho@ 1
setpadstack@ 3
axy@ 1907.7000,3632.4000
axy@ 2143.4000,3868.1000
axy@ 3739.0000,3868.1000
axy@ 4301.1000,3868.1000
axy@ 4600.3000,3868.1000
axy@ 4527.8000,3868.1000
axy@ 4908.6000,4248.9000
back@
Pag. 38 di 38
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Analysis Menu Macros
acidtrapdetect@
Initiates command.
Remove: Remove old acid trap flags on layers that are processed.
Fix : repair any located acid traps, 1 = fix any acid traps that are found, 0 = do not fix
acid traps
To specify the area to be checked, the selection window coordinates must be added at the end:
axy@ 16336.7000,12527.7000
axy@ 24443.2000,19409.3000
back@
To have the entire layer or composite be processed, the following command replaces the axy@ selection
commands:
acid_trap_layer@
Example
acidtrapdetect@
setacidtrapparms1@ 10.0000,50,1,1,1
axy@ 841.9000,1983.7000
axy@ 1935.4000,1043.5000
back@
Pag. 1 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Analysis > Check Drill
All of the following commands must be run for each drill layer being checked (see example).
Removes any old error flags from previous use of the check.
Redundant: check for multiple drill hits by same tool in same location. 1=Yes, 0=No
Double: check for multiple drill hits by different tools in same location. 1=Yes, 0=No
Clearance:
# = when non-zero value is specified, checks for drill holes that are not touching, but are within this distance
from each other.
0 = do not check.
FixCoincident: 1 = fix coincident drill hits, 0 = do not fix coincident drill hits
FixRedundant: 1 = fix redundant drill hits, 0 = do not fix redundant drill hits
Example
delete_error_list@ 5,7
nc_analysis_drill_errors@ 7,1,1,1,0.2540 'performs check for layer 8
nc_set_fix_drill_errors@ 1, 1
delete_error_list@ 5,10
nc_analysis_drill_errors@ 10,1,1,1,0.2540 'performs check for layer 11
nc_set_fix_drill_errors@ 1, 1
back@
All commands must be run for each NC data layer, containing mill data, being checked (see example).
Removes any old error flags from previous use of the check.
Pag. 2 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
ListID indicates type of error flags. In this case 6 indicates "mill".
Mill Tabs: check for mill tabs that are too large for the line segments they are placed on. 1=Yes, 0=No
Example
delete_error_list@ 6,10
nc_analysis_mill_errors@ 10,1,1,1 'performs check for layer 11
delete_error_list@ 6,13
nc_analysis_mill_errors@ 13,1,1,1 'performs check for layer 14
back@
layer_compare@
Intiates command.
The first two parameters are the ID's of the layers to be compared (remember, macro layer numbers start at
0)
Resolution: finer resolution produces greater accuracy, but processes slower. Available resolutions (in user
units):
ErrSize: ErrSize is always in relation to the specified Resolution (errors will only be reported when the area of
difference exceeds the limits indicated by the ErrSize value):
0 = Errors must be > Resolution x Resolution (same as original layer compare command)
1 = Errors must be > (2 * Resolution) x (2 * Resolution)
2 = Errors must be > (4 * Resolution) x (4 * Resolution)
3 = Errors must be > (8 * Resolution) x (8 * Resolution)
Any value for ErrSize other than the 0-3 will be interpreted as 0.
To specify the area to be checked, the selection window coordinates must be added at the end:
axy@ 16336.7000,12527.7000
axy@ 24443.2000,19409.3000
Pag. 3 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
layer_compare_window@
back@
To have the entire area of the layers be processed, the following command replaces the axy@ commands above:
layer_compare_layer@
Example
layer_compare@
set_layercompareparms1@ 0,1,1.0000,1,2
axy@ -1.0000,2142.7000
axy@ 1526.1000,9.3000
layer_compare_window@ 'window area to compare
back@
or
layer_compare@
set_layercompareparms1@ 0,1,1.0000,1,2
layer_compare_layer@ 'compare entire layer(s)
util_copper@
Initiates command.
Scan: sets the scan box size. Again, smaller box is more accurate, but slower. Available sizes:
.25, 1, 4 sq inch
161, 645, 2581 sq mm
Saves resulting copper area information to a textual report file. Parameters are the same as for copper@
command, except File, which is the complete filename & path to save the file under.
Prints copper area report file to the default printer for the system. Parameters are the same as for copper@
command.
Example
util_copper@
copper@ 5.0000,1000.0000,0,62.0000
Pag. 4 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
report_copper_save@ 5.0000,1000.0000,0,62.0000,"c:\my documents\copper.rpt"
report_copper_print@ 5.0000,1000.0000,0,62.0000
util_panelcopper@
Initiates command.
Scan: sets the scan box size. Again, smaller box is more accurate, but slower. Available sizes:
.25, 1, 4 sq inch
161, 645, 2581 sq mm
Saves resulting panel copper area information to a textual report file. Parameters are the same as for
panelcopper@ command, except File, which is the complete filename & path to save the file under.
Prints panel copper area report file to the default printer for the system. Parameters are the same as for
panelcopper@ command.
Example
util_panelcopper@
panelcopper@ 5.0000,1000.0000,0,62.0000
report_panelcopper_save@ 5.0000,1000.0000,0,62.0000,"c:\my documents\copper.rpt"
report_panelcopper_print@ 5.0000,1000.0000,0,62.0000
sliverdetect@
Specifies the scan box, etc. to use when searching for copper slivers.
Slivers: determines which type of sliver to find. 0 = Copper slivers, 1 = Mask slivers. (should be set to 0)
Pag. 5 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Fix: determines if command should attempt to repair encountered slivers. 1 = fix all slivers that are found, 0
= do not fix slivers. (should be set to 0)
Exception: sliver fix option is not available for Copper Slivers analysis, only Mask Slivers.
To specify the area to be checked, the selection window coordinates must be added at the end:
axy@ 16336.7000,12527.7000
axy@ 24443.2000,19409.3000
back@
To have the entire layer or composite be processed, the following command replaces the axy@ commands
above:
sliver_layer@
Example
sliverdetect@
setsliverparms1@ 8.0000,0,1,0
sliver_layer@
DRC Analysis has the ability to set muliple passes and layers to check for DRC violations. After the passes are
set, you must set the parameters for each individual check being run in a pass. The pass ID value will be used to
denote which pass to run the test under. Multiple passes may be run by using the same check command, but
with a new pass ID number. In addition, layers or groups must be specified for the passes being run. You have
the option to set the layers being checked by specific layer, type, or selected groupings (see commands below).
<Begin DRC>
<Load/Save Pass>
<Set Passes>
<Set Error Handling>
<Set Layers to Check>
<Set Checks to Run>
<Run DRC>
<End DRC>
Begin DRC:
util_drc@
Load/Save Pass:
These macro commands allow you to load and save the DRC pass file. Each pass file may contain only one saved
pass. In addition, only generic layers and layer groups may be saved as part of the pass (see 'Set Layers to
Check' section below).
Tip: if you are using a pre-existing pass file in your macro, you may skip to the 'Run DRC' section below, since
the pass file you load will contain all of the DRC layer & check information. If you do not load an existing pass
file, you must set all the applicable DRC information in the sections below.
drc_LoadPass@ "FileName"
Pag. 6 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Loads a DRC pass file, from the full path denoted by FileName.
Tip: when loading a pass file, if any pass of the same name as the pass in the file exists, it will be overwritten
by the loaded file. If no pass name exists in the file, the pass will be assigned the name "Pass_<ID>" where ID
is the pass ID number fo the pass.
drc_SavePass@ PassID,"FileName"
PassID: the number of the DRC Pass to be saved. Remember, like layers, passes begin numbering at 0.
Set Passes:
Passes are automatically tracked as both Pass ID numbers and pass names. Pass names are what the user
typically sees in the DRC dialog. Names may sometimes be used to manipulate passes, as outlined in the
commands below. In addition to names, Pass ID numbers are assigned by the system automatically. Each pass
added to the list of passes increments the ID counter. Likewise deleting a pass removes that number from the
list and compresses all pass ID numbers (i.e. if passes 0-4 exists and you delete pass #3, the list is now 0-3).
Rule: pass ID numbers begin with 0 for macro-writing purposes. I.e. the first pass in the list is considered pass
ID 0.
This information is crucial to manipulating DRC passes, as the actual run command (as well as some other
commands) only takes a pass ID number as a value. If you've done multiple changes to the passes' list, this
number may not be what it began as. For that reason it is safer to determine which pass ID is attached to the
pass name you are working with, and use that ID in commands which require it.
To do so, use the new drc_CurrentPassID! query to determine the ID of the pass. For example:
drc_SetCurrentPass@ "Low Tolerance" 'sets the pass named 'Low Tolerance' to the active pass
ID% = drc_CurrentPassID! 'determines the ID number of the active pass.
drc_Run_Pass@ ID% 'runs DRC checks for that pass ID number
drc_Add_Pass@
Adds a DRC pass. Automatically updates the Pass ID list to create a new ID #. (Should be accompanied by
drc_add_passname@ command).
drc_Add_PassName@ NameStr
Adds the pass name to the new pass created by the drc_add_pass@ command above. NameStr is a string.
(Must follow drc_add_pass@ to assure the pass name is assigned to the correct pass ID).
drc_Delete_Pass@ PassId
drc_Delete_PassName@ NameStr
drc_Set_Pass_Name@ PassId, NameStr
Give new name to a specific DRC pass. PassID is the number of the pass. NameStr is a string.
drc_SetCurrentPass@ NameStr
Sets the DRC pass with the given name as the current pass.
Pag. 7 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
drc_seterrorfile@ "c:\act30\errors.drc"
Sets the name of the DRC error file for a DRC run. If this is not set, the filename will default to "errors.drc" in
the current directory.
drc_deletefile@ "c:\act30\errors.drc"
Deletes a previous DRC error file specified in the filepath, prior to running any DRCs.
drc_deleteall@
Add a layer or layer group to the Clearance checks layer list. Command must be run separately for each
individual layer being checked.
Delete a layer or layer group from the Clearance checks layer list.
Set the drill layer(s) to get drills from for Drills to Mask Test.
Set the drill layer(s) to get drills from for Drills to Pads Test.
Set the drill layer(s) to get drills from for all Special Checks.
LyrId: Layer Id to be checked, -1 indicates use layer group. (remember layer numbering in macros begins
with 0).
0 = Top Layer
1 = Internal Layers (ALL)
2 = Neg Plane layers (ALL)
3 = Bottom Layer
11 = Mask Top layer (ALL)
Pag. 8 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
12 = Mask Bottom (ALL)
14 = Positive Planes layers (ALL)
21 = NC Primary layers (ALL), NCRank parameter must be 0
21 = NC Secondary layers (ALL), NCRank parameter must be 1
32 = All Electrical layers - all Top, Bottom, Internal, Pos Plane and Neg Plane layers
33 = Outer Electrical - Top and Bottom layers only
34 = Inner Electrical - all Internal, Pos Plane, and Neg Plane layers only
35 = Inner Pos Electrical - all Internal and Pos Plane layers
36 = Inner Neg Electrical - all Neg Plane layers
37 = All Mask - all Mask Top & Mask Bottom layers
NCRank: must be 0 unless LyrGrp NC Data (21) is specified, in which case 0 = NC Primary, 1 = NC
Secondary.
Each DRC check has several set-up commands, which control the values used by the check for each pass. Set all
commands for each DRC check being run in the current pass. Once all DRC checks have been setup, use the
drc_Run_Pass@ command to run all checks for that pass.
To run multiple passes for DRC checks, these commands must be set again for each subsequent pass being run
(followed, again, by the drc_Run_Pass@ command).
Clearance Checks:.
Track-Track
Set Track to Track clearance value to use. PassID: pass to use. Value is in user units.
Set DCode filter for Track to Track check. PassID: pass to use. DcodeStr is a string.
Track to Pad
Set Track to Pad clearance value to use. PassID: pass to use. Value is in user units.
Set DCode filter for Track to Pad check. PassID: pass to use. DcodeStr is a string.
Pad to Pad
Pag. 9 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
drc_Set_Pad2Pad_Test@ PassId, Flag
Set Pad to Pad clearance value to use. PassID: pass to use. Value is in user units.
Set DCode filter for Pad to Pad check. PassID: pass to use. DcodeStr is a string.
Outline
Set Outline clearance value to use. PassID: pass to use. Value is in user units.
Set Min Track clearance value to use. PassID: pass to use. Value is in user units.
Set DCode filter for Min Track check. PassID: pass to use. DcodeStr is a string.
Minimum Pad
Set Min Pad clearance value to use. PassID: pass to use. Value is in user units.
Pag. 10 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
drc_Set_MinPad_Dcode@ PassId, DcodeStr
Set DCode filter for Min Pad check. PassID: pass to use. DcodeStr is a string.
Redundant Pads
In addition to the usual setting commands for the annular ring checks, you must also Filter the Dcodes and drill
tools to use in the checks themselves.
Pad to Mask
Top Mask -
Set Top to Top Mask annular ring clearance value to use. PassID: pass to use. Value is in user units.
Set Bottom to Bottom Mask annular ring clearance value to use. PassID: pass to use. Value is in user units.
Drill to Mask
Set Drill to Mask annular ring clearance value to use. PassID: pass to use. Value is in user units.
Pag. 11 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Drill to Pad
Set Drill to Pad annular ring clearance value to use. PassID: pass to use. Value is in user units.
Filters
Set DCode filter for all annular ring tests involving pads (Pad to Mask, Drill to Pad).
Set Tool Reference filter for all annular ring tests involving drills (Drill to Mask, Drill to Pad).
Special Checks:
Drills to Copper
Set Drills to Copper clearance value to use. PassID: pass to use. Value is in user units.
Run DRC:
Pag. 12 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Select the data to be checked by windowing out the search area:
axy@ 887.9000,1896.4000
axy@ 2816.4000,109.8000
Commands give coordinates for the two opposite corners of a selection rectangle.
drc_NetlistExtract@
Checks for the existence of nets, and runs layer netlist extract if necessary. Should be done before
drc_Run_Pass@ is executed.
drc_Run_Pass@ PassID
explode_allnets@
Should be executed if nets did NOT exist in the database prior to the DRC run. It reverses the
drc_NetlistExtract@ command so that the database is returned to its original state. While recording a DRC
run, this is recorded as a comment if nets existed in the database.
end@
Example
util_drc@
'Add new pass to DRC
drc_Add_Pass@
drc_Add_PassName@ "test2"
'Set error files
drc_seterrorfile@ "d:\CAM350\product\t-bird dev\macro records\errors.drc"
drc_deletefile@ "d:\CAM350\product\t-bird dev\macro records\errors.drc"
drc_deleteall@
'Set layers
drc_Set_Drill2Mask_Drill_Lyr@ 1,10,-1,0
drc_Set_Drill2Mask_Mask_Lyr@ 1,6,-1,0
drc_Set_Drill2Pad_Drill_Lyr@ 1,10,-1,0
drc_Set_Drill2Pad_Pad_Lyr@ 1,0,-1,0
drc_Set_SpChk_Drill_Lyr@ 1,10,-1,0
drc_Set_SpChk_Copper_Lyr@ 1,3,-1,0
drc_Add_Drc_Lyr_To_Pass@ 1,0,-1,0
drc_Add_Drc_Lyr_To_Pass@ 1,3,-1,0
drc_Add_Drc_Lyr_To_Pass@ 1,6,-1,0
drc_Add_Drc_Lyr_To_Pass@ 1,7,-1,0
drc_Add_Drc_Lyr_To_Pass@ 1,10,-1,0
'Set Clearance checks to run
drc_Set_Trk2Trk_Test@ 1,1
drc_Set_Trk2Trk_Val@ 1,5.0000
drc_Set_Trk2Trk_Dcode@ 1,""
drc_Set_Trk2Pad_Test@ 1,1
drc_Set_Trk2Pad_Val@ 1,5.0000
drc_Set_Trk2Pad_Dcode@ 1,""
drc_Set_Pad2Pad_Test@ 1,1
drc_Set_Pad2Pad_Val@ 1,5.0000
drc_Set_Pad2Pad_Dcode@ 1,""
drc_Set_Outline_Test@ 1,1
drc_Set_Outline_Val@ 1,5.0000
drc_Set_MinTrk_Test@ 1,1
drc_Set_MinTrk_Val@ 1,5.0000
drc_Set_MinTrk_Dcode@ 1,""
drc_Set_MinPad_Test@ 1,1
drc_Set_MinPad_Val@ 1,5.0000
drc_Set_MinPad_Dcode@ 1,""
drc_Set_RedundPad_Test@ 1,1
Pag. 13 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
'Set Annular Ring checks to run
drc_Set_AnRingPad_Dcode@ 1,""
drc_Set_AnRingDrill_TRef@ 1,""
drc_Set_Pad2MaskTop_Test@ 1,1
drc_Set_Pad2MaskTop_Val@ 1,5.0000
drc_Set_Pad2MaskBot_Test@ 1,1
drc_Set_Pad2MaskBot_Val@ 1,5.0000
drc_Set_Drill2Mask_Test@ 1,1
drc_Set_Drill2Mask_Val@ 1,5.0000
'Set Special Checks to run
drc_Set_Drill2Pad_Test@ 1,1
drc_Set_Drill2Pad_Val@ 1,5.0000
drc_Set_PadWODrill_Test@ 1,1
drc_Set_Drill2Trk_Test@ 1,1
drc_Set_Drill2Trk_Val@ 1,5.0000
'Window area to check
axy@ 109.2000,2035.6000
axy@ 3867.4000,66.9000
'Check for nets and, if none, extract netlist
drc_NetlistExtract@
'perform checks for pass ID #2
drc_Run_Pass@ 1
'The following should be executed only if nets did not already exist
explode_allnets@
end@
util_drchisto@
Command sets the histogram test data for each histogram row being used (Histo_1 through Histo_4).
Command must be repeated for each row you wish to use. Parameters are:
HistoIndex: row number ID representing the row being run. (Histo_1, Histo_2, Histo_3, Histo_4)
(Remember, like layers, row numbers begin at 0; i.e. row 1 = ID 0)
MinVal: minimum clearance value of the range being checked, in user units.
MaxVal: maximum clearance value of the range being checked, in user units
Color ID: sets the color for the resulting histogram error layer. Default is 0 (red), but see Tables > Layers
for more color choices.
drchisto_run@
Run the DRC Histogram based on the previously defined Histogram data ranges.
Example
util_drchisto@
drchisto_setdata@ 0,1,5.0000,10.0000,2
drchisto_setdata@ 1,1,10.0000,15.0000,4
drchisto_setdata@ 2,1,15.0000,20.0000,10
drchisto_setdata@ 3,1,20.0000,30.0000,1
Pag. 14 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
drchisto_run@
setpinholeparms@ Max Size, Electric Only, Remove Old Errors, Fix Errors
Remove Old Errors sets the status to remove previously-flagged errors from the check:
1 = Try to fix any errors detected (by adding a polygon to cover the pinhole)
0 = Do not try to fix errors
pinholedetect@
axy@ #,#
axy@ #,#
Activates pinhole detection command, in window mode. Subsequent axy@ commands are two points defining
the rectangular window area to be checked for pinholes.
pinhole_layer@
Runs pinhole detection on the entire layer for layers that qualify, axy@ commands are not needed.
Example
pinholedetect@
setpinholeparms@ 5.0000,1,1,1
pinhole_layer@
dfm_solder_bridges@
Initiates command.
set_solderbridgeparms@ 10.0000,1,1
Pag. 15 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
First parameter is the Bridge Distance.
Second parameter determines fix status: 1 = auto-fix solder bridge errors, 0 = do not auto-fix.
Third parameter removes old error flags: 1 = remove all previous error flags, 0 = do not remove.
To specify the area to be checked, the selection window coordinates must be added at the end, followed by the
solder_bridge@ command:
axy@ 4133.5000,2201.1000
axy@ 4458.2000,1977.7000
solder_bridge@ 0,1
Performs the actual check. This command may be repeated to check as many pairs of layers as necessary.
First parameter is the Layer ID of the mask layer to be checked (layer numbers start at 0)
back@
Ends check.
To have the entire layer or composite be processed, the following command replaces the three commands
above:
solder_bridge_layer@ 0,1
Performs the actual check. This command may be repeated to check as many pairs of layers as necessary.
First parameter is the Layer ID of the mask layer to be checked (layer numbers start at 0)
Example
set_solderbridgeparms@ 10.0000,1,1
axy@ 460.8000,1494.2000
axy@ 1638.3000,741.6000
solder_bridge@ 6,0
solder_bridge@ 7,3
back@
sliverdetectmask@
Initializes command.
Specifies the scan box, etc. to use when searching for mask slivers.
Slivers: determines which type of sliver to find. 0 = Copper slivers, 1 = Mask slivers. (should be set to 1)
Pag. 16 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Remove: Remove old sliver flags on layers that are processed.
Fix: determines if command should attempt to repair encountered slivers. 1 = fix all slivers that are found, 0
= do not fix slivers.
To specify the area to be checked, the selection window coordinates must be added at the end:
axy@ 16336.7000,12527.7000
axy@ 24443.2000,19409.3000
back@
To have the entire layer or composite be processed, the following command replaces the above axy@
commands:
sliver_layer@
Example
sliverdetectmask@
setsliverparms1@ 8.0000,1,1,1
sliver_layer@
back@
mingapdetect@
Initializes command.
Specifies the scan box, etc. to use when searching for gap violations.
Noise: Minimum size of gap violations detected (in percent of maximum size).
Remove: Remove old gap violation flags on layers that are processed.
To specify the area to be checked, the selection window coordinates must be added at the end:
axy@ 16336.7000,12527.7000
axy@ 24443.2000,19409.3000
back@
To have the entire layer or composite be processed, the following command replaces the above axy@
commands:
mingap_layer@
Example
mingapdetect@
setmingapparms@ 8.0,50,1,11
mingap_layer@
Pag. 17 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
back@
minwidthdetect@
Initializes command.
Specifies the scan box, etc. to use when searching for width violations.
Noise: Minimum size of width violations detected (in percent of maximum size).
Remove: Remove old width violation flags on layers that are processed.
To specify the area to be checked, the selection window coordinates must be added at the end:
axy@ 16336.7000,12527.7000
axy@ 24443.2000,19409.3000
back@
To have the entire layer or composite be processed, the following command replaces the above axy@
commands:
minwidth_layer@
Example
minwidthdetect@
setminwidthparms@ 8.0,50,1,11
minwidth_layer@
back@
util_net_apply@
Initiates the command that applies the net names from the external netlist to the CAM net names that are
present after Netlist Extract in the CAM database..
util_net_compare@
Initiates the command that compares the nets in the external netlist to the CAM nets that are present after
Pag. 18 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Netlist Extract in the CAM database.
util_net_check@
setnetextrparm@ 1
setnetcheckparm@ 1,0,1
If single net check is enabled an axy@ coordinate must follow which selects the net:
axy@ 0.0000,0.0000
Gives a point on the net being checked (single-point net check only).
Example
util_net_check@
setnetextrparm@ 0
setnetcheckparms@ 1,0,1
analysis_add_part2part_check@ ChkID
Add a new check rule, or reset an existing check to the default values.
analysis_del_part2part_check@ ChkID
Pag. 19 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
This following set of commands must be repeated for each check rule being used:
analysis_set_part2part_fp1@ ChkID,"<name>"
Command sets the component footprint for the first component to be checked against.
analysis_set_part2part_fp2@ ChkID,"<name>"
Sets the angle to performs checks at, for the first part.
Angle:
0 = any angle
1 = 0 degrees
2 = 90 degrees
3 = 0 or 90 degrees
4 = 180 degrees
5 = 0 or 180 degrees
6 = 90 or 180 degrees
7 = 0 or 90 or 180 degrees
8 = 270 degrees
9 = 0 or 270 degrees
10 = 90 or 270 degrees
11 = 0 or 90 or 270 degrees
12 = 180 or 270 degrees
13 = 0 or 180 or 270 degrees
14 = 90 or 180 or 270 degrees
15 = 0 or 90 or 180 or 270 degrees
Sets the angle to performs checks at, for the second part.
Specify the type of part to part check to run for this check rule.
ChkType:
0 = Outline to Outline
1= Pad to Pad
2 = Outline to Pad
Pag. 20 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
3 = Pad to Outline
checkpart2part@
Invokes the Part to Part Spacing check, with the rules which have been defined using the other commands.
Only needs to be run once for multiple check rules.
Example
isolated_connection@
To specify the area to be checked, the selection window coordinates must be added at the end:
axy@ -1255.6000,4848.2000
axy@ -1066.8000,4715.1000
isolated_connections_window@ 25400,10,-1,36,1
First parameter is the required over etch clearance ( greater than or equal to zero).
Third specifies which Negative Layers to check (-1 = all negative layers are checked).
back@
The window coordinates and isolated_connections_window command may be repeated as many times as
desired before the back@ command.
To have the entire layer or composite be processed, the following command replaces the 3 commands listed
above:
Pag. 21 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
isolated_connections_layer@ 25400,10,-1,36,1
First parameter is the required over etch clearance ( greater than or equal to zero).
Third specifies which Negative Layers to check (-1 = all negative layers are checked).
Example
isolated_connection@
isolated_connections_layer@ 50,1,0,0,1
neg_plane_thermal_conflict@
starved_thermals@
To specify the area to be checked, the selection window coordinates must be added at the end:
axy@ -1255.6000,4848.2000
axy@ -1066.8000,4715.1000
starved_thermals_window2@ 50,1,4,0,1
Third parameter specifies the minimum number of clear spokes the thermal must have.
Fourth specifies which Negative Layers to check (1 = all negative layers are checked, 0 = only negative
layers that are active are checked).
Fifth indicates if command should attempt to fix errors (by rotating thermals) (0 = No, 1 = Yes).
back@
The window coordinates and starved_thermals_window command may be repeated as many times as desired
before the back@ command.
To have the entire layer or composite be processed, the following command replaces the 3 commands listed
Pag. 22 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
above:
starved_thermals_layer2@ 50,1,4,0,1
Third parameter specifies the minimum number of clear spokes, or ties, the thermal must have.
Fourth specifies which Negative Layers to check (1 = all negative layers are checked, 0 = only negative
layers that are active are checked).
Fifth indicates if command should attempt to fix errors (by rotating thermals) (0 = No, 1 = Yes).
Example
starved_thermals@
starved_thermals_layer2@ 50,1,0,0,1
Checks the selected silkscreen layer against the selected solder mask layer:
Restriction: a silk to solder clearance equal to this value will be flagged as an error.
Example
checksilk@ 4,6,50.0000,1,"12"
Checks the selected solder mask layer against the selected trace layer:
Clearance: acceptable width clearance between the two layers. (Note: a solder to trace clearance equal to
Pag. 23 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
this value will be flagged as an error).
Example
checksold2elec@ 0,6,50.0000,1,"23"
Pag. 24 di 24
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
File Menu Macros
Load
bn_readconfig@ "d:\test.job"
Save
bn_saveconfig@ "d:\test.job"
Creates a series of test points for the database, as defined by the set up command below:
Specifies the Dcode filter selections for placing test points. When using dcodes for filtering purposes, one of
these commands must be set for each test point type being used:
Pag. 1 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Set Selection Criteria:
testpt_genfil@ Filter, Use
Sets the usage of each type of selection available under 'Additional Selection Criteria'.
testpt_genfil_minsize@ Offset
If 'offset through hole' is selected as a criteria, this command must accompany it to specify the offset (in
mils).
Determines which side of the board will have test points added to it. These commands must be set individually
for each test point type which will be used.
Specifies the minimum size for each test point type. One of these commands must accompany each type
being used.
Other Commands:
testpt_clear@
If you have previously created test points, this command deletes them before placing test points again.
Pag. 2 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
singlenetextract@
testpt_create@
testpt_startcreatefil@
A necessary "internal" function that gathers the information from the filter that has been set up by the above
commands, and applies it to the test point creation process.
view_settestpt@ 1
testpt_endcreatefil@
A necessary "internal" function that clears the filter information from memory.
Example
testpt_dcodefil@ 3,1,"" 'Sets Dcode Filter for each test point type:
testpt_dcodefil@ 3,2,""
testpt_dcodefil@ 3,0,"12"
testpt_dcodefil@ 4,1,""
testpt_dcodefil@ 4,2,""
testpt_dcodefil@ 4,0,"14"
testpt_dcodefil@ 1,1,""
testpt_dcodefil@ 1,2,""
testpt_dcodefil@ 1,0,"16"
testpt_dcodefil@ 2,1,""
testpt_dcodefil@ 2,2,""
testpt_dcodefil@ 2,0,"18"
testpt_genfil@ 0,0 'Sets each Selection Criteria on or off
testpt_genfil@ 1,0
testpt_genfil@ 2,1
testpt_genfil@ 3,0
testpt_genfil@ 5,1
testpt_genfil@ 6,1
testpt_genfil_minsize@ 0.0000 'For Offset Through Hole criteria, specify offset value
testpt_sidefil@ 1,0,1 'Sets side to probe, for each type
testpt_sidefil@ 1,1,1
testpt_minsizefil@ 1,30.0000 'Sets the minimum size each type of point can be
testpt_sidefil@ 2,0,1
testpt_sidefil@ 2,1,1
testpt_minsizefil@ 2,40.0000
testpt_sidefil@ 3,0,1
testpt_sidefil@ 3,1,1
testpt_minsizefil@ 3,10.0000
testpt_sidefil@ 4,0,1
testpt_sidefil@ 4,1,1
testpt_minsizefil@ 4,20.0000
testpt_clear@ 'Remaining commands set all other settings and run test point creation
singlenetextract@
testpt_startcreatefil@
testpt_create@
view_settestpt@ 1
testpt_endcreatefil@
Pag. 3 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
bn_adddrill@ 23.0000
util_camed@
ACT Neutral
flyprobe_act_init@
flyprobe_export_act@ "d:\act\test.tst"
ATG
flyprobe_atg_init@
flyprobe_export_atg@ "d:\act\test"
Aperture Table
save_gapfile@ "d:\temp\aperfile.gap"
CAD Data
export_cad_pads@ Version,"Filename"
Version is the PADS version number * 100. (For example, PowerPCB v2.1 would be 210).
export_cad@ Type,"Filename"
Pag. 4 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Exports CAD system ASCII file, as defined by the filename.
Type is the CAD system format (see table below for supported systems).
Interface Type
PADS PCB (up to v2.0) 1
PADS PowerPCB (2.0) 2
PADS PowerPCB (2.1) 3
PADS PowerPCB (3.0) 4
PADS PowerPCB (4.0) 14
Zuken-Redac Visula 5
Accel TangoPRO 9
AccelEDA 10
GenCAD 11
export_60_database@ "c:\act_inc\test60.cam"
export_70_database@ "c:\act_inc\test70.cam"
export_80_database@ "c:\act_inc\test80.cam"
Circuit-Line
bn_exportcl_jobname@ "Circuitline"
bn_exportcl_customer@ "Customer"
Pag. 5 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
bn_exportcl_testedby@ "Tested By"
bn_export_circuitline@ "D:\ACT\Test"
Configures the drill files in the Excellon drill file format used by Circuit Line.
setup_fmtunit@ 1,0
setup_fmtdigits@ 1,2,4
Exports the drill files in the 2.4 format required by Circuit Line.
setup_fmtmode@ 1,0
setup_fmtzero@ 1,2
Exports the Tooling Files. The file extensions are based on the plate name (TOP, BOT, or MP2). One
command must be run for each tooling file being exported.
setup_fmtunit@ 0,0
setup_fmtdigits@ 0,2,3
setup_fmtmode@ 0,0
setup_fmtzero@ 0,0
edit_layer@ Layer#,Drawcolor,Flashcolor,Type,Status,Name$
Layer#: a layer larger than the highest layer in the design (i.e. if design has 8 layers, this should be layer 9).
Pag. 6 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Remember layer numbering begins at 0 = layer 1.
Drawcolor = 0
Flashcolor = 0
Status = 0 (on)
For more detailed information on creating layers, see the Add Layers command.
exportgbrfile@ 12,-1,"D:\ACT\Test\UP.MAP"
Example
bn_circuitline_init@
bn_exportcl_jobname@ "1345x"
bn_exportcl_customer@ "PSI Inc"
bn_exportcl_testedby@ "John"
bn_export_circuitline@ "C:\TEMP\"
setup_fmtype@ 1,5
setup_fmtunit@ 1,0
setup_fmtdigits@ 1,2,4
setup_fmtmode@ 1,0
setup_fmtzero@ 1,2
plate_drill_out@ 31,"C:\TEMP\DW.TOP"
plate_drill_out@ 32,"C:\TEMP\DW.BOT"
setup_fmtype@ 1,5
setup_fmtunit@ 1,0
setup_fmtdigits@ 1,2,4
setup_fmtmode@ 1,0
setup_fmtzero@ 1,1
setup_fmtype@ 0,0
setup_fmtunit@ 0,0
setup_fmtdigits@ 0,2,3
setup_fmtmode@ 0,0
setup_fmtzero@ 0,0
edit_layer@ 33,0,0,4,0,"TFCLOUT_TEMPLYR"
setlayer@ 0
exportgbrfile@ 33,-1,"C:\TEMP\UP.MAP"
edit_layer@ 33,0,0,4,0,"TFCLOUT_TEMPLYR"
setlayer@ 0
exportgbrfile@ 33,-1,"C:\TEMP\DW.MAP"
setup_fmtype@ 0,2
setup_fmtunit@ 0,0
setup_fmtdigits@ 0,3,4
setup_fmtmode@ 0,0
setup_fmtzero@ 0,0
setup_fmtype@ 0,0
setup_fmtunit@ 0,0
setup_fmtdigits@ 0,2,3
setup_fmtmode@ 0,0
setup_fmtzero@ 0,0
exportgbrfile@ 0,-1,"C:\TEMP\TOPPLOT.GBR"
Pag. 7 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
setup_fmtype@ 0,0
setup_fmtunit@ 0,0
setup_fmtdigits@ 0,2,3
setup_fmtmode@ 0,0
setup_fmtzero@ 0,0
exportgbrfile@ 3,-1,"C:\TEMP\BOTPLOT.GBR"
Composites
CompID% is the number of the composite (remember numbering begins at 0, Composite #1 = ID 0).
Composite ID of -1 means it is not a composite.
Example
set_compositemirrorstate@ 1, 1
set_compositenegativestate@ 1, 1
exportPCBgbrfile@ 4, 1, "Mixed_Plane"
Drill Data
All settings must be defined prior to running the export command, or the default settings will be used.
setup_fmtype@ 1,5
First #:
0 = photoplotter
1 = drill machine
2 = mill machine
Second #:
5 = Excellon
6 = Sieb & Meyer 1000
7 = Sieb & Meyer 3000
Pag. 8 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
setup_fmtunit@ 1,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=English
1=Metric
setup_fmtdigits@ 1,2,4
First #:
0=photoplotter
1=drill machine
2=mill machine
Second # is the integer number
setup_fmtmode@ 1,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=Absolute
1=Incremental
setup_fmtzero@ 1,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=leading
1=trailing
2=none
Exporting a drill file can also append a drill header. This command appends a header to the file listed by
File$.
nc_exp_drill_Exc_toolingoffset@ #
If the Tooling Offset has been set using the Add > Tooling Offset > Drill Origin command, this command
may be used to specify whether the exported drill file uses a G93 command, or recomputes the drill
Pag. 9 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
coordinates:
nc_exp_drill_Exc_decimals@ #
Excellon files only: command sets the decimal usage. If this command is used, it is unnecessary to use the
setup_fmtdigits@ and setup_fmtzero@ commands listed above.
drill_out@ 3,"d:\act_inc\drill_4.drl"
First parameter is the drill layer number (remember, layers start from 0) and the second is the exported drill
file name.
Exports one-up drill data from CAM & NC Editors, and panelized, step & repeat data from Panel Editor.
drillPCB_out@ 3,"d:\act_inc\drill_4.drl"
Same as drill_out@ command above for CAM & NC Editors, but exports only one-up drill data from the
Panel Editor.
Example
setup_fmtype@ 1,5
setup_fmtunit@ 1,0
setup_fmtdigits@ 1,2,4
setup_fmtmode@ 1,0
setup_fmtzero@ 1,1
drill_out@ 7,"C:\TEMP\drill_10.drl"
DXF
export_dxf_initinfo@ "d:\test.dxf"
export_dxf_setlinemode@ 1
Defines whether lines are exported with square ends (0) or as polylines with round ends (1).
export_dxf_setroundasdonut@ 0
Defines whether flashes are output as circles (0) or as filled donuts (1).
export_dxf@
export_dxf_rollback@
Gerber Data
Pag. 10 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
All settings must be defined prior to running the export command, or the default settings will be used. Device
settings must be set to 'Photoplotter'.
setup_fmtype@ 0,1
First #:
0 = photoplotter
1 = drill machine
2 = mill machine
Second #:
0 = 274D
1 = 274X
2 = Fire 9xxx
3 = Barco
setup_fmtunit@ 0,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=English
1=Metric
setup_fmtdigits@ 0,2,4
First #:
0=photoplotter
1=drill machine
2=mill machine
setup_fmtmode@ 0,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=Absolute
1=Incremental
setup_fmtzero@ 0,0
Pag. 11 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Sets the Zero Suppression. Does not apply to Barco files.
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=leading
1=trailing
2=none
export_swapaxes@ #
Fire 9xxx files only: sets the command to swap the Axes of the data on export.
1 = Yes
0 = No
export_filmsize@ #
Fire 9xxx files only: sets the command to save the Film Size in the file header on export.
1 = Yes
0 = No
set_layermirrorstate@ #,#
Defines which layers to mirror upon export. Must be set for each layer being mirrored. Does not apply to
274D files.
The first number is the layer number. (Remember, layers start with 0). The second number is 1 to mirror on
export, or 0 to not mirror on export.
layer_setimagepolarity@ #,#
Defines each layer's polarity on export. Must be set for each layer being made negative. Does not apply to
274D files.
The first number is the layer number (starting with layer 1 as 0).The second number is 0 for positive, 1 for
negative.
Composite ID of -1 means it is not a composite. In CAM Editor, command will export one-up design; in Panel
Editor it will export all panelized data, including step&repeat designs.
OR
exportPCBgbrfile@ 3,-1,"name"
Same as above command (including parameters), but will only export the one-up design from the Panel
Editor, not the fully panelized data.
save_gapfile@ "d:\temp\name.GAP"
274D format files require the saving of an aperture table, to provide apertures for the exported files.
Parameter is full filepath.
Pag. 12 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Examples:
274D
setup_fmtype@ 0,0
setup_fmtunit@ 0,1
setup_fmtdigits@ 0,2,4
setup_fmtmode@ 0,1
setup_fmtzero@ 0,1
exportPCBgbrfile@ 0,-1,"C:\TEMP\comp.lgr"
exportPCBgbrfile@ 1,-1,"C:\TEMP\solder.lgr"
save_gapfile@ "c:\temp\aperture.gap"
274X
setup_fmtype@ 0,1
setup_fmtunit@ 0,0
setup_fmtdigits@ 0,2,4
setup_fmtmode@ 0,0
setup_fmtzero@ 0,0
set_layermirrorstate@ 0,0
layer_setimagepolarity@ 0,0
set_layermirrorstate@ 1,0
layer_setimagepolarity@ 1,0
exportPCBgbrfile@ 0,-1,"C:\TEMP\comp.lgr"
exportPCBgbrfile@ 1,-1,"C:\TEMP\solder.lgr"
Fire 9XXX
setup_fmtype@ 0,2
setup_fmtunit@ 0,0
setup_fmtdigits@ 0,2,4
setup_fmtmode@ 0,0
setup_fmtzero@ 0,0
export_swapaxes@ 1
export_filmsize@ 1
set_layermirrorstate@ 0,1
layer_setimagepolarity@ 0,0
set_layermirrorstate@ 1,0
layer_setimagepolarity@ 1,1
exportPCBgbrfile@ 0,-1,"C:\TEMP\comp.lgr"
exportPCBgbrfile@ 1,-1,"C:\TEMP\solder.lgr"
Barco
setup_fmtype@ 0,3
set_layermirrorstate@ 0,1
layer_setimagepolarity@ 0,0
set_layermirrorstate@ 1,0
layer_setimagepolarity@ 1,1
exportPCBgbrfile@ 0,-1,"C:\TEMP\comp.lgr"
exportPCBgbrfile@ 1,-1,"C:\TEMP\solder.lgr"
Integri-test
flyprobe_integritest_init@
flyprobe_export_integritest@ "c:\act\test"
IPC-D350
Pag. 13 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
exportipcfile@ "c:\temp\test.ipc"
IPC-D356
IPC-D356A
export_ipc356A_testpt@ "D:\ACT\Test\demoint.net"
Mill Data
All settings must be defined prior to running the export command, or the default settings will be used.
setup_fmtype@ 2,5
First #:
0 = photoplotter
1 = drill machine
2 = mill machine
Second #:
5 = Excellon
6 = Sieb & Meyer 1000
7 = Sieb & Meyer 3000
setup_fmtunit@ 2,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=English
1=Metric
setup_fmtdigits@ 2,2,4
First #:
0=photoplotter
1=drill machine
Pag. 14 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
2=mill machine
setup_fmtmode@ 2,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=Absolute
1=Incremental
setup_fmtzero@ 2,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=leading
1=trailing
2=none
Exporting a mill file can also append a mill header. This command appends a header to the file listed by
File$.
nc_exp_mill_IncludeDrills@ #
Indicates whether to include drill hits in the mill file. 0 = No, 1 = Yes.
nc_exp_mill_Exc_toolingoffset@ #
If the Tooling Offset has been set using the Add > Tooling Offset > Mill Origin command, this command
may be used to specify whether the exported mill file uses a G93 command, or recomputes the mill
coordinates:
nc_exp_mill_Exc_decimals@ #
Excellon files only: command sets the decimal usage. If this command is used, it is unnecessary to use the
setup_fmtdigits@ and setup_fmtzero@ commands listed above.
nc_exp_mill_SM_feedrate@ 123.4567
Pag. 15 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
For Sieb and Meyer files, this is the feed rate for each mill path, in distance per second. Can be used to set the
feed rate in the exporting macro, when no feed rate is set in the NC Tool Table.
mill_out@ 4,"c:\temp\mill.rou"
First parameter is the layer number (remember, they start at 0) and second parameter is the name of the
exported mill file.
Exports one-up drill data from CAM & NC Editors, but panelized, step&repeat data from Panel Editor.
OR
millPCB_out@ 4,"c:\temp\mill.rou"
Same as above command, but exports one-up mill data from the Panel Editor.
Examples:
Excellon Format
nc_exp_mill_IncludeDrills@ 0
setup_fmtunit@ 2,1
setup_fmtdigits@ 2,3,3
setup_fmtmode@ 2,1
setup_fmtzero@ 2,0
millPCB_out@ 10,"c:\temp\Layer_11.rou"
nc_exp_mill_Exc_decimals@ 1
millPCB_out@ 10,"c:\temp\Layer_11.rou"
Sieb&Meyer Format
nc_exp_mill_IncludeDrills@ 1
setup_fmtype@ 2,6
setup_fmtunit@ 2,0
setup_fmtdigits@ 2,2,4
setup_fmtmode@ 2,0
setup_fmtzero@ 2,1
millPCB_out@ 10,"c:\temp\Layer_11.rou"
Netlist
export_netlist@ RefDes%,Name$
RefDes:
0 = export CAM350 format using RefDes/Pin # only.
1 = export CAM350 format using RefDes/Pin #, including X,Y coordinates.
Name$ = filename.
export_netlistb@ Coord%,Name$
Export a netlist using coordinates only. Parts are not present so RefDes/pin # will not apply.
Coord%:
0 = netlist is X,Y coordinates for "All Points."
Pag. 16 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
1 = then netlist is X,Y coordinates for "Ends Only."
Name$ = filename.
export_netlist_IPC@ Name$
Name$ = filename.
flyprobe_setdefadj@ #
IPC-D-356A export only: sets the adjacency when outputting the netlist to flying probe testers. # is
adjacency value.
Type:
0 = CAM350 X,Y
1 = CAM350 Refdes/Pin #
2 = IPC-D-356
5 = CAM350 X,Y and Refdes/Pin#
9 = IPC-D-356A
Ends:
0 = All points
1 = Ends only
Unused:
0 = Only exports entities that belong to nets.
Not 0 = All unused entities are exported as single entity nets. It is context sensitive as to what goes out (e.g. RefDes only
puts out unused Pins).
Surface:
0 = Top and bottom
1 = Top only
2 = Bottom only
export_nl_writeout@ "filename"
Example
IPC-D-356A Format
flyprobe_setdefadj@ 25.0000
export_nl_setparms@ 9,0,0,0,"10"
export_nl_writout@ "d:\temp\demo.net"
ODB++
export_odb_initinfo@ "d:\temp\test.cam"
export_odb@ "d:\temp\test"
Pag. 17 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Executes the export. Parameter is the directory to save uncompressed ODB files to, or will be used as the
filename for compressed ODB files (.tgz extension is assumed).
Plate Drills
All settings must be defined prior to running the export command, or the default settings will be used.
setup_fmtype@ 1,5
First #:
0 = photoplotter
1 = drill machine
2 = mill machine
Second #:
5 = Excellon
6 = Sieb & Meyer 1000
7 = Sieb & Meyer 3000
setup_fmtunit@ 1,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=English
1=Metric
setup_fmtdigits@ 1,2,4
First #:
0=photoplotter
1=drill machine
2=mill machine
setup_fmtmode@ 1,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Pag. 18 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Second #:
0=Absolute
1=Incremental
setup_fmtzero@ 1,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=leading
1=trailing
2=none
Export Command
nc_exp_drill_Exc_decimals@ #
Excellon files only: command sets the decimal usage. If this command is used, it is unnecessary to use the
setup_fmtdigits@ and setup_fmtzero@ commands listed above.
plate_drill_out@ 11,"TFTPLATE_6.drl"
First parameter is the layer number (starts at 0 for layer 1) and second parameter is the exported file's
name.
Example
setup_fmtunit@ 1,1
setup_fmtdigits@ 1,3,3
setup_fmtmode@ 1,1
setup_fmtzero@ 1,0
plate_drill_out@ 31,"c:\temp\TFBPLATE_2.drl"
plate_drill_out@ 32,"c:\temp\TFBPLATE_4.drl"
Probot
flyprobe_setdefadj@ 3.0000
Sets the default adjacency distance. It resets any specific layer adjacency distance.
flyprobe_setlyradj@ 5.0000,1
The first parameter is the adjacency for a specific layer, and the second parameter is the layer it is being set for (remember,
layer numbers start at 0).
flyprobe_setswapy@ 1
Specifies the movement of the probe while testing the board. (1=From top to bottom, 2=from bottom to top)
flyprobe_setalign@ 0
Pag. 19 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Indicates if you have double sided alignment (1=yes, 0=no)
flyprobe_setraid@ 1
flyprobe_probotout2@ "c:\act_inc\demoint"
Indicates the export path, including the job name (extensions will be added by the system to distinguish files).
Example
flyprobe_setdefadj@ 25.0000
flyprobe_setswapy@ 1
flyprobe_setalign@ 0
flyprobe_setraid@ 1
flyprobe_probotout2@ "C:\TEMP\metprob"
PROBOTECH
flyprobe_probotech_init@
Initializes command.
flyprobe_setdefadj@ 3.0000
flyprobe_export_probotech@ 3,1,"c:\act\"
First parameter:
1=test for opens
2=test for shorts
3=test for both.
Second parameter:
1=test top
2=test bottom
Example
flyprobe_probotech_init@
flyprobe_setdefadj@ 25.0000
flyprobe_export_probotech@ 3,1,"C:\TEMP\"
TTI
bn_export_tti@ "c:\act\filename.ttu"
Pag. 20 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
File > Import
Aperture Table
This command reads the .GAP format and will overwrite the current aperture information.
merge_apfile@ 0,"filename.gap"
Merges a .GAP file into the current aperture table (transcoding will occur, current aperture data will not be
overwritten).
Sets the ARL (Aperture Rule) file to use to translate the aperture table (*.arl).
load_aperfile@ "filename"
Loads and converts (as defined by set_arlrfile@ above) the aperture file . This "replaces" the current
aperture information.
merge_aperfile@ "filename"
This converts and merges (defined by set_arlrfile@ above) the aperture file. This is the same as
load_aperfile@ except it does not replace the current aperture information, merely augments it.
Auto
Auto_Import_NCData@ "path"
This automatically imports all the NC Data files (whose format could be determined) in the specified directory path.
AutoImport
auto_import@ "path"
This automatically imports ALL the files whose format could be determined in the specified directory path.
CAD Data
import_cad_pads@ "filename"
Type is the CAD format to import (see table below for available CAD systems):
Pag. 21 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Interface Type Polyextract available
0=No
1=Yes
Drill Data
All settings must be defined prior to running the import command, or the default settings will be used.
setup_fmtype@ 1,5
First #:
0 = photoplotter
1 = drill machine
2 = mill machine
Second #:
5 = Excellon
6 = Sieb & Meyer 1000
7 = Sieb & Meyer 3000
setup_fmtunit@ 1,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=English
1=Metric
setup_fmtdigits@ 1,2,4
First #:
0=photoplotter
1=drill machine
2=mill machine
Pag. 22 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Second # is the integer number
setup_fmtmode@ 1,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=Absolute
1=Incremental
setup_fmtzero@ 1,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=leading
1=trailing
2=none
Imports a plated drill layer. The first parameter is the layer ID (starts at 0).
The second parameter is the ID of the Tool Table to be used (this is the number that appears before the Tool
Table name in the NC Tool Table dialog box). If the Table ID is 0, then the most recently created table will be
used. If no Table exists, a new one will be created.
nc_import_drill_upl@ 13,1,"d:\dev\unplated.drl"
Imports an unplated drill layer. The first parameter is the layer ID (starts at 0).
The second parameter is the ID of the Tool Table to be used (this is the number that appears before the Tool
Table name in the NC Tool Table dialog box). If the Table ID is 0, then the most recently created table will be
used. If no Table exists, a new one will be created.
nc_add_table@ 3
Creates a new NC Tool Table. If this precedes the above nc_import_drill commands, this new table will be
considered the most recently created table.
Pag. 23 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Example
setup_fmtunit@ 1,1
setup_fmtdigits@ 1,3,3
setup_fmtmode@ 1,1
setup_fmtzero@ 1,0
nc_add_table@ 3
nc_import_drill_pl@ 7,1,"c:\temp\drill_10.drl"
nc_import_drill_upl@ 8,1,"c:\temp\drill_10.drl"
See File > Import > Gerber Data for formatting commands.
import_dxf@ 1,0,"d:\test.dxf"
First parameter:
1=overwrite loaded data (functions like the File > Import > DXF command)
0=do not overwrite (functions like the File > Import > Append DXF command)
Second parameter (When set to 1, the DXF Import dialog box is skipped during the import process, and all
the default parameters are used to load the data):
1=Quick Import
0=no Quick Import (refer to File > Import > Autoimport).
import_dxf_importunit@ 2
import_dxf_fillclosedpoly@ 0
import_dxf_squarelinetopoly@ 1
import_dxf_explodelinetype@ 0
import_dxf_sectbyangle@ 1
import_dxf_compressblk@ 1
Pag. 24 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
import_dxf_circlethreshold@ 150.0000
import_dxf_deflinewidth@ 2.0000
import_dxf_deftextlinewidth@ 2.0000
import_dxf_flashthreshold@ 150.0000
import_dxf_sectangle@ 10.00
If import_dxf_sectbyangle@ has a value of 1, this is the sectorization angle used (in percent).
import_dxf_sectdist@ 10.0000
If import_dxf_sectangle@ has a value of 0, this is the deviation distance from the true arc (in mils).
import_dxf_importscale@ 31
The import scale factor. Parameter must always be an integer above 0 (this value is divided by 100 to
provide the scaling factor).
Provides the ability to import DXF files with a scale factor value that has a very high precision.
The two parameters are combined by the command to produce the import scale by dividing the first
parameter by the second (i.e. scale = xxx / yyy).
import_dxf_convert2cam@ "d:\test.dxf"
import_dxf_rollback@
Example
import_dxf@ 1,0,"d:\temp\motorcyc.dxf"
import_dxf_importunit@ 1
import_dxf_fillclosedpoly@ 1
import_dxf_squarelinetopoly@ 1
import_dxf_explodelinetype@ 0
import_dxf_sectbyangle@ 0
import_dxf_compressblk@ 0
import_dxf_circlethreshold@ 150.0000
import_dxf_deflinewidth@ 2.0000
import_dxf_deftextlinewidth@ 2.0000
import_dxf_flashthreshold@ 150.0000
import_dxf_sectangle@ 1000
import_dxf_sectdist@ 10.0000
import_dxf_importscale1@ 1,1
Pag. 25 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
import_dxf_convert2cam@ "d:\temp\motorcyc.dxf"
ECAM dsn
import_ecam@ "name"
Reads in the ECAM DSN defined by name. No layer preparation is required because ECAM DSN replaces all
current information.
ECAM Lib
Ecamlib_in@ "Filename"
This imports an ECAM lib file and converts it to a system CAP library.
Gerber Data
All settings must be defined prior to running the import command, or the default settings will be used. For Barco
DPF format, only setup_ftmype@ command needs to be set.
setup_fmtype@ 0,0
First #:
0 = photoplotter
1 = drill machine
2 = mill machine
Second #:
0 = 274
1 = 274X
2 = Fire 9xxx
3 = Barco DPF
4 = Reserved
5 = Excellon
6 = Sieb & Meyer 1000
7 = Sieb & Meyer 3000
setup_fmtunit@ 1,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Pag. 26 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Second #:
0=English
1=Metric
setup_fmtdigits@ 1,2,4
First #:
0=photoplotter
1=drill machine
2=mill machine
setup_fmtmode@ 1,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=Absolute
1=Incremental
setup_fmtzero@ 1,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=leading
1=trailing
2=none
If using a GAP file for aperture information, this command reads the .GAP format and will overwrite the
current aperture information.
merge_apfile@ 0,"name.gap"
If using a GAP file for aperture information: this command merges GAP file into the current aperture table
(transcoding will occur, current aperture data will not be overwritten). See File > Import > Aperture Table for
an explanation of how to handle other aperture table formats.
edit_layer@ Layer#,Drawcolor,Flashcolor,Type,Status,Name$
Pag. 27 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Layer# sets the layer number. -2=no change (remember layer numbering in macros starts from 0: i.e. layer
1 = 0).
Drawcolor and Flashcolor set the draw & flash colors to display for the layer.
Name$ is the filename of the Gerber file being exported (including the full path). "" =no change (keep old
name)
importgbrfile@ Layer,X,Y,"name"
Layer is the layer number to save the file to (remember layer numbering begins at 0. i.e 0 = layer 1)
update_layerbar@
update_dcodebar@
Examples:
274D
setup_fmtype@ 0,0
setup_fmtunit@ 0,1
setup_fmtdigits@ 0,2,4
setup_fmtmode@ 0,1
setup_fmtzero@ 0,1
edit_layer@ 11,13,13,4,0,"demobdr.gbr"
importgbrfile@ 11,0.0000,0.0000,"d:\temp\demobdr.gbr"
update_dcodebar@
274X
setup_fmtype@ 0,1
setup_fmtunit@ 0,0
setup_fmtdigits@ 0,2,3
setup_fmtmode@ 0,0
setup_fmtzero@ 0,0
edit_layer@ 12,14,14,4,0,"democomp.gbr"
importgbrfile@ 12,0.0000,0.0000,"d:\temp\democomp.gbr"
update_dcodebar@
Fire 9xxx
setup_fmtype@ 0,2
Pag. 28 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
setup_fmtunit@ 0,1
setup_fmtdigits@ 0,2,3
setup_fmtmode@ 0,1
setup_fmtzero@ 0,1
import_polygon_poex@ "1"
import_polygon_poin@ "1"
edit_layer@ 13,15,15,4,0,"demognd.gbr"
importgbrfile@ 13,0.0000,0.0000,"d:\temp\demognd.gbr"
update_dcodebar@
Barco
setup_fmtype@ 0,3
edit_layer@ 14,2,2,4,0,"lstbs.dpf"
importgbrfile@ 14,0.0000,0.0000,"d:\temp\lstbs.dpf"
update_dcodebar@
edit_layer@ Layer#,Drawcolor,Flashcolor,Type,Status,Name$
(See Import > Gerber Data for more information on this command).
Layer# is the layer number (layer numbering in macros begins at 0; i.e. layer 1 = 0)
update_layerbar@
update_dcodebar@
Example
edit_layer@ 33,7,7,4,0,"columbia.hpg"
hpgl_in@ 33,0.0000,0.0000,"d:\temp\columbia.hpg"
update_dcodebar@
view_all@
IPC-D350
importipcfile@ "name"
Reads in the defined IPC file. No layer preparation is required because IPC files replace all information and
are not assigned to individual layers.
Pag. 29 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Mill Data
All settings must be defined prior to running the import command, or the default settings will be used.
setup_fmtype@ 2,5
First #:
0 = photoplotter
1 = drill machine
2 = mill machine
Second #:
5 = Excellon
6 = Sieb & Meyer 1000
7 = Sieb & Meyer 3000
setup_fmtunit@ 2,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=English
1=Metric
setup_fmtdigits@ 2,2,4
First #:
0=photoplotter
1=drill machine
2=mill machine
setup_fmtmode@ 2,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=Absolute
1=Incremental
Pag. 30 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
setup_fmtzero@ 2,0
First #:
0=photoplotter
1=drill machine
2=mill machine
Second #:
0=leading
1=trailing
2=none
Imports an NC data file containing mill data. The first parameter is the layer ID (starts at 0).
The second parameter is the ID of the Tool Table to be used (this is the number that appears before the Tool
Table name in the NC Tool Table dialog box). If the Table ID is 0, then the most recently created table will be
used. If no Table exists, a new one will be created.
nc_add_table@ 2
Creates a new NC Tool Table. If this precedes the above nc_import_mill commands, this new table will be
considered the most recently created table.
Example
setup_fmtunit@ 2,1
setup_fmtdigits@ 2,3,4
setup_fmtmode@ 2,1
setup_fmtzero@ 2,0
nc_add_table@ 2
nc_import_mill@ 34,3,"c:\temp\25341.rou"
Netlist
import_netlist_tolerance@ 1.0000
import_netlist@ "name"
import_netlistb@ "name"
import_netlistipc356@ "name"
Pag. 31 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Reads in an IPC-D-356 netlist defined by the file path.
Sets the format for the import of "Other" CAD netlist formats. Current format names accepted are ALLEGRO,
MENTOR, PCAD, PADS, REDAC, and TANGO. This excludes the use of CAM350 and IPC-D-356 formats (which
have separate macro commands).
import_netlist_univ@ "filename"
Imports the specified netlist file, which is assumed to be in the netlist format set by
import_netlist_format@.
Example
import_netlist_format@ "Allegro"
import_netlist_univ@ "d:\temp\demo.net"
ODB++
import_odb@ "filename"
Imports an ODB++ format database job tree or zipped file. Where filename can either be a) the location of
the job tree for an ODB++ database, or b) the name of a compressed ODB++ database.
import_odb_convert2cam@ "filename"
When manually specifying ODB++ format, add this command to convert the file to a flattened, one-up
design.
Example
import_odb@ "D:\temp\testODB"
import_odb_convert2cam@ "D:\temp\testODB"
external_map_layer_start@ "File_Name"
external_map_layer2layer@ Start,Merge
Merging to existing layers: command specifies the layer mapping for the new database being merged in. A
separate command must be used for each layer in the merged design.
Merge is the layer number in the master PCB that it is being mapped to.
external_map_layer2new@ lyrID,Type,AutoName
Pag. 32 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Merging to new layers: specifies the layer number and type of the new layer being created. (System will
assign new layer number automatically).
Type is the type of new layer that is being created for it.
AutoName is a flag indicating whether a new layer name should be assigned or the current name should be
used. This is only used internally for Design Compare checking. The default value is zero (0).
axy@ 3845.0000,-1450.0000
Once layer mapping has been specified, axy@ states the coordinates where the new design will be merged
in.
file_merge_refresh@ X,Y,"name"
Merges in a PCB file at location X,Y (x & y are reals): uses same coordinates as the axy@ command. If
another copy of the same PCB file has already merged into the workspace, it will merge in the file again.
file_merge@ X,Y,"name"
Merges in a PCB file at location X,Y (x & y are reals): uses same coordinates as the axy@ command. If the
same PCB file has previously been merged in, it will make a copy of the file already in the workspace. (Works
the same as Edit > Copy.)
external_map_cancel@
This macro command is recorded if the user aborts the merging process after initiating it. All it does is free-
up the memory which was created to store the layer mappings. (This would never be used in writing a
script).
Example
external_map_layer_start@ "d:\test\demoint.cam"
external_map_layer2layer@ 0,0
external_map_layer2new@ 1,2,0
external_map_layer2new@ 2,2,0
external_map_layer2layer@ 3,3
external_map_layer2new@ 4,7,0
external_map_layer2new@ 5,8,0
external_map_layer2new@ 6,6,0
external_map_layer2new@ 7,16,0
external_map_layer2new@ 8,17,0
axy@ -8943.7000,1147.6000
file_merge_refresh@ -8943.7000,1147.6000,"d:\test\demoint.cam"
back@
setnewfile@
Closes current file (if any) in the CAM or Panel Editor and clears the main window.
newlibitem@
Pag. 33 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
This clears the current custom aperture memory in the CAP Editor, part memory in the Part Editor, or symbol
memory in the Symbol Editor. It does not affect loaded libraries.
testpt_clear@
alignpt_clear@
Deletes all current test information. It does not affect any other data that is loaded.
bn_new@
Deletes all current test information. It does not affect any other data that is loaded.
setopenfile@ "filename"
1=cap
2=part
3=symbol
set_caplib@ #
Pag. 34 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Printer Settings:
print_plot@
Does nothing in macro playback, other than setting the state back to the default command mode.
print_setup@
Does nothing in macro playback, other than setting the state back to the default command mode.
print_SetOutputAllBlack@ "state$"
Sets the option which tells Printer to print all data in black (even to a color printing device).
State$:
"No" for printing in color
"Yes" for printing all in black.
This sets the plotter/printer to be "plotter name"; where "plotter name" is one of the printers listed in the
Windows WIN.INI file. The name must be as it appears in the printer name list, either in CAM350, or in the
Control Panel's printer setup.
print_SetOrientation@ #
print_SetPaperSize@ #
Sets the printer paper size. It can be set to the following values:
-32768 = Not set (use default)
1 = Letter 8 1/2 x 11 in
2 = Letter Small 8 1/2 x 11 in
3 = Tabloid 11 x 17 in
4 = Ledger 17 x 11 in
5 = Legal 8 1/2 x 14 in
6 = Statement 5 1/2 x 8 1/2 in
7 = Executive 7 1/4 x 10 1/2 in
8 = A3 297 x 420 mm
9 = A4 210 x 297 mm
10 = A4 Small 210 x 297 mm
11 = A5 148 x 210 mm
12 = B4 250 x 354
13 = B5 182 x 257 mm
14 = Folio 8 1/2 x 13 in
15 = Quarto 215 x 275 mm
16 = 10 x 14 in
17 = 11 x 17 in
18 = Note 8 1/2 x 11 in
19 = Envelope #9 3 7/8 x 8 7/8
20 = Envelope #10 4 1/8 x 9 1/2
21 = Envelope #11 4 1/2 x 10 3/8
22 = Envelope #12 4 1/4 x 11
23 = Envelope #14 1/2 x 11 1/2
24 = C size sheet
25 = D size sheet
26 = E size sheet
27 = Envelope DL 110 x 220 mm
28 = Envelope C5 162 x 229 mm
29 = Envelope C3 324 x 458 mm
30 = Envelope C4 229 x 324 mm
Pag. 35 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
31 = Envelope C6 114 x 162 mm
32 = Envelope C65 114 x 229mm
33 = Envelope B4 250 x 353 mm
34 = Envelope B5 176 x 250 mm
35 = Envelope B6 176 x 125 mm
36 = Envelope 110 x 230 mm
37 = Monarch 3.8 x 7 1/2 in
38 = Envelope 3 5/8 x 6 1/2 in
39 = US Fanfold 14 7/8 x 11 in
40 = German Std 8 1/2 x 12 in
41 = German Legal Fanfold 8 1/2 x 13 in
print_SetPaperBin@ #
Sets the printer paper source. It can be set to the following values:
-32768= Not set (use printer default)
1 = Upper paper bin
2 = Lower paper bin
3 = Middle paper bin
4 = Manual paper feed
5 = Automatic envelope feeder
6 = Manual envelope feed
7 = Automatic bin selection
8 = Tractor feed
9 = Small format
10 = Large format
12 = Large capacity
14 = Cassette loader
256 = Device specific bin
The following commands "persist" for the current macro run. In other words, they only need to be set once, but
they can be changed at any time prior to printing the next player.
Specifies whether or not the layer should be rotated 90 degrees before plotting.
Sets the plot scale: 1.0 equals 1-to-1, 2.0 equals 2-to-1, and so on. Fit (case not important) tells the plotter
driver to calculate the scale which would "fit" the layer on the page.
plotLayerOffsetXY@ #, #
Specifies the offset in user units (inches or millimeters) of the upper left corner of the layer to the upper left
corner of the page.
Sets the pens to use when plotting draws and flashes on the paper. Pens may be numbered as defined by the
plotter you are using (usually 1 to 16 or 1 to 8).
plotLayerAlign@ "state$"
state$ = "on" if the layer is to be aligned with the other layers, "off" if layer is not to be aligned.
plotLayerOffsetCenter@
Pag. 36 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Specifies that the layer should be centered on the page. This is mutually exclusive with PlotLayerOffsetXY.
plotTiled@ fillmode
Plots all layers which have been marked for plotting on the same sheet of paper, and "tile" them on the page
such that, from left to right, the first layer is plotted, then the second is plotted next to it, and so on,
wrapping around until all layers are plotted. The scale of the layers is the smallest scale set by the
PlotLayerScale@ command, or a computed scale, if the set scale would result in not all layers being plotted
on the same sheet of paper. The rotation is maintained for all plots.
plotSeparateSheets@ fillmode
Plots all layers which have been marked for plotting on separate sheets of paper, while maintaining their set
location, scale and rotation.
plotSameSheet@ fillmode
Plots all layers which have been marked for plotting on the same sheet of paper, while maintaining their set
location, scale and rotation.
Print Data:
plotLayer@ Lay$
Prints layers based on printer settings above. Unless "All" is entered as the parameter, a new command must
be used for each individual layer being printed.
"#" = specific layer number (note macro layer numbering begins at 0; i.e. layer 1 = 0, or in this case "0").
file_print@
Prints all data which displays in the application's workspace. Will print data exactly as it is, including
zooming, etc. Uses default printer settings (not necessary to use setting commands above).
Example
print_setup@
print_plot@
print_SetOutputAllBlack@ "Yes"
print_SetPlotter@ "\\DC_230_ST\DC_230_ST"
print_SetOrientation@ 2
print_SetPaperSize@ -32768
print_SetPaperBin@ -32768
print_SetHeader@ "On"
PlotLayerAlign@ "on"
PlotLayerRotate@ "on"
PlotLayerMirror@ "on"
PlotLayerScale@ "-8.41"
PlotLayerOffsetXY@ -65138.0597,157.4803
Pag. 37 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
PlotLayerPens@ 1,1
PlotLayer@ "0"
PlotLayer@ "1"
PlotSeparateSheets@ "fill"
file_print@
Prints the application's workspace display: prints any CAP that appears in the display (including any zooming,
etc).
print_allcaps@ n
0 = internal library
1 = external library
file_print@
Prints the application's workspace display: prints any Part or Symbol that appears in the display (including
any zooming, etc).
print_allparts@ n
0 = internal library
1 = external library
refresh_symbols@
Reads in the Symbol Library, overwriting any symbols in the database which have the same name as library
symbols. (This command takes no parameters).
setsaveasfile@ "name"
export_80_database@ "name"
export_70_database@ "name"
Pag. 38 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Saves a version 7.0 .CAM file of the specified filename.
export_60_database@ "name"
saveaslibitem@ "Filename"
Mode:
1 = part
2 = cap
7 = symbol
LibID:
0 = system (name is ignored)
1 = external
SymSetType@ #
saveaslibitem@ "Filename"
Example
SymSetType@ 1
saveaslibitem@ "new coupon"
back@
Access Code
Colors
Pag. 39 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Drill Machine
Expdrl_ToolFile@ "filename"
Expdrl_TrailerFile@ "filename"
Expdrl_generate_Tools@ #
Expdrl_generate_Header@ #
nc_exp_drill_detect@ #
nc_exp_drill_atc@ #
nc_exp_drilltool_infeed@ #
nc_exp_drilltool_retract@ #
nc_exp_drilltool_RPMs@ #
nc_exp_drilltool_MaxHits@ #
Pag. 40 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
nc_exp_drill_version@ #
Adds the VER value (1-8) that tells the machine how to interpret the coordinate base of the file.
nc_exp_drill_t00@ 1
1=append
0=do not append
This sets up the end of block character for the various formats.
The second # is the ASCII value for the desired end of block character.
For example, 42=*, 37=$, and 10=carriage return. The default is 42.
setup_fmtype@ 1,5
First #:
0 = photoplotter
1 = drill machine
2 = mill machine
Second #:
5 = Excellon
6 = Sieb & Meyer 1000
7 = Sieb & Meyer 3000
Example
expdrl_generate_Header@ 0
nc_exp_drill_detect@ 0
nc_exp_drill_atc@ 0
export_XYmodal@ 1,0
nc_exp_drill_t00@ 1
expdrl_generate_Tools@ 0
setup_fmtype@ 1,5
File Extensions
Pag. 41 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
setup_fext@ Format%,Ext$
Sets the default file extension to use for a particular format of file.
Format% is defined as follows (all numeric codes must begin with a 10; i.e. 1000 = Design Files):
00 = Design files
01 = Gerber files
02 = NC Drill files
03 = NC Mill files
04 = DRC report files
05 = Netlist files
06 = Info report files
07 = Error files
08 = Macro files
09 = Plot files
10 = Custom aperture library files
11 = Part library files
12 = IPC files
13 = Aperture files
14 = ECAM design files
15 = Polygon pattern files
16 = ECAM library files
17 = NC Mill tool table files
18 = NC Drill tool table files
19 = Drill and Mill header files
41 = NC Mill tab files
42 = NC Tool Table files (contains mill and/or drill)
43 = Part to Part files
file_setup_save@
Example
Film Box
setfilmbox@ 0.0000,20000.0000,24000.0000,0.0000
Sets the size of the film box in inches. The values are not grid coordinates--they are based on the lower left
X and Y values of the film box, which are always 0.
The first value is the lower left X coordinate (always 0), second value is the upper right Y coordinate, third is
the upper right X coodinate, and fourth is the lower left Y coordinate (always 0).
setfilmboxorigin@ #
Pag. 42 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
3 = Center of film box.
set_filmboxorigin@ 0.0000,0.0000
Sets the origin of the film box in inches. The values are grid coordinates.
Mill Machine
Expmill_ToolFile@ "filename"
Expmill_TrailerFile@ "filename"
Expmill_generate_Tools@ #
Expmill_generate_Header@ #
nc_exp_mill_detect@ #
nc_exp_mill_atc@ #
nc_exp_milltool_infeed@ #
nc_exp_milltool_retract@ #
nc_exp_milltool_RPMs@ #
Pag. 43 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Adds spindle spin rate:
nc_exp_mill_version@ 1
Adds the VER value (1-8) that tells the machine how to interpret the coordinate base of the file.
nc_exp_mill_t00@ 1
1=append
0=do not append
This sets up the end of block character for the various formats.
The second # is the ASCII value for the desired end of block character.
For example, 42=*, 37=$, and 10=carriage return. The default is 42.
setup_fmtype@ 2,5
First #:
0 = photoplotter
1 = drill machine
2 = mill machine
Second #:
5 = Excellon
6 = Sieb & Meyer 1000
7 = Sieb & Meyer 3000
Example
expmill_generate_Header@ 0
export_XYmodal@ 2,0
nc_exp_mill_t00@ 1
expmill_generate_Tools@ 0
setup_fmtype@ 2,5
Pag. 44 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Paths
setup_path@ Code#,Path$
Alters the path from which files are opened, imported, or exported.
Code# specifies the file type the path is being changed for, as follows (note the code always begins with a
100 - i.e. 1000 = Aperture Files):
1 = Aperture files
2 = ARL (aperture rule) files
3 = Import from here
4 = Export to here
5 = Macro files
6 = Custom aperture library files
7 = Part library files
8 = Symbol library files
9 = CAD files
Photoplotter
import_end_of_block@ 0,37
export_end_of_block@ 0,37
These commands set up the end of block character for the various formats.
The second # is the ASCII value for the desired end of block character.
For example, 42=*, 37=$, and 10=carriage return. The default is 42.
import_photo_expose@ 0
export_photo_expose@ 0
These commands set the default photo expose mode, if the G55 code does not exist. Default is off.
1 = on
0 = off
import_quadrant_arc@ 1
This sets the assumed interpolated arc type if no G74/G75 is present. This value only has an effect on files
where the arc type is not explicitly defined. Default is Quad.
export_include_cr@ 1
This controls whether the exported Gerber file will contain a Carriage Return (CR) at the end of each line.
Pag. 45 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
1 = on (include CR's)
0 = off (no CR's)
import_ignore_same_arc_end@ 0
This determines whether incoming arcs that have the same coordinate for both the start and end points are
read in as a circle or ignored.
export_include_hdr_comments@ 1
Sets whether database and date comments should appear in the header.
1 = Include
0 = exclude
set_plotsteprepeat@ 1
1 = yes
0 = no
import_XYmodal@ 0,1
export_XYmodal@ 0,1
These commands set the mode as modal or nonmodal, for import and export.
import_default_polarity@ -1
0 = clear
1 = dark
-1 = no change
setup_fmtype@ 0,0
import_end_of_block@ 0,97
export_end_of_block@ 0,98
export_photo_expose@ 1
import_photo_expose@ 1
import_quadrant_arc@ 0
export_include_cr@ 0
import_ignore_same_arc_end@ 1
export_include_hdr_comments@ 0
set_plotsteprepeat@ 0
import_XYmodal@ 0,0
export_XYmodal@ 0,0
import_default_polarity@ -1
setup_fmtype@ 0,1
Preferences
set_undostat@ 0
0 = off
1 = on
set_ipc_cr@ 0
0 = no CR added
1 = CR is added
set_refreshfonts@ 1
Determines whether a database uses the old font definitions it contains, or loads new font definitions each
time its loaded:
backup_stat@ 1
0 = off
1 = on
backup_intrvl@ #
# is in minutes
settexteditor@ "editor"
Sets a different text editor instead of the Windows Notepad. The entire path must be included unless the
path is included in the system path. "Editor" will be called, followed by the file name.
explode_FillCustPoly@ 1
Determines how custom apertures will be exploded using the Edit > Change > Explode > Custom
command:
Pag. 47 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
0 = explode custom to polygons
1 = explode custom to intrinsics
precise_arcs_approximation@ 0
Determines how accurate arcs are approximated by segments in commands such as Add Polygon and Draw
to Raster.
Save Defaults
file_setup_save@
Colors
testpt_setcolor@ 8,9,11
First # is the Top color, second is the bottom color, and third is the through-hole color.
Size
testpt_setsize@ #
testpt2gerber@
Creates new graphic layers to graphically represent Top, Bottom and Through-Hole test points.
Pag. 48 di 48
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Edit Menu Macros
vertex_add@
axy@ 1325.0000,4525.0000
axy@ 1550.0000,4625.0000
back@
Adds a vertex to an existing one. The first coordinate point is the handle, the second point is the target.
nc_edit_add_millvtx@
axy@ 503.7293,3445.8564
axy@ 475.0000,3225.0000
back@
Ends command.
Anchor
add_anchor@
axy@ X,Y
Pag. 1 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
back@
Rule: Command remains the same for all three editors, but sets different data anchors. In CAM, sets the one-up
image anchor for Panel Editor; in Part, sets the part anchor or adding parts in CAM Editor; and in Symbol sets
the anchor for symbols being added in Panel Editor.
Attributes
Attribute macro commands consist of 1) a command to set the type of attribute being created, and 2) a series of
commands to edit that attribute.
Types
Use one of the following commands to specify the attribute being set.
edit_attributes_component@
edit_attributes_net@
edit_panel_attributes@
Add_Attribute@ "1`2"
Delete_Attribute@ "2`3"
Edit_Attribute@ "4`5"
Change_Attribute_Value@ "3"
Example
'Component attribute:
edit_attributes_component@
axy@ 1325.0000,1540.3600
Add_Attribute@ "test`1"
Change_Attribute_Value@ "2"
back@
Pag. 2 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
'Net attribute:
edit_attributes_net@
axy@ 1525.0000,1395.0000
Delete_Attribute@ "test`4"
Add_Attribute@ "test`5"
Change_Attribute_Value@ "667"
back@
'Panel attribute:
edit_panel_attributes@
Add_Attribute@ "ch`1"
Change_Attribute_Value@ "djkd"
back@
Compensation
nc_edit_change_compensation@
Initiates command.
axy@ 500.0000,2525.0000
nc_change_compensation@ 1,1
Example
nc_edit_change_compensation@
axy@ 500.0000,2525.0000
nc_change_compensation@ 1,1
back@
Dcode
change_dcode@
axy@ 2325.0000,4775.0000
back@
edit_chgdcode@ 15
back@
Change_dcode@ starts the command, the point selects the Dcode, the Dcode is then changed.
Destination Layer
Pag. 3 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
change_layer_destination@
Invokes command.
axy@ x, y
Selects symbol data (draw or flash only) which is to have its destination layer changed. Maybe be used
multiple times to select several datum.
gen_selectall2@
Alternately, this command may be used, instead of the axy@ command, to select all symbol data in the
symbol.
back@
edit_chgdestlyr@ lyrID
Changes the specified destination layer(s) of the selected data. Uses same designations as Utilities > Draw
to Symbol:
lyrID is the layer destination for the symbol data. The mapping is as follows:
1 = all Non-NC layers
2 = all electric layers
3 = goes on all layers of one type. Symbol will appear on all layers of the type it was originally generated on
(e.g. internal)
4 = appears only on the specified layer the symbol is created on
edit_chgdestlyr_cancel@
back@
Ends command.
Example
change_layer_destination@
axy@ 125.0000,100.0000
back@
edit_chgdestlyr@ 1
back@
Device Name
change_devname@
axy@ 2075.0000,4075.0000
edit_devname@ "newname"
back@
Change_devname starts the command, a point is selected, the change is made. Note that new Device Name
is a string.
Drill First/Last
Pag. 4 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
nc_set_FirstOrLast@ 1
axy@ 0.0000,-150.0000
nc_set_FirstOrLast@ 0
axy@ 150.0000,0.0000
back@
Drill Hit
nc_edit_change_drill_hit@
axy@ -700.0000,-575.0000
nc_change_drill_hit@ 1,0
back@
Ends command.
Drill Order
Drill Sequence
Each drill sequence has a first and last "anchor" drill in the sequence. These drills may be defined by their
relationship to the smallest or largest tool in the NC Table, by tool number or by tool size. This command allows
you to alter the settings of these drill tools in an existing Drill Sequence .
edit_change_drill_seq@
axy@ 0.0000,0.0000
Sets the first drill based on the smallest drill in the design. Parameters are:
Nth: sets how far offset from the smallest drill in the table it should be: 0 means smallest, 1 is next to
Pag. 5 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
smallest, etc.
min/max: sets a value for the smallest size the first tool in the sequence can be (i.e. 45
indicates a tool largerr than 45 mils must be the first tool in the sequence)
Sets the first drill based on the largest drill in the design. Parameters are:
Nth: sets how far offset from the largest drill in the table it should be: 0 means largest, 1 is one below
largest, etc.
min/max: sets a value for the largest size the first tool in the sequence can be (i.e. 100
indicates a tool smaller than 100 mils must be the first tool in the sequence)
Sets the first tool in the sequence based on the ID number of the tool.
FirstSymDrlSpecToolSize@ Size
Sets the first tool in the sequence based on the size of the tool (in user units).
Sets the last drill based on the smallest drill in the design. Parameters are:
Nth: sets how far offset from the smallest drill in the table it should be: 0 means smallest, 1 is next to
smallest, etc.
min/max: sets a value for the smallest size the first tool in the sequence can be (i.e. 45 indicates a tool
larger than 45 mils must be the first tool in the sequence)
Sets the first drill based on the largest drill in the design. Parameters are:
Nth: sets how far offset from the largest drill in the table it should be: 0 means largest, 1 is one below
largest, etc.
min/max: sets a value for the largest size the first tool in the sequence can be (i.e. 100 indicates a tool
smaller than 100 mils must be the first tool in the sequence)
Sets the first tool in the sequence based on the ID number of the tool.
LastSymDrlSpecToolSize@ Size
Pag. 6 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Sets the first tool in the sequence based on the size of the tool (in user units).
SymSetNumHits@ 0
SymSetDrillType@ 1
DrillSeqEditDo@
Example
edit_change_drill_seq@
axy@ -300.0000,200.0000
FirstSymDrlSpecSmallest@ 0,0,0.0000
LastSymDrlSpecLargest@ 0,1,34.0000
SymSetNumHits@ 0
SymSetDrillType@ 1
DrillSeqEditDo@
back@
Endcap
axy@ -56.0000,64.0000
back@
EdCap_Width@ #
EdCap_Ok@ #
Changes the line width. Both commands must be used to make change.
EdCap_EndCap@ #
EdCap_Ok@ #
EdCap_Polarity@ #
EdCap_Ok@ #
Example
axy@ -20.0000,16.0000
back@
EdCap_EndCap@ 0
Pag. 7 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
EdCap_Ok@ 2
back@
Explode
Explode All:
edit_explode@
axy@ X,Y
explode@
back@
explode_custom@
axy@ -492.7000,-50.0000
back@
explode_FillCustPoly@ -1
If you are exploding the custom to a vector-filled polygon, the parameter for explode_FillCustPoly@ is a
Dcode. If it is being converted to a raster polygon, the parameter is always -1.
explode_part@
axy@ 1575.0000,3605.0000
explode@
Explode Net:
explode_net@
axy@ X,Y
explode@
back@
Explode Padstack:
explode_padstack@
axy@ X,Y
explode@
back@
Pag. 8 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Explodes the padstack at the selected point.
Explode Part:
explode_part@
axy@ X,Y
explode@
back@
Explode Text:
explode_text@
axy@ X,Y
explode@
back@
explode_vector_polygon@
axy@ X,Y
explode@
back@
nc_change_explode_Merge@
nc_change_explode_SR@
Explode Symbol:
explode_symbol@
Pag. 9 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
axy@ -2350.0000,27525.0000
explode_FillCustPoly@ -1
If you are exploding the symbol to a vector-filled polygon, the parameter for explode_FillCustPoly@ is a
Dcode. If it is being converted to a raster polygon, the parameter is always -1.
Flatten Panel:
explode_flattenpanel@
back@
Ends command.
Fixture Origin
Both Fixtures
bn_movebothfixture@
axy@ 14.9000,172.3000
back@
Bottom Fixture
bn_movebotfixture@
axy@ -16.1000,467.2000
back@
Top Fixture
bn_movetopfixture@
axy@ -31.6000,327.5000
back@
Fixture Probe
bn_chgtestpin@
axy@ 405.3000,4288.5000
back@
edit_chgtfpindef@ 1
Pag. 10 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Parameter is the ID of the new test probe.
back@
Mill First/Last
nc_set_FirstOrLast@ 1
axy@ 0.0000,-150.0000
nc_set_FirstOrLast@ 0
axy@ 150.0000,0.0000
back@
Ends selection
Mill Order
Mill Path
Coordinates are a point on the single mill path that you want to create vertices on.
Chamfer
nc_edit_chamfer@
Initiates command.
change_backoff@ 90.0000
change_minangle@ 60
change_maxangle@ 120
axy@ 3119.3000,4867.2000
back@
Pag. 11 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
The coordinates of the vertex to be chamfered.
Fillet
nc_edit_fillet@
Initiates command.
change_radius@ 100.0000
change_minangle@ 75
change_maxangle@ 105
axy@ 3119.3000,4858.3000
back@
Plunge/Extract
nc_edit_move_plunge_extract@
axy@ -10.0000,3202.5000
back@
Segments To Arcs
nc_edit_segments_to_arcs@
axy@ 524.3600,2664.7500
back@
Select any point located on the arc that you are converting.
Mill Tab
nc_edit_change_mill_tab@
axy@ 839.5000,4951.6000
nc_change_mill_tab@ 1
This changes the tab. The parameter is the ID of the mill tab in the Mill Tab Table.
back@
Netname
Pag. 12 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
change_netname@
axy@ 1625.0000,4325.0000
edit_netname@ "new netname"
back@
change_netname@ starts the command, coordinates denote a point on the net selected; edit_netname@
makes the change. Note that new netname is a string.
Origin
Edit_chg_orgn@ starts the command. The new space origin is defined by change_origin@.
Edit_chg_orgn@ starts the command. The new space origin is defined by change_origin@. Note that the
same macro is used for both the CAM Editor and the Panel Editor. The origin changed depends on the
current editor.
Edit_chg_grdorgn@ starts the command. The new grid origin is defined by change_gridorg@.
change_origin@ 1127.6000,2015.5000
Edit_chg_filmboxorgn@ starts the command. The new grid origin is defined by setup_filmboxorigin@.
Change NC Origin
edit_chg_ncorgn@
axy@ 1560.0000,4390.0000
change_ncorigin@ 1560.0000,4390.0000
Pag. 13 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Edit_chg_ncorgn@ starts the command. The new grid origin is defined by change_ncorigin@.
Panelization Anchor
Padstack
change_via@
axy@ 3750.0000,1400.0000
back@
edit_chgpadstk@ #
change_via@ starts the command, the point specified selects the padstack; the new number is assigned.
Path Direction
nc_edit_change_path_dir@
axy@ -1025.0000,2950.0000
nc_reverse_path_direction@
When selection is completed, this command executes the function and the paths are changed.
back@
Path Properties
nc_change_path_properties@
Initiates command.
axy@ 1110.6000,4938.3000
nc_set_path_toolref@ 3
Reference number of the tool to be assigned to the path (as defined by the Tool Table assigned to the layer).
nc_set_path_pilottoolref@ 2
Pag. 14 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Applies to milled paths, circles, or slots only. Reference number of the tool to be used for the pilot holes. If 0,
then no pilot holes.
nc_set_path_feedrate@ 33.3333
Applies only to mill paths. The feedrate of the mill tool in user units per second (defined under Settings >
Unit).
nc_set_path_text_direction@ 1
nc_set_path_text@ "string"
nc_set_path_msg_text@ "string"
nc_set_path_circle_radius@ 466.9614
nc_set_path_compensation@ 2,1
First parameter:
0=No Compensation
1=Left Compensation
2=Right Comensation
Second parameter:
0=Use tool ID as Compensation Index
1-99=Use given Compensation Index ID
nc_set_circ_inout@ 1
Applies only to mill circles. Defines the circle as Inside or Outside (0=inside, 1=outside).
nc_set_path_type@ 1
Ends command.
Example
nc_change_path_properties@
Pag. 15 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
axy@ 1325.0000,2100.0000
nc_set_path_compensation@ 1,0
nc_set_path_feedrate@ 5000.0000
back@
Pilot Holes
nc_edit_change_pilot_holes@
axy@ 3590.3000,4845.0000
Initiates command at any point on the mill path you wish to work with.
nc_change_pilotholes@ 2
back@
Ends command.
Pin Number
edit_pin@
Initiates command.
axy@ 0.0000,0.0000
set_pinseq@ "1"
Sets the next number in the pin sequence. By default, the system begins with pin 1 and increases the
number each time a coordinate is selected.
Example
edit_pin@
axy@ -175.0000,110.0000
set_pinseq@ "1"
axy@ -72.4000,109.4000 'Each new axy@ changes pin number to next in sequence: "2", "3", etc.
axy@ -26.0000,112.2000
axy@ 26.5000,110.8000
back@
Polarity
setpolarity@ Value
Pag. 16 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
RefDes
change_refdes@
axy@ 2225.0000,4050.0000
edit_refdes@ "newrefdes"
back@
change_refdes@ starts the command, coordinates denote a point on the ref/des selected; edit_refdes@
makes the change. Note that new RefDes is a string.
Sectorize
change_sector@
axy@ 1625.0000,4400.0000
setsectorize@ 1,4500
Sets the sectorization angle. First parameter is fixed. Second is the angle of the sectorization out to two
decimal places ( i.e. 4500 = 45 degrees)
edit_sectorize@
Example
change_sector@
axy@ 2423.8000,1729.8000
setsectorize@ 1,1550
edit_sectorize@
back@
Stiffener
bn_chgstiffener@
axy@ -7.6000,4685.4000
back@
edit_chgstiffenerdef@ 1
Example
bn_chgstiffener@
axy@ 632.0000,3389.6000
back@
edit_chgstiffenerdef@ 2
back@
Pag. 17 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Symbol Drill
edit_change_symbol_drill@
axy@ -200.0000,50.0000
Select one of the following to set the tool value for the drill:
Sets the first drill based on the smallest drill in the design. Parameters are:
Nth: sets how far offset from the smallest drill in the table it should be: 0 means smallest, 1 is next to
smallest, etc.
min/max: sets a value for the smallest size the first tool in the sequence can be (i.e. 45 indicates a tool
larger than 45 mils must be the first tool in the sequence)
Sets the first drill based on the largest drill in the design. Parameters are:
Nth: sets how far offset from the largest drill in the table it should be: 0 means largest, 1 is one below
largest, etc.
min/max: sets a value for the largest size the first tool in the sequence can be (i.e. 100 indicates a tool no
larger than 100 mils must be the first tool in the sequence)
Sets the first tool in the sequence based on the ID number of the tool.
SymDrlSpecSizet@ Size
Sets the first tool in the sequence based on the ID number of the tool.
SymSetDrillType@ 1
SymDrillEditDo@
Example
edit_change_symbol_drill@
axy@ -375.0000,-100.0000
SymDrlSpecSmallest@ 0,1,56.0000
SymSetDrillType@ 1
SymDrillEditDo@
back@
Text
Pag. 18 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Changing the Content:
change_font@ 2,0,"Arial"
Second number is the Dcode number. This is always 0 for True Type fonts (True Type fonts are raster
polygons).
The last parameter is the face name of the font. If the font type is 1 (EFN), then it can be the filename of the
font.
Font Settings:
Specifies the font to use for the text. May be set prior to or after text settings in the Text Settings section
below.
textfont@ "SIMPLE.EFN"
This is used if an EFN font is used. Otherwise, the following command is used:
textfontface@ 2, "Arial"
Specifies a non-EFN font to use. This is the font face name, not a filename.
Text Settings:
Once the text and font to be changed have been selected, any of the following commands can be issued (in
any order) to change the text attributes:
textfullheight@ 100.0000
Sets the full text height, in user units, taking into account characters with descenders (as well as a little
additional font-dependent spacing so that lines will not overlap). The old command textheight@, used with
version 2.X and earlier, will still function with this macro.
Pag. 19 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
textcapheight@ 50
Specifies the exact height for the font's capital letters, in user units. All other characters are based relative to
this set height.
Exception: the two macro commands above are mutually exclusive. When used in a macro, each overrides
the previous one's settings for any new text being added.
textangle@ 4500
textmirror@ 1
textjust@ 4
33 = Left Baseline
36 = Center Baseline
34 = Right Baseline
17 = Left Bottom
20 = Center Bottom
18 = Right Bottom
5 = Left Center
4 = Center Center
6 = Right Center
9 = Left Top
12 = Center Top
10 = Right Top
textfitting@ 1
textcspace@ 20.0000
textlspace@ 100.0000
textslant@ 0
Text slant is set in degrees times 100. Positive values slant the font to the right, negative values slant it to
the left. You can italicize a non-italics font face by specifying a slant angle. (Typical italic font faces are
slanted about 10 to 15 degrees.)
textxscale@ 500
Sets a text scale value (times 100). This applies to the width of individual characters. For example,
textxscale@ 200 would make each character twice a wide as initially defined, while textxscale@ 50 would
make the characters half as wide as initially defined.
textvertical@ 1
edit_chgtext_style@
Pag. 20 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Finalizes the changes made to the text style.
back@
Ends command.
Example
change_text_style@
axy@ -106.1360,571.5170
textfont@ "SIMPLE.EFN"
textfullheight@ 30.0000
textangle@ 1500
textvertical@ 0
edit_chgtext_style@
back@
In addition to the commands listed in Changing the Text Style above, the following command allows you to
change the text string itself:
Inserts a new text string, as designated by the parameter, replacing the old one. Finalizes the text style and
content changes.
back@
Ends command.
Example
change_text@
axy@ -80.5600,569.2930
textfontface@ 2,"Arial"
textangle@ 0
textjust@ 4
edit_chgtext@ "This is a test"
back@
Tool
nc_edit_change_tool@
axy@ 1612.8000,5373.8000
Any point on the drill or mill that you wish to change the tool for.
nc_change_tool@ 3
back@
Ends command.
change_partpins@
axy@ 1612.8000,5373.8000
edit_chgpartpins@ 0
Example
change_partpins@
axy@ 2015.5000,4311.1000
edit_chgpartpins@ 1
back@
Variable Text
Similar to the Change > Text Style & Contents command, but only functions on Variable Text and uses a
new command to invoke the changes:
change_variable_text@
axy@ 1800.0000,4525.0000
Font Settings:
Specifies the font to use for the text. May be set prior to or after text settings in the Text Settings section
below.
textfont@ "SIMPLE.EFN"
This is used if an EFN font is used. Otherwise, the following command is used:
textfontface@ 2, "Arial"
Specifies a non-EFN font to use. This is the font face name, not a filename.
Text Settings:
Once the text and font to be changed have been selected, any of the following commands can be issued (in
any order) to change the text attributes:
textfullheight@ 100.0000
Pag. 22 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Sets the full text height, in user units, taking into account characters with descenders (as well as a little
additional font-dependent spacing so that lines will not overlap). The old command textheight@, used with
version 2.X and earlier, will still function with this macro.
textcapheight@ 50
Specifies the exact height for the font's capital letters, in user units. All other characters are based relative to
this set height.
Exception: the two macro commands above are mutually exclusive. When used in a macro, each overrides the
previous one's settings for any new text being added.
textangle@ 4500
textmirror@ 1
textjust@ 4
33 = Left Baseline
36 = Center Baseline
34 = Right Baseline
17 = Left Bottom
20 = Center Bottom
18 = Right Bottom
5 = Left Center
4 = Center Center
6 = Right Center
9 = Left Top
12 = Center Top
10 = Right Top
textfitting@ 1
textcspace@ 20.0000
textlspace@ 100.0000
textslant@ 0
Text slant is set in degrees times 100. Positive values slant the font to the right, negative values slant it to
the left. You can italicize a non-italics font face by specifying a slant angle. (Typical italic font faces are
slanted about 10 to 15 degrees.)
textxscale@ 500
Sets a text scale value (times 100). This applies to the width of individual characters. For example,
textxscale@ 200 would make each character twice a wide as initially defined, while textxscale@ 50 would
make the characters half as wide as initially defined.
textvertical@ 1
Pag. 23 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Determines if text is displayed vertically. 1=yes or 0=no
Inserts a new text string, as designated by the parameter, replacing the old one.
Example
change_variable_text@
axy@ 25.0000,25.0000
textfont@ "SIMPLE.EFN"
textfullheight@ 150.0000
textjust@ 4
edit_chgtext_contents@ "variable test"
back@
Width
setwidth@ Width
edit_cap_convert_to_polygons@
edit_copy@
axy@ -150.0000,375.0000
axy@ 50.0000,275.0000
back@
First coordinate is the "copy from" point and the next coordinate is the "copy to" point.
Copy Options:
setcoplayer@ #,#
The first number is the layer # and the second number is either a 0 (do not copy to this layer) or a 1 (copy
Pag. 24 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
to this layer).
copy_to_layer@
This must follow the setcoplayer@ command and actually does the copy.
setcopies@ 3
This specifies how many copies to make. The angle and distance are calculated from the first and second
copy points.
Example
edit_copy@
setcopies@ 3
edit_selectall2@
setcoplayer@ 3,1
copy_to_layer@
back@
edit_delete@
axy@ 175.0000,400.0000
back@
delete_edits@ 4, 1
This comes at the end of the code and performs the actual deletion. The first parameter is 4 to delete
everything selected, or 11 to delete just the vertices (as if you were in the Edit > Delete Vertex
command). The second parameter is 0 to cancel the operation, or 1 to execute the operation.
Example
edit_delete@
edit_group@
axy@ 795.2000,3716.4000
axy@ 3103.8000,1631.8000
seteditvia@ 1
back@
delete_edits@ 4,1
back@
Fixture Probe
Pag. 25 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
edit_deltfpin@
axy@ 1090.1000,4291.5000
back@
Stiffener
edit_delstiffener@
axy@ -67.5000,4692.4000
back@
Test Point
edit_deltestpt@
axy@ 440.9000,4279.5000
back@
Alignment Pins
alignpt_clear@
Fixture Probes
On Top Fixture:
bn_delalltoppins@
On Bottom Fixture:
bn_delallbotpins@
Stiffeners
On Top Fixture:
Pag. 26 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
bn_delalltoptools@
On Bottom Fixture:
bn_delallbottools@
Test Points
testpt_clear@
nc_edit_delete_millseg@
axy@ 3110.4000,3182.9000
back@
Ends command.
segment_delete@
axy@ 1400.0000,4625.0000
back@
Ends command.
nc_edit_delete_mill_tab@
axy@ 435.6000,3404.9000
Pag. 27 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
back@
Ends command.
vertex_delete@
axy@ 1450.0000,4150.0000
nc_edit_delete_millvtx@
axy@ 1857.2000,3258.5000
back@
Ends command.
Add Layers
edit_layer@ Layer#,Drawcolor,Flashcolor,Type,Status,Name$
Layer# sets the layer number. -2=no change (remember layer numbering in macros starts from 0: i.e. layer
1 = 0).
Drawcolor and Flashcolor set the draw & flash colors to display for the layer:
Pag. 28 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
See Layer Type codes
Name$ is the filename of the Gerber file being exported (including the full path). "" =no change (keep old
name)
nc_assign_tool_table_to_layer@ LyrID,TableID
When adding an NC layer, you may assign an NC Tool Table assigned to the layer with this command. If the
command is not set, the first table in the database (if any exists) is used for the layer.
Example
nc_add_table@ 1
Adds an NC Tool Table; parameter is the Table ID number. Only necessary if you need to create a new tool
table for the layers you are adding.
edit_layer@ Layer#,Drawcolor,Flashcolor,Type,Status,Name$
Layer# sets the layer number. -2=no change (remember layer numbering in macros starts from 0: i.e. layer
1 = 0).
Drawcolor and Flashcolor set the draw & flash colors to display for the layer.
Pag. 29 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
0=on
1=off
2=ref
-2=no change
Name$ is the filename of the Gerber file being exported (including the full path). "" =no change (keep old
name)
nc_assign_tool_table_to_layer@ LyrID,TableID
Assigns the specified NC Tool Table to the specified layer. Note that no checking is done for the existance of
the NC Tool Table or that any NC data on the layer will have a valid tool within the newly assigned tool table.
Example
Align
Aligns one layer to another layer. Select an initial point on the target layer, and then a corresponding point
on the layer to align to it. It is recommended the alignment point be an object (pad, etc).
It is a good idea to use the Snap command (Z Hot Key) to assure the objects being aligned are selected
properly.
layer_align@
axy@ 172.1000,3287.7000
back@
axy@ 178.5000,1066.6000
back@
layer_alignok@
Records if user OK's the Align Layer confirmation. (Not required for macro to run).
layer_aligncancel@
Records if user cancels the Align Layer confirmation. (Not required for macro to run).
Pag. 30 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
end@
Ends command.
Example
layer_align@
setsnap@ 1
axy@ 225.0000,525.0000
back@
axy@ 1375.0000,1400.0000
back@
back@
layer_alignok@
end@
setsnap@ 0
back@
Remove
edit_removelyr@ #
Removes layer designated by #. (remember layer numbering begins at 0. i.e. 0 = layer 1).
Reorder
layer_renumber@
Takes all layers, renumbers them sequentially (1, 2, 3, etc.), and compresses spaces in the layers.
Reorder sequence:
init_layer_reorder@
change_layer_position@ pos%,oldid%,newid%
Pos% is the new position for the layer being reordered (same numbering sequence as the interactive table: 1
to n).
apply_layer_order@
Example
init_layer_reorder@
change_layer_position@ 0,0,0
change_layer_position@ 1,8,1
change_layer_position@ 2,2,2
change_layer_position@ 3,4,3
Pag. 31 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
change_layer_position@ 4,5,4
change_layer_position@ 5,3,5
change_layer_position@ 6,6,6
change_layer_position@ 7,7,7
change_layer_position@ 8,1,8
apply_layer_order@
Scale
X# & Y# are the X,Y scaling factors (displayed as the scaling percentage, times 1000 squared: i.e 50% =
50000000).
Example
edit_scale@ 0,11,80000000,80000000
edit_padsnap@ Master,Slave,Snap
Snap is the Snap Distance (maximum distance a drill on the slave layer can be from a pad on the master
layer, and be moved)
If you are aligning more than one Slave Layer to the Master Layer, repeat this command for each Slave Layer.
Example
edit_padsnap@ 0,1,2.0000
edit_padsnap@ 0,3,2.0000
edit_padsnap@ Master,Slave,Snap
Snap is the Snap Distance (maximum distance a pad on the slave layer can be from a drill on the master
Pag. 32 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
layer, and be moved)
If you are aligning more than one Slave Layer to the Master Layer, repeat this command for each Slave Layer.
Example
edit_padsnap@ 0,1,2.0000
edit_padsnap@ 0,3,2.0000
edit_padsnap@ Master,Slave,Snap
Snaps a pad on one layer to a corresponding pad on one or more other layers.
Snap is the Snap Distance (maximum distance a pad on the slave layer can be from a pad on the master
layer, and be moved)
Tip: If you are aligning more than one Slave Layer to the Master Layer, repeat this command for each Slave
Layer.
Example
edit_padsnap@ 0,1,2.0000
edit_padsnap@ 0,3,2.0000
Break At Vtx
break_vertex@
axy@ 1200.0000,6635.0000
Breaks a vertex at the selected point. The first command starts the process, followed by the coordinates of
the vertex that is the breaking point.
Chamfer
edit_chamfer@
Initiates command.
change_backoff@ 90.0000
Pag. 33 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
change_minangle@ 60
change_maxangle@ 120
axy@ -4100.0000,7025.0000
back@
End command.
Fillet
edit_fillet@
Initiates command.
change_radius@ 100.0000
change_minangle@ 75
change_maxangle@ 105
axy@ 3119.3000,4858.3000
back@
End command.
Join Segments
join_segs@
axy@ -4519.7000,3158.3000
Pag. 34 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
axy@ -2980.2000,3793.4000
The coordinates are a point on one of the segments that you are joining. More than one set of coordinates is
needed only if more than one set of lines are being joined.
back@
join_ok@
join_cancel@
join_reject@
back@
Example
join_segs@
axy@ -2575.0000,875.0000
back@
join_ok@
back@
Segments To Arcs
segments_to_arcs@
axy@ -983.6000,6307.1000
edit_segments_to_arcs@ 0
Executes the command. The parameter sets the type of arc created from the data:
0=Circumscribed
1=Inscribed
2=Closest
back@
Pag. 35 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Mirrors data at a given location.
edit_mirv@
Initiates command.
axy@ -125.0000,400.0000
axy@ -50.0000,375.0000
First coordinate is selection point of data to mirror. Second is the mirror axis placement.
setmirroraxis@ 2
Example
edit_mirv@
setmirroraxis@ 1
axy@ 2425.0000,2325.0000
axy@ 2425.0000,2325.0000
back@
Move
edit_move@
axy@ 0.0000,650.0000
axy@ -300.0000,650.0000
back@
First coordinate is the "move from" point and the next coordinate is the "move to" point.
Move Option:
movetolayer@ #
Example
edit_move@
axy@ 1850.0000,2325.0000
axy@ 2700.0000,2325.0000
movetolayer@ 0
back@
Pag. 36 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Fixture Probe
edit_movetfpin@
axy@ 893.1000,2953.0000
axy@ 927.1000,3066.3000
back@
Moves fixture probe. First coordinate is the "move from" point and the next coordinate is the "move to"
point.
Test Point
edit_movetestpt@
axy@ 1086.7000,4280.5000
axy@ 841.1000,4017.3000
back@
Move test point. First coordinate is the "move from" point and the next coordinate is the "move to" point.
nc_edit_move_milltab@
axy@ 1150.8853,3149.6813
axy@ 747.8541,2865.9871
back@
Confirms placement of the first tab. Other tabs may be moved by adding their existing X,Y coordinates and
new coordinates.
back@
nc_edit_move_millvtx@
Pag. 37 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Initiates move of mill vertex.
axy@ 1875.0000,3250.0000
axy@ 1849.5000,3055.0000
back@
Confirms placement of the first vertex. Other vertices may be moved by adding their existing X,Y coordinates
and new coordinates.
back@
vertex_move@
axy@ 1550.0000,4350.0000
axy@ 1400.0000,4225.0000
back@
Moves a vertex. The first point is the selection handle of the vertex, the second point is the target
coordinate.
redo@
Restores the previous action removed by the Undo command. May be done several times.
bn_stagger@
axy@ 3157.0000,2733.9000
back@
Reverse the test point staggering. Coordinate is any single test point in the group of staggered test points.
Pag. 38 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
edit_rotate@
Initiates rotation.
setrot100angle@ 4500
axy@ 245.0000,3338.8000
axy@ 265.0000,3314.8000
back@
Each coordinate is a mouse pick that causes an additional rotation of the specified amount.
Rotate Options:
set_derived_dcode@ 42,6,14.2,16,1530,"mycap"
This macro is used to automatically build a custom from an intrinsic aperture that is rotated. The values refer
to the original aperture from which the Dcode was derived: Dcode #, shape, xsize, ysize, angle rotated in
100ths of a degree, name of custom aperture. (see Tables Apertures)
Shapes:
0 = None
1 = Round
2 = Square
3 = Rectangle
4 = Target
5 = Thermal
6 = Custom
7 = Donut
8 = Octagon
9 = Oblong
panel_rotate@ 90,1
The first number sets the degree to which the panel is to be rotated, counter-clockwise.
The second number is 0 = no, 1 = yes. If yes, the dimensions of the film box will be "swapped" (X becomes
the Y value, and Y becomes the X value).
edit_spin_image@
Pag. 39 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
axy@ 0.0000,0.0000
Any point in the step image being rotated. May be repeated to rotate image multiple times.
back@
Ends command.
Example
edit_spin_image@
axy@ 75.0000,4500.0000
axy@ -225.0000,4575.0000
axy@ -300.0000,4300.0000
back@
Arc - 2-Points
edit_trimarc2pt@
axy@ 1016.7000,1855.4000
One end point of the arc used to trim the line segment.
axy@ 1190.9000,1629.2000
The other end point of the arc. The system selects the curve automatically.
axy@ 1018.7000,1699.3000
This is a coordinate on the part of the line segment you are deleting.
back@
Brings you back to the initial edit_trimarc2pt@ command, allowing you to trim another line.
back@
Arc - 3-Points
edit_trimarc3pt@
axy@ 948.7000,1821.4000
One end point of the arc used to trim the line segment.
Pag. 40 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
axy@ 1088.8000,1657.2000
axy@ 986.7000,1667.3000
axy@ 870.6000,1699.3000
This is a coordinate on the part of the line segment you are deleting.
back@
Brings you back to the initial edit_trimarc3pt@ command, allowing you to trim another line.
back@
Arc - Center-Angle
edit_trimarc@
axy@ 646.4000,1803.4000
axy@ 654.4000,1615.2000
Sets the radius of the circle and the clockwise-most end point of the arc
axy@ 778.5000,1855.4000
axy@ 660.4000,1705.3000
This is a coordinate on the part of the line segment you are deleting.
back@
Brings you back to the initial edit_trimarc@ command, allowing you to trim another line.
back@
Border
Circle
Pag. 41 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
edit_trimcircle@
axy@ 778.5000,1945.5000
axy@ 968.7000,2015.6000
axy@ 902.6000,1983.5000
This is a coordinate on the part of the line segment you are deleting.
back@
Brings you back to the initial edit_trimcircle@ command, allowing you to trim another line.
back@
Line
edit_trimline@
axy@ 492.3000,1791.4000
axy@ 624.4000,1795.4000
back@
These are the two end coordinates of the line segment that is used to trim.
axy@ 550.3000,1819.4000
This is a coordinate on the part of the line segment you are deleting.
back@
Brings you back to the initial edit_trimline@ command, allowing you to trim another line.
back@
undo@
Reverses the previous action or command. May be done several times. (Not available for all commands,
Pag. 42 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
however - exceptions are usually noted with a warning message).
Pag. 43 di 43
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Info Menu Macros
Find Query Status
Measure Report
Notes Show
Acid Traps
Bridges
Dcode
setdcode@ 15
update_dcodebar@
Sets Dcode to search for. (same as selecting Dcode in the Tool Bar).
find_dcode@
back@
Ends command.
Example
setdcode@ 19
update_dcodebar@
find_dcode@
back@
DRC
find_drc@
find_drctype@ DrcType
Sets the currently defined DRC type, for display in Find DRC.
Pag. 1 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
2 = Track to Pad
3 = Track to Track
4 = Outline clearance
5 = Minimum Track Width
6 = Minimum Pad Width
7 = Redundant Pads
8 = Annular Ring Pad to Mask
9 = Annular Ring Drill to Mask
10 = Annular Ring Drill to Pad
11 = Drills without Pads
12 = Pads without Drills
Highlight the First DRC error, based on the current DrcType and visible layers.
find_drcnext@
Highlight the Next DRC error, based on the current DrcType and visible layers.
find_drcprev@
Highlight the Previous DRC, error based on the current DrcType and visible layers.
find_drczoom@
Zoom to and center the currently-highlighted DRC error on the main screen.
find_drcdelete@
Delete the currently-highlighted DRC error flag from the system. The system will automatically highlight the
Next DRC error after deleting the current one.
find_drcdeleteall@
Deletes all the DRC error flags which fit the current DrcType, and are on the currently visible layers.
find_drcmakelayer@ LayerNameStr
Creates a graphical data layer which represents the DRC errors of the current DrcType (and on the visible
layers). The Layer name is defined by LayerNameStr (string type containing name of new layer) and will be
created on the first new available layer in the layer table.
Drill Errors
Isolated Connections
Minimum Gaps
Minimum Widths
Net
find_net@
findnet@ "NetName"
end@
Padstack
find_via@
Initiates command.
setpadstack@ #
Selects padstack to look for. (remember, like layers, padstack numbering begins at 0. i.e. padstack 17 =
#16)
findcpin@
The above two commands may be entered multiple times to find new padstacks.
end@
Ends command.
Example
find_via@
setpadstack@ 2
findcpin@
setpadstack@ 4
findcpin@
end@
Pag. 3 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Part
find_part@
Initializes command.
findpart@ #,"name"
end@
Closes command.
Part to Part
Pin
find_pin@
findfpin@ "#"
end@
Silk to Solder
Slivers
Solder to Trace
Starved Thermals
Pag. 4 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Step Image
find_stepimage@
change_stepImageId@ #
Selects the image to find, # being the image ID of the step image.
back@
Closes command.
Symbol
Tabs
Tool
Object to Object
info_measure_obj@
axy@ 1953.0000,3595.0000
axy@ 2199.0000,3908.0000
back@
Measures the distance between two objects. Coordinates specify the first and second object (points may be
Pag. 5 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
anywhere within the objects being measured).
Note: To query the results of any Measure command, get the strings from the Measure dialog in one comma
delimited string using the miscellaneous macro, querystring!.
Point to Point
info_measure_pt@
axy@ 1849.0000,3703.0000
axy@ 2361.0000,4350.0000
back@
Measures the distance between two points, as defined by the axy@ commands.
Net to Net
info_net_pt@
axy@ 1849.0000,3703.0000
axy@ 2361.0000,4350.0000
back@
Measures the distance between two nets, as defined by the axy@ commands.
addnoteline@ "text"
Deleting a note:
deletenote@ "notename"
Deletes the note name and its associated text from the design.
Editing a note:
clearnote@ "notename"
Empties the contents of the named note without deleting the note itself.
addnoteline@ "text"
Renaming a note:
startnote@ "new notename"
Pag. 6 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Creates a note with the new name to be used.
Printing notes:
printnote@ "notename"
printallnotes@
Importing notes:
addnotefile@ "filename"
Adds a note that was created with an outside text editor to the note list. The file name is used as the note
name.
Exporting notes:
All
query_all@
axy@ 1830.0000,4166.0000
back@
Note: To query the results of any Query command, get the results from the Query dialog in a comma
delimited string using the miscellaneous macro, querystring!.
Dcode
query_dcode@
axy@ 1958.0000,3686.0000
back@
DRC
Pag. 7 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Drill
query_symbol_drill@
axy@ 200.0000,100.0000
back@
Drill Paths
Drill Sequence
query_drill_seq@
axy@ 25.0000,50.0000
back@
Queries any Drill Sequence located in a Symbol, at the location given by axy@.
Fixture Probe
query_tfpin@
axy@ 930.1000,2956.9000
back@
Mill Paths
NC Data
Net
query_net@
axy@ 1963.0000,3653.0000
Pag. 8 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
back@
Padstack
query_via@
axy@ 2004.0000,4196.0000
back@
Part
query_part@
axy@ 1832.0000,4171.0000
back@
Pin
query_pin@
axy@ 0.0000,300.0000
axy@ 100.0000,300.0000
back@
Step Image
query_step_image@
axy@ #,#
back@
Stiffener
query_stiffener@
axy@ 47.7000,4879.2000
back@
Symbol
Pag. 9 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
query_symbol@
axy@ 1832.0000,4171.0000
back@
Tabs
Test Point
query_testpt@
Initiates command.
view_settestpt@ 1
Enables viewing of found test points. 1=enable visibility of test points, 0=disable visibility of test points
axy@ 500.0000,2600.0000
back@
Note: To query the results of any Query command, get the results from the Query dialog in a comma
delimited string using the miscellaneous macro, querystring!.
Acid Traps
report_acidtraps@
report_acidtraps_save@ 0,0,"d:\dev\testdata\test.rpt"
report_acidtraps_print@ 0,0
Prints report.
For the save and print functions, the First parameter specifies the type of report:
0=All acid trap data (second parameter is ignored)
1=Acid trap data for all layers (second parameter is ignored)
2=Acid trap data for all layers that are ON (second parameter is ignored)
3=Acid trap data for all composites (second parameter is ignored)
4=Acid trap data for one layer (the second parameter is the layer number--starts at 0)
5=Acid trap data for one composite (second parameter is the composite ID--starts at 0)
Second parameter identifies the layer or composite to be printed or saved (if first parameter is set to 4 or 5):
number is layer number or composite ID number.
Pag. 10 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
BOM
report_bom@
report_bom_save@ "d:\dev\testdata\test.rpt"
report_bom_print@
Lists the current bill of materials (or parts list) in the design. Save command saves the report to the filename
designated.
Bridges
report_solderbridges@
report_solder_bridges_save@ 0,0,"d:\dev\testdata\test.rpt"
report_solder_bridges_print@ 0,0
For the save and print functions, the first parameter specifies the type of report:
0=All bridge data (second parameter is ignored)
1=Bridge data for all layers (second parameter is ignored)
2=Bridge data for all layers that are ON (second parameter is ignored)
3=Bridge data for all composites (second parameter is ignored)
4=Bridge data for one layer (the second parameter is the layer number--starts at 0)
5=Bridge data for one composite (second parameter is the composite ID--starts at 0)
Second parameter identifies the layer or composite to be printed or saved (if first parameter is set to 4 or 5):
number is layer number or composite ID number.
Centroid
report_place@
Initiates command.
create_centroid_layer@ #
Creates a new graphic layer, displaying all part centroid locations (layer is automatically assigned to next
new layer in table).
report_place_save@ #,"d:\dev\testdata\test.rpt"
report_place_print@ #
Prints report.
For the Create, Save, and Print functions, the following parameter # applies:
0=do not report step and repeated component centroids
1=report step and repeated component centroids
Dcode
Pag. 11 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
report_dcode@
report_dcode_save@ 1,0,0,"d:\dev\testdata\test.rpt"
report_dcode_print@ 1,0,0
For the fourth parameter (save only) this is the filename you want the report saved under.
DRC
Prints only the errors for the DRC Check specified in the command (see parameters below).
Saves only the errors for the DRC Check specified by the command (see parameters below).
Layer Control specifies the layers for which errors will appear in the saved or printed report:
0=All layers
1=All ON Layers
2=Specific Layer
Layer Id is the specific layer to save/print errors for (only relevant when Layer Control is 2).
Drill Errors
Pag. 12 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
report_drill_errors@
report_drill_errors_save@ 0,0,"d:\dev\blindbur.rpt"
report_drill_errors_print@ 0,0
Prints report.
For the save and print functions, the First parameter specifies the type of report:
0 & 1=All data in drill error list (second parameter is ignored)
2=Drill errors for all NC layers that are ON (second parameter is ignored)
4=Data for the NC layer (specified by the second parameter)
Layer Compare
report_layercompare@
report_layer_compare_save@ 0,0,"c:\help\act_dev\dev\test.rpt"
report_layer_compare_print@ 0,0
Prints report.
For the save and print functions, the first parameter specifies the type of report:
0=All layer compare data (second parameter is ignored)
1=Layer compare data for all layers (second parameter is ignored)
2=Layer compare for all layers that are ON (second parameter is ignored)
4=Layer compare data for one layer (the second parameter is the layer number--starts at 0)
Mill Errors
report_mill_errors@
report_mill_errors_save@ 0,0,"d:\dev\blindbur.rpt"
report_mill_errors_print@ 0,0
Prints report.
For the save and print functions, the first parameter is the type of report:
0 & 1=All data in mill error list (second parameter is ignored)
2=Mill errors for all NC layers that are ON (second parameter is ignored)
4=Data for the NC layer (specified by the second parameter)
Pag. 13 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Second parameter is the Layer ID (used only when report type is 4)
Minimum Gaps
report_mingaps@
Initiates command.
report_mingaps_save@ 0,0,"d:\dev\testdata\test.rpt"
report_mingaps_print@ 0,0
Prints report.
For the save and print functions, the first parameter specifies the type of report:
0=All sliver data (second parameter is ignored)
1=Minimum Gap data for all layers (second parameter is ignored)
2=Minimum Gap data for all layers that are ON (second parameter is ignored)
3=Minimum Gap data for all composites (second parameter is ignored)
4=Minimum Gap data for one layer (the second parameter is the layer number--starts at 0)
5=Minimum Gap data for one composite (second parameter is the composite ID--starts at 0)
Second parameter is the layer or composite ID number (if first parameter is set to 4 or 5)
Minimum Widths
report_minwidths@
Initiates command.
report_minwidths_save@ 0,0,"d:\dev\testdata\test.rpt"
report_minwidths_print@ 0,0
Prints report.
For the save and print functions, the first parameter specifies the type of report:
0=All sliver data (second parameter is ignored)
1=Minimum Widths data for all layers (second parameter is ignored)
2=Minimum Widths data for all layers that are ON (second parameter is ignored)
3=Minimum Widths data for all composites (second parameter is ignored)
4=Minimum Widths data for one layer (the second parameter is the layer number--starts at 0)
5=Minimum Widths data for one composite (second parameter is the composite ID--starts at 0)
Second parameter is the layer or composite ID number (if first parameter is set to 4 or 5)
NC Tool
Pag. 14 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
report_nctool@
sort_field is the tool value to base the sort on. There are three options:
0 = Tool Number
1 = Tool Size
2 = Tool Export Order
sort_direction determines the method of sorting the values selected in sort_field (either increasing or
decreasing):
0 = Decreasing (n .. 1)
1 = Increasing (1 .. n)
report_nc_tool_print@ lyrID,tblID
lyrID sets the drill layer number (starts at 0). -1=All layers using the specified Tool Table.
report_nctool_save@ lyrID,tblID,Filename$
lyrID sets the drill layer number (starts at 0). -1=All layers using the specified Tool Table.
Filename$ specifies the name and path the report is to be saved under.
Example:
report_nctool@
nc_sort_table@ 1,1,1
nc_sort_table@ 1,1,0
report_nctool_print@ 30,1
report_nctool_save@ 30,1,"d:\temp\test.rpt"
Netlist
report_net@
report_net_save@ 1, Filename
report_net_print@ 1
The first parameter for the save and print function sets the netlist type: 1 = report the RefDes/Pin#, or 2 =
report Coordinates.
Filename is the name of the report you wish to save, including full path.
Part to Part
Pag. 15 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
report_part2part@
report_part2part_errors_print@ Type, LyrID
Saves report.
For the save and print functions, the Type parameter specifies the type of report:
0=All Part to Part data (LyrID parameter is ignored)
1=Part to Part data for all layers (LyrID parameter is ignored)
2=Part to Part data for all ON layers only (LyrID parameter is ignored)
4=Part to Part data for Top or Bottom side parts (must specify layer number of either the Top or Bottom
layer)
LyrID parameter is the layer number errors occur on (used only when report type is 2 & 4)
Filename parameter in the save function is the report file name (save only).
Panel
report_panel@
Initiates command.
Calculates copper area of the panel to display in the final report, given these parameters:
Scan Box is the size of the scanning area used, smaller settings is more accurate, but takes longer to
process.
Drill specifies if plated copper in drilled thru holes should be calculated (1=yes,0=no)
report_panel_print@
Prints report.
report_panel_save@ Filename
Saves report. Filename is the name of the report you wish to save, including full path.
Pin Holes
report_pinholes@
Initiates command.
Pag. 16 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
report_pinhole_errors_save@ 0,0,Filename
report_pinhole_errors_print@ 0,0
Prints report.
For the save and print functions, the first parameter specifies the type of report:
0=All Pin Hole data (second parameter is ignored)
1=Pin Hole data for all layers (second parameter is ignored)
2=Pin Hole data for all layers that are ON (second parameter is ignored)
4=Pin Hole data for one layer (the second parameter is the layer number--starts at 0)
5=Pin Holedata for one composite (second parameter is the composite ID--starts at 0)
Silk to Solder
report_silkerrs@
Initiates command.
Prints report.
For the save and print functions, the Type parameter specifies the type of report:
0=All Silk to Solder data (LyrID parameter is ignored)
1=Silk to Solder data for all layers (LyrID parameter is ignored)
2=Silk to Solder data for all ON layers only (LyrID parameter is ignored)
4=Silk to Solder data for a specific solder mask layer (must specify layer number)
LyrID parameter is the layer number errors occur on (used only when report type is 2 or 4)
Filename parameter in the save function is the report file name (save only).
Slivers
report_slivers@
Initiates command.
report_slivers_save@ 0,0,"d:\dev\testdata\test.rpt"
report_slivers_print@ 0,0
Prints report.
For the save and print functions, the first parameter specifies the type of report:
0=All sliver data (second parameter is ignored)
Pag. 17 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
1=Sliver data for all layers (second parameter is ignored)
2=Sliver data for all layers that are ON (second parameter is ignored)
3=Sliver data for all composites (second parameter is ignored)
4=Sliver data for one layer (the second parameter is the layer number--starts at 0)
5=Sliver data for one composite (second parameter is the composite ID--starts at 0)
Second parameter is the layer or composite ID number (if first parameter is set to 4 or 5)
Solder to Trace
report_solderrs@
Initiates command.
report_sold_errors_save@ Type,LyrID,Filename
report_sold_errors_print@ Type,LyrID
Prints report.
For the save and print functions, the Type parameter specifies the type of report:
0=All Solder to Trace data (LyrID parameter is ignored)
1=Solder to Trace data for all layers (LyrID parameter is ignored)
2=Solder to Trace data for all ON layers only (LyrID parameter is ignored)
4=Solder to Trace data for a specific solder mask layer (must specify layer number)
LyrID parameter is the layer number errors occur on (used only when report type is 2 or 4)
Filename parameter in the save function is the report file name (save only).
Starved Thermals
report_starved_thermals@
report_starved_thermals_save@ 0,0,"d:\dev\testdata\test.rpt"
report_starved_thermals_print@ 0,0
Prints report.
For the save and print functions, the first parameter specifies the type of report:
0=All starved thermal data (second parameter is ignored)
1=Starved thermal data for all layers (second parameter is ignored)
2=Starved thermal data for all layers that are ON (second parameter is ignored)
3=Starved thermal data for all composites (second parameter is ignored)
4=Starved thermal data for one layer (the second parameter is the layer number--starts at 0)
5=Starved thermal data for one composite (second parameter is the composite ID--starts at 0)
Second parameter is the layer or composite ID number (if first parameter is set to 4 or 5)
Symbol
Pag. 18 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
report_symbol@
Initiates command.
report_symbol_save@ Filename
Saves report. Filename is the name of the report you wish to save, including full path.
report_symbol_print@
Prints reports.
Test Point
report_testpt@
Initiates command.
report_testpt_save@ "d:\act_inc\testdata\test.rpt"
Saves report. Filename is the name of the report you wish to save, including full path.
report_testpt_print@
Prints reports.
Drill Machine:
nc_set_drill_start@ 500.0000,600.0000
nc_set_drill_end@ 700.0000,800.0000
Mill Machine:
nc_set_mill_start@ 900.0000,100.0000
nc_set_mill_end@ 110.0000,120.0000
Sets park location of NC machines. Parameters for either set of commands are the distances in the X and Y
Pag. 19 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
direction. Measurement is in User Units (defined under Settings > Unit). If English value is in mils, if Metric in
mm.
Pag. 20 di 20
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Macro Menu Macros
Function Keys
Menu Items
clearmarkers@
Pag. 1 di 3
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Pag. 2 di 3
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Macro > Setup Printer
Pag. 3 di 3
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Panelization Menu Macros
Setup Venting
Create Panel Border To Layer
Panel border to Image spacing for each side of the panel border.
Add a panel symbol instance based on symbol name and makes it available for placement in the panel. The
symbol ID is assigned for symbol instance reference. The symbol ID is used to make a symbol instance active
for operation by associated macros that work with symbol instances.
add_symbol@
del_all_panel_symbols@
Pag. 1 di 6
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
set_panel_symbol_loc@ <x>, <y>,
<Horizontal Offset (0=Left,1=Center,2=Right)>,
<Vertical Offset (0=Bottom, 1=Center, 2=Top)>
set_panel_symbol_loc@ 0.0,0.0,2,0
For the active symbol instance, set a symbol instance placement and justification with respect to the panel
border.
For the active symbol instance, set a symbol instance rotation. This can only be multiples of 90 degrees.
For the active symbol instance, set the associated NC ranking (drill layer association).
For the Create dialog in auto-calculation mode, set the rotation code for all Images on the panel.
For the Create dialog in auto-calculation mode, set the minimum x and y Image spacing for the panel.
For the Create dialog in auto-calculation mode, set the number of x Image steps and the number of y Image
steps for the panel.
For the Create dialog in auto-calculation mode, set the auto calculation spacing mode: “0” means that the
spacing is the distance between Images, and “1” means that the spacing is the difference in the Image offsets.
For the Create dialog in auto-calculation mode, set the auto calculation mode for copies (x steps and y steps):
“0” means that the number of copies is manually specified, and “1” means that the copies are automatically
calculated.
For the Create dialog, set the auto calculation mode for panel creation: “0” means that the spreadsheet dialog
settings are used, and “1” means that the auto-calculation dialog settings are used.
Pag. 2 di 6
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
do_panel_autocalc@
place_panel_symbols@
Refreshes placement in panel of all symbol instances based on current symbol placement information.
Adds an Image to the panel with the specified placement and assigned ID. The ID is used to identify the Image
instance in future Image operations.
del_all_panel_images@
Sets the placement location and rotation for an Image based on Image ID.
VENTING DIALOG
del_all_panel_vents@
Adds a layer to the active venting definition. The layer ID is the layer number minus one.
Pag. 3 di 6
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
del_panel_vent_layer@ <layer id>
del_panel_vent_layer@ 1
Deletes a layer from the active venting definition. The layer ID is the layer number minus one.
del_all_panel_vent_layers@
set_panel_vent_offsetfromedge@ <offset>
set_panel_vent_offsetfromedge@ 200.0
Sets the venting clearance from the panel border for the active venting definition.
set_panel_vent_offsetfromimages@ <offset>
set_panel_vent_offsetfromimages@ 200.0
Sets the venting clearance from the Images for the active venting definition.
set_panel_vent_offsetfromsymbols@ <offset>
set_panel_vent_offsetfromsymbols@ 200.0
Sets the venting clearance from the symbols for the active venting definition.
set_panel_vent_galvanicwidth@ <width>
set_panel_vent_galvanicwidth@ 0.0
For solid venting patterns only, sets the robber bar (galvanic) width which is drawn around all the Images for
the active venting definition.
Set the placement offset from the panel origin for the active venting definition.
For solid venting patterns only, sets the robber bar (galvanic) mode for the active venting definition. If enabled,
the robber bar will be drawn
Sets the placement offset mode for the active venting definition.
For hatch venting patterns only, sets the hatch outline mode for the active venting definition. If enabled, an
outline is drawn for the outer edges and voids for the hatched venting pattern.
For dot venting patterns only, sets the partial pattern mode for the active venting definition. If enabled, partial
patterns will be rendered.
For dot and hatch venting patterns only, sets the polarity for the rendering of the active venting definition.
Pag. 4 di 6
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
set_panel_vent_pattern@ <pattern code, 0=Solid, 1=Dot, 2=Hatch>
set_panel_vent_pattern@ 0
For dot venting patterns only, set the line shape for the first or second lines of the dot pattern definition for the
active venting definition.
For dot venting patterns only, set the enabled status for the first and second lines of the dot pattern definition
for the active venting definition.
For dot venting patterns only, set the y step distance for the delta in dots between the first and second lines of
the dot pattern for the active venting definition.
For hatch venting patterns only, set the line characteristics for the three lines used to define the hatch. The line
index uniquely identifies each line in the hatch pattern. The enable status indicates whether that line is
rendered. The line width defines the width used for the line rendering. The step size defines the delta between
the hatch patterns. The angle determine the angle at which the line is rendered.
do_panel_rendervents@
Specifies the Panel Border settings to run on the border data and initiates the command:
Dcode#: Dcode to use for rendering the converted panel border graphics.
Layer#: layer to which the border data is converted. May be existing layer, or new layer. Specify 35000 if
new layer.
Boolean: determines whether One-Up Borders for Stepped Images are included in the conversion.
Example
Pag. 5 di 6
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
For new layer without One-Up Borders
Border2LayerPanel_Set_Data@ 1,35000,0
Border2LayerPanel_Set_Data@ 1,12,1
Pag. 6 di 6
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Settings Menu Macros
Arc/Circle Text
Line Unit
Snap View Options
setsectorize@ 1,4500
Determines if arcs & circles are to be created as true arcs or sectorized data.
set_polygon_sectorize_angle@ #
Sets the sectorization angle for pouring polygons around circular pads.
setwidth@ 10.0000
Sets the width of the line being added (in user units).
setpolarity@ #
setendcap@ #
Sets the endcap style to use when adding lines in the editor: 128=Round, 0=Not Round
setsnapdist@ #
Sets the size of the snap box around the cursor. #=Snap Size (an integer from 5 to 100).
Pag. 1 di 5
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
setsnap@ #
Determines if snap will snap to objects: 1=Snap Object, 0=Do Not Snap Object
Font Settings:
Specifies the font to use for text. May be set prior to or after text settings in the Text Settings section below.
textfont@ "SIMPLE.EFN"
This is used if an EFN font is used. Otherwise, the following command is used:
textfontface@ 2, "Arial"
Specifies a non-EFN font to use. This is the font face name, not a filename.
Text Settings:
Once the text and font to be changed have been selected, any of the following commands can be issued (in any
order) to change the text attributes:
textfullheight@ 100.0000
Sets the full text height, in user units, taking into account characters with descenders (as well as a little
additional font-dependent spacing so that lines will not overlap). The old command textheight@, used with
version 2.X and earlier, will still function with this macro.
textcapheight@ 50
Specifies the exact height for the font's capital letters, in user units. All other characters are based relative to
this set height.
Note: The above two macro commands are mutually exclusive. When used in a macro, each overrides the
previous one's settings for any new text being added.
textangle@ 4500
textmirror@ 1
textjust@ 4
Pag. 2 di 5
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
33 = Left Baseline
36 = Center Baseline
34 = Right Baseline
17 = Left Bottom
20 = Center Bottom
18 = Right Bottom
5 = Left Center
4 = Center Center
6 = Right Center
9 = Left Top
12 = Center Top
10 = Right Top
textfitting@ 1
textcspace@ 20.0000
textlspace@ 100.0000
textslant@ 0
Text slant is set in degrees times 100. Positive values slant the font to the right, negative values slant it to
the left. You can italicize a non-italics font face by specifying a slant angle. (Typical italic font faces are
slanted about 10 to 15 degrees.)
textxscale@ 500
Sets a text scale value (times 100). This applies to the width of individual characters. For example,
textxscale@ 200 would make each character twice a wide as initially defined, while textxscale@ 50 would
make the characters half as wide as initially defined.
textvertical@ 1
Example
textfullheight@ 50.0000
textangle@ 0
textmirror@ 0
textjust@ 33
textfitting@ 0
textcspace@ 0.0000
textlspace@ 50.0000
textslant@ 0
textxscale@ 100
textvertical@ 0
textfontface@ 2,"Algerian"
Pag. 3 di 5
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
setunit@ 1
setresolution@ 100
Example
setunit@ 0
update_dcodebar@
update_buttonbars@
setresolution@ 100
update_dcodebar@
view_minrepaint@ #
view_nc_annotate_mill@ Annotate
view_nc_annotate_drill@ Annotate
These commands determine whether user can see mill or drill paths. May be set in any Editor, but will only
appear in the NC Editor.
Annotate parameter indicates whether or not the NC path annotation should be drawn: 0 = Annotation OFF,
1 = Annotation ON
view_panel@ #
View panel circuit images, rather than step image outlines, when in the Panel Editor: 0 = do not show all
panel images, 1 = show panel images.
view_setpartcentroid@ #
View part centroids: 0 = do not show part centroids, 1 = show part centroids.
view_setmrgedb@ #
View any merged databases in the design: 0 = do not show all merged PCB graphics, 1 = show merged PCB
graphics.
view_setpstkmarker@ #
Display padstack markers ('+' symbol over each padstack): 0 = do not show the padstack markers, 1 =
show padstack markers.
view_setpartoutlinetop@ #
Defines how part outlines for components on the top of the board are displayed (shown as solid lines):
view_setpartoutlinebottom@ #
Defines how part outlines for components on the bottom of the board are displayed (shown as dashed lines):
view_setpartoutline@ #
view_settoptestpt@ 1
Display test points for the top layer on the design: 0 = do not show, 1=show.
view_setbottestpt@ 1
Display test points for the bottom layer on the design: 0 = do not show, 1=show.
view_setthrutestpt@ 1
When setting the View Options selection "Apply Settings to All Editors" you must switch on each option
individually, using the commands listed below. They function the same as their corresponding commands above
(which do not include the _all ), but set the view options for all Editors for which they are available. Once set,
these options do not need to be set for each individual editor.
Note: The NC Data Annotation commands do not have a corresponding _all command (as they only apply to
the NC Editor), and should be set as shown above.
view_minrepaint_all@
view_setpartcentroid_all@
view_setmrgedb_all@
view_panel_all@
view_setpstkmarker_all@
view_settoptestpt_all@
view_setbottestpt_all@
view_setthrutestpt_all@
view_setpartoutlinetop_all@
view_setpartoutlinebottom_all@
Pag. 5 di 5
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Tables Menu Macros
Note: Due to the inclusion of new intrinsic apertures, new macro commands were added to support the
expanded parameters which these apertures can contain. The edit_aperture@ command has been maintained
for compatibility with older scripts, but all new scripts should utilize the new set_aperture@ and del_aperture@
macro commands, as outlined below.
Old Macro
edit_aperture@ 71,1,100.0000,100.0000,71,""
Shapes:
0 = None
1 = Round
2 = Square
3 = Rectangle
4 = Target
5 = Thermal
6 = Custom
7 = Donut
8 = Octagon
9 = Oblong
New Macros
lib_setextlib@ Type, Id, Merge, "Filename"
Sets the external library to select Custom apertures. Only required when adding custom apertures from an
external library.
Actual command to Create or Modify an aperture. This command utilizes a string field to specify the
parameters for each aperture:
Pag. 1 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Type: specifies the main aperture shape to use. See the Aperture Chart for a list.
<Subtype>: defines the sub-shape for those apertures with multiple formats.
Key: describes each parameter which is required for the aperture shape, followed by a colon
Each type and subtype of aperture may have multiple parameters. For this reason it is advisable to refer to the
Aperture Chart for the parameters associated with each, before attempting to use them in a script. (Parameter
code letters are highlighted in maroon). Generally the first parameter for each shape is a required field - other
parameters definitions will use a default value - except in the cases where the shape has multiple dimension
parameters (ex: w width is a required parameter for a Round, but h height or w width may serve as the required
parameter for a Diamond). The only exception to this is the Moire shape, which requires parameter le (line
length)Multiple parameters can be entered in one aperture definition string. Each parameter must be separated
from the others by a space.
Example:
del_aperture@ Dcode#
update_dcodebar@
aptable_compress@
Pushes all of the aperture definitions (as opposed to the ones which are unused, indicated by [None]) to the
top of the aperture table. All Dcode references in the database will be replaced to reflect these changes. This
will not function if there are any undefined Dcodes.
aptable_remunused@
Changes all Dcodes which are defined but not used to shape "None."
Example
nc_assign_tool_table_to_layer@ LyrID,TableID
Pag. 2 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Assigns the specified NC Tool Table to the specified layer. Note that no checking is done for the existance of
the NC Tool Table or that any NC data on the layer will have a valid tool within the newly assigned tool table.
table_board_attributes@
Add_Attribute@ "3`4"
Change_Attribute_Value@ "5"
Changes (or adds) the value to the one specified in the parameter.
Delete_Attribute@ "1`2"
Example
table_board_attributes@
Add_Attribute@ "New Database`Cam350_Database"
Change_Attribute_Value@ "12/18/00"
Delete_Attribute@ "PADS`PowerPCB_CAM350_Lock1"
Command serves a dual-purpose: 1) creates a composite or 2) sets the values for a layer being used in the
composite. When setting the layers, a new command must be used for each layer in the composite.
1. When creating a new composite, only the Comp# and CompName$ parameters are required. Other
parameters should be set to -2 (no change).
2. When modifying layer settings, all parameters, except CompName$, are required. (CompName$ should
be left out).
Comp# is the composite ID number. The Composite Numbering sequence in macros begins with a 0 (i.e.
Composite_1 = Comp# 0)
Pag. 3 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Pos# gives the order of the layer in the composite.
Polarity:
-1=clear
1=dark
edit_compo_bkg@ Comp#,Polarity
Comp# is the ID number of the composite. The Composite Numbering sequence in macros begins with a 0
(i.e. Composite_1 = Comp# 0)
Polarity:
-1=clear
1=dark
Deleting a Composite:
reset_composite@ Comp#
Deletes any composite in the table. Comp# is the composite ID number. Must be repeated for each
composite being deleted. The Composite Numbering sequence in macros begins with a 0 (i.e. Composite_1 =
Comp# 0)
Manipulating Composites:
setcompo@ Comp#
Sets the active composite being viewed/edited. Comp# is the composite ID number. The Composite
Numbering sequence in macros begins with a 0 (i.e. Composite_1 = Comp# 0)
view_redraw@
Can be used to view the composite currently being created/edited. (Same as Redraw button on Table dialog).
Example
set_tab@ TabID,Size,ToolSize,Side,"TabName"
Pag. 4 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
TabID: ID number of tab being changed.
Size: size of the tab, note that if perforations are set the size of the tab is controlled by the perforation
specifications
ToolSize: size of the tool that tab is defined for. This is relevant when tab is perforated, because the size of
the tab will vary depending on the relationship of the path to the perforations used to determine if the
perforation placement must be recalculated.
Side: side of the tab (relative to the direction the mill toll is cutting), used for locating perforations and
angled exit/entry legs (see below). 0 = left, 1 = right.
set_tab_angle@ "TabID",OnOff,Angle,Length
Changes the angled exit/entry leg settings for the specified tab, where:
Angle: angle of exit/entry legs in degrees. Valid angle range is -90 to +180 degrees.
Length: the length of the exit/entry legs, from the center of the tool to the center of the tool. The actual
length of leg is Length + tool radius of the tool assigned to the path the tab is on.
set_tab_perforation1@ "TabID",OnOff,Num,PerfSize
Changes the perforation settings for the specified tab (see also set_tab_perforation2@) where:
Changes the perforation settings for the specified tab (see also set_tab_perforation1@) where:
Spacing: distance between 1) perforation holes and 2) between perforation holes and mill path.
Offset: distance the edge of the perforation hole is offset from the edge of the board, based on the
"side" (see set_tab@) setting for the tab.
delete_tab@ TabID
Deletes mill tab TabID from the defined Mill Tab Table.
save_tab@ "FileName"
Example
Pag. 5 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
'create tab
set_tab@ 1,200.0000,100.0000,0,"TAB_1"
set_tab_perforation1@ 1,0,3,25.0000
set_tab_perforation2@ 1,0,25.0000,5.0000
set_tab_angle@ 1,0,125,100.0000
'save tab file
save_tab@ "d:\temp\new tabs.tab"
'delete tab
delete_tab@ 1
nc_delete_table@ 2
Deletes the NC Tool Table with the specified tool table ID.
table_footprint_attributes@
Start command.
Add_Attribute@ "3`4"
Change_Attribute_Value@ "5"
Changes (or adds) the value to the one specified in the parameter.
Delete_Attribute@ "1`2"
table_devices@
Initiates command.
Pin information:
Add_Device_Pin@ "new Pin Name"
Pag. 7 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Creates a new pin for the active Device.
Sets the active pin for the active Device, to allow for modification.
Device attributes:
Changes (or adds) the value to the one specified in the parameter.
Example
table_devices@
'add new device
Add_Device@ "Device_2"
Change_Device_PartName@ "rollins"
Change_Device_Type@ "SMT"
Change_Device_Style@ "lateral"
Change_Device_Package@ "34"
Change_Device_Value@ "56"
Change_Device_Tol@ "12"
Change_Device_NTol@ "5"
Change_Device_PTol@ "5"
Change_Device_Volts@ "3"
Change_Device_Desc@ "This is a surface mount"
'add pin to device
Add_Device_Pin@ "Test1"
Change_Device_Pin_Desc@ "First pin"
Change_Device_Pin_Func@ "Checks tolerance"
'delete device
Delete_Device@ "Device_3"
'Add device attributes
Add_Device_Attr@ "test`34"
Change_Device_Attr_Value@ "22"
Delete_Device_Attr@ "test`34"
Add_Device_Attr@ "test`35"
Change_Device_Attr_Value@ "56"
Pag. 8 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Note: Blind & Buried layer sets cannot be created if you have pre-existing MCM Layersets.
layerset_add@ 3,1,"Layer_Set_Name"
Adds a layer set. If a layer set for this ID already exists, it will be deleted and this one added in its place.
First parameter is the ID number/hot key that the layer set is assigned to. (remember, only 10 layer sets can
be assigned to hot keys, though more than 10 layer sets can be created).
Second parameter will always be 1 (identifies it as a blind and buried layer set).
layerset_setname@ 1,"Layer_Set_Name"
layerset_setlyr@ 3,1,2
Adds a layer to a layer set. Command must be repeated for each subsequent layer being added to the set.
Second parameter is the position of the layer being set (equivalent to the number buttons in the User Layer
Sets For Blind And Buried Vias dialog box).
Third parameter is the number of the layer being added (starting at 0).
layerset_delete@ 2
layerset_view@ 3
Turns ON the layer set assigned to the specified ID number (any others are turned OFF). The first layer of
the layer set is made active. This command should be followed by view_redraw@ if you want only the
layers in the set you turned ON made visible.
layerset_setdrill@ 3,-1
Second parameter is the layer number (layers start at 0). -1 means that there is no drill layer.
layerset_setThruDrill@ 8
Sets the drill layer to be used for the through-hole drill. The parameter is the drill layer ID (layers start at 0).
Pag. 9 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Example
layerset_add@ 1,1,"LyrSet_1"
layerset_setname@ 2,"New_Layer_Set"
layerset_setdrill@ 1,4
layerset_setlyr@ 1,1,0
layerset_setlyr@ 1,2,2
layerset_add@ 2,1,"LyrSet_2"
layerset_setdrill@ 2,-1
layerset_setlyr@ 2,1,1
layerset_setlyr@ 2,2,2
layerset_delete@ 1
Layer Stackup
Only one Layer Stackup set may be in effect at one time. However, this stackup must fall in sequence with other
layersets (if any) in the design. In other words, if 3 other layersets (User, Blind & Buried or MCM) exist, the
Layer Stackup set will be layerset 4, and this ID number will control the additions made to the set below:
layerset_add@ 3,3,"Layer_Set_Name"
Adds a new Layer Stackup layer set. If a layer set for this ID already exists, it will be deleted and this one
added in its place.
First parameter is the ID number/hot key that the layer set is assigned to. (remember, only 10 layer sets can
be assigned to hot keys, though more than 10 layer sets can be created).
layerset_setlyr@ 3,1,2
Second parameter is the position of the layer being set (equivalent to the number buttons in the Layer
Stackup dialog box).
Third parameter is the number of the layer being added (starting at 0).
layerset_setname@ 1,"Layer_Set_Name"
layerset_setdrill@ 3,-1
Second parameter is the layer number of the drill layer (layers start at 0). -1 means that there is no drill
layer.
Pag. 10 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
set_layer_ords@
Identifies the layers in the design with their types, in relation to the symbol layer types, for the purpose of
mapping the symbol layers to the appropriate panel layers.
Example
layerset_add@ 4,3,"Stackup"
layerset_setdrill@ 4,-1
layerset_setlyr@ 4,1,0
layerset_setlyr@ 4,2,1
layerset_setlyr@ 4,3,2
layerset_setlyr@ 4,4,3
layerset_setlyr@ 4,5,4
layerset_setlyr@ 4,6,10
set_layer_ords@
MCM Technology
Note: MCM layersets cannot be created if you have pre-existing Blind & Buried Layersets.
layerset_add@ 3,0,"Layer_Set_Name"
Adds a new layer set. If a layer set for this ID already exists, it will be deleted and this one added in its
place.
First parameter is the ID number/hot key that the layer set is assigned to. (remember, only 10 layer sets can
be assigned to hot keys, though more than 10 layer sets can be created).
layerset_setlyr@ 3,1,2
Second parameter is the position of the layer being set (equivalent to the number buttons in the Layer Set
For MCM Technology dialog box).
Third parameter is the number of the layer being added (starting at 0).
layerset_setname@ 1,"Layer_Set_Name"
layerset_setdrill@ 3,-1
Second parameter is the layer number of the drill layer (layers start at 0). A -1 means that there is no drill
layer.
Pag. 11 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
layerset_delete@ 2
layerset_view@ 3
Turns ON the layer set assigned to the specified ID number (any others are turned OFF). The first layer of
the layer set is made active. This command should be followed by view_redraw@ if you want only the
layers in the set you turned ON made visible.
Example
layerset_add@ 1,0,"LyrSet_1"
layerset_setdrill@ 1,-1
layerset_setlyr@ 1,1,0
layerset_setlyr@ 1,2,2
layerset_setlyr@ 1,3,3
layerset_delete@ 1
User
layerset_add@ 3,2,"Layer_Set_Name"
Adds a new layer set. If a layer set for this ID already exists, it will be deleted and this one added in its
place.
First parameter is the ID/hot key that the layer set is assigned to (remember, only 10 layer sets can be
assigned to hot keys, though more than 10 layer sets can be created).
layerset_setname@ 1,"Layer_Set_Name"
layerset_setlyr@ 3,1,2
Second parameter is the position of the layer being set (equivalent to the number buttons in the User Layer
Sets dialog box).
Third parameter is the number of the layer being added (starting at 0).
layerset_delete@ 2
layerset_setdrill@ 3,-1
Pag. 12 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
First parameter is the ID number of the layerset.
Second parameter is the layer number of the drill layer (layers start at 0). -1 means that there is no drill
layer.
layerset_view@ 3
Turns ON the layer set assigned to the specified ID (any others are turned OFF). The first layer of the layer
set is made active. This command should be followed by view_redraw@ if you want only the layers in the set
you turned ON made visible.
Example
layerset_add@ 2,2,"New_Set"
layerset_setdrill@ 2,-1
layerset_setlyr@ 2,1,0
layerset_setlyr@ 2,2,1
layerset_setlyr@ 2,3,3
layerset_setlyr@ 2,4,10
layerset_delete@ 2
setlayer@ 7
Sets the active layer, by the layer ID number. Layer numbering in macros begins at 0 (i.e. layer 1 in
the program equates to layer ID 0 when used in a macro).
settoplayer@ 6
view_LayerFlash@ #,#
Turns the flashes ON or OFF on the specified layer. First number is the layer number, second number is
1=on, 0=off.
view_LayerDraw@ #,#
Turns the drawn data ON or OFF on the specified layer. First number is the layer number, second number is
1=on, 0=off.
edit_layer@ Layer#,Drawcolor,Flashcolor,Type,Status,Name$
Creates a new layer in the database, or modifies the settings of an existing one.
Layer# sets the layer number. -2=no change (remember layer numbering in macros starts from 0: i.e. layer
1 = 0).
Drawcolor and Flashcolor set the draw & flash colors to display for the layer.
Pag. 13 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
0=on
1=off
2=ref
-2=no change
Name$ is the filename of the Gerber file being exported (including the full path). "" =no change (keep old
name)
nc_assign_tool_table_to_layer@ LyrID,TableID
When adding an NC layer, you may set the specific NC Tool Table assigned to the layer with this command. If
the command is not set, the first table in the database (if any exists) is used for the layer.
update_layerbar@
edit_lmapdefaults@
Confirms the changes you made and sets layer mapping to the default mapping for all layers.
layerset_view@ 3
Turns ON the layer set assigned to the specified layer set ID number (any others are turned OFF) (see
Tables > Layersets). The first layer of the layer set is made active.
Example
Non-NC Layer:
edit_layer@ 12,14,14,4,0,"Layer_13"
setlayer@ 12
settoplayer@ 12
edit_layer@ 12,0,0,-2,-2 'change colors to red for draw/flash
edit_layer@ 12,0,0,1,0,"Internal" 'change name to 'Internal'
edit_lmapdefaults@
NC Layer:
edit_layer@ 14,2,2,21,0,"Layer_15"
nc_assign_tool_table_to_layer@ 14,1
nc_set_layer_rank@ 14,1
edit_lmapdefaults@
Pag. 14 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
The Symbol Editor layer table uses most of the same commands listed above, with the exception of the
layerset_view@ command, which is not available in the Symbol Editor. In addition, the editor uses the
following two commands.
edit_sym_layer@ Layer#,Type,Ordinal#
Sets the virtual layer status of each layer added to the layer table. Must be set after the edit_layer@
command.
Layer#: the layer number (remember macro layer numbering begins with 0)
Ordinal#: sets the virtual layer numbering for the layer, if Type is a layertype already used in the table. For
example, if a negative layer already exists in the table, it is assigned ordinal 0 (first negative layer). Adding a
second negative layer, you would set the ordinal to 1, a third would be 2, etc.
set_layer_ords@
As an option to individual Ordinal settings, this command sets the layer type Ordinals for the layers in the
table based upon the Layer Stackup layer set. (see Tables > Layer Sets > Layer Stackup).
Example
edit_layer@ 15,8,8,2,0,"NegPlane(3rd)"
edit_sym_layer@ 15,2,2
edit_lmapdefaults@
edit_lmap@ 0,2
edit_lmapReset@
Sets the NC Tool Table type for the table with the given Table ID (first parameter).
Pag. 15 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
nc_set_table_name@ 1,"Drill Tool"
Sets the NC Tool Table name. First parameter is the Table ID, second is the desired name.
set_nc_table@ 1
Activates an NC tool table to allow querying of its tools. Parameter is Table ID. See Drill & Mill Queries
Adds an NC Tool with the Tool ID (second parameter) to the table specified by the Table ID (first parameter).
It is followed by several macros that set the parameters of the tool.
nc_delete_tool@ 2,1
nc_set_tool_id@ 1,2,3
nc_set_tool_type@ 1,1,2
nc_set_tool_size@ 1,1,32.0000
Third is the size of the tool (units of measure depends upon the NC Tool Table Dialog Units).
nc_set_tool_display_color@ 1,3,5
Pag. 16 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Tool Reference is the second parameter
nc_set_tool_cap@ 1,3,"CapName"
Sets the custom aperture assigned to the tool (Table ID is the first parameter, Tool Reference is the second
parameter) to CapName. The CAP will be used to display any drill hits assigned this tool.
nc_set_tool_usesize@ 1,2,0
Sets whether to use the actual tool size as the size of the drill hits displayed.
nc_set_tool_display_size@ 1,2,13.0000
This macro is used if you choose to set the drill tool display size (when it is displayed as a round or target) as
something other than the actual tool size.
nc_set_tool_infeed@ 1,2,1500.0000
nc_set_tool_outfeed@ 1,2,1500.0000
Pag. 17 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
nc_set_tool_feedrate@ 1,2,16.6666
Third is the feed rate (in user units/second, user units being defined under Settings > Unit).
nc_set_tool_rpms@ 1,2,60000
nc_set_tool_maxhits@ 1,2,2000
Sets the maximum number of drill hits that this tool can make.
nc_set_tool_linktool@ 1,2,3
Sets the tool that will be used if the maximum number of hits is reached.
Third is the Tool Reference of the tool that is being used as the Link Tool.
tblID is the Table ID of the NC Tool Table that contains the tool being changed
set_current_toolref@ 1
Sets the active tool on an NC Data layer to allow querying of the tool's values. Parameter is Tool Reference.
See Drill & Mill Queries
set_nc_toolref@ 1
Similar to above, but sets the active tool in an NC Table to allow querying of the tool's values. Parameter is
Pag. 18 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Tool Reference. See Drill & Mill Queries
nc_exp_tool_order_by_toolnum@ #
Sets the export order to match the ascending tool number order. Parameter is the Table ID.
nc_exp_tool_order_by_toolsize@ #
Sets the export order to match the ascending tool size order. Parameter is the Table ID.
nc_exp_tool_reverse_order@ #
Sets the export order to match the ascending tool number order. Parameter is the Table ID.
nc_set_tool_exportorder@ 1,1,2
Unlike the above commands, this command sets the order on a tool by tool basis: a separate command must
be used for each specific tool to be exported. Note that drill usages are always exported before mill usages.
nc_use_compensation_tbl@ 1,1
nc_set_comp_val@ 1,1,7.0000
nc_delete_table@ 2
nc_save_table@ 1,"d:\act\test.nct"
Saves the table with the Table ID specifed in the first parameter to the file name in the second parameter.
Load Table
Pag. 19 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
These commands are not recorded when you do a Macro > Record. You must add them manually to your
macro program in order to run them.
nc_load_table_append@ 2,"d:\act\test.nct"
Appends the tool table from a file to a "master" tool table that is already loaded. First parameter is the ID of
the master table. Second parameter is the name of the file to append. Any tools from the file will be added
after the last tool in the master table.
nc_load_table_ignore@ 2,"d:\act\test.nct"
Loads the tool table from the file (second parameter) into the table with the table ID (first parameter). If
tools have the same Tool Reference number, the tool from the existing table is kept (data from the
incoming .NCT file is ignored).
nc_load_table_overwrite@ 2,"d:\act\test.nct"
Loads the tool table from the file specified (second parameter) into the table with the table ID (first
parameter). If tools have the same Tool Reference number, the tool from the incoming .NCT file is used
(overwrites the existing tool in the table).
nc_load_table_new@ "d:\act\test.nct"
Loads the tool table from a file. If a table ID exists in the .NCT file data, it will be used for the table created.
If a table with that ID already exists, the existing tabe will be assigned a new ID. If the table is from an older
version of the application (pre-6.0), a new table ID and name will be assigned.
nc_load_table_replace@ 2,"d:\act\test.nct"
Loads the tool data from the file name specified (second parameter) into the table with the table ID specified
(first parameter). If a table already exists with the given table ID, all tools within that table will be deleted
and the tool information from the .NCT file read in.
Sort Table
sort_field is the tool value to base the sort on. There are three options:
0 = Tool Number
1 = Tool Size
2 = Tool Export Order
sort_direction determines the method of sorting the values selected in sort_field (either increasing or
decreasing):
0 = Decreasing (n .. 1)
1 = Increasing (1 .. n)
Pag. 20 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
edit_padstack@ 2,2,3
Padstack #, Layer #, Aperture ID. Assigns an aperture to the padstack at the designated layer.
edit_padstack_dcode@ 2,2,10
Padstack #, Layer #, Dcode. Assigns a Dcode to the padstack at the designated layer.
padstack_remunused@
edit_variabletext_tab@ "Symbol"
Assigns the text string value for the Variable Text specified above. All symbols in the current panel that use
the Variable Text will be updated to display the new string.
Example
edit_variabletext_tab@ "test"
change_variabletext_tab@ "this is a title block"
Pag. 21 di 21
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Tools Menu Macros
util_bned@
util_camed@
util_caped@
util_fped@
util_nced@
Opens NC Editor.
Pag. 1 di 2
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
util_paneled@
util_parted@
util_symboled@
Pag. 2 di 2
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Utilities Menu Macros
assignendpoints@
singlenetextract@
util_bpart_create@
Initiates command.
The Reference Designator and Device Name special text can be manipulated much the same as normal text
being added to a design. The following commands determine the formatting for the Reference Designator and/or
Device Name being added to the part:
setturn100angle@ #
Sets the rotation angle for placing the elements. # is 100 times the angle (650=6.5 degrees)
Pag. 1 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
partname_Turn@
Turns the text attached to the cursor by the angle defined in setturn100angle@.
partname_Mirror@ #
textcapheight@ 70.0000
Note: You may change these settings at any time before the placement of either type of special part text.
Each part element (Reference Designator, Outline, etc) must be entered by first activating the part_modify@
command for that element, then adding the required number of coordinates for the elements. The Build Part
command adds these parts in a proscribed sequence; it is best to mimic this in your macro.
part_modify@ 1
This command controls what Build Part action you are doing.
Example
part_modify@ 0
axy@ 1765.0000,844.9000
part_modify@ 2
axy@ 1765.0000,844.9000
axy@ -1765.0000,-844.9000
Individual Pins
part_modify@ 3
set_pininline@ 'Turns off inline pin recognition
axy@ 3386.8000,2990.3000
axy@ 3391.3000,2949.6000
axy@ 3386.8000,2906.7000
axy@ 3391.3000,2861.5000
axy@ 3391.3000,2798.3000
axy@ 3389.1000,2748.6000
axy@ 3391.3000,2692.1000
axy@ 3142.9000,2692.1000
axy@ 3142.9000,2753.1000
axy@ 3142.9000,2796.0000
axy@ 3140.6000,2850.2000
axy@ 3142.9000,2888.6000
axy@ 3142.9000,2947.4000
Pag. 2 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
axy@ 3147.4000,3001.6000
Inline Pins - you need only select the "key" pins in the sequence - first, end of first row, beginning of second
row, and last. The program will select the pins lying inbetween them.
part_modify@ 3
axy@ 2815.3000,3001.6000
axy@ 2817.6000,2678.5000
axy@ 2815.3000,2694.4000
axy@ 2560.1000,2698.9000
set_pininline@
Acts as a toggle to turn inline pin recognition on and off. Note: the program assumes inline pins to be ON. It
is only necessary to use this command when selecting individual pins for the part.
axy@ 1765.0000,844.9000
Coordinates control where the text names are placed, the window around the part outline, the pin sequence,
or the anchor, depending on the part_modify@ variable selected.
After all elements of the part are added, the part is given a name and saved to the local part library for the
design. This part library may be saved external to the design using File > Save Lib As.
part_build@
Confirms the creation of the part, saves to local library, and ends command.
Example
util_bpart_create@
'Settings for text addition
textcapheight@ 50.0000
setturn100angle@ 18000
'Add Reference Designator
part_modify@ 1
partname_Turn@ 'turn and mirror refdes
partname_Mirror@
axy@ 2695.6000,3103.2000
'Add Outline
part_modify@ 2
axy@ 2621.0000,3069.3000
axy@ 2770.1000,2626.6000
'Add Pin Sequence (inline)
part_modify@ 3
axy@ 2815.3000,3001.6000
axy@ 2817.6000,2678.5000
axy@ 2815.3000,2694.4000
axy@ 2560.1000,2698.9000
'Add Device Name
part_modify@ 0
setturn100angle@ 9000 'set new turn angle
partname_Turn@ 'turn device name
axy@ 2566.8000,3006.1000
'Add Anchor
part_modify@ 4
axy@ 2645.0000,2650.0000
'Finish Building part
part_name@ "test3"
part_build@
Pag. 3 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Network
New Job
Old Job
util_silk@
Initializes command.
clearsilk1@ 2,0,20.0000,5.0000,""
Fifth #: the Dcode filter (Dcodes not used). If left blank, all Dcodes are used
back@
Ends command.
conv_composite2layer@ 0,-1
Converts a composite to a single layer, while maintaining as much intelligent data (pads, traces, etc). as
possible.
First number is the Composite ID (like layer-numbering, this 0 based). In the above example, 0 = C1
Second number is the Layer ID of the target layer (where the polygon data will be placed). If -1, then a new
layer is created.
composite2layer@ 0,-1,1.0000,2
Converts ALL data in a composite to raster polygons, on a single layer, including all pads and traces.
Optionally algorithm is optimized with settings for fast layer combining, maintaining pads and traces, and
creating customs for shaved pads.
First number is the Composite ID (like layer-numbering, this 0 based). In the above example, 0 = C1
Second number is the Layer ID of the target layer (where the polygon data will be placed). If -1, then a new
layer is created.
Third number is the Resolution of the conversion process (in user-units). To replicate the command itself, the
value should be 1, 2, or 4, where 1 is the most accurate. However, any value will be accepted by the macro
command (bear in mind the smaller the resolution, the longer the processing time will be).
The Create Drill macro command creates a new drill file for a databse where none existed. As such it presumes
you have created a new NC Drill Table from which to assign tools to the new drill file. To create the table, use
Tables > NC Tools.
util_drill_create@
Initiates command.
Each padstack in the design must have a drill tool assigned to it. The following commands may be used multiple
Pag. 5 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
times in the macro to do so:
drill_assign@ 0,7,3
First parameter: Padstack # (remember padstack numbering, like layers, begins with 0 in macros)
drill_assign_upl@ 10,5,0
First parameter: Padstack # (remember padstack numbering, like layers, begins with 0 in macros)
Starts a new drill report file, using the .cam file name with a .rpt extension. If one already exists, it deletes
the report information contained in the file. Without this command, the following two commands would
append the information to an existing file, and previous information would not be deleted.
drill_create_plated@ 10,"plated.drl"
Creates an NC Data layer for plated drills and appends the information to an existing plated drill report, or
creates a new report if one doesn't already exist. Parameters are Layer # and layer name.
drill_create_unplated@ 14,"L15:drill_15.dr"
Creates an NC Data layer for unplated drills and appends the information to an existing unplated drill report,
or creates a new report if one doesn't already exist. Parameters are Layer # and layer name.
Example
util_drill_create@
drill_assign@ 0,1,0 'assigns plated tool #1 to padstacks 1-2
drill_assign@ 1,1,0
drill_assign@ 2,1,0
drill_assign_upl@ 3,2,0 'assigns unplated tool #2 to padstacks 4-6
drill_assign_upl@ 4,2,0
drill_assign_upl@ 5,2,0
drill_assign@ 6,1,0 'resumes assigning tool #1 to padstacks
drill_assign@ 7,1,0
drill_assign@ 8,1,0
drill_assign@ 9,3,0 'switches to plated tool #3 for remaining padstacks
drill_assign@ 10,3,0
drill_assign@ 11,3,0
drill_assign@ 12,3,0
drill_assign@ 13,3,0
drill_new_report@
drill_create_plated@ 7,"drill_8.drl"
drill_create_unplated@ 8,"drill_9.drl"
Pag. 6 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
util_remove_covered_data@
To process the entire layer (for all layers that are ON):
remove_covered_data_layer@ 0.1000,1,1,0
Fourth parameter is whether to delete the covered data or move it to a new layer. 1=move to a new layer,
0=delete.
To process a portion of the layer (for all layers that are ON):
axy@ -250.2000,4906.2000
axy@ 3553.9000,1609.3000
You must specify coordinates that define two corners of the rectangle containing the data to be processed.
remove_covered_data_window@ 0.1000,1,1,0
Fourth parameter is whether to delete the covered data or move it to a new layer. 1=move to a new layer,
0=delete.
The coordinates and subsequent command may be repeated as often as necessary before the final back@
command.
back@
Ends command.
Example
util_remove_covered_data@
axy@ 2491.3000,5431.7000
axy@ 5506.6000,3297.5000
remove_covered_data_window@ 0.1000,1,1,1
back@
Pag. 7 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
util_padremoval@
Initiates command.
axy@ 1375.0000,2725.0000
axy@ 3225.0000,1425.0000
setbydcode@ "17"
Sets the Dcode of the pads being removed. Setbydcode is only required if a Dcode filter is used.
back@
padremoval@
Example
util_padremoval@
axy@ 2251.0000,5569.1000
axy@ 5689.7000,3114.4000
setbydcode@ "10"
back@
padremoval@
util_removeredun@
padrem_redund2@ #,"Dcode number"
Deletes the extra pads (the same Dcode at the same location on the same layer) for all the ON layers.
You may specify a Dcode number (as a string) to limit pad removal to selected Dcode, or leave blank to
process all Dcodes.
begin_draw2custom@
Initiates command.
axy@ -50.0000,2775.0000
axy@ 375.0000,2375.0000
Pag. 8 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Coordinates define the corners of rectangular selection window around the drawn pad.
back@
First parameter specifies if the custom aperture is constructed solely of polygons (0 = no, 1 = yes).
Second parameter is the name of the custom aperture you are creating
edit_aperture_ex@ 12,6,0.0000,0.0000,0,"custom_name"
Parameters are: Dcode #, Shape, Size, Swap, Custom name. (see Tables > Apertures for more
information)
Example
begin_draw2custom@
axy@ 2737.4000,5835.1000
axy@ 3016.3000,5584.7000
back@
add_draw2custom1@ 1,"acap0001"
edit_aperture_ex@ 137,6,0.0000,0.0000,0,"acap0001"
back@
util_draw2border@
axy@ 0.0000,0.0000
Selects the drawn data to be converted. One or more axy@ commands may be used to select multiple line
data (such as contiguous, but not joined, lines).
back@
draw2border_set_border@ 50.0000
Specifies an offset (in user units) for one-up border from the drawn data being used. Useful for creating one-
up borders which clearance around a drawn design border, for instance.
Example
util_draw2border@
Pag. 9 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
axy@ 3175.0000,-2575.0000
back@
draw2border_set_border@ 0.0000 'set for no clearance
util_draw2sym@
Initializes command.
Draw2SymDo@ LyrID,Spacing#,Type,Name$
LyrID: the layer destination for the resulting symbol data. The mapping is as follows:
1 = all Non-NC layers
2 = all electric layers
3 = goes on all layers of one type. Symbol will appear on all layers of the type it was originally generated on
(e.g. internal)
4 = appears only on the specified layer the symbol is created on
Spacing#: the minimum distance from the data that the symbol border will be created, in user units.
Name$: the symbol's name. if a symbol already exists with symbol name, it will be replaced with results of
Draw2Symb
axy@ x#,y#
Example
util_draw2sym@
axy@ -466.7000,4512.2000
Draw2SymDo@ 1,50.0000,1,"Coupon1"
Automatic
util_autodraw2flash@
Pag. 10 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Settings
set_draw2flashautoparm1@ 0,1,1,1
Fourth #: Tolerance used in determining if adjacent draws are part of the same group
UseMaskTop:
1 = if a top layer is processed, then use the mask top (if it exists) to control the search
0 = do not use mask top layer to control search
UseMaskBot:
1 = if a bottom layer is processed, then use the mask bottom (if it exists) to control the search
0 = do not use mask bottom layer to control search
UseDrill:
1 = if an internal layer is processed, then use the drill layer (if it exists) to control the search
0 = do not use drill layer to control search
Area Selection
axy@ -358.2000,5089.8000
axy@ 5242.9000,-64.0000
The two axy@ commands define the pattern search area (does not limit the area where matching patterns
will be converted).
Pag. 11 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
draw2flashautoentirelayer@
Example
util_autodraw2flash@
set_draw2flashautoparm1@ 0,1,0,0
set_draw2flashautoparm2@ 200.0000,200.0000,5.0000,2.0000,"10"
set_draw2flashautoparm3@ 1,1,1
axy@ 2331.1000,5506.1000
axy@ 5638.2000,3200.3000
Interactive
util_draw2flash1@
First #: Tolerance
axy@ 9495.0000,11326.0000
axy@ 9608.0000,11275.0000
setd2fparm@ 1,90.0000,24.0000,0,11
Command replaces the drawn data with a new aperture and adds aperture to Aperture Table. Parameters set
the values for the new aperture.
Replacement type:
1=compute size
0=select specific replacement Dcode)
Replacement shape:
0=rectangle
1=round
2=oblong
Note: the coordinates and setd2fparm@ command may be repeated multiple times to select many drawn
pads. There is no need to rerun the setdr2foptparm1@ command.
Pag. 12 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Set_D2fCont@ 1
Example
util_draw2flash1@
setd2foptparm1@ 5.0000,1,0,""
axy@ 3229.4000,5759.3000
axy@ 3434.0000,5457.4000
setd2fparm@ 1,91.2000,158.4000,2,323 'converts first selected pad to an oblong
axy@ 3448.3000,5742.1000
axy@ 3665.7000,5496.1000
setd2fparm@ 1,131.2000,147.1000,0,323 'converts need drawn pad to rectangle
axy@ 3695.7000,5732.1000
axy@ 3937.5000,5529.0000
setd2fparm@ 1,128.4000,128.4000,1,323 'converts last pad to round
nc_gerber_to_drill@ 6,-1,0,1,1,""
Converts Gerber pad data to NC drill data, using the following parameters:
First parameter is the Source layer number (remember macro layer numbering starts at 0).
Second parameter is the Target layer number. If -1, a new layer is created.
Third parameter is the Tool Table ID (only relevant if you are creating a new target layer). If 0, a new tool
table is created.
Fifth is whether to remove redundant data during the conversion (1=yes, 0=no).
Last is the Dcode filter string (used by setbydcode) to limit the Gerber Data to be converted. Leave blank ("")
and no Dcode filter is used.
gerber2mill_set_fix_errors@ #
Sets a flag to attempt to repair mill path compensation issues on converted Gerber data. Has no effect if
compensation of mill paths is not specified (using Edit > Change > Compensation).
Pag. 13 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
nc_gerber_to_mill@ 6,-1,0,1,1,""
First parameter is the Source layer number (remember macro layer numbering starts at 0).
Second parameter is the Target layer number. If -1, a new layer is created.
Third parameter is the Tool Table ID (only relevant if you are creating a new target layer). If 0, a new tool
table is created.
Fourth is whether to remove redundant data during the conversion (1=yes, 0=no).
Fifth is whether to convert segmented arcs to true arcs during the process (1-yes, 0=no).
Last is the Dcode filter string (used by setbydcode) to limit the Gerber Data to be converted. Leave blank ("")
and no Dcode filter is used.
nc_ncdata_to_gerber@ 8,-1
Converts NC Data to Gerber data. First parameter is the source NC Data layer. Second parameter is the
Target layer (-1 if it creates a new layer).
layerset_setThruDrill@ lyrID
Sets the NC drill layer to use when extracting the netlist. (Must be specified).
netextract4@ Type,Pads,Point,Exist,Neg
Performs the netlist extraction, using the NC drill layer from the command above:
Pads defines whether to allow nets without pads (1=allow nets without pads, 0=don't allow nets without
pads).
Exist is the treatment of existing nets (0 = augment nets, 1 = explode nets (preserve negative planes) and
extract, 2 = explode nets and extract.
Neg is whether or not the negative planes are split (0=they are split. 1=they are not split). Turning this
option off can significantly increase extraction speeds on non-split planes.
Example
layerset_setThruDrill@ 7
netextract4@ 0,0,0,2,0
Pag. 14 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
nc_offset_all_mill_paths@ 1,0
First parameter:
0=offset the paths by half the tool diameter
1=use the current compensation value assigned to the mill tool in the NC Tool Table
Second parameter:
0=offset the path in the direction of the compensation value assigned to the mill tool in the NC Tool Table
1=offset to the left
2=offset to the right
Following is the macro sequence for individual path selection, with unique offset parameters for each path.
nc_utils_offset_mill_path@
nc_offset_mill_path_parms@ 0,1,0
First parameter value of 0 designates that no compensation information from the NC Tool Table will be used
(offset information is used from the nc_offset_mill_path_data@ command below instead).
nc_offset_mill_path_data@ 48.0000,1
axy@ 1675.0000,2000.0000
back@
Ends command.
Following is the macro sequence for individual path selection, with universal offset parameters for all.
Pag. 15 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
nc_utils_offset_mill_path@
nc_offset_mill_path_parms@ 1,1,0
First parameter: 1=use the offset parameters as designated by the remaining two parameters.
Second parameter:
0=offset the path by the tool radius
1=use the Compensation Index as defined in the NC Tool Table
Third parameter:
0=offset the path in the direction specified by the Compensation Index
1=offset to the left
2=offset to the right
axy@ 1825.0000,1900.0000
back@
Example
nc_utils_offset_mill_path@
nc_offset_all_mill_paths@ 0,1
Unique Offset
nc_utils_offset_mill_path@
nc_offset_mill_path_parms@ 0,0,1
nc_offset_mill_path_data@ 100.0000,2
axy@ 3412.4000,7892.0000
back@
Universal Offset
nc_utils_offset_mill_path@
nc_offset_mill_path_parms@ 1,1,0
setsnap@ 1
axy@ 3275.1000,8098.0000
back@
util_over_under@
Pag. 16 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Specifies the over/under settings to run on the selected data:
Target#: layer over/undersized data is created on. May be existing layer, or new layer. Specify layer number
if new layer.
Same as the above command, but allows for percentage changes of the data being over/undersized:
Target#: layer over/undersized data is created on. May be existing layer, or new layer. Specify layer number
if new layer.
Percent: specifies percent to over/undersize data. Expressed as the percent * 100, up to two decimal places
(i.e. 101.5 percent is 10150)
set_SMTOnly@ 1
Specifies if SMT pads are to be over/undersized. This is a macro-only command. It does not record.
Note: If used, this command turns off the selectability of draws, so if you wish for draws to also be selected,
this command would have to be followed by seteditdraw@ 1.
axy@ -236.5000,5370.2000
axy@ 5310.3000,-196.6000
Example
By Amount
util_over_under@
set_over_under@ 0,21,5.0000,0,0
set_SMTOnly@ 1
axy@ 2268.1000,5437.4000
axy@ 3200.7000,3240.3000
By Percent
util_over_under@
set_over_under_percent1@ 0,21,12300,0,0
set_SMTOnly@ 1
axy@ 2268.1000,5437.4000
axy@ 3200.7000,3240.3000
Pag. 17 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Utilities > One-Up Border To Layer
util_border2layer@
Layer#: layer to which the border data is converted. May be existing layer, or new layer. Specify 35000 if
new layer.
Example
util_border2layer@
Border2Layer_Set_Data@ 1,35000
util_border2layer@
Border2Layer_Set_Data@ 1,11
util_pads2via@
AutoFilm
panel_spread@ 0,3
Border X spacing, Border Y spacing, Image spacing X, Image spacing Y, Spacing type (0=space between,
1=spacing offset). If you turn ON panel_centerimg@ below, the Image spacing and Spacing type parameters
are ignored (but a value must still be specified for the macro to play properly)
Pag. 18 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
panel_dimension@ 24000.0000,20000.0000
Maximum X and Y
panel_outline@ 0,10,15,15.0000
Generate border (0=no, 1=yes), generate Dcode, target layer, step off distance. The step off distance is only
used if generate border is set to 1.
panel_centerimg@ 1
1 = center images in their quadrant area, 0=do not center images (use layout specified in panel_spacing@)
setfilmbox@ 0.0000,20000.0000,24000.0000,0.0000
The size of the Film Box. Lower left X coordinate, upper right X coordinate, upper right Y coordinate, lower
left Y coordinate.
panelization@
Example
panel_spread@ 1,11
panel_spacing@ 1000.0000,1000.0000,500.0000,500.0000,0
panel_dimension@ 12000.0000,12000.0000
panel_outline@ 0,10,0,0.0000
panel_centerimg@ 1
setfilmbox@ 0.0000,12000.0000,12000.0000,0.0000
panelization@
Panel Editor
util_paneled@
Switches to Panel Editor, where Panelization Menu commands may be used to panelize a database.
util_draw2raster@
Selecting Polygons
axy@ -330.0000,5199.9000
Selects polygon to convert. Coordinates may be anywhere within the polygon. Subsequent coordinates may
be selected to convert multiple polygons.
Pag. 19 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
back@
Alternately, the following command may be used to select all vector-drawn polygons on the active layer(s):
gen_selectall2@
Filtering Apertures
This utility may use filter selections to limit the apertures in the polygons which should be converted:
setbydcode@ "10"
Convert Polygons
draw2raster_ok@
draw2raster_ok2@ 1
Performs the conversion, where "0" means show prompts for excessive polygon vertices and "1" means hide
prompts for excessive polygon vertices.
draw2raster_cancel@
Cancels the operation on the selected data. The application reverts back to the start of the process (waiting
for a polygon to be picked). This command is normally only seen when recording a macro script (and is
unlikely to be used when writing a script).
Example
util_draw2raster@
axy@ 6433.5000,4939.7000
setbydcode@ "38"
back@
draw2raster_ok@
util_raster2vect@
axy@ -338.2000,5183.6000
Any point within the polygon you wish to convert. Subsequent coordinates may be selected to convert
multiple polygons.
back@
raster2vect_dcode@ 10
Sets the Dcode to be used to fill in the vector polygon. It also triggers the actual conversion.
back@
Pag. 20 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
raster2vect_cancel@
Cancels the pick of a raster polygon at the stage of choosing a Dcode to fill the raster polygon. The
application reverts back to the start of the process (waiting for a polygon to be picked). This command is
normally only seen when recording a macro script (and is unlikely to be used when writing a script).
Example
util_raster2vect@
axy@ 6497.6000,5051.9000
back@
raster2vect_dcode@ 136
back@
util_quickpart@
Initiates command.
Pin Selection
quickpart_SetPinInline@ #
Determines inline pin recognition. Inline recognition is the default for Quick Part pin selection. Use this
command only if you want greater control over the individual pins being selected.
quickpart_SetPinName@ "pin_number"
Specifies the current "pin number." Pin numbering is normally done in an automatic numeric sequence, but
you may use this command to assign specific pin numbers to pins. Should appear before the axy@ selecting
the next pin.
axy@ 0.0000,0.0000
Used to select the beginning and end pins of an inline pin sequence, or only individual pins in a part (see
quickpart_setpininline@)
back@
Creates a part pattern using all the pins that have been previously assigned.
quickpart_SetPatternName@ "pattern_name"
Pag. 21 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Select the "pattern name" as the current part to be used for pattern-matching. This can be the most recently
created part, or any part in the project library. (Must be a pattern that already exists.)
quickpart_ChangePatternName@ "new_pattern_name"
Changes the pattern name of the currently selected part to be the "new pattern name."
Changes the reference designator that is currently displayed in the toolbar to "new refdes name." Normally
Ref/des number is automatically incremented when matching part patterns, but this command can be used if
you wish to have complete control over the ref/des being assigned. Command must appear before the
quickpart_MatchPattern@ command:
setturn100angle@ 4500
Sets turn angle for part pattern. Angle is times 100 (45 degress = 4500).
quickpart_Turn@
quickpart_Mirror@
Used to match a selected pattern to a potential part. Performs the actual part placement. May be run
multiple times to place additional part instances.
X,Y = Coordinates of the first pin, for matching current pattern. Coordinates contain no decimals (multiply by
10000)
Angle = Degrees that the pattern is to be rotated around the pattern's first pin.
"refdes_name" = Reference designator to be assigned to the part. ("" = let system assign ref/des number).
back@
Closes command.
Example
util_quickpart@
axy@ 2225.0000,1550.0000 'Select inline pin sequence
axy@ 1875.0000,1550.0000
quickpart_SetPinInLine@ 0 'switch to individual pin selection for next sequence
axy@ 1875.0000,1350.0000
axy@ 1925.0000,1325.0000
axy@ 1975.0000,1350.0000
axy@ 2225.0000,1325.0000
back@
quickpart_NewPattern@ "18smt.1" 'name part pattern
quickpart_SetPatternName@ "18smt.1" 'select pattern to use
quickpart_MatchPattern@ 28257500,19812000,0,0,"U1" 'place first part
quickpart_MatchPattern@ 28257500,11430000,0,0,"U2"
quickpart_MatchPattern@ 11430000,21590000,0,0,"U3"
quickpart_SetRefDes@ "U4" 'Sets next ref/des to use
setturn100angle@ 4500 'turn and mirror part
Pag. 22 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
quickpart_Turn@
quickpart_Mirror@
quickpart_MatchPattern@ 11430000,21590000,90,1,"U4"
back@
TgtToolRef = Tool Reference to be assigned to the hits when moved to the target layer
drill_firstlast@ 1
Specifies if user will set the first/last drill hits in the path. 1 = yes, 0 = no.
drill_sort_set@ 0,0,50.0000,15
Specifies the search settings to use when sorting the drill hits.
Second parameter is the Drill path Dcode (in v5.0 and earlier. Use a 0 value as a placeholder in v6.0 and
later).
axy@ 1200.0000,1875.0000
axy@ 800.0000,2700.0000
If recording the function, these are the coordinates selected for the first and last drill hits. They are not
necessary when playing the macro (the coordinates are taken care of in the following command).
Pag. 23 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
drill_sort@ 1222.2183,1877.7817,907.4061,2737.0305
Performs the sorting. These are the actual coordinates where the first and last drill hits will be (functions like
snapping to an object).
end@
Ends command.
Example
drill_firstlast@ 1
drill_sort_set@ 1,0,60.0000,9
drill_sort@ 1224.5000,3031.0000,4626.5000,1473.0000
end@
nc_sort_mill_paths@
nc_exp_nc_SR_order@ SROrderSequence
nc_exp_nc_use_SR@ 1
Specifies NC output format will include step and repeat instructions for Excellon and Seib&Meyer formats. 1
= yes, 0 = no.
Pag. 24 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Utilities > Teardrop
util_teardrp1@
teardrop_set@ #,#,#
The second # is the percent to multiply the radius for line teardrops (not used for pads teardrops). Maximum
value is 400 (400%).
axy@ X,Y
axy@ X,Y
Defines the rectangular selection window to process. (Coordinates of two opposite corners of the rectangle)
Pag. 25 di 25
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
View Menu Macros
view_all@
view_backside@ #
view_composite@
This is a toggle, meaning that each time the command is executed it changes the state from normal to
composite view. You may change the composite being viewed using setcompo@ command.
view_filmbox@
Views the extents of the filmbox on screen (shows placement of data within box). This is a toggle, meaning
Pag. 1 di 5
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
that each time the command is executed it changes the state from filmbox on/off.
view_window@
axy@ -3000.0000,-3000.0000
axy@ 8000.0000,8000.0000
back@
Views a test fixture on screen. Coordinates are the opposite corners of a window drawn around the test
fixture, so that the entire fixture appears in the workspace, zoomed-in as closely as possible.
These coordinates may be obtained in this manner: use the height and width value assigned to the test
fixture by your macro by the bn_fixture_width@ & bn_fixture_height@ commands, determine the
centerpoint of the database by using the database extent queries, and add or subtract 1/2 of the
width/height value from this centerpoint to obtain the end coordinates:
Example
visminx! & viminy! are 0, 0 and vismaxx! & vismaxy! are 10,10 inches (1000,1000 mils) - giving a center
point of 5,5 inches (500,500 mils)
To determine the lower-left corner of the view window: subtract half the width (10 inches) from 5X and half
the height (11 inches) from 5Y, which yields a lower left point of -5,-6 inches.
Repeating same process for upper corner results in an upper coordinate of 15, 16 inches.
view_window@
axy@ -5000.0000,-6000.0000
axy@ 15000.0000,16000.0000
back@
View > In
view_zoomin@
axy@ 1875.0000,4050.0000
end@
Zooms database view in one level, at given coordinates. Commands may be repeated to zoom further levels.
Pag. 2 di 5
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
View > Layer Bar
view_lyrbar@
Turns layer bar off /on. This is a toggle, meaning that each time the command is executed it changes the
state.
view_zoomout@
axy@ 2525.0000,3950.0000
end@
Zooms database view out one level, at given coordinates. Commands may be repeated to zoom further
levels. (opposite of View > In command).
view_pan@
axy@ 4700.0000,3475.0000
back@
view_panoramic@
Opens a view window showing the database in relation to the workspace. This is a toggle, meaning that each
time the command is executed it changes the state.
view_redraw@
Pag. 3 di 5
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
Refreshes all data on screen.
view_rotate@ #
Will show the view of your data rotated counterclockwise by the # of degrees specified: 0, 90, 180, 270. (0
sets it to the normal view.)
view_statbar@
Turns the Status bar on or off. This is a toggle, meaning that each time the command is executed it changes
the state.
view_toolbar@
Turns the toolbar on or off. This is a toggle, meaning that each time the command is executed it changes the
state.
view_toolbarhelp@
Turns tool bar help display on and off. This is a toggle, meaning that each time the command is executed it
changes the state.
Pag. 4 di 5
mk:@MSITStore:c:\programmi\downstream%20technologies\cam350%2010.1\camnt95.chm::/Macro_Menu/FabFa...
view_window@
axy@ 1375.0000,5350.0000
axy@ 3300.0000,3175.0000
back@
Zooms workspace to a designated rectangular area of the database. The coordinates given represent the two
opposite corners of the rectangle being viewed.
Pag. 5 di 5
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/M...
Sample Macros Provided with the CAM350 Software
To show the versatility of the macro language, as well as to help our customers increase their productivity,
several macros (.SCR files) are provided with the application. Following is a brief description of each file. We
recommend you open any macro you wish to use in a text editor to view any comments that appear in them.
These comments contain instructions and descriptions of sections in the macros.
Apersort-V7.scr Script sorts all apertures in the database, as well as compressing the aperture table to
remove unused apertures.
Autodim.scr This script allows the user to add mechanical dimensions to a database using either linear or
datum techniques.
ColorControl.scr This script allows the user to set the layer colors automatically by layer type.
Drl_lgnd.scr Creates a drill "legend" table of all the used drill tools in the NC Tool Table.
Layerord.scr This macro scans the layer tags and builds the proper stack up.
Pads_drill.scr PADS outputs a separate drill table from their drill file. This script reads in the table file
(*.rep) and sets the NC Tool Table based on that information.
ShowEachLayer.scr Allows the user to examine the individual layers in a design by toggling through
them, displaying only the active layer.
Textins.scr This Macro will read any ASCII text file and insert the text into a database at a location chosen
by the user.
Pag. 1 di 1
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/O...
Obsolete Macros and Their New Equivalents
As the CAM350 software has evolved, it has been necessary to replace old macro commands and database
queries with new ones. In order to assist users who are using scripts that contain those macros, following is a
list of obsolete macros & database queries, and their new equivalent command(s). The hyperlinks will take you
to the Macro Language Guide topic where the alternative macro command is discussed.
ALL Editors
CAM Editor
l drc_trktrk@ drc_Set_Trk2Trk_Test@
drc_Set_Trk2Trk_Val@
drc_Set_Trk2Trk_Dcode@
See Analysis > DRC
l drc_trkpad@ drc_Set_Trk2Pad_Test@
drc_Set_Trk2Pad_Val@
drc_Set_Trk2Pad_Dcode@
See Analysis > DRC
l drc_padpad@ drc_Set_Pad2Pad_Test@
drc_Set_Pad2Pad_Val@
drc_Set_Pad2Pad_Dcode@
See Analysis > DRC
l drc_outline@ drc_Set_Outline_Test@
drc_Set_Outline_Val@
See Analysis > DRC
l drc_mintrk@ drc_Set_MinTrk_Test@
drc_Set_MinTrk_Val@
drc_Set_MinTrk_Dcode@
See Analysis > DRC
l drc_minpad@ drc_Set_MinPad_Test@
drc_Set_MinPad_Val@
drc_Set_MinPad_Dcode@
See Analysis > DRC
l drc_redunpad@ drc_Set_RedundPad_Test@
See Analysis > DRC
Pag. 1 di 4
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/O...
l drc_anringpaddata@ drc_Set_Drill2Pad_Pad_Lyr@
See Analysis > DRC
l drc_anringmaskdata@ drc_Set_Drill2Mask_Mask_Lyr@
See Analysis > DRC
l drc_anringdrilldata@ drc_Set_Drill2Mask_Drill_Lyr@
drc_Set_Drill2Pad_Drill_Lyr@
See Analysis > DRC
l drc_anringpadmask@ drc_Set_Pad2MaskTop_Test@
drc_Set_Pad2MaskTop_Val@
drc_Set_Pad2MaskBot_Test@
drc_Set_Pad2MaskBot_Val@
See Analysis > DRC
l drc_anringdrillmask@ drc_Set_Drill2Mask_Test@
drc_Set_Drill2Mask_Val@
See Analysis > DRC
l drc_anringdrillpad@ drc_Set_Drill2Pad_Test@
drc_Set_Drill2Pad_Val@
See Analysis > DRC
l drc_drillwopad@ drc_Set_DrillWOPad_Test@
See Analysis > DRC
l drc_padwodrill@ drc_Set_PadWODrill_Test@
See Analysis > DRC
l drc_drltrk@ drc_Set_Drill2Trk_Test@
drc_Set_Drill2Trk_Val@
See Analysis > DRC
l edit_layerreorder@ init_layer_reorder@
change_layer_position@
apply_layer_order@
l export_orbotech@ None. (see Superceded Features).
l import_orbotech@
l starved_thermals_window@ starved_thermals_window2@
l starved_thermals_layer@ starved_thermals_layer2@
l add_comp@ add_component@
l addcomp@ addcomp_makecmp@
l set_panel_image_copies@
l set_panel_use_spacebetween@
l set_panel_compute_copies@
Pag. 2 di 4
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/O...
l set_panel_use_autocalc@
l do_panel_autocalc@
l place_panel_symbols@
l add_panel_image@
l del_panel_image@
l del_all_panel_images@
l edit_panel_image@
l do_panel_renderimages@
l vent_type@ Panel Editor Panelization > Venting Macro Commands
l ventfillpattern@ l add_panel_vent@
l vent_borderlayer@ l del_panel_vent@
l vent_layera@ l del_all_panel_vents@
l vent_layerb@ l edit_panel_vent@
l vent_offset@ l add_panel_vent_layer@
l ventfilldcode@ l del_panel_vent_layer@
l ventpatdcode@ l del_all_panel_vent_layers@
l ventpatangle@ l set_panel_vent_offsetfromedge@
l ventpatstep@ l set_panel_vent_offsetfromimages@
l ventpatoffset@ l set_panel_vent_offsetfromsymbols@
l Vent_Galvanic@ l set_panel_vent_galvanicwidth@
l Vent_DataOffset@ l set_panel_vent_patternoffsets@
l vent@ l set_panel_vent_galvanic@
l set_panel_vent_offsetpattern@
l set_panel_vent_outline@
l set_panel_vent_nopartials@
l set_panel_vent_polarity@
l set_panel_vent_pattern@
l set_panel_dotpatternline@
l set_panel_dotpatternlineenable@
l set_panel_dotpatternystep@
l set_panel_hatchpatternline@
l do_panel_rendervents@
NC Editor
l drill_setup@ nc_add_tool@,nc_set_tool_type@,etc...
l drill_setup1@ nc_add_tool@,nc_set_tool_type@,etc...
l drill_setup2@ nc_set_tool_id@
l drill_start_reassign@ None
l drill_end_reassign@ None
l drill_setlegendstosize@ None
l drill_loadlib@ nc_load_table_replace@
l drill_savelib@ nc_save_table@
l set_adddrill@ set_current_toolref@
l set_fromdrill@ None
Pag. 3 di 4
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Macro_Menu/O...
l set_todrill@ None
l chgdrill_ok@ None
l chgdrill_cancel@ None
l mill_createdata@ nc_add_mill_path@
l mill_addtool@ nc_add_tool@
l mill_deletetool@ nc_delete_tool@
l mill_modifytool@ nc_set_tool_type@
nc_set_tool_size@
nc_set_tool_infeed@
nc_set_tool_outfeed@
nc_set_tool_feedrate@
nc_set_tool_rpms@
nc_set_tool_maxhits@
nc_set_tool_linktool@
nc_set_tool_exportorder@
nc_set_tool_display_color@
nc_set_tool_display_size@
nc_set_tool_cap@
nc_set_tool_shape@
nc_set_tool_usesize@
l mill_modifytoolid@ nc_set_tool_id@
l gerber2drill@ nc_gerber_to_drill@
l gerber2drill_unplated@ nc_gerber_to_drill@
l gerber2mill@ nc_gerber_to_mill@
l set_active_drilltbl@ nc_assign_tool_table_to_layer@
l view_drillpath@ view_nc_annotate_drill@
Pag. 4 di 4
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
Panel Creation
The Panel Editor allows for the fast creation of efficiently-panelized designs, complete with test coupons,
registration holes, vent patterns, title boxes, etc. (generated using the new Symbol Editor) The original one-up
design, and the panelized result, are separate entities that can be manipulated at any time before, during, and
even after the process.
This tutorial provides you with an overview of how to use the Panel Editor. Each setup you create may be
saved as a file that can be used to panelize subsequent jobs. Multiple panel formats can be saved for later
execution as "one button", fully-automatic routines. Or you can chose to prepare individualized panels on a job
by job basis: the flexibility exists for both approaches.
Note: It is highly recommended you read and complete the Symbol Creation tutorial before reading this
tutorial, as a number of the symbols created in the Symbol tutorial are used to set up your example panel.
Creating a Panel
Panelizing a Job
Creating a Panel
A panel can be generated using the Panelization Menu commands in the Panel Editor. Each menu command
controls a specific area of the panel, from setting up the panel's physical layout to actually generating the
panelized images and creating the venting patterns. The panel setup may be reconfigured at any time, even
after panelization has occurred.
Setup Symbols
Before beginning a Panel Setup it is advisable to create all the symbols you are likely to require in your panel
(s). Symbols, such as coupons, will be placed at fixed locations in the panel during a panel set up. They may be
placed on an individual basis when, you actually panelize a job (using Add > Symbol), but it is generally
preferred you have a symbol library available for the variety of panels you are likely to need to set up: most
shops have a fixed set of symbols they use for their panels.
If you completed the manual symbol creation section of the Symbol Creation tutorial, you will already have a
symbol library to draw from for this tutorial.
Setup Panel
It's best to begin a fresh panel setup with no database loaded in the application. This will give you a blank slate
to work on. Enter the Panel Editor using Tools > Panel Editor. In the editor you will notice a number of similar
functions to the CAM Editor - this is intended to give you much of the functionality of the main editor for all
panel-level data. Note that panel data includes such things as symbols, venting patterns, etc, but doesn't not
include the data (draws, flashes, drills, etc). in the one-up image you are panelizing. Once in the Panel Editor,
you will not be able to make edits to the database itself without a) exiting to the CAM Editor (all changes there
will reflect in the Panel Editor) or b) exploding the Panel using Edit > Change > Explode > Flatten Panel
(once you explode a panel, however, there is no recourse! The panelized data will lose its panel intelligence and
become one-up data, not step & repeat images).
Inside the Panel Editor you will notice 3 buttons on the toolbar: Setup, Create and Venting. (These commands
are also available in the Panelization menu). These buttons show the basic steps needed to panelize a job. .
Begin by clicking Setup.
This tutorial does not exhaustively cover each individual command in the Setup dialog, but will go over all the
required steps to make a generic panel setup. For more information, see Panelization > Setup.
You will need to set the panel size for your generic panel. Size may be set as a function of the specific boards
your shop receives, or as a general size for all jobs. The Size Tab allows you to set this information, as well as
the spacing clearances for all step & repeat data in the panel.
Pag. 1 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
1. Set the panel size to 12" x 12"
2. Border spacing controls the minimum distance step images will be created from the panel border. Set this
value to 2"
If you want to custom tailor this border spacing for your panel, check the Advanced box and enter spacing
values from all four sides of the panel.
3. Set the image spacing value to .5". This controls how close step images may be generated in a panel,
allowing you to maximize the panelized images or leave adequate clearance for venting patterns. Your panel
will now look like this:
Note: Use the checkbox Automatically Update FilmBox to keep the Film Box definition in sync with the
Panelization box definition. The default is to keep the Film Box and Panelization Box matched. If you chose
not to keep the Film Box and Panelization Box in sync, you can use the Edit > Change > Origin commands
to manage the panel origin and film box origin separately. Use the File > Setup > Film Box command to
define the size and location of the film box.
Pinning Holes are the most basic Symbol used to set up your panel. Each fabrication shop typically has its own
pinning hole unique to its production processes. For our purposes, set up a generic series of holes, as outlined
below:
2. Click the Add button to select a pinning hole Symbol to use in the panel. Use the symbol "pinhole". This is
available in the Symbol tutorial library (this library should already be set in your application from the Symbol
Creation tutorial; if not, see the tutorial for how to specify the symbol library to use).
3. Now you'll need to set the placement points for the pinning hole you're adding. You may set these as
absolute or relative coordinates from the edge of the panel. Use the coordinates for the first pinning hole
below, then use Add again to insert an additional 4 holes, at the given coordinates:
Relative coordinate mode allows you to set the pinning holes a given distance from the edge of the panel,
regardless of the panel size - the symbols will move automatically should you change the size.
Pag. 2 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
Note: You can also set the rotation of each pinning hole by using the Rotation drop-down list. However,
rotations are limited to 90 degree increments and may only be useful for special pinning hole designs.
4. Pinning holes may be added as Primary (plated) or Secondary (unplated/tented) drill hits by checking the
appropriate box. When done, your panel preview should look like this:
Add Fiducials
Fiducials are required for film alignment/collation. The process and commands are essentially the same as for
Pinning Holes, with the exception of the drill settings - fiducials have no drills, so these commands do not apply
to them.
2. Click the Add button to select a fiducial symbol to use in the panel: use "fiducial" from the symbol library.
Hole #1 Hole #2
x7", y1" x5",
y11"
Pag. 3 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
The Title Block tab is used to enter your title block. Commands are the same as for Pinning Holes and Fiducials,
again with no need for a drill option. The title block in our sample panel will be offset from the lower left corner.
2. Click the Add button to select a title block Symbol to use in the panel: use "title_block".
3. Place your Title Block at x2.5", y1.4". When done, your panel preview should look something like this:
Add Coupons
Finally, add the coupon(s) required for your panel. For our example panel, we will use one drill coupon, offset
from the lower right corner.
2. Click the Add button to select a coupon Symbol to use in the panel: use "firstlast".
3. Place your Coupon at x11", y3". Select Primary from the NC Layer check boxes, to make sure these drill hits
will be plated hits.
4. In this case, we also need to rotate the coupon to avoid overrunning the step images: use a 90 degree
rotation. When done, your panel preview should look something like this:
Pag. 4 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
Save & Load Panel Setup -
Once you've verified that all symbols have been added correctly, it's time to save the final panel. You can save
any number of panel setups in the application directory, under the *.pan extension. These setups can be loaded
for any design you wish to panelize. You may make case by case adjustments to the setups as necessary, and
still be assured that you have a clean copy saved for future jobs.
1. Click the Save button. The Save Setup As dialog box appears with a list of all current panel setups.
2. Type a setup name in the top field (it isn't necessary to add the .pan extension - the system will assign it
automatically) or select a previous panel setup from the list, if you wish to overwrite it. For this tutorial, add
the new panel setup as "tutorial.pan"
3. You may now test the saved setup by exiting the Setup dialog and reopening it. Notice the dialog box still
shows the current setup you were working on.
5. Click Load and select "tutorial.pan". The size values you changed will be overwritten by the saved panel
setup.
Panelizing a Job
Now that you've created your basic panel setup, you're ready to begin panelizing a job. Panelization involves
adding the desired step images to your panel, as well as setting up venting patterns and exporting the final
result.
It is assumed you know how to import and prepare standard Gerber files. If not, refer to the Import > Gerber
Data and Tables > Layers commands to import and tag your files properly. To panelize a sample design in this
tutorial, please use either the sample Gerber files located in the application's Demos directory (use must import
& prep these), or use the sample .CAM database, preview.cam, under the same directory (this file has been
prepped).
In addition to the normal file preparation, you must set some panel-specific items:
Panelization Anchor
Each step image in the Panel Editor has a "handle" or anchor which will be used to place the image in the panel,
as well as calculate rotations, etc. This anchor point is set in the CAM Editor, using Edit > Change > Origin >
Panelization Anchor. You may assign the point anywhere within the one-up image. The anchor point appears
on screen briefly to show you its new location, but disappears after you exit the command.
You only need to set the anchor point if you want to change its default location - if no new anchor is set in the
CAM Editor, the origin point (0,0) is assumed to also be the panel anchor in the Panel Editor. For our purposes,
leaves this as the default.
Pag. 5 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
One-Up Border
In addition to an anchor, each step image has a "border" which acts as the outline when calculating panel
spacing between images, as well as protecting the step images from venting patterns. This border defaults to a
rectangular shape around the extents of the one-up image in the CAM Editor (visible as a bounding box in the
Panel Editor).
If you have a complex board outline you wish to use for this purpose, you can set the border to a specific shape
using the Utilities > Draw To One-Up Border command in the CAM Editor. The command allows you to select
any continuous line on the database's "border" layer as the one-up border. In the case of preview.cam, we'll
stick with the default border.
Layer Stackup
The layer stackup controls the placement of symbol data on specific layers in your panel. If you don't select a
layer stackup for your job, you will be prompted to enter one before you can create your panel. It's a good idea
to get into the habit of setting your layer stackup prior to entering the Panel Editor, using Tables > Layer Sets
> Layer Stackup. If you do forget, you may also set the layer stackup under the same command in the Panel
Editor, at any time prior to panelization. A typical stackup may look like this (use this for preview.cam):
While working on a panel, you have a few options on how to display the step images contained in the panel. As
a default, step images appear as a rectangular box with the number of the step image inside. This indicates that
step images themselves cannot be edited in the Panel Editor (you cannot change the contents of a step image).
If you'd like to get a more visual representation of the step images, in the Panel Editor you may select Settings
> View Options > View Circuit Images, which displays all internal data in each step image. This gives you a
better feel for how the data in each image orients compared to its neighbors.
However, on larger step images, this amount of graphical data in the panel can slow redraw times significantly.
In those cases you may select the BitBlt Circuit Images view option under the main View Circuit Images option -
this will redraw step images in a much faster mode. The trade-off is in accuracy: while the normal mode displays
all data as it exists in the step images, this mode is less graphically accurate, depending on screen resolution,
etc., so is better suited for getting an overview of the data, rather than a 100% accurate image.
Once you've prepared the database, you're ready for panelization. Go to the Panel Editor and select the Setup
button from the toolbar or Panelization > Setup from the menus. You'll be loading the sample panel you
created, so hit the Load button and select "tutorial.pan"
If you needed to make adjustments to the panel setup (increase panel size, etc). you can make those changes
now. For this tutorial, leave the setup as is, and exit the dialog.
Pag. 6 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
NOTE: CAM350 supports alternatives for importing Panel Template data. In the Panel Editor, you are able to
import Gerber data using the File > Import > Gerber Data command. You can import drill and mill data using
File > Import > Drill Data and File > Import > Mill Data. Further, you can merge panel data template
using the File > Merge Panel command.
Create Panel
The Create command places the step images in the panelized job, much as the old command Utilities >
Panelization > Panelize did in previous versions of the software, but allows more flexible control over the
images.
You can choose to allow the system to calculate some of the values in the panel: either 1) the image offset
values, or 2) the number of step images in the panel. Unlike the old command, you can specify rotations for the
images, or use SpreadSheet mode to have complete control over the placements of each individual step image.
Note: When switching between AutoCalc and SpreadSheet modes, be aware that all changes you made in one
mode will be discarded when you switch to another mode! You cannot return and expect your previous values to
remain.
AutoCalc Mode
By default Create operates in AutoCalc mode, in which the system generates some of the values in the panelized
job. As noted, these are the between/offset values for the images, or the number of step images in the panel.
Rotation will allow you to change the orientation of the step images, but only works on all step images and only
in 90 degree increments.
1. Determine if you wish to have the system calculate Panel Size, Border Spacing, Image Spacing or Number of
Copies and select the appropriate Compute radio button.
2. If you selected Copies, you will need to fill in the Spacing information:
Between Select the x & y spacing between the panelization borders of the step images
Offset Specify an offset distance between the data in the step images themselves (i.e. trace to trace)
4. If you had selected Copies, you would have specified the number of copies in the x- & y-axis: the results of
your selections appear in the panel preview.
5. You may also set the angle of the step images. Click on the 90 degree radio button and notice how the
Pag. 7 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
images all rotate to the new position. (In this case the rotation doesn't yield any extra step images in the
panel).
6. If you need to make any adjustments to the panel Setup, click the Setup button - this brings up the Setup
dialog box, where you can make changes as described in the first section of this tutorial.
7. When you have set all the step image values, click the Create button to generate the panelized job:
SpreadSheet Mode
Spreadsheet mode allows you complete control over the placement of step images in the panel, but requires
more finesse than AutoCalc mode. You must set the x,y placement of each step image individually. You can set
each image's Rotation to any angle, though you will need to keep an eye on superimposing one image over
another accidentally.
1. SpreadSheet mode displays a table of the current images in the panel. You may set the values for any of the
image's characteristics by typing in the appropriate field. All coordinate values are absolute from the panel
origin (always the lower left corner of the panel). As a demonstration we'll be changing step images 1-4 in
this tutorial panel.
image 2 - leave the rotation, but set the spacing to x 3.9", y 2"
Pag. 8 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
2. Notice the orientation change did not give more space in this case, as the step images were only
reorganized. However there will be many cases where turning the images will free up additional space on the
panel for more step images.
In those cases, you can use the Add Image button to add additional images to the table: you will need to set
the rotation and location of the new image as you did for the others.
3. If you wish to decrease the number of step images in a panel, use the Delete Image button. A selection
dialog appears in which you can select individual or multiple step images (using the Shift or Ctrl keys) for
deletion.
Pag. 9 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
The next step is to define any Variable Text in your panel's symbols. Variable Text is a form of variable name
that you can replace with information in a panelized job. See the Symbol Creation tutorial for more information
on this topic.
1. Select Tables > Variable Text. The dialog will show all currently-defined variable text in the left-hand
selection list. You should see a list of all the variable text in the Symbol "title_block":
Note: preview.cam has no internal or positive layers. Therefore you do not need to fill in the Variable Text
pertaining to these layer types - symbols contain all potential Variable Text, even those variables used on
layers which don't exist in the current job. These entries cannot be deleted, as they are part of the original
Symbol's layout.
2. Fill in all the pertinent Variable Text in the dialog. Click on the text in the left-hand selection area and the
definition area to the right will activate.
Simply click in the definition area and begin typing your text. Use these values:
3. Once you finish entering all of the Variable Text values, click OK to save the entries. All the Variable Text
contained in the title block will now be updated to the new definitions. Turn on layer 1 (top layer) for
example and view the results:
Each Variable Text entry has been replaced with its new definition. Toggle through the layers to make sure
all variable text is as you want it, and go on to the next process.
Add Venting
Pag. 10 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
You will now be adding venting to your panel. The Panel Editor make allowances for most major venting styles
and gives you complete control of each vent pattern on a layer-by-layer basis. Venting patterns may include
solid vents, dot-pattern and hatched vents, as well as robber bars to equalize the copper balance.
Positive Venting
This type of venting should be used on all positive layers (top, bottom, internal, etc). In preview.cam we will be
adding positive venting to the top and bottom layers.
Note: If you want your pattern to vent up to the border of each step image, be sure to set the one-up border as
described above.
1. Select Venting. Notice you have a choice of units to work in: Inches, MMs, or mils. Select mils.
2. In the upper left, under Vents, use Add to enter a new venting pattern.
Offset from Panel Edge controls how close the venting will come to the edge of the panel. Set this value to
2000 mils (same as our panel border spacing - 2").
Offset from Images determines how close venting comes to step images. Use 50 mils - we want to get
relatively close.
Pattern This drop-down list allows you to select a dot, hatched, or solid pattern. Pick Dot. Notice the Polarity
field highlights and a spread sheet for setting the pattern is opened.
No Partials This check box determines if the vent pattern will include only whole dots. If this is selected the
venting pattern for the layer will be generated as a polygon - much the same way venting was created in
older versions of the application - leaving clearance areas around each step image's border. For our
purposes, leave this unchecked.
Tip: If you select the No Partials option, you must use Offset From Images and Offset from Symbols values
of at least half the shape's Width to insure the shape does not overlap the image edge. For example, if you
choose a round dot pattern with 0.06 width, the offset values should be at least 0.03.
Spread Sheet The dot pattern spreadsheet is set to the default pattern, using a 60 mil round aperture.
Leave these default values, but change the shape used to Square with the drop-down list.
4. Add the layers that will use this venting pattern: in Layers selection area (lower left), use the Add button and
select the top and bottom layers from the Layer List dialog box which appears. Your final venting pattern
should look like this:
Pag. 11 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
6. Turn on only layer 1 (top). The venting will appear like this:
Robber Bars
Robber bars (or galvanic vents) are often added to top and bottom layers to balance the copper between them,
preventing over etching from occurring. You'll need to determine the existing copper balance before attempting
to fix it using robber bars. This can be done using the Analysis > Copper Area command. Once you've
determined that information, you can either calculate out the needed copper to be added, and determine the
subsequent size of the robber bars to add, or do some trial and error additions of robber bars until the balance is
Pag. 12 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
met.
For our purposes, you'll be adding a fixed bar size, assuming the design you're panelizing has no significant
copper difference between the two layers.
3. Select the Pattern first: pick Solid. Notice that the Robber Bar option appears in the upper right, and the
Polarity dropdown list is grayed out. Click the Robber Bar check box.
Offset from Panel Edge controls how close the venting will come to the edge of the panel. Set this value to
1000 mils.
Robber Bar Width Notice that this field has changed from the "Offset from Images" settings. It now
determines how wide the robber bar being added is. Set this to 1000 mils, or a 1" robber bar.
5. Under Layers, select top and bottom from the list. Your final Robber Bar pattern should look like this:
6. Click OK. The top layer will now display the robber bar at the edge of the previous venting pattern:
Pag. 13 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
Notice how the bars clearance around all Symbols - the symbol border protects the symbols from venting
patterns.
Negative Venting
Negative venting is used on all layers which will be plotted with reverse polarity (negative planes). You will be
adding this venting to the two negative layers in the design.
As with positive venting, setting the one-up border allows you to vent to the exact shape of the board's outline.
Negative layers should take advantage of the Offset command to stagger their venting patterns, allowing them
to interlock and perform better venting.
2. In the upper left, under Vents, use Add to enter a new venting pattern.
3. We will add the negative venting for the first negative layer in the database (layer 2):
Spread Sheet You can set the hatch-pattern spreadsheet to any desired combination of hatched lines (again
Pag. 14 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
similar to old versions of the application). Set the hatch pattern to a single 45 degree line: Width 200 mils,
Step 500 mils, and Angle 45 degree.
4. Under Layers, select only layer 2. The first hatch pattern is done.
5. Create the second, offset hatch pattern for layer 3. The settings are the same as above, with these
exceptions:
Pag. 15 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
8. The patterns are not complete yet. They appear correct since they are displayed in positive mode. Use the N
key to toggle each layer's polarity and you'll see the hatch patterns have created dead-ends for the venting
just at the border offset of the panel. To fix this, you must add positive venting where the hatched venting
meets the border offset zone, creating a flow area for the venting. To do so, place a Robber Bar on both
negative layers, with these settings:
10. Click OK. The new robber bars will appear positive, but using the N-key you can see they created the desired
clearance area:
Pag. 16 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
Save Database
Before you begin exporting files, it's a good idea to Save your design as a .CAM file. This assures all panel and
symbol information used in your panelized job will remain with the original design - you can refer back to
the .CAM file to make any changes to the panel without having to start the panelization process over again.
You may save your file in the Panel Editor by using File > Save PCB or File > Save As PCB, or exit to the CAM
Editor and save it as you would normally.
In the Panel Editor, if you wish to overwrite the original preview.cam file (not recommended), select File >
Save PCB. Skip this step, as you should retain the original preview.cam file for other demonstration purposes.
OR
Use File > Save As PCB, which functions the same as the File > Save As command in the CAM Editor. The
Save As dialog appears and you are prompted to enter a name for a new file: use "preview_panel.cam"
Export Panel
Once you have completed the panel creation process, it's time to export the files for plotting. There are several
export options in the Panel Editor. Once you have panelized a job you may export it as individual files (Gerber
data, composites, drill & mill data), or as a complete panel to some CAD systems (DXF, ODB++, GenCAD).
Export Gerber
Exporting a panel as Gerber files is essentially the same as exporting individual layers using the standard File >
Export Gerber Data command. Refer to the File > Export Panel > Gerber Data command for details, with
the following caveats:
Pag. 17 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
Panel Gerber layers will be flattened on export: all symbol and panel data will be exploded and exported as
normal Gerber data, while the step & repeat codes for the step images themselves will be retained (if
exported in a Gerber format other than 274D). If you reimport these files, you will not get an intelligent
panelized database, as you do by saving the .CAM file.
Layers containing venting patterns will be exported as composites. If imported back into the application,
they appear as multi-layer composites, which must be viewed using View > Composite or Tables >
Composites.
Export Composites
If your panel contains any composites from the original one-up design, you must export these using File >
Export Panel > Composites. Again, this command is essentially the same as the CAM Editor equivalent, with
the exceptions noted above.
NC Data files are exported in the same fashion as they are in the CAM Editor, with the exception that the
drill/mill files will contain any panel drills (from symbols, etc), as well as all drills used in the step images of the
panel.
Refer to File > Export Panel > Drill Data & File > Export Panel > Mill Data for details.
Export DXF
Export ODB++
Pag. 18 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Panelization_M...
Overview of the Panelization Process
The Panelization Menu commands are used to create a multiple-board array for manufacturing. Since
Panelization uses Step & Repeat codes, it does not make the database any larger than the one-up image. You
can "explode" a panel into raw data using Edit > Change > Explode > Flatten Panel. However, this will
increase the database size.
All editing of panelized data (and the panel itself), must be made in the Panel Editor.
Prior to panelizing a database, it is assumed that the operator has prepared the data for being panelized. Please
be sure to follow the steps below to properly panelize data:
Command Sequence:
2. Make sure all the layers are "tagged." Refer to Tables > Layers for instructions on how to tag your layers.
3. Use the Edit > Layers > Reorder command to set the layer sequence. Although not specifically required, it
helps production if all your jobs have the same "stackup". This is also a good time to set the layer colors to
match your internal standard.
4. Make sure that any data outside the one-up image is deleted.
All data will be panelized, so make sure templates and title boxes are removed. Use Edit > Layers >
Remove to remove any layers that do not pertain to the result.
1. If you will be adding symbols to the panel, you first need to create those using the Symbol Editor.
2. Select Panelization > Setup. The Panel Setup dialog box appears.
3. After setting up the panel configuration, use Panelization > Create to generate a panel for your specific
database.
4. Select Panelization > Venting to generate a venting pattern for your panel.
5. After the panelization process is complete, save your panel using the File > Save PCB or File > Save As
PCB commands, or export the panel for manufacture, using the variety of options under the File > Export
Panel command.
6. When you are finished with the panelization process, select File > Exit Panel Editor or the Return To CAM
Editor button (on the Task Bar) to exit the Panel Editor.
Pag. 1 di 1
file://C:\Documents and Settings\Amministratore\Impostazioni locali\Temp\~hhBC8B.htm
The Panelization Menu commands are used to create a multiple-board array for manufacturing. Since Panelization
uses Step & Repeat codes, it does not make the database any larger than the one-up image. You can "explode" a panel
into raw data using Edit > Change > Explode > Flatten Panel. However, this will increase the database size.
All editing of panelized data (and the panel itself), must be made in the Panel Editor.
Prior to panelizing a database, it is assumed that the operator has prepared the data for being panelized. Please be sure
to follow the steps below to properly panelize data:
Command Sequence:
2. Make sure all the layers are "tagged." Refer to Tables > Layers for instructions on how to tag your layers.
3. Use the Edit > Layers > Reorder command to set the layer sequence. Although not specifically required, it helps
production if all your jobs have the same "stackup". This is also a good time to set the layer colors to match
your internal standard.
4. Make sure that any data outside the one-up image is deleted.
All data will be panelized, so make sure templates and title boxes are removed. Use Edit > Layers > Remove to
remove any layers that do not pertain to the result.
1. If you will be adding symbols to the panel, you first need to create those using the Symbol Editor.
2. Select Panelization > Setup. The Panel Setup dialog box appears.
3. After setting up the panel configuration, use Panelization > Create to generate a panel for your specific database.
4. Select Panelization > Venting to generate a venting pattern for your panel.
5. After the panelization process is complete, save your panel using the File > Save PCB or File > Save As PCB
commands, or export the panel for manufacture, using the variety of options under the File > Export Panel
command.
6. When you are finished with the panelization process, select File > Exit Panel Editor or the Return To CAM
Editor button (on the Task Bar) to exit the Panel Editor.
The Setup command creates a panel configuration, by setting the placement of the symbol and structure of a panel.
Each tab in the dialog box controls a separate set of information for the panel you create. All tabs display a preview
window which allows you to view the proposed layout for the panel. In addition, each tab allows you to specify the
unit format for the placement values of the symbols (either in Inches or MMs).
Pag. 1 di 6
file://C:\Documents and Settings\Amministratore\Impostazioni locali\Temp\~hhBC8B.htm
Note: You may click Cancel at any time during the Panel Setup to quit this function; however any panel settings you
have made will not be recorded.
Command Sequence:
1. Select Panelization > Setup, or click the Setup button in the Tool Bar. The Panel Setup dialog box appears.
Size This section allows you to control the physical size and layout of your panel. Panel size may be set, as well as
the spacing multiple images on the panel must maintain from the Panel Border (and from each other).
Coupons You can add various types of coupons to the panel using this section. These coupons may include text,
drill coupons, etc. You can determine the location of the coupon, either relative to the panel border, or absolute
from the lower left corner of the panel, as well as the rotation of the coupon relative to the panel border. Each
coupon must be placed as an individual instance - in other words, if your panel needs four drill coupons in all
corners, each coupon must be placed individually.
Title Block You can add a title block to a panel using this section. A title block is a block of text which states
particular information about the panel being produced. It generally lists the operator, number of layers, job &
revision, date of manufacture, as well which particular layer of the panel is on the film.
Location and placement controls are the same as for the Coupons Tab.
Pinning Hole These are manufacturing holes necessary to hold the panel for drilling or routing operations. This tab
allows you to place an unplated drill hit in the location appropriate to your manufacturing process. Again,
placement controls are similar to the previous two tab controls.
Fiducial Use this section to place one or more fiducials to assist in the manual alignment of film. Similar controls
to the other tabs exist to allow you to specify the placement point(s) for the fiducials.
3. For the Size Tab, you are given choices to set the physical properties of the panel and its multiple images:
4. Set the Panel Size by entering values in the for the X and Y coordinates in the Panel text boxes.
Note: Panel sizes up to 56" (~1422mm) per side are handled normally. Above that range, the panel origin defaults to
the center of the panel. Such panel sizes require the use of a special photoplotter to plot the panel.
l Define the Border Spacing . For more complete control of the border spacing, check the Advanced check box
and specify the exact spacing of the border for all four orientations: Left, Right, Top & Bottom.
l Minimum Image Spacing controls the minimum distance multiple designs must maintain from one another.
Type the distance in the two text boxes.
4. For all Other Tabs, the selection list on the left displays all (if any) currently used symbols in the panel.
5. To add a symbol to this list, click the Add button. The Select Symbol dialog box appears. Select the specific
symbol in the list which appears below the symbol type buttons: a preview of the symbol you select appears in
the upper right corner of the dialog. If this symbol is correct, click the OK button. Otherwise make another
selection, or click Cancel to return to the Panel Setup dialog box.
l Once you have selected a symbol to insert in the panel, you need to specify its placement in the panel.
Absolute placement allows you to specify the symbol's placement relative to the lower left corner of the panel.
Relative placement lets you to place the symbol offset from a specific edge of the panel, as determined by the
selection buttons. These buttons control the symbol distance relative to the horizontal (Left, Center, & Right)
and vertical (Top, Middle & Bottom) panel edges. Enter an offset distance for the symbol from each of these
Pag. 2 di 6
file://C:\Documents and Settings\Amministratore\Impostazioni locali\Temp\~hhBC8B.htm
edges.
Rotation can be used to specify the orientation of the symbol, relative to the placement point selected for it in the
panel.
NC Layer is only available for coupon and pinning hole symbols: this allows you to set the NC drill layer to use
for drilling these type of coupons. Use the radio button to select Primary (plated) or Secondary (unplated/tented).
l To remove a symbol you no longer want in the panel, select the symbol from the list and click Delete.
After setting up a panel configuration using the Panelization > Setup command, use the Create command to generate a
panel for the current design loaded in the application. This command allows you to specify the orientation of the
images in the panel and automatically calculates either the number of image copies in the panel, or a logical offset
based on an arbitrary number of images which you enter.
Note: Click Cancel at any time during the Panel Create to quit this function; however, any panel settings you have
made will not be recorded.
Command Sequence:
1. Select Panelization > Create, or click the Create button on the Tool Bar. The Parameters dialog box appears.
2. The panel size and border spacing are in the upper left corner of the dialog box. As in the Panelization > Setup
command, a preview pane to the upper right displays the current configuration of the panel. This are updated as
you change the panel settings.
3. Specify the units for the panel by selecting the Inches or MMs radio button.
4. Select the desired Image Rotation for the orientation of the panelized images: 0, 90, 180, or 270 degrees
counter-clockwise.
5. Underneath the Image Rotation is the AutoCalculate area. Click the Compute toggle button to specify which of
the major panel elements you would like the command to calculate for you:
l If your selection is Spacing, the command determines the optimal number and spacing for the panel images,
based on the number of copies you enter in the X & Y Copies fields.
l For the command to calculate the number of copies, you are required to enter a spacing value for the multiple
images: Between specifies the spacing between the border of one image to another. Offset specifies the spacing
between the same element in each image, such as their center points.
6. As an alternative to AutoCalculate, the Spreadsheet button allows you to manually edit the exact locations of the
panel images in a text-based format. If you click this button, the Parameters dialog box changes, replacing the
AutoCompute section with a scrollable display showing each Image ID #, Rotation, X-Location, and Y-
Location for the panelized images.
7. You may change any of these values (except ID #) to fine-tune the location of the images.
8. The list of images may be sorted by selecting one of the buttons above each column type.
Pag. 3 di 6
file://C:\Documents and Settings\Amministratore\Impostazioni locali\Temp\~hhBC8B.htm
9. Use the scroll bar on the right side to scan through the images and their associated coordinates.
10. Make modifications to the images by typing new values directly into the associated fields for the image.
11. The Add Image and Delete Image buttons allow you to add or remove images from the panel.
Warning: Changes made in the Spreadsheet mode are not retained if you switch back to AutoCalculate mode.
7. When you are finished, click the Create button to generate the panel.
Use this command to create a venting pattern for your panel. Venting is used to fill in the areas around the design
images in a panel. You must have first created a panel before adding venting patterns to it.
You may create three basic types of patterns, Solid, Hatched, or Dot. (Venting uses the same Raster and Vector fill
modes as the Solid, Hatched and Dcode fill patterns in Add > Polygon). Each venting pattern you create may be
assigned to single or multiple layers in the panel, as well as saved as a file for future use with other panels.
You are given options to fine tune the pattern to suit your panel's particular needs, including spacing distances relative
to all panel data, etc.
Command Sequence:
1. Select Panelization > Venting, or the click the Venting button in the Tool Bar. The Vent dialog box appears.
2. You may set the unit for all venting pattern specifications by selecting the Inches, MMs or Mils radio button.
3. The Vents list box allows you to Add or Remove venting patterns in your panel. Select Add if you wish to
create a new venting pattern.
OR
If you want to reuse a previously-saved pattern, click the Load button and select the pattern .VPT file you wish to
use.
4. The Layers list box allows you to control which layers utilize the venting pattern selected in the other list. It is
possible to have multiple layers assigned to a venting pattern, and different layers in a panel may have unique
patters assigned to them, but only one venting pattern may be associated with any particular layer.
l Click the Add button to select each layer that will use the current venting pattern (a Layer List dialog box
appears, allowing you to select single or multiple layers).
l Click the Remove button to deselect layers from the current venting pattern.
5. Create the pattern specifications. The Offset text boxes allow you to describe the venting pattern's placement on
the panel. (These offsets have a maximum value of 56 inches [~1422mm], unless otherwise noted).
Note: No Partials options is fully supported for both Positive polarity and Negative Polarity venting patterns.
Tip: If you select the No Partials option, you must use Offset From Images and Offset from Symbols values of at least
half the shape's Width to insure the shape does not overlap the image edge. For example, if you choose a round dot
pattern with 0.06 width, the offset values should be at least 0.03.
Pag. 4 di 6
file://C:\Documents and Settings\Amministratore\Impostazioni locali\Temp\~hhBC8B.htm
Offset from Panel Edge is the distance you want the pattern to start from the edge of the panel.
Offset from Images specifies the distance a venting pattern must maintain from each step image in the panel. This
value is in addition to any offset the step image border may have from the actual image data. (May be specified as
a negative value).
Offset from Symbols sets the pattern's distance from any symbols in the panel. (May be specified as a negative
value).
6. Set venting pattern Polarity (positive or negative, depending on the layer its to be used on).
7. The Galvanic check box allows you to set the current venting pattern as galvanic . Galvanic venting creates a
solid border around the data, but does not fill the areas between images.
8. You can edit the venting pattern itself. Begin by selecting the Pattern type: solid, hatched, or dot. New input
fields for pattern specifications are displayed, depending on the pattern type.
The Solid pattern has no settings, and merely fills in all space within the panel that is not excluded by a border
(images, symbols, and any panel border offsets).
For a Hatch pattern, you can use 3 different lines at different angles. Use the check boxes to the left of the line to
deselect/select any you wish to use. Each line allows you to specify the width, step distance, and angle of the line.
For a Dot pattern, you can select two types of Shape Lines (rows of same-shaped Dcodes). Line 1 and 2 alternate.
Select the shape (round or square) and size of the Dcode. The X-Step is the distance between each Dcode on the X
axis, and the Y-Step is the distance between the Dcodes on the Y axis. The X Offset is the offset of the pattern
from the origin, on the X axis.
After you have made edits to the pattern, the resulting changes appear in the preview window to the right of the
input fields.
9. To make a final review of your venting pattern, press the Redraw button below the Layers list. The venting
pattern is displayed on your panel.
10. Once you are satisfied with the format of the venting pattern, click the Save button to save the pattern for later
use in other panels.
11. Click the Default button to select the current pattern as the default pattern. This pattern will automatically be
loaded as the default during each subsequent use of the Venting function.
12. When completed, click OK to finalize the venting pattern, or Cancel to quit the command and abandon your
changes.
After you have panelized your board, use the Panelization > Rotate command to rotate the entire panel.
Command Sequence:
1. While viewing your panelized board in the Panel Editor, select Panelization > Rotate.
Pag. 5 di 6
file://C:\Documents and Settings\Amministratore\Impostazioni locali\Temp\~hhBC8B.htm
2. Select if you wish to rotate your panel 90, 180, or 270 degrees counterclockwise.
The Panelization > Setup command is used to define the Panel Border.
The one-up border for a design serves as a clearance outline in the Panel Editor when panelizing step & repeated
images. In addition, it also functions as a venting border to keep venting from pouring over the stepped images. The
Panel Editor allows you to panelize one-up designs, using the border layer of the design as a clearance border. It is
sometimes desirable to have a border which is outside the actual border layer of the design, to provide a wider area of
spacing around the one-up.
The Panel Border to Layer command allows you to convert the existing Panel Border and optionally one-up borders
for the design to graphics on an existing layer or on a new layer in the Panel Editor. This graphic data can be useful for
creating assembly array drawings.
Command Sequence:
2. The Panel Border to Layer dialog appears. Select the DCODE for rendering the graphics for the Panel Border.
Select either an existing layer or new layer for the Target Layer to which the Panel Border graphics will be
converted. You have a choice to Include One-Up Borders for Stepped Images in the conversion operation. Click
the checkbox to include the One-Up Borders.
Pag. 6 di 6
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Symb...
Symbol Creation
Before you panelize a job, you need to create a library of symbols for use in the panelization process. Symbols
may be created manually in the Symbol Editor, or by automatically converting existing symbols using the
Utilities > Draw To Symbol command. Once created, a symbol may be saved in a symbol library and reused for
a variety of panelized jobs. As a time-saving tool, it is advisable to maintain a library of all symbols used in your
manufacturing processes, rather than recreate symbols on a job-by-job basis.
Symbol Layers
The function of layers in the Symbol Editor is slightly different from that of layers in the CAM Editor. Although
the Symbol Editor workspace and functions appear much the same as the CAM Editor, Symbol layers are
independent of the one-up PCB layers that you work on in the CAM Editor.
Virtual Layers
Because they are designed to be used universally for different jobs, symbols contain "virtual layers" that you
map to "destination layers" in your PCB stackups. Each virtual layer is a layer type rather than a specific layer
number. For example, when using the layer "Top" in the Symbol Editor, this layer represents the top layer in any
design, regardless of where it may fall in the layer stackup for a specific job. When you create a panel, if a PCB
does not have a destination layer which corresponds to a virtual layer, that symbol layer is not used for that job.
It is possible to place symbol data on multiple layers of the same type. Each subsequent layer of a specific type
created in the Layers Table will be denoted by a new layer name of the format "layertype(#th)". For example,
each Internal layer added after the initial one will be called "Internal(2nd)", "Internal(3rd)", etc. in the symbol
layer table. This denotes that the symbol's data will be placed on the 1st, 2nd & 3rd internal layers in the
panelized job (the order being determined by the layer stackup). Symbol data will only be placed if those layers
exist in the design, regardless of how may virtual layers are assigned to the symbol itself.
Destination Layers
Symbol data is targeted at Destination Layers. You can either design a symbol so that all data on each symbol
layer (drill hits, draws, flashes, virtual text, etc) is mapped to a particular destination layer (All Layers of Type),
or you can minimize the number of virtual layers by specifying the destination layer(s) which specific symbol
data elements are added to (All Layers, All Electrical Layers, or the Current Layer). When adding text or other
graphical elements to a symbol, the toolbar gives you the option to select from the destination layers:
All Layers Data will be added to all layers in the PCB, where possible (for instance, drill data cannot be
added to graphic layers and vice-versa).
All Electrical Layers Data will be added to all electrical layer types in the design: top, bottom, internal,
negative and positive layers.
All Layers of Type Data will be added only to layers of the same type that the data was added to in the
symbol. For example: if virtual text was added to a negative plane symbol layer, all negative planes in the
panel would display this virtual text. Use this setting if you are mapping all elements on each virtual layer to
a corresponding destination layer.
Current Layer Data will display only on the layer with the same layer number as the symbol layer the data
was created on. If a series of flashes was added to layer 3 in the Symbol Editor, these flashes would only
display on layer 3 in a panelized job.
Destination Layers may be set when data is first added to the symbol, by using the pull-down selector on the
toolbar, or at any time by changing its destination layer using Edit > Change > Destination Layer in the
Symbol Editor.
Layer Stackup
Before you can place a create a panel you must define a layer stackup . This list of PCB layers is required to
determine which virtual symbol layers will be placed on actual panel layers. Setting the stackup can be done in
the CAM or Panel Editors, under the Tables > Layer Sets > Layer Stackup command. A typical layer stackup
Pag. 1 di 14
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Symb...
may look like this:
If you create a layer stackup first, before creating your symbols, you will notice that the Symbol Editor reflects
this set of layers. you may choose to use this specific set of layers to create your symbol, or you may alter the
set using the standard Edit > Layer commands in the Symbol Editor.
Symbol Anchor
Each symbol has an insertion point, called the anchor, which is used to place the symbol in a panel (through
Panelization > Setup or Add > Symbol in the Panel Editor). As such it determines symbol placement in
relation to the panel border. This anchor defaults to the lower left corner of the data in the symbol. If you wish
to change the anchor, and thus the distance calculation from the panel border, you may do so by using Edit >
Change > Anchor in the Symbol Editor.
Creating Symbols
You can create symbols manually or use the Draw to Symbol command. It is advisable that you run through
both of these sections before moving on to the Panel Creation tutorial, as you will be using the symbols you
created manually in the panel tutorial.
Regardless of the creation method, you will be saving symbols to a symbol library. For demonstration purposes,
you should begin with an empty symbol library. When saving or modifying symbols for this tutorial, use the
blank symbol library "symbols.smb" located where you saved the application, under the ../Symbols subdirectory.
To make sure you are using this library, follow these steps:
1. In the CAM Editor, select File > Setup > Paths: under the Symbol Library button, note the location of the
path for the current symbol library.
2. Click the Symbol Library button and browse for ..\Symbols\symbols.smb under the application's directory.
3. Once the path displays, click OK to accept this as the new symbol library.
7. Select File > Open to check the library - no symbols should appear in the selection box.
8. After you have finished either this tutorial and the Panelization Tutorial, reinstate the original symbol library
by changing the symbol library path to its original directory.
Begin the process by entering the Panel Editor, using Tools > Panel Editor. From there, use Tools > Symbol
Editor to enter the Symbol Editor itself. Notice that the symbol only has two default layers: top layer and a drill
layer (unless you've already created a layer stackup). Your first step in symbol creation is to set the layers for
your symbol:
1. Your symbols should contain all the layers you are likely to need to add to a typical panel setup. You can
always add more layers as needed on a job-by-job basis, but it's best to start out with a "master" set. For
our purposes, create the following set of layers, using Tables > Layers to add and tag the layers properly.
These layers don't need to be in any particular order, but for the purposes of this tutorial, reorder them using
Edit > Layers > Reorder until they appear as below:
Note: These are primarily electrical layers, with the exception of the mask and silk layers, which can be used
to create test coupons.
2. When creating any type of symbol, you must specify the clearance border for the symbol. This border is used
to protect the symbol data from other elements on the final panel, such as venting patterns. The border is
closed polygon in shape and typically encompasses all the data in the symbol for it to be protected from
venting, etc. In the manual creation process you may draw a border using the Add > Border command. If
you find the border doesn't meet your size needs further down the process, you may change the border at
any time by reselecting the command and drawing a new border - the old border is discarded.
NOTE: You can use symbols to create venting keepouts. Further, if desired, you can specify a symbol border
so that the symbol is not protected from venting.
Pag. 3 di 14
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Symb...
Pinning holes (or tooling holes) are used to hold the finished board for NC machine processing, etc. They are the
most basic symbol, consisting of a drill tool hit, a mask clearance, and a symbol border.
1. Use the Add > Drill command to add a drill hit at the desired location. You may specify the size of the
tooling hole by selecting the Drill Spec button on the toolbar: specify a tool size of 185 mils. (see Add > Drill
for more information)
3. If you have not already done so when you set up your symbol layers, add mask layers to the symbol layer
table.
3. Use Tables > Apertures to create a mask aperture. This Dcode should be of the appropriate size to
clearance the tooling hole (typically 30 mils larger than the drill tool being used): create a 215 mil round
aperture.
4. Turn on only the Mask Top layer and add a flash at 0,0 with the new Dcode. Do the same for the Mask
Bottom layer.
5. Using Add > Border, you may now add a symbol border to your tooling hole. Add a border square
approximately 50 mils offset from the sides of the mask clearances you made. Alternatively, you may wait
for the system to assign a border when you Save the symbol. When you first save a symbol, a border is
assigned to it, at a given clearance distance. However, it's best to use Add > Border if you have a specific
clearance distance requirement for your symbols.
Pag. 4 di 14
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Symb...
1. Select File > Save Symbol. Type the name of your new pinning hole in the text box above the symbol list
(use "pinhole"). Select "Pinning Hole" as the type from the Save Symbol As radio buttons.
Title Blocks display job and layer information for each layer in the design. They are often used for film
identification purposes.
Title Blocks are an excellent place to learn the use of Variable Text . There are pieces of information that you
will be called on again and again to add to layers in the panel: job number, date, revision, etc. You can
automate this process by adding Variable Text to your symbols. Variable Text functions as a variable name in
the symbol itself (ex: "revision"), but once the symbol is added to your panel, this variable can be defined in the
Panel Editor (under Tables > Variable Text) - the new information will replace the variable name in all
symbols that use that variable text in the panel. This is a handy way to update all Title Block symbols to list the
Date the job was run, for instance.
Note: Due to its use as a "variable", Variable Text cannot contain commas, periods, spaces, or carriage returns.
If you wish to demark two words for your variable text, use an underscore: ex - "job name" should be called
"job_name".
1. Define the contents you need to display in your Title Block. For this exercise, use the following list: job
number, revision, date, layer number and layer type.
2. Select Add > Border to create a symbol border. For a Title Block you want a border which will leave enough
space for the text definitions which will replace the Variable Text terms: once placed in a panel, a symbol
border does not grow with the symbol's contents, so very long terms may overrun the border and be at risk
of being vented over. For this tutorial, use a 1" x 3" border with the symbol origin at the center of the
rectangle.
3. Add a 5 mil round aperture to the Aperture Table, to use for the Variable Text.
Pag. 5 di 14
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Symb...
5. You can use the Style button on the toolbar to set the text style & font, as you can with the normal Add >
Text command. Set the variable text height to 100 mils.
6. Now add your variables: space each variable out to allow room for those which will take the most room.
7. As you are placing them, specify the name and set the Destination Layer for each, using the toolbar pull-
down:
* Since layer numbers and layer types will be added to specific layers, you must customize the Variable Text
for each layer they appear on. Layer number should be placed as "layer_no_top", "layer_no_int",
"layer_no_neg", etc. for all electrical layers. Turn ON only one electrical layer at a time and add the variable
appropriate for that layer.
Tip: add layer_no_top to the top layer and use Edit > Copy to copy it to each subsequent electrical layer.
Then use Edit > Change > Variable Text Style & Contents to rename the variable for each specific layer.
Follow the same procedure for layer type.
When completed, your Title Bar should look something like this:
8. Use File > Save Symbol As to save your Title Block as symbol "title_block". Be sure to check the correct
symbol type in the save dialog.
Coupons are used for testing various aspects of the manufacturing process, including drilling and plating. They
may contain NC drill hits, lines, flashes, etc.
The most important aspect of some coupons is the Drill Sequence . A Drill Sequence represents a series of
virtual drill tool hits. These drill tools comprise specific sizes, or ranges of sizes, that are replaced by the
equivalent tools from the job being panelized when the coupon is placed in a panel. In this manner you can
place representative drill hits from a wide selection of drill tools in your job.
Drill Sequence drills are defined by the Sequence Spec button: a dialog box opens, giving you the settings for
the first and last drill tools in the sequence. You have the option to set the first and last hits to smallest tool,
largest tool, tool size or tool number:
Tool size gives a set size to use: if no tool of this size exists, one will be created and added to the panel's
drill table.
Pag. 6 di 14
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Symb...
Tool num gives a specific tool number (useful if you always have a set tool table).
In addition, smallest and largest have several subsettings. You can set the minimum size that each must be
above/below: for example, setting the largest tool with a minimum size "smaller than" 150 mils might be useful
for ignoring any pinning drill tools in the table. You may set a range where the smallest/largest falls in the table,
using the drop-down list: this allows you to specify a tool that's a set amount up or down the tool table.
For example, say you set the First drill in the Drill Sequence to "smallest" tool and then select "3rd smallest"
from the drop-down list. If you were to use this coupon in a job with an NC table containing 20 mil, 50 mil, 60
mil, 80 mil, 120 mil and 135 mil tools, the first drill tool in the sequence would be the 60 mil tool, or the 3rd
smallest in the table.
Note: Drill Sequences are "virtual" in that they will display a series of equal-sized hits in the Symbol Editor. In
reality, these hits will be of varying sizes in the finished panel. In the panel, these drills will be spaced evenly
with a set distance separating them. You must account for the expected size a drill sequence will ultimately take
up when creating your symbol border. Otherwise you run the risk of the drills being outside the border and thus
potentially drilling into venting patterns, etc. outside this clearance area. See Add > Drill Sequence for more
information.
1. Use Add > Drill Sequence to add all desired drill sequences to the coupon:
2. For your example drill coupon, add one sequence: from smallest to largest tools (horizontally from left to
right)
3. Add > Border to place a symbol border around the coupon. Again, leave additional space around the ends of
the sequence to account for the ultimate tool sizes which will be placed there in the panel. When finished
your border should look like this:
4. Add a solder mask clearance for the drill sequences: turn ON only the appropriate mask layer.
5. Use the Add > Polygon command to add a clearance polygon on that mask layer. Select three of the
corners of the border, in sequence, and then click your right mouse button. The command will close the
polygon, creating a rectangular mask clearance.
Pag. 7 di 14
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Symb...
7. Use File > Save Symbol As to save your Coupon as symbol "firstlast". Be sure to check the correct symbol
type in the save dialog.
Fiducial Symbol
Fiducials are alignment markers for collating or comparing plotted film. These can include shapes such as
targets, rounds, etc. to form a unique identifier. They are a very basic type of symbol, but care must be given
to their use on negative planes - each symbol must contain a positive fiducial for use on electrical layers which
are plotted positive (top, bottom, internal) as well as a reverse-image fiducial for layers which are plotted
negative (negative and positive planes).
1. Create the aperture or drawn data you wish to use as the fiducial. Tables > Apertures allows you to select
from a number of intrinsic apertures - if these do not meet your requirements you may use the Add Menu in
the Symbol Editor to generate drawn data approximating your fiducial.
2. You may generate a custom aperture for unusual fiducials. This is a recommended procedure when you have
unique fiducial shapes that require reverse images for negative planes. For our example fiducial, use the CAP
Editor: to access it, click the Return To Panel Editor button on the toolbar, and select Tools > CAP Editor
there.
3. Once in the editor, first create the positive fiducial image. It is recommended you set the grid to an even
working distance using the toolbar: switch to a 10:10 grid.
4. Select Add > Circle > Center Radius to add a 40mil circle at the origin
5. Then add an arc with a radius of 70 mils (close the arc to create a full circle)
6. You need to add an outline for the custom aperture: use Add > Line. Set the width of the line on the toolbar
to 1mil and draw a square around the fiducial elements (at 80mils from the origin).
Pag. 8 di 14
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Symb...
8. Now you may create the negative version of this fiducial. First, use File > New to clear the other CAP.
9. Add a positive polygon at 80 mils from the origin: this will serve as the CAP outline clearance when the
negative layer is plotted.
14. Return to the Panel Editor, and then to the Symbol Editor.
15. Add the CAP's you've just created to the Aperture Table (note their Dcode numbers).
Pag. 9 di 14
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Symb...
16. You're ready to place the CAP's for your fiducials, on the following layers:
Top & Bottom layers - add a flash using "fidpos", setting the Destination Layer to Current Layer
Negative & Positive Plane layers - add "fidneg" to these layers, setting Destination Layer to All Layers of
Type
Add mask clearance for these fiducials to the Mask Top and Mask Bottom layers: create a rectangular
polygon tracing the edges of the CAPs you've just added (an 80 mil square) using Add > Polygon
Pag. 10 di 14
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Symb...
17. Use File > Save Symbol As to save your Fiducial as symbol "fiducial". Check symbol type Fiducial in the save
dialog.
You have now created one symbol of each major type. To review your symbols, select File > Open in the Symbol
Editor. Note that there are now 4 symbols in your symbol library. If you close the application and reopen it, the
symbols will still be present in the selection list, as they are now permanently part of your library.
If you should ever need to delete a symbol from your library, click on the symbol in question in the selection list
and click on the Delete button. Click Cancel (not OK) to delete the symbol. Now use File > Save Lib to save the
new library.
You are ready to begin using your sample symbols in the Panel Creation tutorial.
In addition to the manual method of creating symbols, you may also take existing graphical data and convert it
to a symbol. This allows you to use any existing symbols which you've created for use with previous versions of
the product. It is not a 100% automated process, however, and you will still be required to set up the new
symbol for use.
Depending on the old-style symbol which you created, the steps described here may only apply to parts of your
symbol. We'll be starting out with a typical drawn coupon and following the conversion process. The process is
similar for other types of coupons you may be using (pinning holes, title blocks, etc) - refer to the manual
symbol creation instructions for a sense of how these symbols are constructed in the Symbol Editor.
Begin by opening the file ..\Symbol\symbol.cam in the applications directory. Note that this is a drawn Coupon
symbol with multiple layers of information. This is typical of a symbol which is saved as a separate .cam file and
intended to be merged into the panelized job using File > Merge. Toggle through the layers (either manually or
using the showeachlayer.scr macro) to familiarize yourself with the format of the symbol on each layer type:
Pag. 11 di 14
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Symb...
Top & Bottom use positive images for the coupon draws and flashes. Negative and positive planes use test
polygons, etc. which are mirror opposites of each other in polarity, owing to the fact that the negative plane will
be plotted with the opposite polarity. A border layer consisting of some 10 mil lines would have served as a
clearance border for venting patterns, if copied to all the layers which were vented. Finally, the NC Primary layer
shows the test plated drills used in the coupon.
The first step in the process is to convert the existing data to a symbol.
2. If you have not already done so, you will be prompted to create a layer stackup. Add all current layers to the
layer stackup. These will correspond to the symbol's virtual layers in the Symbol Editor:
3. You may now select the data to convert to a symbol. If you intend to convert only some of the data in your
old symbol to the new symbol format, you could turn off all unnecessary layers at this point, or choose to
select individual data in the symbol, using the standard Edit Menu grouping commands.
Pag. 12 di 14
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Symb...
For this tutorial, however, we will be converting the entire drawn symbol, so click on SelectAll. All drawn data
will highlight.
6. Type a name for your new symbol in the top field: use "manual_coupon"
8. Under Layer Treatment, you may now select the type of layer this symbol's data will appear on in a panelized
job. If you were converting a single layer of data, instead of multiple layer types worth, you could select All
Layers or All Electrical Layers. Since the layer types in this symbol each have unique data, you are better off
selecting All Layers of Type or Current Layer: for our purposes, select All Layers of Type.
9. The Spacing field controls the distance the symbol border will be generated from any graphical data in the
new symbol. This border serves as the clearance border for vent patterns, etc. Leave the default at 50 mils.
10. Click OK. Your new coupon has been converted. Right click to end the Draw To Symbol command.
The conversion process is automatic, but you may need to change some of your new symbol's Destination
Layers, etc. To do so, you'll need to edit the symbol in the Symbol Editor, which is accessible by using Tables >
Panel Editor from the CAM Editor, and then using Tables > Symbol Editor.
Notice the symbol editor layer bar now includes all of the layers in the Layer Stackup you created. Open your
symbol by selecting File > Open: select "manual_coupon" from the list and hit OK. The coupon you converted
will display:
Data have been added to all layers in your stackup. Toggle through the layers to make sure all data appears
correctly on the appropriate layers.
Symbol Border
Pag. 13 di 14
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Symb...
1. Notice that the symbol now displays a white border around all of the data, offset 50 mils from the graphics -
as you specified. This symbol border makes the data on the symbol's actual border layer superfluous.
Remove the border layer using Edit > Layers > Remove.
2. If you want to change the size of the symbol border itself, you may do so by using Add > Border to draw a
new rectangular border for the symbol. The old border will remain as a reference guide until you right click to
OK the new border.
1. To change the Destination Layer of any data in the symbol, simply turn ON only that layer.
2. Use the Edit > Change > Destination Layer command to specify a new target layer for the data.
For example, select the data on the internal layer (layer 3). Use the Edit > Change > Destination Layer
command and pick SelectAll on the data. (Notice you may also use the toolbar check boxes to select only
draw or flash information if you choose).
4. Specify the Destination Layer: in the dialog box, choose "Current Layer" from the drop-down list. In this
case, the internal layer's symbol data will now only appear on layer 3 in your panelized job.
Adding Layers
1. You may need to add additional virtual layers in your symbol, to account for additional layers you anticipate
in your job.
2. Add layers in the Symbol Editor just as you would in the CAM Editor, but note that these layers are virtual, as
described above: each additional layer of the same type will be labeled as "layertype 2nd", "layertype 3rd",
etc.
Adding Data
1. You may add data to these new layers (or existing layers) by copying the existing data from another symbol
layer, using Edit > Copy.
2. Additionally, you may add new symbol data manually, using the available graphic options in the Add Menu
(flash, line, etc).
Once you have made all the necessary edits, save the modified symbol using File > Save Symbol, or Save
Symbol As (if you wish to change the name). The symbol is now stored in your project library and can be used
immediately in panelizing a job. If you wish to save the symbol permanently to your symbol library, for use with
all future jobs, use File > Save Lib.
Pag. 14 di 14
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
Panel Creation
The Panel Editor allows for the fast creation of efficiently-panelized designs, complete with test coupons,
registration holes, vent patterns, title boxes, etc. (generated using the new Symbol Editor) The original one-up
design, and the panelized result, are separate entities that can be manipulated at any time before, during, and
even after the process.
This tutorial provides you with an overview of how to use the Panel Editor. Each setup you create may be
saved as a file that can be used to panelize subsequent jobs. Multiple panel formats can be saved for later
execution as "one button", fully-automatic routines. Or you can chose to prepare individualized panels on a job
by job basis: the flexibility exists for both approaches.
Note: It is highly recommended you read and complete the Symbol Creation tutorial before reading this
tutorial, as a number of the symbols created in the Symbol tutorial are used to set up your example panel.
Creating a Panel
Panelizing a Job
Creating a Panel
A panel can be generated using the Panelization Menu commands in the Panel Editor. Each menu command
controls a specific area of the panel, from setting up the panel's physical layout to actually generating the
panelized images and creating the venting patterns. The panel setup may be reconfigured at any time, even
after panelization has occurred.
Setup Symbols
Before beginning a Panel Setup it is advisable to create all the symbols you are likely to require in your panel
(s). Symbols, such as coupons, will be placed at fixed locations in the panel during a panel set up. They may be
placed on an individual basis when, you actually panelize a job (using Add > Symbol), but it is generally
preferred you have a symbol library available for the variety of panels you are likely to need to set up: most
shops have a fixed set of symbols they use for their panels.
If you completed the manual symbol creation section of the Symbol Creation tutorial, you will already have a
symbol library to draw from for this tutorial.
Setup Panel
It's best to begin a fresh panel setup with no database loaded in the application. This will give you a blank slate
to work on. Enter the Panel Editor using Tools > Panel Editor. In the editor you will notice a number of similar
functions to the CAM Editor - this is intended to give you much of the functionality of the main editor for all
panel-level data. Note that panel data includes such things as symbols, venting patterns, etc, but doesn't not
include the data (draws, flashes, drills, etc). in the one-up image you are panelizing. Once in the Panel Editor,
you will not be able to make edits to the database itself without a) exiting to the CAM Editor (all changes there
will reflect in the Panel Editor) or b) exploding the Panel using Edit > Change > Explode > Flatten Panel
(once you explode a panel, however, there is no recourse! The panelized data will lose its panel intelligence and
become one-up data, not step & repeat images).
Inside the Panel Editor you will notice 3 buttons on the toolbar: Setup, Create and Venting. (These commands
are also available in the Panelization menu). These buttons show the basic steps needed to panelize a job. .
Begin by clicking Setup.
This tutorial does not exhaustively cover each individual command in the Setup dialog, but will go over all the
required steps to make a generic panel setup. For more information, see Panelization > Setup.
You will need to set the panel size for your generic panel. Size may be set as a function of the specific boards
your shop receives, or as a general size for all jobs. The Size Tab allows you to set this information, as well as
the spacing clearances for all step & repeat data in the panel.
Pag. 1 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
1. Set the panel size to 12" x 12"
2. Border spacing controls the minimum distance step images will be created from the panel border. Set this
value to 2"
If you want to custom tailor this border spacing for your panel, check the Advanced box and enter spacing
values from all four sides of the panel.
3. Set the image spacing value to .5". This controls how close step images may be generated in a panel,
allowing you to maximize the panelized images or leave adequate clearance for venting patterns. Your panel
will now look like this:
Note: Use the checkbox Automatically Update FilmBox to keep the Film Box definition in sync with the
Panelization box definition. The default is to keep the Film Box and Panelization Box matched. If you chose
not to keep the Film Box and Panelization Box in sync, you can use the Edit > Change > Origin commands
to manage the panel origin and film box origin separately. Use the File > Setup > Film Box command to
define the size and location of the film box.
Pinning Holes are the most basic Symbol used to set up your panel. Each fabrication shop typically has its own
pinning hole unique to its production processes. For our purposes, set up a generic series of holes, as outlined
below:
2. Click the Add button to select a pinning hole Symbol to use in the panel. Use the symbol "pinhole". This is
available in the Symbol tutorial library (this library should already be set in your application from the Symbol
Creation tutorial; if not, see the tutorial for how to specify the symbol library to use).
3. Now you'll need to set the placement points for the pinning hole you're adding. You may set these as
absolute or relative coordinates from the edge of the panel. Use the coordinates for the first pinning hole
below, then use Add again to insert an additional 4 holes, at the given coordinates:
Relative coordinate mode allows you to set the pinning holes a given distance from the edge of the panel,
regardless of the panel size - the symbols will move automatically should you change the size.
Pag. 2 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
Note: You can also set the rotation of each pinning hole by using the Rotation drop-down list. However,
rotations are limited to 90 degree increments and may only be useful for special pinning hole designs.
4. Pinning holes may be added as Primary (plated) or Secondary (unplated/tented) drill hits by checking the
appropriate box. When done, your panel preview should look like this:
Add Fiducials
Fiducials are required for film alignment/collation. The process and commands are essentially the same as for
Pinning Holes, with the exception of the drill settings - fiducials have no drills, so these commands do not apply
to them.
2. Click the Add button to select a fiducial symbol to use in the panel: use "fiducial" from the symbol library.
Hole #1 Hole #2
x7", y1" x5",
y11"
Pag. 3 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
The Title Block tab is used to enter your title block. Commands are the same as for Pinning Holes and Fiducials,
again with no need for a drill option. The title block in our sample panel will be offset from the lower left corner.
2. Click the Add button to select a title block Symbol to use in the panel: use "title_block".
3. Place your Title Block at x2.5", y1.4". When done, your panel preview should look something like this:
Add Coupons
Finally, add the coupon(s) required for your panel. For our example panel, we will use one drill coupon, offset
from the lower right corner.
2. Click the Add button to select a coupon Symbol to use in the panel: use "firstlast".
3. Place your Coupon at x11", y3". Select Primary from the NC Layer check boxes, to make sure these drill hits
will be plated hits.
4. In this case, we also need to rotate the coupon to avoid overrunning the step images: use a 90 degree
rotation. When done, your panel preview should look something like this:
Pag. 4 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
Save & Load Panel Setup -
Once you've verified that all symbols have been added correctly, it's time to save the final panel. You can save
any number of panel setups in the application directory, under the *.pan extension. These setups can be loaded
for any design you wish to panelize. You may make case by case adjustments to the setups as necessary, and
still be assured that you have a clean copy saved for future jobs.
1. Click the Save button. The Save Setup As dialog box appears with a list of all current panel setups.
2. Type a setup name in the top field (it isn't necessary to add the .pan extension - the system will assign it
automatically) or select a previous panel setup from the list, if you wish to overwrite it. For this tutorial, add
the new panel setup as "tutorial.pan"
3. You may now test the saved setup by exiting the Setup dialog and reopening it. Notice the dialog box still
shows the current setup you were working on.
5. Click Load and select "tutorial.pan". The size values you changed will be overwritten by the saved panel
setup.
Panelizing a Job
Now that you've created your basic panel setup, you're ready to begin panelizing a job. Panelization involves
adding the desired step images to your panel, as well as setting up venting patterns and exporting the final
result.
It is assumed you know how to import and prepare standard Gerber files. If not, refer to the Import > Gerber
Data and Tables > Layers commands to import and tag your files properly. To panelize a sample design in this
tutorial, please use either the sample Gerber files located in the application's Demos directory (use must import
& prep these), or use the sample .CAM database, preview.cam, under the same directory (this file has been
prepped).
In addition to the normal file preparation, you must set some panel-specific items:
Panelization Anchor
Each step image in the Panel Editor has a "handle" or anchor which will be used to place the image in the panel,
as well as calculate rotations, etc. This anchor point is set in the CAM Editor, using Edit > Change > Origin >
Panelization Anchor. You may assign the point anywhere within the one-up image. The anchor point appears
on screen briefly to show you its new location, but disappears after you exit the command.
You only need to set the anchor point if you want to change its default location - if no new anchor is set in the
CAM Editor, the origin point (0,0) is assumed to also be the panel anchor in the Panel Editor. For our purposes,
leaves this as the default.
Pag. 5 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
One-Up Border
In addition to an anchor, each step image has a "border" which acts as the outline when calculating panel
spacing between images, as well as protecting the step images from venting patterns. This border defaults to a
rectangular shape around the extents of the one-up image in the CAM Editor (visible as a bounding box in the
Panel Editor).
If you have a complex board outline you wish to use for this purpose, you can set the border to a specific shape
using the Utilities > Draw To One-Up Border command in the CAM Editor. The command allows you to select
any continuous line on the database's "border" layer as the one-up border. In the case of preview.cam, we'll
stick with the default border.
Layer Stackup
The layer stackup controls the placement of symbol data on specific layers in your panel. If you don't select a
layer stackup for your job, you will be prompted to enter one before you can create your panel. It's a good idea
to get into the habit of setting your layer stackup prior to entering the Panel Editor, using Tables > Layer Sets
> Layer Stackup. If you do forget, you may also set the layer stackup under the same command in the Panel
Editor, at any time prior to panelization. A typical stackup may look like this (use this for preview.cam):
While working on a panel, you have a few options on how to display the step images contained in the panel. As
a default, step images appear as a rectangular box with the number of the step image inside. This indicates that
step images themselves cannot be edited in the Panel Editor (you cannot change the contents of a step image).
If you'd like to get a more visual representation of the step images, in the Panel Editor you may select Settings
> View Options > View Circuit Images, which displays all internal data in each step image. This gives you a
better feel for how the data in each image orients compared to its neighbors.
However, on larger step images, this amount of graphical data in the panel can slow redraw times significantly.
In those cases you may select the BitBlt Circuit Images view option under the main View Circuit Images option -
this will redraw step images in a much faster mode. The trade-off is in accuracy: while the normal mode displays
all data as it exists in the step images, this mode is less graphically accurate, depending on screen resolution,
etc., so is better suited for getting an overview of the data, rather than a 100% accurate image.
Once you've prepared the database, you're ready for panelization. Go to the Panel Editor and select the Setup
button from the toolbar or Panelization > Setup from the menus. You'll be loading the sample panel you
created, so hit the Load button and select "tutorial.pan"
If you needed to make adjustments to the panel setup (increase panel size, etc). you can make those changes
now. For this tutorial, leave the setup as is, and exit the dialog.
Pag. 6 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
NOTE: CAM350 supports alternatives for importing Panel Template data. In the Panel Editor, you are able to
import Gerber data using the File > Import > Gerber Data command. You can import drill and mill data using
File > Import > Drill Data and File > Import > Mill Data. Further, you can merge panel data template
using the File > Merge Panel command.
Create Panel
The Create command places the step images in the panelized job, much as the old command Utilities >
Panelization > Panelize did in previous versions of the software, but allows more flexible control over the
images.
You can choose to allow the system to calculate some of the values in the panel: either 1) the image offset
values, or 2) the number of step images in the panel. Unlike the old command, you can specify rotations for the
images, or use SpreadSheet mode to have complete control over the placements of each individual step image.
Note: When switching between AutoCalc and SpreadSheet modes, be aware that all changes you made in one
mode will be discarded when you switch to another mode! You cannot return and expect your previous values to
remain.
AutoCalc Mode
By default Create operates in AutoCalc mode, in which the system generates some of the values in the panelized
job. As noted, these are the between/offset values for the images, or the number of step images in the panel.
Rotation will allow you to change the orientation of the step images, but only works on all step images and only
in 90 degree increments.
1. Determine if you wish to have the system calculate Panel Size, Border Spacing, Image Spacing or Number of
Copies and select the appropriate Compute radio button.
2. If you selected Copies, you will need to fill in the Spacing information:
Between Select the x & y spacing between the panelization borders of the step images
Offset Specify an offset distance between the data in the step images themselves (i.e. trace to trace)
4. If you had selected Copies, you would have specified the number of copies in the x- & y-axis: the results of
your selections appear in the panel preview.
5. You may also set the angle of the step images. Click on the 90 degree radio button and notice how the
Pag. 7 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
images all rotate to the new position. (In this case the rotation doesn't yield any extra step images in the
panel).
6. If you need to make any adjustments to the panel Setup, click the Setup button - this brings up the Setup
dialog box, where you can make changes as described in the first section of this tutorial.
7. When you have set all the step image values, click the Create button to generate the panelized job:
SpreadSheet Mode
Spreadsheet mode allows you complete control over the placement of step images in the panel, but requires
more finesse than AutoCalc mode. You must set the x,y placement of each step image individually. You can set
each image's Rotation to any angle, though you will need to keep an eye on superimposing one image over
another accidentally.
1. SpreadSheet mode displays a table of the current images in the panel. You may set the values for any of the
image's characteristics by typing in the appropriate field. All coordinate values are absolute from the panel
origin (always the lower left corner of the panel). As a demonstration we'll be changing step images 1-4 in
this tutorial panel.
image 2 - leave the rotation, but set the spacing to x 3.9", y 2"
Pag. 8 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
2. Notice the orientation change did not give more space in this case, as the step images were only
reorganized. However there will be many cases where turning the images will free up additional space on the
panel for more step images.
In those cases, you can use the Add Image button to add additional images to the table: you will need to set
the rotation and location of the new image as you did for the others.
3. If you wish to decrease the number of step images in a panel, use the Delete Image button. A selection
dialog appears in which you can select individual or multiple step images (using the Shift or Ctrl keys) for
deletion.
Pag. 9 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
The next step is to define any Variable Text in your panel's symbols. Variable Text is a form of variable name
that you can replace with information in a panelized job. See the Symbol Creation tutorial for more information
on this topic.
1. Select Tables > Variable Text. The dialog will show all currently-defined variable text in the left-hand
selection list. You should see a list of all the variable text in the Symbol "title_block":
Note: preview.cam has no internal or positive layers. Therefore you do not need to fill in the Variable Text
pertaining to these layer types - symbols contain all potential Variable Text, even those variables used on
layers which don't exist in the current job. These entries cannot be deleted, as they are part of the original
Symbol's layout.
2. Fill in all the pertinent Variable Text in the dialog. Click on the text in the left-hand selection area and the
definition area to the right will activate.
Simply click in the definition area and begin typing your text. Use these values:
3. Once you finish entering all of the Variable Text values, click OK to save the entries. All the Variable Text
contained in the title block will now be updated to the new definitions. Turn on layer 1 (top layer) for
example and view the results:
Each Variable Text entry has been replaced with its new definition. Toggle through the layers to make sure
all variable text is as you want it, and go on to the next process.
Add Venting
Pag. 10 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
You will now be adding venting to your panel. The Panel Editor make allowances for most major venting styles
and gives you complete control of each vent pattern on a layer-by-layer basis. Venting patterns may include
solid vents, dot-pattern and hatched vents, as well as robber bars to equalize the copper balance.
Positive Venting
This type of venting should be used on all positive layers (top, bottom, internal, etc). In preview.cam we will be
adding positive venting to the top and bottom layers.
Note: If you want your pattern to vent up to the border of each step image, be sure to set the one-up border as
described above.
1. Select Venting. Notice you have a choice of units to work in: Inches, MMs, or mils. Select mils.
2. In the upper left, under Vents, use Add to enter a new venting pattern.
Offset from Panel Edge controls how close the venting will come to the edge of the panel. Set this value to
2000 mils (same as our panel border spacing - 2").
Offset from Images determines how close venting comes to step images. Use 50 mils - we want to get
relatively close.
Pattern This drop-down list allows you to select a dot, hatched, or solid pattern. Pick Dot. Notice the Polarity
field highlights and a spread sheet for setting the pattern is opened.
No Partials This check box determines if the vent pattern will include only whole dots. If this is selected the
venting pattern for the layer will be generated as a polygon - much the same way venting was created in
older versions of the application - leaving clearance areas around each step image's border. For our
purposes, leave this unchecked.
Tip: If you select the No Partials option, you must use Offset From Images and Offset from Symbols values
of at least half the shape's Width to insure the shape does not overlap the image edge. For example, if you
choose a round dot pattern with 0.06 width, the offset values should be at least 0.03.
Spread Sheet The dot pattern spreadsheet is set to the default pattern, using a 60 mil round aperture.
Leave these default values, but change the shape used to Square with the drop-down list.
4. Add the layers that will use this venting pattern: in Layers selection area (lower left), use the Add button and
select the top and bottom layers from the Layer List dialog box which appears. Your final venting pattern
should look like this:
Pag. 11 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
6. Turn on only layer 1 (top). The venting will appear like this:
Robber Bars
Robber bars (or galvanic vents) are often added to top and bottom layers to balance the copper between them,
preventing over etching from occurring. You'll need to determine the existing copper balance before attempting
to fix it using robber bars. This can be done using the Analysis > Copper Area command. Once you've
determined that information, you can either calculate out the needed copper to be added, and determine the
subsequent size of the robber bars to add, or do some trial and error additions of robber bars until the balance is
Pag. 12 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
met.
For our purposes, you'll be adding a fixed bar size, assuming the design you're panelizing has no significant
copper difference between the two layers.
3. Select the Pattern first: pick Solid. Notice that the Robber Bar option appears in the upper right, and the
Polarity dropdown list is grayed out. Click the Robber Bar check box.
Offset from Panel Edge controls how close the venting will come to the edge of the panel. Set this value to
1000 mils.
Robber Bar Width Notice that this field has changed from the "Offset from Images" settings. It now
determines how wide the robber bar being added is. Set this to 1000 mils, or a 1" robber bar.
5. Under Layers, select top and bottom from the list. Your final Robber Bar pattern should look like this:
6. Click OK. The top layer will now display the robber bar at the edge of the previous venting pattern:
Pag. 13 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
Notice how the bars clearance around all Symbols - the symbol border protects the symbols from venting
patterns.
Negative Venting
Negative venting is used on all layers which will be plotted with reverse polarity (negative planes). You will be
adding this venting to the two negative layers in the design.
As with positive venting, setting the one-up border allows you to vent to the exact shape of the board's outline.
Negative layers should take advantage of the Offset command to stagger their venting patterns, allowing them
to interlock and perform better venting.
2. In the upper left, under Vents, use Add to enter a new venting pattern.
3. We will add the negative venting for the first negative layer in the database (layer 2):
Spread Sheet You can set the hatch-pattern spreadsheet to any desired combination of hatched lines (again
Pag. 14 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
similar to old versions of the application). Set the hatch pattern to a single 45 degree line: Width 200 mils,
Step 500 mils, and Angle 45 degree.
4. Under Layers, select only layer 2. The first hatch pattern is done.
5. Create the second, offset hatch pattern for layer 3. The settings are the same as above, with these
exceptions:
Pag. 15 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
8. The patterns are not complete yet. They appear correct since they are displayed in positive mode. Use the N
key to toggle each layer's polarity and you'll see the hatch patterns have created dead-ends for the venting
just at the border offset of the panel. To fix this, you must add positive venting where the hatched venting
meets the border offset zone, creating a flow area for the venting. To do so, place a Robber Bar on both
negative layers, with these settings:
10. Click OK. The new robber bars will appear positive, but using the N-key you can see they created the desired
clearance area:
Pag. 16 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
Save Database
Before you begin exporting files, it's a good idea to Save your design as a .CAM file. This assures all panel and
symbol information used in your panelized job will remain with the original design - you can refer back to
the .CAM file to make any changes to the panel without having to start the panelization process over again.
You may save your file in the Panel Editor by using File > Save PCB or File > Save As PCB, or exit to the CAM
Editor and save it as you would normally.
In the Panel Editor, if you wish to overwrite the original preview.cam file (not recommended), select File >
Save PCB. Skip this step, as you should retain the original preview.cam file for other demonstration purposes.
OR
Use File > Save As PCB, which functions the same as the File > Save As command in the CAM Editor. The
Save As dialog appears and you are prompted to enter a name for a new file: use "preview_panel.cam"
Export Panel
Once you have completed the panel creation process, it's time to export the files for plotting. There are several
export options in the Panel Editor. Once you have panelized a job you may export it as individual files (Gerber
data, composites, drill & mill data), or as a complete panel to some CAD systems (DXF, ODB++, GenCAD).
Export Gerber
Exporting a panel as Gerber files is essentially the same as exporting individual layers using the standard File >
Export Gerber Data command. Refer to the File > Export Panel > Gerber Data command for details, with
the following caveats:
Pag. 17 di 18
mk:@MSITStore:C:\Programmi\DownStream%20Technologies\CAM350%2010.1\camnt95.chm::/Tutorials/Panel_...
Panel Gerber layers will be flattened on export: all symbol and panel data will be exploded and exported as
normal Gerber data, while the step & repeat codes for the step images themselves will be retained (if
exported in a Gerber format other than 274D). If you reimport these files, you will not get an intelligent
panelized database, as you do by saving the .CAM file.
Layers containing venting patterns will be exported as composites. If imported back into the application,
they appear as multi-layer composites, which must be viewed using View > Composite or Tables >
Composites.
Export Composites
If your panel contains any composites from the original one-up design, you must export these using File >
Export Panel > Composites. Again, this command is essentially the same as the CAM Editor equivalent, with
the exceptions noted above.
NC Data files are exported in the same fashion as they are in the CAM Editor, with the exception that the
drill/mill files will contain any panel drills (from symbols, etc), as well as all drills used in the step images of the
panel.
Refer to File > Export Panel > Drill Data & File > Export Panel > Mill Data for details.
Export DXF
Export ODB++
Pag. 18 di 18