Macro PropertyMemo
File:PropertyMemo Macro_PropertyMemo |
Description |
---|
Cette petite macro vous permet d'ajouter une Propriété (mémo ou autre texte) à un objet Draft. Auteur: Mario52 |
Auteur |
Mario52 |
Téléchargement |
None |
Liens |
Page des macros Comment installer une macro Comment créer une barre d'outils |
Version Macro |
1.0 |
Dernière modification |
None |
Version(s) FreeCAD |
None |
Raccourci clavier |
None |
Voir aussi |
None |
Description
This little macro create one Property additional (memo or other text) for you object (only Draft)
Uses
Launch the macro select one object Draft complete the fields and apply. One new property is created in Combo view > Property > Data tab
- Property title = title of new property (Default: Memo)
- Property name = name of field property
- Memo : Property title here Memo
- Name : Property name here Name
- The field is free to manually complete
Script
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 /_00
#
#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.00"
__date__ = "28/09/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
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.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")
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_PB_Button_01_clicked(self): # Button Reset
global title_01
global title_02
global memo_01
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 = ""
# 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
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:
a = obj.addProperty("App::PropertyString",title_02,title_01,"_Memo")
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()
Link
The discussion on the forum Object description field