- 精华
- 活跃值
-
- 积分
- 1032
- 违规
-
- 印币
-
- 鲜花值
-
- 在线时间
- 小时
累计签到:199 天 连续签到:7 天
|
楼主 |
发表于 2024-4-6 17:13:29
|
显示全部楼层
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 就能逐行测试。 打了半天字,给我送过花花不过分吧!~
|
3
赠人玫瑰,手有余香!如单纯感谢,请送花!凡是以文字形式感谢,即被视为水帖,会扣币处理!
鲜花榜单
-
+1
给力!
-
+1
对你表示感谢!
-
+1
对你表示感谢!
|