QCAD二次开发:利用javascripts脚本编辑自己的菜单和工具栏

一、创建文件夹结构

        1、在../qcad/scripts/路径下创建MyScripts文件夹

        2、在MyScripts文件夹中创建一个文本文件“MyScripts.js”;

        3、 在MyScripts文件夹中创建另外一个文件夹来提供一个命令Action,如命名为“MyAction”;

        4、在MyAction文件夹中创建一个文本文件MyAction.js;

        目录结构如下图所示

二、创建菜单和动作

        接下来分别复制代码到MyScripts.jsMyAction.js

         MyScripts.js

/**
 * Copyright (c) 2011-2018 by Andrew Mustun. All rights reserved.
 * 
 * This file is part of the QCAD project.
 *
 * QCAD is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * QCAD is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with QCAD.
 */
// MyScripts.js

// 所有的action都是从类EAction派生的,所以此处引入EAction:
include("scripts/EAction.js");

// 构造函数调用基类构造函数:
function MyScripts(guiAction) {
    EAction.call(this, guiAction);
}

// 从 EAction 类派生 MyScripts 类:
MyScripts.prototype = new EAction();

// 此静态函数返回一个新的或已有的 QMenu 对象.
MyScripts.getMenu = function () {
    // EAction.getMenu返回一个现有的或具有给定标题和对象名称的新 QMenu 对象
    // 对象名称(此处即 "MyScriptMenu")必须唯一
    return EAction.getMenu(MyScripts.getTitle(), "MyScriptsssMenu");
};

// 此静态函数返回一个新的或已有的 QToolBar 对象.
MyScripts.getToolBar = function () {
    // EAction.getToolBar 返回一个现有的或具有
    // 给定标题和对象名称的新 QToolBar 对象
    // 对象名称(此为“MyScriptsToolBar”)必须唯一。
    return EAction.getToolBar(MyScripts.getTitle(), "MyScriptsToolBar");
};

// 这个静态函数定义并返回菜单的标题和工具栏。
// qsTr 函数将标题标记为可翻译字符串.
MyScripts.getTitle = function () {
    return qsTr("My Scriptsssss");
};

// Init函数在开始时创建菜单和工具栏.
MyScripts.init = function () {
    MyScripts.getMenu();
    MyScripts.getToolBar();
};

        MyAction.js

/**
 * Copyright (c) 2011-2018 by Andrew Mustun. All rights reserved.
 * 
 * This file is part of the QCAD project.
 *
 * QCAD is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * QCAD is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with QCAD.
 */
// MyAction.js

// 引入母类定义:
include("../MyScripts.js");
 
// 构造函数调用基类构造函数:
function MyAction(guiAction) {
    MyScripts.call(this, guiAction);
}

// 从母类 MyScripts 派生类 MyAction:
MyAction.prototype = new MyScripts();

// 对于不需要任何用户输入的操作(如自动缩放),
// beginEvent 执行所有操作,然后终止
MyAction.prototype.beginEvent = function() {
    // 调用 beginEvent 的基类实现:
    MyScripts.prototype.beginEvent.call(this);

    // 获取主应用程序窗口:
    var appWin = EAction.getMainWindow();

    // 执行动作:在命令行窗口打印:
    appWin.handleUserMessage("MyAction() is running...");
    
    // 完成后终止:
    this.terminate();
};

// MyAction.init() 由 QCAD 调用初始化并创建
// 它的菜单/工具栏。
MyAction.init = function(basePath) {
    // 创建一个新的 RGuiAction(扩展 QAction):
    var action = new RGuiAction("&My Action", RMainWindowQt.getMainWindow());

    // 此操作需要打开文档。如果没有文件打开,菜单和工具按钮变灰:
    action.setRequiresDocument(true);

    // 定义此动作执行时,该脚本文件启动:
    action.setScriptFile(basePath + "/MyAction.js");

    // 设置icon:
    action.setIcon(basePath + "/MyAction.svg");

    // 该动作对应的命令行口令:
    action.setDefaultCommands(["myaction"]);

    // 定义此操作的排序顺序。菜单和工具按钮是
    // 按这些值排序:
    action.setGroupSortOrder(80100);
    action.setSortOrder(200);

    // 设置此操作添加到列表(菜单、工具栏、CAD工具栏面板):
    action.setWidgetNames(["MyScriptsMenu"]);
};

三、测试

        启动QCAD发现菜单栏上出现MyScripts及MyAction,点击执行后命令栏出现设置好的测试语句;

四、移除无用菜单

       同理,能加也能减,以帮助菜单为例,找到Help.js文件,屏蔽掉init初始化几句,如下

         运行,发现帮助菜单移除成功;(当然直接把整个Help.js文件移除更简单粗暴)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: QCAD 是一款功能强大的计算机辅助设计软件,旨在帮助用户进行二维图形设计。在使用 QCAD 的过程中,有几种方法可以用于生成 PDF 格式的文件。 首先,可以通过点击菜单栏中的“文件”选项,然后选择“导出”或“另存为”来生成 PDF 文件。在弹出的对话框中,选择保存的文件夹和文件名,并将文件类型设置为 PDF。点击保存后,QCAD 将自动生成一个 PDF 版本的文件。 其次,QCAD 还支持将绘图区域直接导出为 PDF。用户可以选择希望导出的图形区域,然后点击菜单栏中的“文件”选项,选择“打印”或“打印预览”。在打印设置中,选择打印机类型为“导出为 PDF”,然后点击打印按钮。QCAD 将会将选定的图形区域导出为 PDF 文件。 另外,QCAD 还可以通过命令行方式导出 PDF 文件。用户可以打开命令行界面,输入导出命令,例如“Export -format pdf -output C:\Documents\example.pdf”,根据实际需要设置导出的文件路径和文件名。执行命令后,QCAD 将会在指定的路径下生成一个 PDF 文件。 需要注意的是,生成 PDF 文件时,用户可以根据需要对导出选项进行进一步的设置,如导出的分辨率、线型等。此外,QCAD 还支持将多个图形文件合并为一个 PDF 文件,用户只需在导出对话框中选择多个文件即可。 总的来说,QCAD 提供了多种方法来生成 PDF 文件,用户可以根据实际需求选择合适的方法。无论是单独导出整个图形还是部分区域,QCAD 都能够满足用户的需求,方便快捷地生成高质量的 PDF 文件。 ### 回答2: QCAD是一款开源的二维计算机辅助设计(CAD)软件,用于绘制和编辑技术性的绘图,如建筑图纸、机械零件等。然而,QCAD并不直接支持PDF格式,但可以通过安装QCAD的PDF插件来实现将QCAD绘图导出为PDF格式的功能。 首先,在安装QCAD软件后,我们需要下载并安装PDF输出插件插件可以在QCAD的官方网站或第三方网站上找到,按照安装说明进行安装。安装完成后,我们就可以将QCAD中的绘图导出为PDF格式。 在打开QCAD后,选择“文件”菜单,然后选择“导出为PDF”选项。在弹出的对话框中,我们可以选择导出的尺寸、分辨率和文件名等选项,然后点击“导出”按钮即可生成PDF文件。此时,QCAD会自动将绘图转换为矢量图形,并保存为PDF格式的文件。 使用QCAD导出为PDF的好处是,PDF文件具有良好的可移植性和可编辑性。支持PDF格式的软件不少,用户可以方便地在不同的计算机上查看、打印和编辑绘图。此外,PDF文件还可以方便地与他人共享,并且不会因为不同的操作系统或软件版本导致格式错乱的问题。 总结起来,QCAD使用PDF的方法是通过安装PDF输出插件,然后在QCAD中选择导出为PDF选项来实现。使用QCAD导出为PDF可以方便地保存和共享绘图,也提高了绘图的可移植性和可编辑性。 ### 回答3: QCAD是一款功能强大的开源CAD软件,用于绘制和编辑2D技术图纸。以下是使用QCAD将图纸导出为PDF文件的步骤: 1. 打开QCAD软件并加载您需要导出为PDF的图纸文件。 2. 确保您的图纸已完成,包括所需的线条、标注和尺寸。 3. 单击菜单栏中的“文件”选项,然后选择“打印预览”以查看图纸的打印预览。 4. 在打印预览窗口中,您可以调整图纸的布局、缩放比例和打印选项,以确保导出的PDF文件符合您的要求。 5. 单击“文件”选项,然后选择“导出为PDF”以开始导出过程。 6. 在导出为PDF对话框中,选择要导出的图纸页面范围。您可以选择导出全部页面、当前选定的页面或手动输入要导出的页面范围。 7. 在对话框的其他选项中,您可以选择输出文件的名称和保存路径,并设置一些导出选项,如图纸的颜色、线条的粗细和压缩选项等。 8. 调整好所有选项后,单击“导出”按钮以开始导出图纸为PDF文件。 9. 导出过程可能会需要一些时间,具体时间取决于图纸文件的大小和复杂程度。一旦导出完成,您将在指定的保存路径中找到导出的PDF文件。 通过以上步骤,您可以使用QCAD将您的技术图纸导出为PDF文件,以便更方便地共享、打印和查看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值