BreadCrumbs: CorelDraw

CorelDraw

From Luke Jackson

(Difference between revisions)
Jump to: navigation, search
Revision as of 07:36, 19 December 2007 (edit)
Ljackson (Talk | contribs)
(QRotate)
← Previous diff
Revision as of 19:31, 26 December 2007 (edit)
Ljackson (Talk | contribs)
(AutoAnSPage)
Next diff →
Line 265: Line 265:
<pre> <pre>
Sub AutoAnSPage() Sub AutoAnSPage()
- 'Align and Space+ On Error Resume Next
- Dim OrigSelection As ShapeRange+ ActiveDocument.BeginCommandGroup "AutoAnSPage"
- Set OrigSelection = ActiveSelectionRange+ Dim CurSelection As ShapeRange
- OrigSelection.AlignToPage cdrAlignLeft + cdrAlignTop, cdrTextAlignBoundingBox+
- OrigSelection.Move 0.2, -0.2+ Set CurSelection = ActiveSelectionRange
- OrigSelection.Ungroup+ 
- If ActivePage.Shapes.Last.Type = cdrTextShape Then+ If CurSelection.count > 0 Then
- ActivePage.Shapes.Last.CreateSelection+ 'Align and Space Selected Objects
 + CurSelection.AlignToPage cdrAlignLeft + cdrAlignTop, cdrTextAlignBoundingBox
 + CurSelection.Move 0.2, -0.2
 +
 + 'If priority text exists make it the first shape, convert it to curves, and select it.
 + If CurSelection.Shapes.First.Type = cdrGroupShape Then CurSelection.Ungroup
 +
 + If CurSelection.Shapes.First.Type = cdrTextShape Then
 + CurSelection.Shapes.First.ConvertToCurves
 + CurSelection.Shapes.First.CreateSelection
 + Else
 + ActiveDocument.ClearSelection
 + End If
Else Else
- ActiveDocument.ClearSelection+ MsgBox "Please select 1 or more object(s).", , "AutoAnSPage"
End If End If
 + ActiveDocument.EndCommandGroup
End Sub End Sub
</pre> </pre>
- 
=== QRotate === === QRotate ===

Revision as of 19:31, 26 December 2007

Contents

Open .EPS Files with CorelDraw11

For some reason there is a bug in CorelDraw11 which prohibits it from opening .EPS files. Instead in inserts a gray box representing the bounding box of the image with the file information. I have found a workaround for this issue and it is explained below.

Import PostScript Settings
Import PostScript Settings
  • Open CorelDraw11 and create a blank document.
  • From the Tools sub-menu of the menu bar select Customization.
  • You should now see the Options window appear. On the left side of this window there is a tree at the bottom of the tree is the Global element, Click on it and expand it.
  • Click on Filters and on the right of the options window should appear the Filters file association options.
  • What we want to do is tell Corel to use a different filter than the traditional EPS filter to open EPS files. So on the far right you should see a list box with all of the currently configured filters and their associated files. Locate EPS - Encapsulated PostScript and click on it once to highlight it. Now it gets a tad complex because we still want to be able to export .EPS files but we don't want to use the .EPS filter to import them. So what we need to do is give it less of a priority than the PostScript filter. We can do this by using the Move Down button to move it below the PS, PRN, EPS - PostScript filter.
  • Once this is completed EPS files will fall back onto the PostScript filter. This is OK because an EPS is still PostScript at the core and we will only have to ensure some simple options for the filter at time of open. Click OK to save your changes and close the Options window.
  • Close the existing blank document and locate a valid .EPS we can use to test.
  • There are some more bugs / anomalies with CorelDraw11 when it comes to file names. So the only way I am able to have it keep my file name is by dragging the desired file(s) into the CorelDraw workspace. (Please ensure no documents are open as it will then insert the files into the open document rather than creating a temp document with the file name for each file)
  • Once a file is dropped onto the workspace you will be prompted with the Import PostScript dialog box. Simply configure the following settings:
    • VM Size: 8.0 MB
    • Import text as Curves
    • Report PostScript errors
  • Click OK to dismiss the box and open the .EPS file. You should now see curves and be able to manipulate the vector graphic.

I should mention that I have seen instances where files open blank, but I had not found any file which did not open to be a properly formated EPS file. I usually use an application like Adobe Illustrator to confirm that the file is not corrupted. I.E. no bitmap images, mesh objects, redundant paths. Once I verify this I re-export it as an .EPS and then in order for CorelDraw11 to open the file it needs to be converted by Goverts GoBatchGS. This has been successful everytime. Hope this is of help to someone.

FAQ

Why won't my curves weld properly after I converted them from outlines?

CorelDraw 11 has a bug in the Convert Outline to Object tool where it is unable to convert outlines which are not a whole number in width. This bug was encountered in a file exported from Freehand 10. It is not always reproducible but an easy fix is reduce the outline to a whole number.

Macros

Installing

To install a macro in Corel Applications please follow these steps:

  • Copy your desired macro files so we are able to paste them into the correct location.

Note: All Corel macro files should have an extension of .gms

  • Browse to the GMS folder:
    • Under windows the path should be as follows:
C:\Program Files\Corel\<Corel App Folder>\Draw\GMS\
  • Paste the files you copied in the first step into the GMS folder and close all windows\Applications.
  • Launch the Corel application and create a new blank document.
  • From the Tools menu choose Customization
  • From the left menu tree choose Commands and then from the drop down box on the right choose Macros.
  • Select the desired macros from the list and do one or more of the following:
    • Click and drag the macro onto any toolbar.
    • Click on the Shortcut Keys and assign a memorable key command.
  • Click OK to apply the changes and enjoy your macroing!

Examples

Create Measurement Shapes

Sub Measure()
    ActivePage.CreateLayer "Measure"
    ' Create Negative Space Ruler
    Dim n_space As Shape
    ActiveDocument.Unit = cdrMillimeter
    Set n_space = ActiveLayer.CreateEllipse(0, 1, 1, 0)
    n_space.Outline.Type = cdrNoOutline
    n_space.Fill.UniformColor.CMYKAssign 0, 100, 100, 0
    ' Create Positive Space Ruler
    Dim p_space As Shape
    ActiveDocument.Unit = cdrMillimeter
    Set p_space = ActiveLayer.CreateEllipse(1, 1.5, 2.5, 0)
    p_space.Outline.Type = cdrNoOutline
    p_space.Fill.UniformColor.CMYKAssign 100, 0, 0, 0
End Sub
Sub KillMeasure()
    ActivePage.Layers("Measure").Delete
End Sub

Convert Outlines to Objects

Locates all shapes with outlines and converts them to objects. Then deletes the leftover null shapes.

Sub CvertOutlines()
    Dim sh As Shape, shRange As ShapeRange
    ActivePage.Shapes.All.CreateSelection
    Set shRange = ActiveSelectionRange
    'Find Outlines and Cvert to Objects
    For Each sh In shRange
        If sh.Outline.Type = cdrOutline Then
            'sh.Selected = False
            sh.Outline.ConvertToObject
        End If
    Next sh
    ActivePage.Shapes.All.CreateSelection
    'Find Null Shapes and Delete
    For Each sh In shRange
        If sh.Outline.Type = cdrNoOutline And sh.Fill.Type = cdrNoFill Then
            sh.Delete
        End If
    Next sh
End Sub

Center Shapes and Crop Document

Sub AutoCenterObject()
    ActivePage.Shapes.All.Group
    ActivePage.Shapes(1).CreateSelection
    Dim width As Double, height As Double
        ActiveDocument.Unit = cdrInch
        ' Add 0.05in margin
        width = ActiveShape.SizeWidth + 0.05
        height = ActiveShape.SizeHeight + 0.05
    ' Set current page size
    ActivePage.SetSize width, height
    ' Set default document page size
    ActiveDocument.Pages(0).SetSize width, height
    CorelScript.AlignToCenterOfPage 3, 3
    ActivePage.Shapes.All.UngroupAll
    ActiveDocument.ClearSelection
End Sub

Convert to Curves, Ungroup All, Mirror, Set Outline Width & Color, Remove Fill

Sub CutnClean()
'By Luke Jackson 16.10.2007
'##########################
    On Error Resume Next
    ActiveDocument.BeginCommandGroup "CutnClean"
    'Unlock and Ungroup all objects
    ActivePage.Shapes.All.Unlock
    ActivePage.Shapes.All.UngroupAll
    'Copy fill color to outline
    Dim oColor As Color, sCount As Long, sShape As Shape
    sCount = ActivePage.Shapes.count
    Set sShape = ActivePage.Shapes.Item(2)
    If sCount > 2 And sShape.Fill.Type <> cdrNoFill Then
        Set oColor = sShape.Fill.UniformColor
        ActivePage.Shapes.All.SetOutlineProperties Color:=oColor
    End If
    'Convert text to curves
    ActivePage.Shapes.All.ConvertToCurves
    'Group to prevent overlap
    ActivePage.Shapes.All.Group
    'Mirror for cutting
    ActivePage.Shapes.All.Flip cdrFlipHorizontal
    'Set width to hairline, remove fill
    ActivePage.Shapes.All.SetOutlineProperties width:=0.003
    ActivePage.Shapes.All.ApplyNoFill
    'Clear group and selection
    ActivePage.Shapes.All.UngroupAll
    ActiveDocument.ClearSelection
    ActiveDocument.EndCommandGroup
End Sub

Unlock, Ungroup, Delete Locked Objects

Sub KillnClean()
'By Luke Jackson 16.10.2007
'##########################
    On Error Resume Next
    ActiveDocument.BeginCommandGroup "KillnClean"
    'Unlock and Ungroup all objects
    ActivePage.Shapes.All.Unlock
    ActivePage.Shapes.All.UngroupAll
    'Repeat for sub-nested objects
    ActivePage.Shapes.All.Unlock
    ActivePage.Shapes.All.UngroupAll
    'Find Null Shapes and Delete
    Dim sh As Shape
    For Each sh In ActivePage.Shapes
        If sh.Fill.Type = cdrNoFill And sh.Outline.Type = cdrNoOutline Then
            sh.Delete
        End If
    Next sh
    ActiveDocument.ClearSelection
    ActiveDocument.EndCommandGroup
End Sub

nuts

Sub CutnClean()
'By Luke Jackson 07.10.2007
'##########################
    'Unlock and Ungroup all objects
    ActivePage.UnlockAllShapes
    ActivePage.Shapes.All.UngroupAll
    'Repeat for sub-nested objects
    ActivePage.UnlockAllShapes
    ActivePage.Shapes.All.UngroupAll
    'Find Null Shapes and Delete
    Dim sh As Shape, shC As Color, sCount As Long
    sCount = ActivePage.Shapes.count
    If sCount <= 2 Then
        Set shC = CreateCMYKColor(0, 0, 0, 100)
    ElseIf ActivePage.Shapes.Item(2).Fill.Type <> cdrNoFill Then
        Set shC = ActivePage.Shapes.Item(2).Fill.UniformColor
    End If
    For Each sh In ActivePage.Shapes
        If sh.Fill.Type = cdrNoFill And sh.Outline.Type = cdrNoOutline Then
            sh.Delete
        End If
    Next sh
    'Convert text to curves
    ActivePage.Shapes.All.ConvertToCurves
    'Group to prevent overlap
    ActivePage.Shapes.All.Group
    'Mirror and align for cutting
    ActivePage.Shapes.All.Flip cdrFlipHorizontal
    ActivePage.Shapes.All.AlignToPage cdrAlignRight + cdrAlignBottom
    'Copy fill color to outline, set width to hairline, remove fill
    ActivePage.Shapes.All.SetOutlineProperties width:=0.003, Color:=shC
    ActivePage.Shapes.All.ApplyNoFill
    'Clear group and selection
    ActivePage.Shapes.All.UngroupAll
    ActiveDocument.ClearSelection
End Sub

Create Text

Sub Start()
    If ActivePage.Name = "Page 1" Then
        frmIPageNumber.Show
    Else
        ' Create Page Number Text Shape
        Dim p_text As Shape
        Dim c_page As String
        ActiveDocument.Unit = cdrInch
        c_page = ActivePage.Name
        Set p_text = ActiveLayer.CreateArtisticText(16, 21, c_page, cdrEnglishUS, cdrCharSetDefault, Arial, 40)
    End If
End Sub

Private Sub okPages_Click()
    If IsNumeric(t_pages.Value) And t_pages.Value > 1 Then
        IPageNumber2
    Else
        MsgBox "You messed me up!", vbOKOnly, "Something is amuck!"
    End If
    Unload Me
End Sub

Private Sub IPageNumber2()
    ' Create Page Number Text
    Dim p_text As Shape
    Dim c_page As String
    ActiveDocument.Unit = cdrInch
    c_page = "Page 1 of " + t_pages.Value
    Set p_text = ActiveLayer.CreateArtisticText(16, 21, c_page, cdrEnglishUS, cdrCharSetDefault, Arial, 40)
End Sub

AutoAnSPage

Sub AutoAnSPage()
    On Error Resume Next
    ActiveDocument.BeginCommandGroup "AutoAnSPage"
    Dim CurSelection As ShapeRange
    
    Set CurSelection = ActiveSelectionRange

    If CurSelection.count > 0 Then
        'Align and Space Selected Objects
        CurSelection.AlignToPage cdrAlignLeft + cdrAlignTop, cdrTextAlignBoundingBox
        CurSelection.Move 0.2, -0.2
        
        'If priority text exists make it the first shape, convert it to curves, and select it.
        If CurSelection.Shapes.First.Type = cdrGroupShape Then CurSelection.Ungroup
        
        If CurSelection.Shapes.First.Type = cdrTextShape Then
            CurSelection.Shapes.First.ConvertToCurves
            CurSelection.Shapes.First.CreateSelection
        Else
            ActiveDocument.ClearSelection
        End If
    Else
        MsgBox "Please select 1 or more object(s).", , "AutoAnSPage"
    End If
    ActiveDocument.EndCommandGroup
End Sub

QRotate

Assign to key commands for quick rotation of selection.

Sub QRotate90()
    ActiveSelection.Rotate (90)
End Sub

Sub QRotate45()
    ActiveSelection.Rotate (45)
End Sub

See Also

Tags

Visual Basic Script, VBA, Visual Basic Macro, Corel Draw

Personal tools