I have a case where I need to print a preview of geometry from Grasshopper (some filled regions with contour lines that are not baked inside Rhino)
Now for some reason when using Rhino 7 filled region does not print to PDF, besides the fact that they are appearing in Rhino Viewport but not in the Print Preview
With Rhino 6 everything was working fine like is shown on the print preview
I have double-check all print, layout and viewport settings and everything seems to be the same
In princip I don’t think is something related to the Grasshopper or my geometry file
It is something more related to the Rhino PDF printing setup
I also found related discussions
I hope there is some solution to this because I am using Grasshopper to read Tekla and Revit models and then print geometry preview to PDF. Other way I would have to bake
geometry and then the whole process would become more static
Thank you for the files, Faruk.
I have filed this issue as item RH-64997.
In the meanwhile, other alternatives would be (a) continue doing this in Rhino 6, or (b) printing to raster. The contents of the detail are printed as raster also in Rhino 6 so doing this would “only” affect geometry on the layout.
-wim
I’m examining this bug and have a question. What is the problem with having the print set to raster for output? I believe the layout geometry will still be vector even when you pick raster. It is only the details that are printed as raster
Hi Steve, thanks a lot for looking in this, yes with raster geometry will be vector
In my case, 99% of the time I am in need to print a preview of geometry from Grasshopper that contains color-filled regions (made with custom preview component) as in the picture below
When printing manually from Rhino, Vector Output was much faster when printing several layouts, and also big advantage was that it was working with Python script I found on the link below
import Rhino
import scriptcontext as sc
import System.Drawing
import rhinoscriptsyntax as rs
import os
def get_layouts():
layouts = []
for view in Rhino.RhinoDoc.ActiveDoc.Views:
if isinstance(view, Rhino.Display.RhinoPageView):
layouts.append(view)
return layouts
def layouts_get_by_names(layout_names):
layouts = []
for layout_name in layout_names:
view = Rhino.RhinoDoc.ActiveDoc.Views.Find(layout_name, True)
if isinstance(view, Rhino.Display.RhinoPageView):
layouts.append(view)
return layouts
def mmToInch(num):
#surely pages are always in mm?
return num/25.4
if B:
pdf = Rhino.FileIO.FilePdf.Create()
dpi = 300
#loop through all layouts and print to single page pdf
for i, view in enumerate(layouts_get_by_names(L)):
#Rhino.RhinoDoc.ActiveDoc.Views.ActiveView.PageHeight
#Rhino.RhinoDoc.ActiveDoc.Views.ActiveView.PageWidth
w = mmToInch(view.PageHeight)
h = mmToInch(view.PageWidth)
print w
size = System.Drawing.Size(h*dpi, w*dpi)
#size = System.Drawing.Size(8.5*dpi,11*dpi)
settings = Rhino.Display.ViewCaptureSettings(view, size, dpi)
pdf.AddPage(settings)
filepath = os.path.join(P, N+".pdf")
print filepath
pdf.Write(filepath)
This way I was able to print directly from Grasshopper in Rhino 6
Now when using Rhino 7, for some reason the script does not print filled areas, and also if I want to print manually using Vector Output it does not show them
At the moment I am printing manually with Raster Output and that works besides the fact that the printing time is slower. Probably there are reasons behind this change but for me, it would be much better when the Vector output would work the same as in Rhino 6
The change was intentional in Rhino 7 and fixed several reported bugs reported. I’m not exactly sure what should be done to support your situation. I have the issue logged as a bug and need to think if there are any ways to make this work for you and everyone else who want the current results.