An Introduction to the Scheme Macro
Language in TracePro
Presented by :
Lambda Research Corporation
25 Porter Rd.
Littleton, MA 01460
www.lambdares.com
Moderator:
Andy Knight
Technical Sales Manager
Lambda Research Corporation
Presenter:
Dave Jacobsen
Senior Application Engineer
Lambda Research Corporation
Format
•A 25-30 minute presentation followed by a 10-
15 minute question and answer session
•Please submit your questions anytime using
Question box in the GoToWebinar control panel
An Introduction to the Scheme Macro
Language in TracePro
Presented by :
Lambda Research Corporation
25 Porter Rd.
Littleton, MA 01460
www.lambdares.com
In this webinar you will:
•Gain an understanding as to what the Scheme macro language is and how it
can be used in TracePro
•Discover how you can use the Macro Recorder in TracePro to “write” Scheme
macros without having to write anything
•Learn how to use the Scheme macro language to automate and simplify tasks in
TracePro, such as repetitive raytraces and saving data
•Watch a demonstration on how to use a Scheme macro to move the sun around
a solar concentrator in a TracePro model and automatically save the results
In this webinar you will:
•See an example on how to use the Scheme macro language in conjunction with
the Interactive Optimizer in TracePro to automate such tasks as optimizing the
position of a lighting source for uniform illumination
•Have your questions answered in the Question and Answer session
Current TracePro Release
•TracePro 7.0.6 (just released)
•Can be downloaded by anyone with a
current Maintenance and Support Agreement
•www.lambdares.com
An Introduction to the Scheme Macro
Language in TracePro
What is Scheme?
• Powerful and flexible macro capability based on the
Scheme programming language. Scheme is a dialect of the LISP language, commonly used in
artificial intelligence applications
The Scheme language is easily extensible.
• Extends the capabilities of TracePro. Lambda Research has extended Scheme with over 750
commands specific to TracePro.
• Extends the capabilities of ACIS within TracePro. Spatial Technology (authors of ACIS) and Schemers, Inc. have
extended Scheme to include nearly 1000 ACIS-specific
commands.
Working with Scheme in TracePro
• Easy implementation through TracePro user
interface.
• The Scheme Editor has context-sensitive
highlighting, parenthesis matching, online help, and a
DDE interface to TracePro.
• The Macro Recorder records Scheme commands
corresponding to keystrokes and mouse clicks and
saves them in a file.
Macro Reference Guide in TracePro
Searchable Macro Reference Guide with syntax examples.
Accessible in TracePro at Help->Macro Reference.
Macro Reference Guide in TracePro
Searchable Macro Reference Guide with syntax examples.
Accessible in TracePro at Help->Macro Reference.
Entering Scheme Commands
in the Command Line
To open Message/Macro Window - Macros->Output
An Example: Inserting a Block
•Step 1: Type command: (insert:block 10 10 10)
•Note: All commands must be enclosed in parenthesis
•Step 2: Click “Execute”
•This will insert a 10 x 10 x 10mm block at the origin
Step 1
Step 2
An Example: Inserting a Block - Result
The Scheme Editor
To open the Scheme Editor – Macros->Open Editor
The Scheme Editor – An Example
To open the Scheme Editor – Macros->Open Editor
The Scheme Editor – An Example
Simple Scheme macro to insert a 10 x 10 x 10mm block and rename it
“WebinarBlock”
(define InsertBlock
(lambda ( )
(define Block
(insert:block 10 10 10))
(property:apply-name Block "WebinarBlock")
)
)
Macro name
The Scheme Editor – An Example
Load the macro into TracePro by going to Macros->Execute and then browsing
to the location of the macro.
The Scheme Editor – An Example
To run the macro
•Type the macro name, (InsertBlock) , in the Command line. Remember, the
parenthesis must be included.
•Click Execute
Step 1Step 2
The Scheme Editor - An Example - Result
The TracePro Macro Recorder
• The Macro Recorder records Scheme commands
corresponding to keystrokes and mouse clicks and
saves them in a file.
• Allows you to write Scheme macros without having to
“write” any code.
Steps for Using the TracePro Macro Recorder
1. Start the Macro Recorder – Macros->Recorder->Start
2. Define Macro Name
3. Define Filepath and Filename for the macro
4. Perform desired actions in TracePro
5. Stop the Macro Recorder – Macros->Recorder->Stop
6. Open New Model Window
7. Load the Macro – Macros->Execute and browse the location of the macro
8. Type the name of the macro in the Command line of the Message/Macro
window, remember the parenthesis, and then click Execute
The TracePro Macro Recorder
A Live Demonstration
Solar Macro Example
Solar Macro Example
CPC reflector
Sun
Solar Cell
Path of Sun
Solar Macro Example(define rootPath "C:/TraceProProjects/CPCData/")
(define filename "")
(define angle "")
(define SUN
(lambda (dist theta phi)
(define PI 3.14159)
(define t (* PI (/ theta 180.0)))
(define p (* PI (/ phi 180.0)))
(define z (* dist (cos t)))
(define x (* dist (sin t) (cos p)))
(define y (* dist (sin t) (sin p)))
(define raxis (gvector:cross (gvector 0 0 1) (gvector x y z)))
(define trans1 (transform:rotation (position 0 0 0) raxis theta))
(define trans2 (transform:translation (gvector x y z)))
(define trans (transform:compose trans1 trans2))
(define sunplate
(insert:cylcone 1 10))
(property:apply-name sunplate "Sun")
(property:apply-name (cadr (entity:faces sunplate)) "emitter")
(property:apply-flux-surface-source (cadr (entity:faces sunplate)) 10 10000 2)
(entity:transform sunplate trans)
(raytrace:set-wavelengths 0.548 (raytrace:source-get-by-name "Sun/emitter"))
))
Note: Math functions in Scheme
are Forward Polish Notation
Eg. (+ 2 3) = 5
Solar Macro Example
(define CPC
(lambda ()
(define concentrator
(insert:3d-compound-reflector 0 0.1 15.588 0.0 4.5 3 30))
(property:apply-name concentrator "CPC")
(property:apply-name (car (entity:faces concentrator)) "Innerside")
(property:apply-surface (car (entity:faces concentrator)) (list "Perfect Mirror" "Default"))
(edit:rotate concentrator 0 0 0 0 1 0 180)
))
(define SolarCell
(lambda ()
(define die
(insert:block 5 5 0.1))
(property:apply-name die "SolarCell")
(property:apply-name (car (entity:faces die)) "detector")
(property:apply-surface (car (entity:faces die)) (list "Perfect Absorber" "Default"))
(edit:move die 0 0 -19.5)
))
Solar Macro Example
(define demo
(lambda (from to steps)
(define inc (/ (- to from) (- steps 1)))
(file:new)
(CPC)
(SolarCell)
(view:set-up (gvector 0 0 1))
(view:set-eye (position 0 100 0))
(do ((i 0 (+ i 1))) ((= i steps ))
(define theta (+ from (* i inc)))
(print (string-append "Raytracing the sun at theta = " (number->string theta) " degrees"))
(define phi (if (>= theta 0.0) 0 180))
(set! angle (* 1 theta))
(set! theta (abs theta))
(if (> i 0) (entity:delete (entity:get-by-name "Sun")))
(SUN 100 theta phi)
Solar Macro Example
(view:zoom-all)
(raytrace:source)
(analysis:ray-sorting 0 0.0 0 1 0.0 1.0)
(print (string-append "Flux on target at sun angle of " (number->string angle) " = "))
(display (raytrace:get-incident-flux (entity:get-by-name "detector")))
(newline)
(edit:select (entity:get-by-names "SolarCell" "detector"))
(analysis:refresh)
(analysis:irradiance-normal (gvector 0 0 -1))
(analysis:irradiance-up (gvector 0 1 0))
(analysis:irradiance)
(window:horizontal-tile)
(set! filename (string-append rootPath "_Irradiance at_" (number->string angle) "_degrees.txt"))
(analysis:irradiance-save filename)
(system:sleep 1000)
)
))
(display "Command: (demo fromang toang steps)")
(newline)
(display "Example: (demo -30 30 11)")
(newline)
Solar Macro Example
A Live Demonstration
Scheme Macros and the
TracePro Interactive Optimizer
Scheme Macros and the
TracePro Interactive Optimizer
The Scheme macro language can be used in conjunction with the TracePro
Interactive Optimizer Utility to extend the capabilities of the optimizer.
Examples:
•Performing Boolean operations on parts sent from the optimizer to TracePro
•Optimizing spatial and angular positions of objects using the optimization
targets defined in the Interactive Optimizer
•Applying properties to objects sent from the optimizer to TracePro
Scheme and the Interactive Optimizer - Example
LED lens optimization from June 2011 Webinar on LED Luminaire Design
Scheme and the Interactive Optimizer - Example
Goal is to optimize angular position of the lenses for best uniformity of a target
10 meters long located 8 meters from the LEDs and lenses
Scheme and the Interactive Optimizer - Example
Define variable called “angle”. Initial value is 12-degrees. This is the lower limit
for the variable. The upper limit is 12+75-degrees.
Scheme and the Interactive Optimizer - Example
Scheme code entered in the After-Scheme column for Object 4
Scheme and the Interactive Optimizer - Example
Scheme code entered in the After-Scheme column for Object 4
This command runs another
Scheme macro loaded in TracePro
“angle” variable
used to define
rotation of LEDs
and lenses
Scheme and the Interactive Optimizer - Example
This Scheme macro names one surface of each LED “Emitter” and assigns a
Surface Source Property to it.
Scheme and the Interactive Optimizer - Example
Scheme code entered in the Pre-processor column. This code will be run first.
Scheme and the Interactive Optimizer - Example
This code deletes the copies of the LEDs and Lenses that are made in TracePro
Scheme and the Interactive Optimizer - Example
Initial Irradiance Map – 12-degrees between each LED/Lens
Scheme and the Interactive Optimizer - Example
Optimization Log – 39 iterations
Best Result
Scheme and the Interactive Optimizer - Example
Final Irradiance Map – 29.4-degrees between each LED/Lens
Scheme and the Interactive Optimizer - Example
Final LED and Lens Positions, 29.4-degree separation from center
Additional Resources
•2-day Scheme programming course at Lambda Research Corp.
headquarters in Littleton, Massachusetts
Next session, August 18-19, 2011
•Schemers Inc. is a company devoted to Scheme education and publishing. (Contact information in TracePro manual.)
The SCHEME Programming Language (R. Kent Dybvig)The Schemer’s Guide (Second Edition)Getting Started With ACIS Using Schemewww.schemers.com
•Authoritative and highly technical reference on the Scheme language can be found on MIT web site.
www.swiss.ai.mit.edu/projects/scheme
Special Offers
Special Offer #1
$1000 USD off the price of the TracePro Bridge for SolidWorks
Special Offer #2
Save 50% on back maintenance and support.
Contact your local sales representative for full details.
Offers valid May 1st – July 31st, 2011
Thank You
Questions and Answers
For Additional Information
Please Contact:
Lambda Research Corporation
Littleton, MA
978-486-0766
www.lambdares.com