123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- '
- Sub Auto_ColorMark()
- On Error GoTo ErrorHandler
- ActiveDocument.BeginCommandGroup: Application.Optimization = True
- Dim doc As Document: Set doc = ActiveDocument: doc.Unit = cdrMillimeter
- ' 物件群组,设置页面大小
- Call set_page_size
- '
- px = ActiveDocument.ActivePage.CenterX
- py = ActiveDocument.ActivePage.CenterY
- '
- doc.ActiveLayer.Import Path & "GMS\ColorMark.cdr"
- ActiveDocument.ReferencePoint = cdrBottomMiddle
- ' ActiveDocument.Selection.SetPosition px, -100
- ActiveDocument.Selection.Ungroup
- Dim sh As Shape, shs As Shapes
- Set shs = ActiveSelection.Shapes
- '
- For Each sh In shs
- ActiveDocument.ClearSelection
- sh.CreateSelection
- If "CenterLine" = sh.ObjectData("MarkName").Value Then
- put_center_line sh
-
- ElseIf "TargetLine" = sh.ObjectData("MarkName").Value Then
- put_target_line sh
- ElseIf "ColorStrip" = sh.ObjectData("MarkName").Value Then
- put_ColorStrip sh ' 放置彩色色阶条
- ' sh.Delete ' 工厂定置不用色阶条
- ElseIf "ColorMark" = sh.ObjectData("MarkName").Value Then
- ' CMYK四色标记放置咬口
- If (px > py) Then
- sh.SetPosition px + 25#, 0
- Else
- sh.Rotate 270#
- ActiveDocument.ReferencePoint = cdrBottomLeft
- sh.SetPosition 0, py - 48#
- End If
- Else
- sh.Delete ' 没找到标记 ColorMark 删除
-
- End If
- Next sh
- ' 标准页面大小和添加页面框
- put_page_size
- put_page_line
-
- '
- ActivePage.Shapes.FindShapes(Query:="@colors.find(RGB(26, 22, 35))").CreateSelection
- ActiveSelection.Group
- ActiveSelection.Outline.SetProperties 0.1, Color:=CreateRegistrationColor
- '
- ActiveDocument.EndCommandGroup
- Application.Optimization = False
- ActiveWindow.Refresh: Application.Refresh
- Exit Sub
- ErrorHandler:
- MsgBox "请先选择要印刷的物件群组,本插件完成设置页面大小,自动中线色阶条对准线功能!"
- Application.Optimization = False
- On Error Resume Next
- End Sub
- Private Sub set_page_size()
- ' 实践应用: 选择物件群组,页面设置物件大小,物件页面居中
- ActiveDocument.Unit = cdrMillimeter
- Dim OrigSelection As ShapeRange, sh As Shape
- Set OrigSelection = ActiveSelectionRange
- Set sh = OrigSelection.Group
- ' MsgBox "选择物件尺寸: " & sh.SizeWidth & "x" & sh.SizeHeight
- ActivePage.SetSize Int(sh.SizeWidth + 0.9), Int(sh.SizeHeight + 0.9)
- sh.AlignToPageCenter cdrAlignHCenter + cdrAlignVCenter
- End Sub
- Private Function set_line_color(line As Shape)
- '
- line.Outline.SetProperties Color:=CreateRGBColor(26, 22, 35)
- End Function
- Private Function put_target_line(sh As Shape)
- ' 在页面四角放置套准标记线 Set sh = ActiveDocument.Selection
- set_line_color sh
- sh.AlignToPage cdrAlignLeft + cdrAlignTop
- sh.Duplicate 0, 0
- sh.Rotate 180
- sh.AlignToPage cdrAlignRight + cdrAlignBottom
- sh.Duplicate 0, 0
- sh.Flip cdrFlipHorizontal ' 物件镜像
- sh.AlignToPage cdrAlignLeft + cdrAlignBottom
- sh.Duplicate 0, 0
- sh.Rotate 180
- sh.AlignToPage cdrAlignRight + cdrAlignTop
- End Function
- Private Function put_center_line(sh As Shape)
- ' 在页面四边放置中线 Set sh = ActiveDocument.Selection
- set_line_color sh
- sh.AlignToPage cdrAlignHCenter + cdrAlignTop
- sh.Duplicate 0, 0
- sh.Rotate 180
- sh.AlignToPage cdrAlignHCenter + cdrAlignBottom
- sh.Duplicate 0, 0
- sh.Rotate 90
- sh.AlignToPage cdrAlignVCenter + cdrAlignRight
- sh.Duplicate 0, 0
- sh.Rotate 180
- sh.AlignToPage cdrAlignVCenter + cdrAlignLeft
- End Function
- Private Function put_ColorStrip(sh As Shape)
- ' 在页面四边放置中线 Set sh = ActiveDocument.Selection
- sh.OrderToBack
- If ActivePage.SizeWidth >= ActivePage.SizeHeight Then
- sh.AlignToPage cdrAlignLeft + cdrAlignTop
- sh.Duplicate 5, 0
- sh.AlignToPage cdrAlignRight + cdrAlignTop
- sh.Duplicate -25, 0
- sh.Rotate 90
- sh.AlignToPage cdrAlignLeft + cdrAlignBottom
- sh.Duplicate 0, 5
- sh.AlignToPage cdrAlignRight + cdrAlignBottom
- sh.Move 0, 5
- Else
- sh.AlignToPage cdrAlignLeft + cdrAlignTop
- sh.Duplicate 5, 0
- sh.AlignToPage cdrAlignLeft + cdrAlignBottom
- sh.Duplicate 5, 0
- sh.Rotate 270
- sh.AlignToPage cdrAlignRight + cdrAlignTop
- sh.Duplicate 0, -5
- sh.AlignToPage cdrAlignRight + cdrAlignBottom
- sh.Move 0, 25
- End If
- End Function
- Private Function put_page_line()
- ' 添加页面框线
- Dim s1 As Shape
- Set s1 = ActiveLayer.CreateRectangle2(0, 0, ActivePage.SizeWidth, ActivePage.SizeHeight)
- s1.Fill.ApplyNoFill: s1.OrderToBack
- s1.Outline.SetProperties 0.04, Color:=CreateCMYKColor(0, 100, 0, 0)
- End Function
- Private Function put_page_size()
- ' 添加文字 页面大小
- Dim st As Shape
- size = Trim(Str(Int(ActivePage.SizeWidth))) + "x" + Trim(Str(Int(ActivePage.SizeHeight))) + "mm"
- Set st = ActiveLayer.CreateArtisticText(0, 0, size, , , "Arial", 8)
- st.AlignToPage cdrAlignRight + cdrAlignTop
- st.Move -3, -0.2
- End Function
|