In the process of editing my scripts' variable names with a haphazard "replace in all open files" in my text editor, I accidentally replaced portions of graphics data in a notebook (and I believe this is the only issue with the notebook). Here's a sample of my notebook in my text editor:

  Graphics3DBox[GraphicsComplex3DBox[$Failed, {{
   {Opacity[0.4], EdgeForm[None], 

The \[CapitalOmega] doesn't belong. Unfortunately, "undo" is no longer available, and there's no obvious way for me to sift through and re-replace some of the symbols that I changed (for instance, they aren't all obvious like \[CapitalOmega]). Mathematica can no longer open the notebook (I wait while it grinds and heats-up, then have to force-quit).

Is there some way to delete the graphics (or even all output cells) from the text file? I was considering just trying this (deleting the cells that seem like graphics), but it seems like there might be a lot of ways this could go wrong. Help!

  • 1
    $\begingroup$ @Kuba, how can I recognize the graphics output cells? If they look like the one I showed above, can I simply delete the entire cell? $\endgroup$ – Rico Picone May 13 '14 at 21:48
  • $\begingroup$ @RicoPicone Can you upload your notebook somewhere? $\endgroup$ – Öskå May 13 '14 at 21:52
  • $\begingroup$ @Öskå, thanks for taking a look! Here's a link: courses.washington.edu/mengr230/sp13/resources/… $\endgroup$ – Rico Picone May 13 '14 at 22:01
  • $\begingroup$ To delete all generated cells see this Q/A $\endgroup$ – kglr May 13 '14 at 22:05
  • $\begingroup$ Lol. It's pretty daunting with all those graphics in there. $\endgroup$ – Rico Picone May 13 '14 at 22:08

This should give you back most of your work:

code = Import[
 code /. Cell[BoxData[(Graphics3DBox | GraphicsBox)[___]], ___] :> 
     StyleBox["Here was a graphics", FontColor -> RGBColor[1, 0, 0]]],
  • $\begingroup$ This is great. Thanks! If beggars could be choosers, it would be nice if other types of cells would be preserved, like text and sections (I tried and failed to adapt your example). $\endgroup$ – Rico Picone May 13 '14 at 22:38
  • 1
    $\begingroup$ @RicoPicone Please try the updated version of my answer. $\endgroup$ – halirutan May 13 '14 at 22:59
  • $\begingroup$ Beautiful! This is a great bit of code, you've written. Thank you :) $\endgroup$ – Rico Picone May 13 '14 at 23:01
  • $\begingroup$ For posterity I made a new (simpler) corrupted notebook and put it on bitbucket. I'm going to edit the answer to get it from there (I'll leave it up). This notebook doesn't crash MMA, but the graphics are bad, and I think it's sufficient to demonstrate the point. $\endgroup$ – Rico Picone May 13 '14 at 23:25
  • 1
    $\begingroup$ Some people might find it useful to simply "do away" with the output graphics cells altogether, instead of replacing them with Text cells (so they can just re-evaluate the input cells and no pesky text cells will be laying about). If that's the case, the replacement rule should point to :> Cell["", "Output"]. $\endgroup$ – Rico Picone May 13 '14 at 23:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.