遥不可及灬 发表于 2025-1-7 21:51:46

我发的帖子有最简单的统一尺寸,宽高相同的,没做等宽或者等高

菲凡制版 发表于 2025-1-8 14:07:19

遥不可及灬 发表于 2025-1-7 21:51
我发的帖子有最简单的统一尺寸,宽高相同的,没做等宽或者等高

不会改呢,我是菜鸟一个,我想问你一下Private Sub zxdq_Click()
    ActiveDocument.BeginCommandGroup "左对齐10mm间距分布" ' 开始撤销组,修改了描述以体现间距变化
    DistributeVerticallyWithTenMmSpacing
    ActiveDocument.EndCommandGroup'结束撤销组
End Sub

Sub DistributeVerticallyWithTenMmSpacing()
    Dim curSelection As ShapeRange
    Dim i As Integer
    Dim curLeft As Double
    Dim curBottom As Double
    Dim sortedShapes() As Shape

    ' 获取当前选定对象
    Set curSelection = ActiveSelectionRange

    ' 检查用户是否选中了至少两个对象
    If curSelection.Count < 2 Then
      MsgBox "请选中2个或以上数量的对象。"
      Exit Sub
    End If
    If Not curSelection Is Nothing Then
      ' 创建一个形状数组以便对其进行排序
      ReDim sortedShapes(1 To curSelection.Count)
      For i = 1 To curSelection.Count
            Set sortedShapes(i) = curSelection(i)
      Next i

      ' 按左下角坐标对形状数组进行排序,保证后续能基于此有序排列图形
      SortShapesByLeftBottom sortedShapes

      ' 设置第一个形状的位置
      curLeft = sortedShapes(1).LeftX
      curBottom = sortedShapes(1).BottomY

      ' 调整每个对象的位置,实现垂直方向间距为10mm的分布
      For i = 1 To UBound(sortedShapes)
            sortedShapes(i).LeftX = curLeft
            sortedShapes(i).BottomY = curBottom
            curBottom = sortedShapes(i).TopY + 10 ' 这里加上10mm间距,更新为下一个对象的底部位置(基于当前对象顶部加间距)
      Next i
    End If
End Sub

Sub SortShapesByLeftBottom(arr() As Shape)
    Dim i As Long
    Dim j As Long
    Dim tempShape As Shape
    For i = LBound(arr) To UBound(arr) - 1
      For j = i + 1 To UBound(arr)
            ' 统一按照先比较LeftX坐标,如果LeftX相同再比较BottomY坐标的逻辑来排序
            If arr(j).LeftX < arr(i).LeftX Then
                Set tempShape = arr(i)
                Set arr(i) = arr(j)
                Set arr(j) = tempShape
            ElseIf arr(j).LeftX = arr(i).LeftX Then
                If arr(j).BottomY < arr(i).BottomY Then
                  Set tempShape = arr(i)
                  Set arr(i) = arr(j)
                  Set arr(j) = tempShape
                End If
            End If
      Next j
    Next i
End Sub

Private Sub dydq_Click()
    ActiveDocument.BeginCommandGroup '开始撤销组
    DistributeHorizontallyWithTenMmSpacing
    ActiveDocument.EndCommandGroup '结束撤销组
End Sub

Sub DistributeHorizontallyWithTenMmSpacing()
    Dim curSelection As ShapeRange
    Dim i As Integer
    Dim curLeft As Double
    Dim curTop As Double
    Dim sortedShapes() As Shape

    ' 获取当前选定对象
    Set curSelection = ActiveSelectionRange

    ' 检查用户是否选中了至少两个对象
    If curSelection.Count < 2 Then
      MsgBox "请选中2个或以上数量的对象。"
      Exit Sub
    End If
    If Not curSelection Is Nothing Then
      ' 创建一个形状数组以便对其进行排序
      ReDim sortedShapes(1 To curSelection.Count)
      For i = 1 To curSelection.Count
            Set sortedShapes(i) = curSelection(i)
      Next i

      ' 按左下角坐标对形状数组进行排序(这里使用统一后的SortShapesByLeftBottom过程)
      SortShapesByLeftBottom sortedShapes

      ' 设置第一个形状的位置
      curLeft = sortedShapes(1).LeftX
      curTop = sortedShapes(1).TopY

      ' 调整每个对象的位置,实现水平方向间距为10mm的分布
      For i = 1 To UBound(sortedShapes)
            sortedShapes(i).LeftX = curLeft
            sortedShapes(i).TopY = curTop
            curLeft = sortedShapes(i).RightX + 10 ' 这里加上10mm间距,更新为下一个对象的左边位置(基于当前对象右边加间距)
      Next i
    End If
End Sub
向下对齐是忘上面跑的,这是你插件的代码。

遥不可及灬 发表于 2025-1-8 17:38:50

本帖最后由 遥不可及灬 于 2025-1-8 17:45 编辑

http://8.141.85.246:7791/i/2025/01/08/677e35d625d95.png
最近没有时间

snihwfn 发表于 2025-1-8 18:07:17

是这种吧,没你那么高级。:lol

遥不可及灬 发表于 2025-1-9 14:52:59




是要这样效果吗?不然别下载哦
https://www.123684.com/s/9QUSVv-cXU3A?提取码:**** 本内容需购买 ****

很好是的 发表于 2025-1-9 16:26:40

现在印币这么贬值了吗?一个软件自带的简单功能要200个币?随便一个原创的脚本或者GMS都是一两百个币,

菲凡制版 发表于 2025-1-9 16:30:24

遥不可及灬 发表于 2025-1-9 14:52
是要这样效果吗?不然别下载哦
https://www.123684.com/s/9QUSVv-cXU3A?提取码:**** 本内容需购买 **** ...

我想要的效果是右上对齐,左下对齐,但是你这个左是往上的

遥不可及灬 发表于 2025-1-9 17:38:43

很好是的 发表于 2025-1-9 16:26
现在印币这么贬值了吗?一个软件自带的简单功能要200个币?随便一个原创的脚本或者GMS都是一两百个币, ...

这属于定制啊,只有他一个人有这个需求啊,你什么软件自带这个功能一键设置间距 对齐?
印币对我来说,不能兑换RMB,只是希望有需要的在论坛充值。
你找找人定制,看人家手机印币还是RMB

很好是的 发表于 2025-1-9 18:35:55

本帖最后由 很好是的 于 2025-1-9 18:45 编辑

遥不可及灬 发表于 2025-1-9 17:38
这属于定制啊,只有他一个人有这个需求啊,你什么软件自带这个功能一键设置间距 对齐?
印币对我来说,不 ...

CDR自带的对齐和分布点两下,你这个点一下

yongsheng 发表于 2025-1-13 21:30:11

遥不可及灬 发表于 2025-1-9 14:52
是要这样效果吗?不然别下载哦
https://www.123684.com/s/9QUSVv-cXU3A?提取码:**** 本内容需购买 **** ...

这个是我自己写的,被你们各种改,我有完整版本的,你要吗
页: 1 [2] 3
查看完整版本: 求这2个插件的GMS