QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: xiyanghxc
收起左侧

寻求一个将dxf文件批量转换成cdr的插件或动作

[复制链接]
累计签到:195 天
连续签到:7 天
发表于 2025-4-14 10:32:39 | 显示全部楼层
这个要求,应该是要单独开发的。
回复 支持 反对 送花

使用道具 举报

累计签到:1651 天
连续签到:1160 天
 楼主| 发表于 2025-4-14 11:00:58 | 显示全部楼层
yiweimeigong 发表于 2025-4-14 10:02
我这种没技术的搬运工就不凑热闹了。
个人建议,你其实可以像6楼大神说的,报出你的预算。
你节省时间别人 ...

如果仅仅开个VIP会员就可以得到满意解决方案,也未尝不可。在运气面前我还是更相信米的动力,为付出买单才理所应当。只是尝试是否有哪路神仙兴趣上头、心血来潮小试牛刀了呢
回复 支持 反对 送花

使用道具 举报

累计签到:657 天
连续签到:1 天
发表于 2025-4-14 12:06:44 | 显示全部楼层
看楼主的增加要求,没5K都不好接单的
回复 支持 反对 送花

使用道具 举报

累计签到:1651 天
连续签到:1160 天
 楼主| 发表于 2025-4-19 08:54:41 | 显示全部楼层
本帖最后由 xiyanghxc 于 2025-4-19 08:55 编辑

试着用deepseek生成的,但运行报错,哪位大神指导一下,有偿感谢!
寻求一个将dxf文件批量转换成cdr的插件或动作{tag}(1)


Sub ProcessDXF()
    Dim origFilePath As String
    Dim newFilePath As String
    Dim layerMark As Layer, layerCut As Layer
    Dim oldLayer As Layer
    Dim group As Shape
    Dim s As Shape
    Dim doc As Document
    Dim page As Page
    Dim i As Integer
   
    ' 设置单位系统为毫米
    Application.Unit = cdrMillimeter
   
    ' 选择DXF文件
    With Application.FileDialog(cdrFileDialogOpen)
        .Filter = "DXF 文件 (*.dxf)|*.dxf"
        If .ShowOpen() <> -1 Then Exit Sub
        origFilePath = .SelectedFiles(1)
    End With
   
    ' 创建新文档
    Set doc = Application.CreateDocument
    Set page = doc.Pages(1)
   
    ' 导入DXF文件
    doc.ImportEx origFilePath, cdrRangeAllPages, cdrAppendPage, cdrMillimeters, , , , "DXF"
   
    ' 群组所有对象
    If doc.ActiveLayer.Shapes.Count > 0 Then
        Set group = doc.ActiveLayer.Shapes.All.Group
    Else
        MsgBox "导入文件为空!"
        Exit Sub
    End If
   
    ' 检查并旋转方向
    If group.SizeWidth > group.SizeHeight Then
        group.Rotate 90, group.CenterX, group.CenterY
    End If
   
    ' 设置页面尺寸
    page.SetSize 320, 464
    page.Orientation = cdrPortrait
   
    ' 居中对象
    group.AlignToPage cdrAlignHCenter + cdrAlignVCenter
   
    ' 处理标记层
    On Error Resume Next
    Set layerMark = doc.Layers("标记层")
    If layerMark Is Nothing Then Set layerMark = doc.CreateLayer("标记层")
    For i = doc.Layers.Count To 1 Step -1
        Set oldLayer = doc.Layers(i)
        If oldLayer.Name = "标记层" And oldLayer.Index <> layerMark.Index Then
            oldLayer.Shapes.All.MoveToLayer layerMark
            oldLayer.Delete
        End If
    Next i
   
    ' 处理切割层
    Set layerCut = doc.Layers("切割层")
    If layerCut Is Nothing Then Set layerCut = doc.CreateLayer("切割层")
    For i = doc.Layers.Count To 1 Step -1
        Set oldLayer = doc.Layers(i)
        If oldLayer.Name = "切割层" And oldLayer.Index <> layerCut.Index Then
            oldLayer.Shapes.All.MoveToLayer layerCut
            oldLayer.Delete
        End If
    Next i
   
    ' 调整图层顺序
    layerMark.Order 1
    layerCut.Order 2
   
    ' 解组所有对象
    group.UngroupAll
   
    ' 移动圆形到标记层
    For Each s In page.AllShapes
        If s.Type = cdrEllipseShape Then
            If Abs(s.SizeWidth - 5) < 0.001 And Abs(s.SizeHeight - 5) < 0.001 Then
                s.MoveToLayer layerMark
            End If
        End If
    Next s
   
    ' 移动剩余对象到切割层
    For Each s In page.AllShapes
        If s.Layer <> layerMark And s.Layer <> layerCut Then
            s.MoveToLayer layerCut
        End If
    Next s
   
    ' 保存文件
    newFilePath = Replace(origFilePath, ".dxf", ".cdr", 1, -1, vbTextCompare)
    doc.SaveAs newFilePath, cdrVersion17
    doc.Close
    MsgBox "处理完成!保存路径:" & newFilePath
End Sub
回复 支持 反对 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

关闭

注意注意注意:必看上一条 /1 下一条

华印网 - 华印社区
Share More 周一至周日:09:00 - 21:00
华印网旗下的设计印刷制作类专业技术站点
请勿发布违反国家法律法规的内容,会员观点不代表本站立场
企鹅群号:119572101

华印网汇集印前印后技术、PDF拼版、防伪包装、数码印刷、合版印刷、图文设计、平面设计、数码印刷及CTP等最新印刷技术,提供软件汉化、插件汉化、cdr插件、ai插件、ps插件、pdf插件、印刷流程、ctp输出、印刷软件、印能捷、esko、CorelDRAW、InDesign、Illustrator、CTP、CDR以及PDF软件下载的综合性印刷论坛社区!

Powered by Discuz! X3.4 © 2001-2021,Tencent Cloud.

站点地图|小黑屋|手机版|Archiver|华印 ( 粤ICP备19020152号-1 )

GMT+8, 2025-4-30 17:39 , Processed in 0.169001 second(s), 23 queries , Gzip On, Yac On.

快速回复 返回顶部 返回列表