Macro PropertyMemo

From FreeCAD Documentation
Revision as of 16:37, 30 December 2018 by Mario52 (talk | contribs) (Created page with "Moji makroi na [https://gist.github.com/mario52a mario52a ] gists")
Other languages:

Makro PropertyMemo

Description
Ovaj mali makro kreira jedan dodatni objekt (memo ili drugi tekst) za vas objekt (raditi samo s nacrtom).

Macro version: 00.02
Last modified: 2015-10-19
Author: Mario52
Author
Mario52
Download
None
Links
Macro Version
00.02
Date last modified
2015-10-19
FreeCAD Version(s)
None
Default shortcut
None
See also
None

Opis

Ovaj mali makronaredba stvara jedan dodatni objekt (podsjetnik ili drugi tekst) za objekt (samo skica)

Dodavanje jednog objekta Memo → Ime

Koristi

Pokrenite makro, odaberite jedan objekt nacrta ispunite polja i dodajte. Jedna nova osobina je stvorena u Kombinirani Pregled → Svojstva → Podaci tab

  • Property title = naslov novog vlasništva (Zadano: Memo)
  • Property name = naziv polja
One Property Memo is adding
One Property Memo is adding
  • Podsjetnik: Naslov nekretnine ovdje Memo
  • Naziv: Ime objekta ovdje Naziv
  • Polje je slobodno ručno dovršiti

Ja checkBox je označen imate jednu memo u popisu, kliknite na točku stabla za otvaranje popisa prozora

Skripta

Ikona za alatnu ploču

Macro_FCPropertyMemo.FCMacro

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
"""
***************************************************************************
*   Copyright (c) 2015 <mario52>                                          *
*                                                                         *
*   This file is a supplement to the FreeCAD CAx development system.      *
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU Lesser General Public License (LGPL)    *
*   as published by the Free Software Foundation; either version 2 of     *
*   the License, or (at your option) any later version.                   *
*   for detail see the LICENCE text file.                                 *
*                                                                         *
*   This software 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 Library General Public License for more details.                  *
*                                                                         *
*   You should have received a copy of the GNU Library General Public     *
*   License along with this macro; if not, write to the Free Software     *
*   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  *
*   USA                                                                   *
***************************************************************************
*           WARNING! All changes in this file will be lost and            *  
*                  may cause malfunction of the program                   *
***************************************************************************
"""
#Macro_FCMemo 28/09/2015 /19/10/2015
#

#OS: Windows 8
#Word size of OS: 64-bit
#Word size of FreeCAD: 64-bit
#Version: 0.15.4671 (Git)
#Branch: releases/FreeCAD-0-15
#Hash: 244b3aef360841646cbfe80a1b225c8b39c8380c
#Python version: 2.7.8
#Qt version: 4.8.6
#Coin version: 4.0.0a
#OCC version: 6.8.0.oce-0.17
#

__title__="Macro_FCPropertyMemo"
__author__ = "Mario52"
__url__     = "http://www.freecadweb.org/index-fr.html"
__version__ = "00.02"
__date__    = "19/10/2015"

try:
    import PyQt4
    from PyQt4 import QtGui ,QtCore
    from PyQt4.QtGui import *
    from PyQt4.QtCore import *
except Exception:
    import PySide
    from PySide import QtGui ,QtCore
    from PySide.QtGui import *
    from PySide.QtCore import *
#import Draft, Part, FreeCAD, math, PartGui, FreeCADGui, FreeCAD

global path
#path = FreeCAD.ConfigGet("AppHomePath")
path = FreeCAD.ConfigGet("UserAppData")

global title_01 ; title_01  = "Memo"    # title of menu
global title_02 ; title_02  = ""        # title of propriety
global memo_01  ; memo_01   = ""        # memo
global forString; forString = 0         # memo for String or List

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_MainWindow(object):

    def setupUi(self, MainWindow):
        self.window = MainWindow
        global path
        global title_01
        global title_02
        global memo_01

        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(254, 163)
#        MainWindow.resize(241, 211)
        MainWindow.setMinimumSize(QtCore.QSize(254, 163))
        MainWindow.setMaximumSize(QtCore.QSize(254, 163))
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))

        self.PB_Button_01 = QtGui.QPushButton(self.centralwidget)
        self.PB_Button_01.setGeometry(QtCore.QRect(20, 130, 61, 23))
#        self.PB_Button_01.setGeometry(QtCore.QRect(20, 180, 61, 23))
        self.PB_Button_01.setObjectName(_fromUtf8("PB_Button_01"))
        self.PB_Button_01.clicked.connect(self.on_PB_Button_01_clicked)    #

        self.PB_Button_02 = QtGui.QPushButton(self.centralwidget)
        self.PB_Button_02.setGeometry(QtCore.QRect(95, 130, 61, 23))
#        self.PB_Button_02.setGeometry(QtCore.QRect(90, 180, 61, 23))
        self.PB_Button_02.setObjectName(_fromUtf8("PB_Button_02"))
        self.PB_Button_02.clicked.connect(self.on_PB_Button_02_clicked)    #

        self.PB_Button_03 = QtGui.QPushButton(self.centralwidget)
        self.PB_Button_03.setGeometry(QtCore.QRect(170, 130, 61, 23))
#        self.PB_Button_03.setGeometry(QtCore.QRect(160, 180, 61, 23))
        self.PB_Button_03.setObjectName(_fromUtf8("PB_Button_03"))
        self.PB_Button_03.clicked.connect(self.on_PB_Button_03_clicked)    #

        self.LE_Edit_01 = QtGui.QLineEdit(self.centralwidget)              # title
        self.LE_Edit_01.setGeometry(QtCore.QRect(20, 50, 211, 20))
#        self.LE_Edit_01.setGeometry(QtCore.QRect(20, 50, 201, 20))
        self.LE_Edit_01.setObjectName(_fromUtf8("LE_Edit_01"))
        self.LE_Edit_01.setText(_fromUtf8(title_01))
        self.LE_Edit_01.setToolTip("Title of menu property")
        self.LE_Edit_01.textChanged.connect(self.on_LE_Edit_01_Pressed)    # title property

        self.LE_Edit_02 = QtGui.QLineEdit(self.centralwidget)
        self.LE_Edit_02.setGeometry(QtCore.QRect(20, 100, 211, 20))
#        self.LE_Edit_02.setGeometry(QtCore.QRect(20, 100, 201, 20))
        self.LE_Edit_02.setObjectName(_fromUtf8("LE_Edit_02"))
        self.LE_Edit_02.setText(_fromUtf8(""))
        self.LE_Edit_02.setToolTip("Title of property")
        self.LE_Edit_02.textChanged.connect(self.on_LE_Edit_02_Pressed)    #

#        self.LE_Edit_03 = QtGui.QLineEdit(self.centralwidget)              # memo 
#        self.LE_Edit_03.setGeometry(QtCore.QRect(20, 150, 201, 20))
#        self.LE_Edit_03.setObjectName(_fromUtf8("LE_Edit_03"))
#        self.LE_Edit_03.setText(_fromUtf8(""))
#        self.LE_Edit_03.setToolTip("Text memo for property")
#        self.LE_Edit_03.textChanged.connect(self.on_LE_Edit_03_Pressed)    #

        MainWindow.setCentralWidget(self.centralwidget)

        self.label_00 = QtGui.QLabel(self.centralwidget)
        self.label_00.setGeometry(QtCore.QRect(70, 10, 120, 21))
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setUnderline(True)
        font.setWeight(75)
        self.label_00.setFont(font)
        self.label_00.setObjectName(_fromUtf8("label_00"))

        self.label_01 = QtGui.QLabel(self.centralwidget)
        self.label_01.setGeometry(QtCore.QRect(20, 30, 111, 16))
        self.label_01.setObjectName(_fromUtf8("label_01"))

        self.label_02 = QtGui.QLabel(self.centralwidget)
        self.label_02.setGeometry(QtCore.QRect(20, 80, 111, 16))
        self.label_02.setObjectName(_fromUtf8("label_02"))

#        self.label_03 = QtGui.QLabel(self.centralwidget)
#        self.label_03.setGeometry(QtCore.QRect(20, 130, 121, 16))
#        self.label_03.setObjectName(_fromUtf8("label_03"))

        self.CB_String = QtGui.QCheckBox(self.centralwidget)                # for String or List
#        self.CB_String.setGeometry(QtCore.QRect(130, 130, 91, 20))
        self.CB_String.setGeometry(QtCore.QRect(120, 80, 120, 20))
        self.CB_String.setObjectName(_fromUtf8("CB_String"))
        self.CB_String.setToolTip("The memo is a string by default"+"\n"+"If the checkBox is checked the memo is a list in one window"+"\n"+"Clic the '...' in ComboView > Data")
        self.CB_String.clicked.connect(self.on_CB_String_clicked)           # connect on def "on_checkBox_1_clicked"

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        try:
            MainWindow.setWindowFlags(PyQt4.QtCore.Qt.WindowStaysOnTopHint)         # PyQt4 cette fonction met la fenêtre en avant
        except Exception:
            MainWindow.setWindowFlags(PySide.QtCore.Qt.WindowStaysOnTopHint)        # PySide cette fonction met la fenêtre en avant
        MainWindow.setWindowTitle("FCPropertyMemo")
        self.PB_Button_01.setText("Reset")
        self.PB_Button_01.setToolTip("Reset the TextEdit")
        self.PB_Button_02.setText("Validate")
        self.PB_Button_02.setToolTip("Validate and apply")
        self.PB_Button_03.setText("Quit")

        self.PB_Button_03.setToolTip("Quit the FCPropertyMemo")
        self.label_00.setText("FCPropertyMemo")
        self.label_01.setText("Property title")
        self.label_02.setText("Property name")
#        self.label_03.setText("Memo")
        self.CB_String.setText("Chek for List")

    def on_LE_Edit_01_Pressed(self):        # Line edit 01 title
        global title_01
        title_01 = self.LE_Edit_01.text()
#        App.Console.PrintMessage(title_01+"\n")

    def on_LE_Edit_02_Pressed(self):        # Line edit 02 title property
        global title_02
        title_02 = self.LE_Edit_02.text()
#        App.Console.PrintMessage(title_02+"\n")

#    def on_LE_Edit_03_Pressed(self):        # Line edit 03 memo
#        global memo_01
#        memo_01 = self.LE_Edit_03.text()
#        App.Console.PrintMessage(memo_01+"\n")

    def on_CB_String_clicked(self):         # connection on_checkBox_1_clicked
        global forString
        if self.CB_String.isChecked():      # if checkbox_01 is checked then ....
            forString = 1
            self.CB_String.setText("UnCheck for String")
        else :
            forString = 0
            self.CB_String.setText("Check for List")
#        App.Console.PrintMessage("on_CB_String_clicked "+str(forString)+"\n")

    def on_PB_Button_01_clicked(self):      # Button Reset
        global title_01
        global title_02
        global memo_01
        global forString
        self.LE_Edit_01.clear()
        title_01 = "Memo"
        self.LE_Edit_01.setText(_fromUtf8(title_01))
        self.LE_Edit_02.clear()
        title_02 = ""
#        self.LE_Edit_03.clear()
#        memo_01 = ""
        self.CB_String.setChecked(False)                                                    # Check by default True or False
        self.CB_String.setText("Check for List")
        forString = 0
#        App.Console.PrintMessage("on_PB_Button_01_clicked\n")

    def on_PB_Button_02_clicked(self):      # Button Validate
        global title_01
        global title_02
        global memo_01
        global forString
        try:
            obj = FreeCADGui.Selection.getSelection()[0]
            obj = App.ActiveDocument.ActiveObject
            op  = obj.PropertiesList
            pas = 0
            if (title_02 != ""):
                for p in op:
                    if str(p) == title_02:
                        App.Console.PrintWarning("This Property is already present"+"\n")
                        pas = 0
                        break
                    else :
                        pas = 1
                if pas == 1:
                        if forString == 0 :
                            a = obj.addProperty("App::PropertyString",title_02,title_01,"_Memo")        # create a memo string
                        else :
                            a = obj.addProperty("App::PropertyStringList",title_02,title_01,"_Memo")    # Create a list in window
                        Gui.Selection.clearSelection(obj.Name)
                        Gui.Selection.addSelection(obj)
                        App.activeDocument().recompute()
                ff = ui                         # Reset
                ff.on_PB_Button_01_clicked()    # Reset
            else:
                App.Console.PrintMessage("Field empty"+"\n")

        except Exception:
                    App.Console.PrintWarning("Object not selected or not Draft object"+"\n")
                
#        App.Console.PrintMessage("on_PB_Button_02_clicked\n")

    def on_PB_Button_03_clicked(self):      # Button Quit
        App.Console.PrintMessage("End FCPropertyMemo"+"\n\n")
        self.window.hide()

MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()

Veza

Rasprava na forumu Object description field

Moji makroi na mario52a gists

Version

  • ver 00.02 19/10/2015 : add checkBox for choice memo String or memo List