coreldrawvba吧
关注: 84 贴子: 252

CorelDRAW VBA 插件开发技术交流

  • 3
    牛为设计大师已在CDR插件技术网首发,牛为设计大师是一款专注平面设计的CDR插件,为广大设计师和相关工作提供日常高频操作的插件功能,利用自动化技术,提高工作效率。当前首发版本的功能主要包含:文件操作、内容操作、导入模板、导出PDF、尺寸标注、高级阵列、节点操作等,后续将发布更多实用的功能,敬请期待! 如果插件使用过程中有任何问题和建议,欢迎在此贴讨论。
    Zebe 9-25
  • 0
    唐小跃渐变样式CDR插件,可以实现快捷的渐变样式填充、简单3D特效字,一键设置渐变样式,非常实用的插件。 免费使用下载地址:https://cdrvba.com/plugin-evunmbj27ybu
    Zebe 9-20
  • 0
    创建段落文本,然后将最后一个字符填充为RGB红色。 Sub Test() Dim t As Text Dim s As Shape Dim d As Document Set d = CreateDocument Set s = d.ActiveLayer.CreateParagraphText(2, 2, 8, 8, "CDR插件技术网") Set t = s.Text t.Story.Characters.Last.Fill.UniformColor.RGBAssign 155, 0, 0 End Sub
    Zebe 9-20
  • 0
    Sub Test() Dim s As Shape Dim s1 As Shape Dim s2 As Shape Dim d As Document Dim t As Text Dim strText As String strText = "This is a test. This text must be long enough to span across multiple columns In this frame. By adding this sentence, this text is now long enough." strText = strText & " This is the next sentence. " & strText Set d = CreateDocument Set s = d.ActiveLayer.CreateParagraphText(2, 2, 5, 5, strText) Set s1 = d.ActiveLayer.CreateParagraphText(5, 5, 8, 8) Set s2 = d.ActiveLayer.CreateParagraphText(8, 8, 10, 10) Set t = s.Text ' 将框架链接到
    Zebe 9-20
  • 0
    Dim path As String path = "D:\新建文件夹" CorelScriptTools.MkFolder (path)
    Zebe 9-20
  • 0
    如题,有什么问题可以在这个吧提问,我会抽空解答!
    Zebe 9-13
  • 0
    '=============================================================== ' 方法:创建两个图形之间的调和效果 '=============================================================== Sub createBlendEffect() ' 判断是否选择了至少2个形状 If ActiveSelection.Shapes.count <> 2 Then MsgBox "请选择2个要调和的图形" Exit Sub End If ' 定义混合效果 Dim eff1 As Effect ' 取得要混合的两个图形 Dim s1 As Shape, s2 As Shape Set s1 = ActiveSelection.Shapes(1) Set s2 = ActiveSelection.Shapes(2) ' 创建混合效果 Set eff1 = s1.Crea
    Zebe 9-10
  • 5
    经核实吧主Zebe1989 未通过普通吧主考核。违反《百度贴吧吧主制度》第八章规定http://tieba.baidu.com/tb/system.html#cnt08 ,无法在建设 coreldrawvba吧 内容上、言论导向上发挥应有的模范带头作用。故撤销其吧主管理权限。百度贴吧管理组
  • 8
    CORELVBA对coreldraw的工作无疑带来很大的帮助,但是,微软提供了更好的工具vsta(visual studio tools for Applications),支持vb.net c#.net编程,如果只是无聊玩一下,请移步vba就好。如果看长远,还是vsta好,下面贴一个我的vsta做的插件截图。
    Zebe 9-7
  • 2
    corledraw导入图片到指定方框位置,并进行重放样贴图用那几个函数?求回复
    Zebe 9-7
  • 2
    有没有人会写智能群组或结合功能啊?自动判断中文英文,自动将每一个字的笔画组合到一起,准确率要求百分之九十九以上的方法?求大神指点
    Zebe 9-7
  • 0
    计算矩形的周长和面积。 '================================================== ' 方法:计算矩形的周长和面积 '================================================== Sub calculateRectangle() ' 判断当前是否选择了形状 Dim sh As Shape Set sh = ActiveShape If sh Is Nothing Then MsgBox "请先选中一个形状" Exit Sub End If ' 判断选择的形状是不是矩形 If sh.Type <> cdrRectangleShape Then MsgBox "你选中的不是矩形,请选中矩形" Exit Sub End If ' 改变文档单位 ActiveDocument.Unit = cdrMillimeter
    Zebe 9-5
  • 0
    下载文件到本地指定目录,使用的是 URLDownloadToFile 这个系统函数。 Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long '=============================================================================== ' 函数:下载文件到指定目录 ' 作用:下载文件到指定目录,下载成功时返回True,否则返回False ' 参数:fileUrl -> 要下载的文件完整路
    Zebe 9-5
  • 0
    拿到 CorelDRAW 软件 Programs 目录所在的路径,例如:C:\Program Files\CorelDRAW_X4_SP2\Programs。 Public Function getCoreldrawProgramPath() As String Dim path As String path = Replace(Application.path, "\Draw", "\Programs") getCoreldrawProgramPath = path End Function
    Zebe 9-4
  • 0
    通过CorelDRAW提供的框架自动化调用能力(FrameWork.Automation),我们可以实现在代码中,一行代码调用指定的功能,这段代码用来列出菜单的唯一ID和标题。调用方式:Application.FrameWork.Automation.InvokeItem "菜单ID"。 '================================================= ' 方法:打印CommandBar信息 ' 作用:将所有CommandBar信息全部打印出来,用于自动化调用 '================================================= Public Sub printCommandBarItemInfo() On Error Resume Next Dim cmdbar, ctl For Each c
    Zebe 9-4
  • 0
    利用URL属性给对象打标签,用来实现模板化操作。既可以通过代码来标记对象,也可以手动动过对象属性面板来设置URL的地址属性。 '======================================= ' 方法:利用URL属性给对象打标签 '======================================= Sub markShapeWithUrl() ' 判断当前是否选择了形状 Dim sh As Shape Set sh = ActiveShape If sh Is Nothing Then MsgBox "请先选中一个形状" Exit Sub End If ' 给对象打URL属性标记 sh.url.Address = "自定义标记内容" MsgBox "标记
    Zebe 9-4
  • 0
    在 ActiveLayer 对象中,可以通过 CreateEllipse 这个方法,使用 4 个参数来创建椭圆或者圆形。椭圆和圆形的区别在于半径的不同。 Public Sub test() ' 定义一个形状对象 Dim s As Shape ' 设置当前活动文档的单位为毫米 ActiveDocument.Unit = cdrMillimeter ' 在当前活动图层创建一个椭圆(默认坐标参考点是左下角,请改变 ActiveDocument.ReferencePoint 的值来尝试不同效果) Dim left, top, right, bottom left = 10 ' 从文档左边距离1厘米处开始绘制 top = 10 ' 从距离底部距离1厘
    Zebe 9-4
  • 0
    这段代码用来遍历当前页面所有的位图,判断其颜色模式,如果不是CMYK颜色模式的图像,则将其转换为CMYK模式的图像。 Sub convertBitmapToCmykMode() ' 声明形状变量 Dim s As Shape ' 遍历当前页面所有的位图(如果要扩大或者缩小搜索范围,请替换掉ActivePage) For Each s In ActivePage.Shapes.FindShapes(, cdrBitmapShape) ' 如果当前位图不是CMYK颜色模式 If s.Bitmap.Mode <> cdrCMYKColorImage Then ' 将其转换为CMYK颜色模式 s.Bitmap.ConvertTo cdrCMYKColorImage End If Next s End Sub
    Zebe 9-4
  • 0
    Sub 框架高度合适文本() Dim s As Shape ActiveDocument.BeginCommandGroup "框架高度合适文本" '动作开始 For Each s In ActiveSelection.Shapes ' 如果是文本类型 If s.Type = cdrTextShape Then ' 如果是段落文本 If s.Text.Type = cdrParagraphText Then adjustFrame s End If End If Next s ActiveDocument.EndCommandGroup '结束 End Sub Private Sub adjustFrame(s As Shape) Dim ygdu As Double ' 获取段落文本框架原高度 ygdu = s.SizeHeight ' 如果文本超过文本框显示并且段落文本框架高度小于900英寸(防止因为宽
    Zebe 9-2
  • 0
    Dim s As Shape Set s = ActiveShape If s.Type <> cdrCurveShape Then MsgBox "你选择的不是曲线对象": Exit Sub Dim n1 As Node, n2 As Node Set n1 = s.Curve.Nodes(1) Set n2 = s.Curve.Nodes(2) Dim distance As Double distance = n1.GetDistanceFrom(n2)
    Zebe 9-2
  • 0
    Shape对象 Shape 对象表示形状。它既可以表示单个形状,也可以表示一组形状,还可以表示选择的形状集合。通过 ActiveShape,可以直接拿到当前活动形状。例如以下代码,可以拿到当前形状: ' 得到当前形状对象,并将它的引用传递给变量s Dim s As ShapeSet s = ActiveShape 接下来,你就可以读取 s 的属性,或者调用方法。 ShapeRange对象 ShapeRange 类表示 Shape 对象的动态数组(或范围),特定于形状的属性和方法可以应用于形状范围中的每个形状。可以使用 New 关
    Zebe 9-2
  • 29
    谈一谈我对VBA学习的认识和理解,以及提高VBA编程能力的方法。 欢迎大家一起来探讨,共同分享学习心得。
    Zebe 6-28
  • 0
    Sub 修剪() ' 修剪“1”剪“2” Dim sr As ShapeRange Set sr = ActiveSelectionRange Dim s1 As Shape Set s1 = sr(2).Trim(sr(1), True, True) sr(1).Delete End Sub Sub 焊接() ' 焊接“1”焊“2” Dim sr As ShapeRange Set sr = ActiveSelectionRange Dim s1 As Shape Set s1 = sr(2).Weld(sr(1), True, True) sr(1).Delete End Sub
    Zebe 6-24
  • 0
    火山CPG框架(作者:LYL、安若清风)—— 首发于CDR插件技术网。 它是一个基于火山中文开发平台封装的一个CDR开发库,能让新手、小白快速开发出一个属于自己的CPG插件,其优点是无需懂英文,全中文操作,编译后的CPG插件很难被反向解析出来,比传统的GMS插件具有更高的安全性,因为其本质上就是中文的C++。 现在,如果你想开发一个自己的CPG插件,可以试试该框架。可以不用学习C++、Delphi这些语言,特别是C++,对于新手入门门槛比较高。如果你有
    Zebe 6-20
  • 2
    在正式介绍C++的开发技术之前,咱们先来了解一下什么是CPG(Corel Plugin)插件,即 Corel插件。 一、CPG插件是什么? CDR软件提供了插件机制,CPG插件就是其中的一种,另外还有GMS插件以及其他类型的插件。CPG插件是最高级的一种插件,其自由灵活程度、上手开发难度都比GMS插件要高得多,虽然开发难度较高,但它能够提供更多更强的功能。 二、CPG插件的运行效率 基于C++编译的CPG插件,在同等的代码逻辑和处理数据量情况下,CPG插件的运行速度可以远
    Zebe 6-17
  • 0
    CorelDRAW对象模型一共分为8个部分:类、模块、类型、枚举、属性、方法、事件、常量。无论是GMS插件还是CPG插件,都离不开对象模型。
    Zebe 5-17
  • 0
    在 CorelDRAW 中,可以通过 Page 对象的 SelectShapesFromRectangle 方法选中某个矩形范围内的所有其他形状,选中后得到选中的形状,再执行群组,就实现了矩形内组。 参考代码如下: Sub testInnerGroup() Dim sh As Shape, s As Shape Set s = ActiveShape ' 这是当前选中的矩形(请先在页面中选中) Set sh = ActivePage.SelectShapesFromRectangle(s.LeftX, s.TopY, s.RightX, s.BottomY, False) ' 将选中的全部形状进行群组 sh.Shapes.All.Group MsgBox "矩形内组完成!" End Sub
    Zebe 4-25
  • 0
    利用对象的克隆方法,实现形状对象的快速复制和阵列效果。本例子演示了基于当前选中矩形实现的水平阵列效果。 参考代码如下: '============================================================= ' 方法:快速复制克隆形状(水平阵列演示) ' 作用:利用对象的克隆方法,实现形状对象的快速复制和阵列效果 '============================================================= Sub fastCloneShape() ' 判断当前是否选择了形状 Dim sh As Shape Set sh = ActiveShape If sh Is Nothing Then MsgBox &quot
    Zebe 4-25
  • 0
    亲爱的coreldrawvba吧的吧友们:大家好! “Zebe1989”为本吧吧主候选人得票最多者,共计1张真实票数,根据竞选规则,官方最终批准@Zebe1989,为本吧正式吧主。公示期三天。 吧主上任后,请严格遵守吧主协议 https://tieba.baidu.com/mo/q/newapply/rule?from=task,履行吧主义务,积极投身本吧的发展建设,也请广大吧友进行监督。如出现违规问题,请至贴吧反馈中心进行反馈或者投诉http://tieba.baidu.com/pmc/reportBazhu
  • 0
    Sub removeBlankPage() ' 声明页面变量 Dim p As Page ' 遍历当前文档的所有页面(请打开文档,否则 ActiveDocument 为空会报错) For Each p In ActiveDocument.Pages ' 如果当前页面的形状数量为0,则删除当前页面 If p.Shapes.All.Count = 0 Then p.Delete Next p End Sub
    Zebe 4-14
  • 0
    Sub test() ' 定义形状变量 Dim s As Shape ' 获取当前选择的形状,赋值给s Set s = ActiveShape ' 判断是否选择了形状,如果没有则退出过程 If s Is Nothing Then Exit Sub ' 如果选择了形状,则消息框提示 MsgBox "你选择形状的旋转角度是:" & s.RotationAngle End Sub
    Zebe 4-14
  • 0
    Sub test() ' 定义形状类型 Dim s As Shape ' 定义保存文本位置的变量 Dim n As Long ' 在当前活动图层创建一个段落文本 Set s = ActiveLayer.CreateParagraphText(0, 0, 2, 1, "CDR VBA 探秘") ' 查找“VBA”字符串,不区分大小写 n = s.Text.Find("VBA", False) ' 如果找到了,替换字符 If n <> 0 Then s.Text.Characters(n, 0) = "CDR插件技术网" End Sub
    Zebe 4-14
  • 0
    Sub test() ' 定义美术字变量、椭圆变量 Dim sText As Shape, sEllipse As Shape ' 创建一个美术字 Set sText = ActiveLayer.CreateArtisticText(0, 0, "http://WWW.CDRVBA.COM") ' 创建椭圆 Set sEllipse = ActiveLayer.CreateEllipse2(4, 5, 2) ' 将美术字的文本对象,适合到椭圆对象 sText.Text.FitToPath sEllipse ' 设置文本的效果 sText.Effects(1).TextOnPath.Quadrant = cdrBottomQuadrant End Sub
    Zebe 4-14
  • 0
    Sub test() Dim doc As Document Dim s As Shape Dim t As Text ' 创建文档 Set doc = CreateDocument ' 创建段落文本 Set s = doc.ActiveLayer.CreateParagraphText(2, 4, 6, 9, "This is a test for the frames.") ' 得到段落文本对应的 Text 对象 Set t = s.Text ' 将文本适应到框架 t.FitTextToFrame End Sub
    Zebe 4-14
  • 0
    将文本中的一个文本字符串替换为另一个文本字符串,以下代码可以将页面上所有出现的“#”替换为当前日期。 Sub test() ' 定义形状变量 Dim s As Shape ' 遍历当前页面所有的文本形状(通过查找) For Each s In ActivePage.FindShapes(, cdrTextShape) ' 替换 # 为当前日期 s.Text.Replace "#", CStr(Date), False, ReplaceAll:=True Next s End Sub 调用例子如下: Sub test() ' 定义形状变量 Dim s As Shape ' 判断是否打开了文档 If ActivePage Is Nothing Then MsgBox "请先创建或者打
    Zebe 4-14
  • 11
    有时候,需要在指定的文档或页面中,找到符合条件的形状对象。例如:找到所有宽度等于 201mm 并且为红色填充的矩形。除了使用普通的VBA遍历方式来筛选,还可以使用CQL来查找,后者是最有效的做法,代码参考如下: 原本有截图,上传始终提示超出宽度,这里就不传截图了。 Private Sub CommandButton1_Click() ' 设置文档单位为毫米 ActiveDocument.Unit = cdrMillimeter ' 定义宽度变量,从文本框获取到宽度值 Dim w As Double w = CDbl(TextBox1.Text) ' 动态查询指定宽
  • 4
    Dim path_1 ' 声明路径变量 ' 以对话框形式得到路径 path_1 = CorelScriptTools.GetFileBox("文本文件类型|*.txt|全部文件类型|*.*", "请选择文件", 1, "默认文件名称") Dim FileNumber FileNumber = FreeFile ' 取得未使用的文件号。 Open path_1 For Output As #FileNumber ' 创建文件名 Print #FileNumber, "要写入的数据放在这里" ' 写入文件内容 放置变量数量,如果用数组,可以加循环处理 Close #FileNumber ' 关闭文件。
  • 1
    Private Sub cb_AddCharSpacing_Click() '字间距、行间距各加100 Dim s As Shape Set s = ActiveShape s.text.Story.CharSpacing = s.text.Story.CharSpacing + 100 s.text.Story.LineSpacing = s.text.Story.LineSpacing + 100 set s = Nothing End Sub
    刘甫冰 4-20
  • 1
    各位大神好:麻烦问一下,有没有方法在CDRVBA的状态 查找和替换CDR页面里的文字  或者用VB数据库的形式操作CDR页面里的内容 
    Zebe 4-12
  • 3
    '======================================================================== '过程名称:打印全部菜单ID(用于自动化调用) '======================================================================== Public Sub listMenuItemIDs() On Error Resume Next Dim cmdbar, ctl For Each cmdbar In FrameWork.CommandBars Debug.Print cmdbar & "工具栏下面的菜单项:" For Each ctl In cmdbar.Controls Debug.Print vbTab & ctl.ID & " -> " & ctl.Caption Next Next End Sub 拿到ID后,就可以通过自动化框架提供的方法来调用指定的菜单,
  • 5
    主要是用来获取一个页面边框范围内的所有图形,在页面边框外的则排除。 参数 p:指的是某个页面。 返回类型为形状集合(Shapes)。 Public Function getShapesInPageInside(p As Page) As Shapes Set getShapesInPageInside = Nothing If Not p Is Nothing Then Dim sh As Shape Set sh = p.SelectShapesFromRectangle(p.LeftX, p.TopY, p.RightX, p.BottomY, False) Set getShapesInPageInside = sh.Shapes End If End Function
  • 1
    比如线段的起点,终点。长方形的四个角?
    Zebe 12-8

  • 发贴红色标题
  • 显示红名
  • 签到六倍经验

赠送补签卡1张,获得[经验书购买权]

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!

本吧信息 查看详情>>

会员: 会员

目录: 计算机软件

友情贴吧