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 2
  • 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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

 

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.

×