nyblueice 发表于 2024-4-6 14:17:52

【原创源码未加密】CDR 按照面积核算价格生成标注图号

本帖最后由 nyblueice 于 2024-4-6 14:20 编辑

如题 gms插件按照面积计算价格生成标注,图号,图框,方便客户核对信息
复制两个文件到cdr安装目录 draw gms文件夹下,prices.txt是价格信息,每行一个。自己动手改,拿捏不到价格的就写888,标注的时候会弹框,单次输入就行。
批量,支持只能群组(代码本论坛翻到的,图多有点卡建议先智能群组后再运行)


何先生 发表于 2024-4-6 14:23:08

做喷绘广告的可以用,这个插件我基本用不到咯

passer 发表于 2024-4-6 14:24:57

不是我的私享版了。哈

nyblueice 发表于 2024-4-6 14:26:50

passer 发表于 2024-4-6 14:24
不是我的私享版了。哈

发的是,截图的是我自己电脑上的,没注意。

sunme 发表于 2024-4-6 14:32:16

这挺方便算价的,对于没有报价软件的很实用!

大神周 发表于 2024-4-6 16:20:57

想通过这个帖子,顺便请教一下各位大佬,写插件怎么写,或者说,写GMS插件需要用到什么工具,如果有大佬有幸看到,可以回复一下吗,尽量详细点,拜托!
很早之前学过C语言,不知道能不能写

nyblueice 发表于 2024-4-6 17:13:29

大神周 发表于 2024-4-6 16:20
想通过这个帖子,顺便请教一下各位大佬,写插件怎么写,或者说,写GMS插件需要用到什么工具,如果有大佬有 ...

gms就是从录制一个宏命令开始。
你创建一个矩形,设置了长宽,描边,填充。这些宏都会记录下来,点击运行这个记录的宏就能重复你录制的过程。他不是参数化的。
所谓编程,就是你把你前面输入的固定的值,编程一个一个可以让你交互的数据,比如一个界面上input,然后把这个input的值调入你录制的代码里面。
这样你就可以通过输入参数,然后生成参数化的矩形框。
下面就是录制宏命令的片段。主要是为了了解我对powerclip对象的一些操作,用程序语言是怎么描述的。
Sub TemporaryMacro()
    ' Recorded 2024/4/5
    ' Recording of this command is not supported: PowerclipContentOperation
    ' Recording of this command is not supported: PowerclipContentOperation
    ' Recording of this command is not supported: PowerclipContentOperation    这些可以看出来,他不支持录制。
    Windows.FindWindow("CorelDRAW 2020 (64-Bit) - 未命名 -1*").ActiveView.SetViewPoint 1.127402, 120.818748, 2
    Windows.FindWindow("CorelDRAW 2020 (64-Bit) - 未命名 -1*").ActiveView.SetViewPoint 2.460748, 118.152079, 1
    Windows.FindWindow("CorelDRAW 2020 (64-Bit) - 未命名 -1*").ActiveView.SetViewPoint 61.09452, 66.696622, 2
    Windows.FindWindow("CorelDRAW 2020 (64-Bit) - 未命名 -1*").ActiveView.SetViewPoint 85.296319, 66.696626, 3
    Windows.FindWindow("CorelDRAW 2020 (64-Bit) - 未命名 -1*").ActiveView.SetViewPoint 85.296319, 66.69663, 6
    ActiveLayer.Shapes(1).PowerClip.EnterEditMode这里进入图文框的编辑模式
    ActiveDocument.Pages(1).Layers("PowerClip 内容").Shapes.All.CreateSelection选择当前文档中,当前页面,图层名称是("PowerClip 内容")的图层,上面的图形,全部,创建一个选区
    ActiveSelection.Move 26.666669, 0.666665移动到坐标上
    ActiveLayer.Shapes(1).PowerClip.LeaveEditMode退出编辑模式
    ActiveLayer.Shapes(2).PowerClip.EnterEditMode选择第二个对象进入编辑模式后面是重复的
    ActiveDocument.Pages(1).Layers("PowerClip 内容").Shapes.All.CreateSelection
    Dim dup1 As ShapeRange
    Set dup1 = ActiveSelection.DuplicateAsRange(29.500004, -1.833335)
-----------------------------------------------------------------------------
这样你就知道,程序是大概如何处理所谓的powerclip流程。后面我还录制了很多东西,就是为了找我程序即将从操作“谁”用什么方法操作他,参数是多少。

然后新建一个gms文件,开始盘他。
---------------------------------------------------------
Sub A内容顺转90°()
    ActiveDocument.BeginCommandGroup "内容顺90°"   //告诉cdr 这是一个动作组,等下撤销,这里面不管发生了什么,全部一步退回到运行前的位置。begin对应后面有个end
    Dim sr As Shape    // 定义一个sr 是一个shape对象,
      
    If ActiveSelection.Shapes.Count <> 0 Then   // 判断一下你有没有再页面中选中对象 如果不等于0,就是有选中,那么向下执行
      For Each sr In ActiveSelection.Shapes   // 选中的每一个对象分别执行下面的代码
            If Not sr.PowerClip Is Nothing Then    // 选中的对象如果不是一个powerclip 跳过
                sr.PowerClip.Shapes.All.Rotate 90// sr 就是你当前程序找的的第一个pc对象.powerclip(找到框).框里的内容.全部.旋转90度
            End If   //图框对象判断结束
      Next sr   //这个图框处理完事,继续下一个
    End If// 第一个判断结束,也就是你有没有选中对象那个判断
    ActiveDocument.EndCommandGroup   //撤销步骤打包成一次处理,顶上那个begin对应的
End Sub   程序结束完成。

我也没学过这玩意,编辑器本身有代码提示,输入完事没反应,多点“.”看后面的提示。

论坛很多没有加密的源码,看下他们是怎么跑起来的。还有就是他们怎么找打对象,程序里面找对象的办法,就跟你刚学cdr找菜单项目和工具一样,刚开始找不到位置是最头大的,而不是程序逻辑。

你找到你要操作的对象,然后再去考虑程序语法,和数据逻辑计算。就没啥大问题了。

ps. 我不懂vb语法,所以我借助了百度文心,提问的时候第一行告诉他:CorelDRAW vba中我想实现XXXX的目的,请给出完整示例代码。 他给出的语法是没毛病的,但是他对象可能找的不对,需要根据cdr调整正确的对象就行了。

打了断点F8 就能逐行测试。打了半天字,给我送过花花不过分吧!~

WangJun 发表于 2024-4-6 17:28:47

本帖最后由 WangJun 于 2024-4-6 17:30 编辑

看起来很方便设计用的少输出公司相对用多些收藏了

nyblueice 发表于 2024-4-6 17:31:47

WangJun 发表于 2024-4-6 17:28
看起来很方便设计用的少输出公司相对用多些收藏了

输出还真没啥用,我主要是要截图跟客户核对,还有跟加工厂核对截图用。

WangJun 发表于 2024-4-6 18:50:23

nyblueice 发表于 2024-4-6 17:31
输出还真没啥用,我主要是要截图跟客户核对,还有跟加工厂核对截图用。 ...

我说的输出是   有些小的喷绘店(接单就可以直接计算出来) 多少钱   反正这个不错    购买了:lol
页: [1] 2 3
查看完整版本: 【原创源码未加密】CDR 按照面积核算价格生成标注图号