1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- '// Attribute VB_Name = "剪贴板尺寸建立矩形"
- Type Coordinate
- x As Double
- y As Double
- End Type
- Public O_O As Coordinate
- Sub start()
- '// 坐标原点
- O_O.x = 0: O_O.y = 0
- Dim ost As ShapeRange
- Set ost = ActiveSelectionRange
- O_O.x = ost.LeftX
- O_O.y = ost.BottomY - 50 '选择物件 下移动 50mm
- '// 建立矩形 Width x Height 单位 mm
- ' Rectangle 101, 151
- Dim Str, arr, n
- Str = GetClipBoardString
- ' 替换 mm x * 换行 TAB 为空格
- Str = VBA.Replace(Str, "mm", " ")
- Str = VBA.Replace(Str, "x", " ")
- Str = VBA.Replace(Str, "*", " ")
- Str = VBA.Replace(Str, Chr(13), " ")
- Str = VBA.Replace(Str, Chr(9), " ")
-
- Do While InStr(Str, " ") '多个空格换成一个空格
- Str = VBA.Replace(Str, " ", " ")
- Loop
- arr = Split(Str)
-
- ActiveDocument.BeginCommandGroup '一步撤消'
- Dim x As Double
- Dim y As Double
- For n = LBound(arr) To UBound(arr) - 1 Step 2
- ' MsgBox arr(n)
- x = Val(arr(n))
- y = Val(arr(n + 1))
-
- If x > 0 And y > 0 Then
- Rectangle x, y
- O_O.x = O_O.x + x + 30
- End If
- Next
- ActiveDocument.EndCommandGroup
- End Sub
- Private Function Rectangle(Width As Double, Height As Double)
- ActiveDocument.Unit = cdrMillimeter
- Dim size As Shape
- Dim d As Document
- Dim s1 As Shape
- '// 建立矩形 Width x Height 单位 mm
- Set s1 = ActiveLayer.CreateRectangle(O_O.x, O_O.y, O_O.x + Width, O_O.y - Height)
-
- '// 填充颜色无,轮廓颜色 K100,线条粗细0.3mm
- s1.Fill.ApplyNoFill
- s1.Outline.SetProperties 0.3, OutlineStyles(0), CreateCMYKColor(0, 100, 0, 0), ArrowHeads(0), ArrowHeads(0), cdrFalse, cdrFalse, cdrOutlineButtLineCaps, cdrOutlineMiterLineJoin, 0#, 100, MiterLimit:=5#
-
- sw = s1.SizeWidth
- sh = s1.SizeHeight
- Text = Trim(Str(sw)) + "x" + Trim(Str(sh)) + "mm"
- Set d = ActiveDocument
- Set size = d.ActiveLayer.CreateArtisticText(O_O.x + sw / 2 - 25, O_O.y + 10, Text) '// O_O.y + 10 标注尺寸上移 10mm
- size.Fill.UniformColor.CMYKAssign 0, 100, 100, 0
- End Function
- Private Function setRectangle(Width As Double, Height As Double)
- Dim s1 As Shape
- Set s1 = ActiveSelection
- ActiveDocument.Unit = cdrMillimeter
- '// 物件中心基准, 先把宽度设定为
- ActiveDocument.ReferencePoint = cdrCenter
- s1.SetSize Height, Height
- '// 物件旋转 30度,轮廓线1mm ,轮廓颜色 M100Y100
- s1.Rotate 30#
- s1.Outline.SetProperties 1#
- s1.Outline.SetProperties Color:=CreateCMYKColor(0, 100, 100, 0)
- End Function
- Private Function GetClipBoardString() As String
- On Error Resume Next
- Dim MyData As New DataObject
- GetClipBoardString = ""
- MyData.GetFromClipboard
- GetClipBoardString = MyData.GetText
- Set MyData = Nothing
- End Function
|