ME 290D: Solid Modeling and CAD/CAM Fundamentals

Lectures: TuTh 2-3:30, 3105 ETCHEVERRY
Office hours: W 11:15-12, Th 4-5 5145 Etcheverry
jump to:

Announcements (in reverse chronological order)

  • Homework 6 due December 9. Here is an annotated G-code skeleton; cut and paste the pieces of the skeleton into print statements in your new function, with substitutions as indicated, and print from your program to a plain text g-code file. you will want to write a couple of loops for looping over each x value at each y value. If you would like to try simulating cutting with your code, for Windows 7 you can install the .exe file from Prof. Gershon Elber's NC simulator available at
  • Slides on winding numbers and their utility for solid modeling and interpreting intersecting boundary reps in layered manufacturing.
  • Homework 5 due November 28.
  • We already took off for not handling negative z-values in the input z-map and only gave you the feedback today, so we won't take off again if you haven't fixed it for your submission for hw3. BUT, if you want to be eligible for the fastest code in the class bonus, you do need to handle negative inputs by Friday, because it wouldn't be fair to compare running times if some handled them and others did not. When you complete HW4, you do need to be able to handle negative inputs, though.
  • Submit your hw2 code via bCourses. If you would like an extension on question 1, read the debugging advice linked below, type up your answer to question 3 and submit it on bCourses to the "hw2 question 3 to get an extension on question 1" assignment on bCourses, preferably by midnight tonight, but accepted up until the original due date.
  • How to Debug from John Regehr
  • Homework 2 (pdf) , plus instructions on compiling the sample code, etc.
  • Midterm is Tuesday 10/11.
  • Homework 1 attachments are here; sorry about that! You will see that in contrast to lecture today (9/27) I am looking for more detail in the pseudo-code -- in lecture for the C-space tool path algorithm I just explained the calculation of some of the key values; the paper has the full pseudo-code.
  • Homework 1 is due Friday Sept. 30 at 3pm (see submission instructions in assignment). NOTE: you will have to do problem 3 for the radial edge structure as well, but I decided to let you turn in the radial edge answers with HW2 so that you can get feedback first.
  • Here is an animation of a coffee cup turning into a donut to illustrate topological equivalence.
  • Here is a 5 1/2 min. video clip from a Berkeley lecture by Dan Garcia that introduces the idea of pointers for people who have only used programming languages with arrays (e.g. 2-D matrices are 2-D arrays in Matlab). The clip is queued up to start at 24:54. Manually stop it at 30:20 (at that point the lecture goes on to talk about how to program pointers in C, but you only need to understand the concept in general, not the details of implementing it in a programming language you haven't learned!)
  • Matlab and SolidWorks are available for you to use in the CAD labs whenever the rooms are not reserved for another class (it is ok to use a room during a time it is reserved for office hours). Here is the link for 1171 to check the schedule. The room should be unlocked during the day on weekdays; for after-hours cardkey access to the CAD labs as well as the building, the fee is $5 per semester via this online form. You can also license a student version of Matlab.
  • There will be no computer science prerequisite for this offering of the course, but you should have had at least one programming course.
  • Reading

    Many of the reading links will be via subscription sites and may only allow access if you connect from a UC network connection. Here is info on remote access to these databases.
    For each reading, turn in a 4-bullet summary/evaluation (see below) at the start of the class where it is first presented. Each bullet should be no more than a sentence, written in your own words. (See the examples of appropriate and inappropriate paraphrasing on the bottom of p.2 and top of p.3 in this Student Learning Center handout from lecture, since you may find yourself paraphrasing what the authors wrote for some of your bullets. However, I recommend that you try to do the writing of the bullets without the original paper text right if front of you, and only after your first draft go back and look at the paper if you want to check how they worded similar ideas. )
      Put the paper title, author, and year at the top. Then list in this order, labeled as contributions, limitation (or put a "+" as your bullet for contributions and a "-" as the bullet for limitations):
      3 bullets summarizing the 3 most important contributions of the research.
      1 bullet summarizing a limitation or shortcoming of the research (no credit for describing a shortcoming of how clearly it is described -- that is a shortcoming of the writing, not of the research).
    * At least one bullet should be something that's not explicitly covered in the abstract, intro, or conclusion. Please mark it with an asterisk at the start of the bullet.
    You may find it helpful in wording your bullets to imagine for each bullet that there is this invisible text before it: "I think one of the most important {contributions, limitations} of this research is" (note how this is supposed to be your opinion, so you'll still get full credit if I disagree, or even if you've misinterpreted something on this first reading -- but if I can't figure out what you mean, or it's about the writing instead of the research, you'll only get partial credit).
  • (8/30/16, sections 1 through 2.7 for 4-bullet write-up, finish for 9/6 but no additional bullets required) Representations for Rigid Solids: Theory, Methods, and Systems (Aristides G. Requicha), ACM Computing Surveys, December 1980.
  • (9/13) "The Radial Edge Structure: A Topological Representation for Non-Manifold Geometric Boundary Modeling" (Kevin Weiler), in Geometric Modeling for CAD Applications, c. 1988. Just skim the Pascal declarations in Figures 12-19 on first reading. Note: a link to the paper was emailed to students registered in class who setup their email from both CalCentral and If you did not get the email, please check that those campus systems both have email listed for you, and then contact the professor.
  • (9/20) C-space approach to tool-path generation for die and mould machining by Byoung K Choi, Dae H Kim, and Robert B Jerard, in Computer Aided Design, Vol 29, Issue 9, Sept 1997, pp. 657-669. Color scans of figures 10-14 available here. (Typos I've found: p.660, 2nd column, 1 /3 down, C-space Elements = {...}, the VP should be VF; P. 666 in TPG-algorithm (3.6), omega (w if your browser supports Greek characters) should be lambda (l if your browser supports Greek characters). Warning: CAD is British and its papers are type-set for A4 size paper, so make sure when you print that you have Acrobat set to "shrink pages to paper size" in the print options or the bottom line of text will get cut off.)
  • (9/29) Consistent solid and boundary representations from arbitrary polygonal data (T. M. Murali, Thomas A. Funkhouser), 1997 Symposium on Interactive 3D Graphics, or try this gzipped postscript link from Funkhouser's web site that includes the color plate that didn't make it into the ACM digital library.

  • midterm 1 is on the 4 papers above this line. midterm 2 is on the 5 papers below this line.
  • (10/4/) The power crust (Nina Amenta, Sunghee Choi, Ravi Krishna Kolluri), Sixth ACM Symposium on Solid Modeling and Applications, 2001. (optional reading for reviewing Voronoi diagrams and Fortune's algorithm, no writeup) Computational Geometry: Algorithms and Applications, by Mark de Berg, Otfried Cheong, Marc van Kreveld and Mark Overmars. Chapter 7 "Voronoi Diagrams."
  • (10/25) Marching cubes: A high resolution 3D surface construction algorithm (William E. Lorensen, Harvey E. Cline), SIGGRAPH, 1987.
  • (10/27) Spatial Planning: A Configuration Space Approach (T. Lozano-Perez), IEEE Transactions on Computers, February 1983 (Vol. 32 No. 2) pp. 108-120 (you can skip appendices, though). Optional related text book chapter: Computational Geometry: Algorithms and Applications, Mark de Berg, Otfried Cheong, Marc van Kreveld and Mark Overmars, Chapter 13 "Robot Motion Planning."
  • (11/8) Visibility maps and spherical algorithms (Tony C. Woo), Computer-Aided Design, Volume 26, Issue 1, January 1994, Pages 6-16.
  • (11/15) Efficient simplex computation for fixture layout design (Yu Zheng, Ming C. Lin, Dinesh Manocha), Computer-Aided Design Volume 43, Issue 10, October 2011, Pages 1307-1318.

    possible future readings:
  • H-Collide: A Framework for Fast and Accurate Collision Detection for Haptic Interaction (A. Gregory, M. Lin, S. Gottschalk and R. Taylor), IEEE Virtual Reality conference, 1999.
  • Separating an object from its cast (Hee-Kap Ahn, Mark de Berg, Prosenjit Bose, Siu-Wing Cheng, Dan Halperin, Jirí Matousek, Otfried Schwarzkopf), Symposium on Computational Geometry, 1997. Or see journal version, which fixes a mistake in figure 5 (figure 4 in journal version) but uses a hard-to-interpret font for the math: Separating an object from its cast Computer-Aided Design, July 2002, pp. 547-559.
  • Generating 5-axis NC roughing paths directly from a tessellated representation (M. Balasubramaniam, P. Laxmiprasad, S. Sarma and Z. Shaikh)
  • Interactive Boolean operations for conceptual design of 3-D solids (Ari Rappoport, Steven Spitz)