【原创源码未加密】CDR 按照面积核算价格生成标注图号
本帖最后由 nyblueice 于 2024-4-6 14:20 编辑如题 gms插件按照面积计算价格生成标注,图号,图框,方便客户核对信息
复制两个文件到cdr安装目录 draw gms文件夹下,prices.txt是价格信息,每行一个。自己动手改,拿捏不到价格的就写888,标注的时候会弹框,单次输入就行。
批量,支持只能群组(代码本论坛翻到的,图多有点卡建议先智能群组后再运行)
做喷绘广告的可以用,这个插件我基本用不到咯 不是我的私享版了。哈 passer 发表于 2024-4-6 14:24
不是我的私享版了。哈
发的是,截图的是我自己电脑上的,没注意。 这挺方便算价的,对于没有报价软件的很实用! 想通过这个帖子,顺便请教一下各位大佬,写插件怎么写,或者说,写GMS插件需要用到什么工具,如果有大佬有幸看到,可以回复一下吗,尽量详细点,拜托!
很早之前学过C语言,不知道能不能写 大神周 发表于 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:30 编辑
看起来很方便设计用的少输出公司相对用多些收藏了 WangJun 发表于 2024-4-6 17:28
看起来很方便设计用的少输出公司相对用多些收藏了
输出还真没啥用,我主要是要截图跟客户核对,还有跟加工厂核对截图用。 nyblueice 发表于 2024-4-6 17:31
输出还真没啥用,我主要是要截图跟客户核对,还有跟加工厂核对截图用。 ...
我说的输出是 有些小的喷绘店(接单就可以直接计算出来) 多少钱 反正这个不错 购买了:lol