Jump to content

ExportImageFile does nothing


Recommended Posts

I am trying to make a script that exports an image object to a specified file path. Everything works well but vs.ExportImageFile(hImage, path) does nothing.

 

Here is the script:

________________________________________________________

#Get selected bitmaps

crit_ = '(((SEL=TRUE) & (T=BITMAP)))'

out_list = []

def Add_Handle(obj):
    out_list.append(obj)

vs.ForEachObject(Add_Handle,crit_)

 

#GetFirstImage
hImage = out_list[0]

 

#Choose path
fileName = vs.PutFile('Choose path:', 'image.bmp')


#Exort Image to path
vs.ExportImageFile(hImage, fileName)
vs.Close(fileName)

________________________________________________________

And an example file:

export image.vwx

Link to comment
  • Marionette Maven

vs.PutFile() is used for text files, but you want to create an image file.

I suggest building your path using vs.GetFolder()

You also will not need to use vs.Close() after making this change.

 

fileName = vs.GetFolder('Choose path:')[1] + 'image.bmp'

(You need to extract the second output from GetFolder, which is why the [1] is after it.)

Link to comment
  • 2 weeks later...
  • 1 month later...
30 minutes ago, herbieherb said:

I have extended the script so that rendered viewports can now also be saved directly as images. The script now takes the name of the object as prefix of the file name.

 

Here is the current script:

export image v2018.vwx

export image v2019.vwx

 

I've just tried running this in one of my files... but get this error message

1883054349_ScreenShot2019-06-07at13_48_30.thumb.jpg.2a7be8a50c25b864afad891790fc9d30.jpg

 

That seems to happen whether I try it on a bitmap image, or on a viewport (have tried both Renderworks and OpenGL vports)

Link to comment

I've done a few quick tests and this appears to work really well! This seems to satisfy a simple function that people have requested repeatedly from VW for years, so thank you for taking the time to create this!

 

Question - is it possible for a script like this to be made to work on multiple viewports at once? For example, if I have a grid of 12 renderings and I want to save out the images from all 12 at once?

Link to comment
  • 3 weeks later...

Amazing, thank you herbieherb! The ability to export multiple viewports, plus the naming improvements are all really fantastic.

 

By the way, before adding the script to my workspace as a command, I put a pound sign in front of lines 28 and 29, since I want to be able to export out-of-date viewports as well. I know very very little about coding, but this seemed to work 🙂

  • Like 2
Link to comment
  • 1 month later...

I've just been using this too - thank you very much @herbieherb

 

Like @Andy Broomell I'd like to be able to export out-of-date viewports, so I have also disabled lines 28 and 29 (using a £ sign didn't work for me, but just deleting them did)

 

One comment, if you run the script, but then click 'cancel' instead of 'open' in the dialogue asking you for the file location, the image is not exported (as expected) however a message saying an image has been exported is returned nonetheless.

  • Like 1
Link to comment
  • 4 weeks later...
  • 9 months later...

@herbieherb I am continuing to use this scriptand it's very useful. Thank you.

 

There's something strange I have noticed. I expect this is something in Vectorworks, not a problem with your script, but I wonder if it makes any sense to you.

 

I will export a render viewport, and I'll get a PNG image with a certain size, let's say 2000px wide and 1000px high.

 

I then do some kind of edit of the geometry that the viewport is looking at, and re-render it. And then I export it using the script again.

 

And this time I will get a viewport that is 2000px wide and 1019px high (or similar). It'll be a slightly different size, and from what I can make out, the crop is the same, the image is just squashed or stretched very slightly.

 

Surely this shouldn't happen - the viewport should produce the same pixel dimension image each time, no?

Edited by line-weight
  • Like 1
Link to comment

This is really weird. But I can reproduce it here. It's not the script. It already gets the different sized images from Vectorworks. So I can reproduce that too. The exact same viewport with the exact same content rendered and then converted into an image almost always results in a slightly different image size. Tested with ~4960x3510 pixels I have variations of ±1 pixel in Y-direction and even ±9 pixels in X-direction.

Edited by herbieherb
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...