Macro 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 |
Macros recipes How to install macros How to customize toolbars |
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
- 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
-
One Property Memo list.
-
The window Memo list.
Skripta
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
My macros on mario52a gists
Version
- ver 00.02 19/10/2015 : add checkBox for choice memo String or memo List