Jump to content
herbieherb

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

Share this post


Link to post

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.)

Share this post


Link to post

Thx a lot. This worked well.

Here is the file with the scripts that export images directly. I had to use two scripts for jpg and png as i couldn't find out the image type.

export image.vwx

Is there a way to find out if an image is a png or a jpg?

Share this post


Link to post
3 hours ago, herbieherb said:

Is there a way to find out if an image is a png or a jpg?

 

Yes. This one liner will show the compression used on a placed image:

 

vs.Message(vs.GetObjectVariableLongInt(vs.FSActLayer(), 532))   # 1 = JPEG, 2 = PNG

 

Raymond

  • Like 1

Share this post


Link to post

Luke from the german forum added a name generator to the script. So the filenames automatically get a date stamp and a overwrite should not happen anymore.

export image.vwx

Share this post


Link to post
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)

Share this post


Link to post

Found the issue. Selected objects from other layers interfere with the script somehow. I'll try to fix it.

  • Like 1

Share this post


Link to post

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?

Share this post


Link to post
Posted (edited)

Yes, that should be possible, but it requires some work. I will take a look at it on occasion. Until then you could integrate the script as a menu command into your VW-UI. Then just shortcut it to use the script faster.

Edited by herbieherb

Share this post


Link to post

Here is a new version of the script:

 

New features:

  • exports All selected viewports and images at once
  • gives unnamed images a name within Vectorworks which is also used as filename
  • appends a version number to every exported object
  • enhanced error messages when invalid objects are selected
  • selects invalid and not exported objects after execution

export images 1.0 v2018.vwx

export images 1.0 v2019.vwx

  • Like 3
  • Love 1

Share this post


Link to post

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

Share this post


Link to post

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

Share this post


Link to post
1 hour ago, line-weight said:

(using a £ sign didn't work for me, but just deleting them did)

Use # instead of £

Share this post


Link to post
1 minute ago, herbieherb said:

Use # instead of £

Ah - I see, it's an American vs UK English translation issue!

  • Laugh 1

Share this post


Link to post

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.


 

7150 Riverwood Drive, Columbia, Maryland 21046, USA   |   Contact Us:   410-290-5114

 

© 2018 Vectorworks, Inc. All Rights Reserved. Vectorworks, Inc. is part of the Nemetschek Group.

×
×
  • Create New...