Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

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:

Cell[BoxData[
  Graphics3DBox[GraphicsComplex3DBox[$Failed, {{
   {Opacity[0.4], EdgeForm[None], 
     GraphicsGroup3DBox[{Polygon3DBox[CompressedData["
1:eJxNnXeYFcXz9e/esIiiIFGUKNw7d0Ewo0y4CIKKAdDdvYqKAQOKOWfFnHPO
OWdRMSsgmHPOIKhgzgnR93z29Pf5vX/M0zU93T09Mz3d1VWnqvpP3m+rffO5
...
SIz7Av/VL5TBhqJPyesWaxZ5/ULdD6rGk39asT0GPMtTShc12+f3763GSrJP
eEPn42ueVxM9322Z2wHfOz3zHo292vZgj0rBN2yz/cX+qXbWVt46Op7\[CapitalOmega]2S8X
PkPQO5K3ZsifUHP+JrF9m+Lj9FXWmcR2+a8n3i/jAwIM6OiS8aPgNuKQzz76
4cx7TXSVD2Teu+MDFhwgfljAOT2aud6Wsf2U0A54IVLaBUP0ZtX22vhBf67Z

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!

share|improve this question
    
@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? –  Rico Picone May 13 at 21:48
    
@RicoPicone Can you upload your notebook somewhere? –  Öskå May 13 at 21:52
    
@Öskå, thanks for taking a look! Here's a link: courses.washington.edu/mengr230/sp13/resources/… –  Rico Picone May 13 at 22:01
    
To delete all generated cells see this Q/A –  kguler May 13 at 22:05
    
Lol. It's pretty daunting with all those graphics in there. –  Rico Picone May 13 at 22:08

1 Answer 1

up vote 9 down vote accepted

This should give you back most of your work:

code = Import[
   "https://bitbucket.org/ricopicone/corruptmathematicanotebook/raw/master/CMN.nb", 
   "NB"];
CreateDocument[
 code /. Cell[BoxData[(Graphics3DBox | GraphicsBox)[___]], ___] :> 
   Cell[TextData[
     StyleBox["Here was a graphics", FontColor -> RGBColor[1, 0, 0]]],
     "Text"]]
share|improve this answer
    
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). –  Rico Picone May 13 at 22:38
1  
@RicoPicone Please try the updated version of my answer. –  halirutan May 13 at 22:59
    
Beautiful! This is a great bit of code, you've written. Thank you :) –  Rico Picone May 13 at 23:01
    
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. –  Rico Picone May 13 at 23:25
1  
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"]. –  Rico Picone May 13 at 23:40

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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