Crearea de module

From FreeCAD Documentation
Jump to: navigation, search
This page is a translated version of the page Module Creation and the translation is 93% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎polski • ‎română • ‎русский • ‎svenska • ‎Türkçe • ‎中文(中国大陆)‎

Adăugarea de noi module și ateliere de lucru în FreeCAD este foarte ușoară. Un modul este orice extensie a FreeCAD, în timp ce un atelier de lucru este un GUI de configurare specială care grupează câteva bare de instrumente și meniuri. De obicei, creați un nou modul care conține propriul atelier de lucru.

Modulele pot fi programate în C ++ sau în Python sau într-un mix de ambele, dar fișierele init module trebuie să fie în Python. Configurarea unui nou modul cu aceste fișiere este ușoară și se poate face manual cu instrumentul de construire FreeCAD.

Utilizare FreeCAD Build tool

Creating a new application module în FreeCAD este destul de simplă. The FreeCAD Build Tool (fcbt)face cea mai mare parte a muncii grele în locul tău. It is a Python script care poate fi găsit în arborele de dezvoltare FreeCAD sub:

trunk/src/Tools/fcbt.py

Atunci când interpretul dvs. python este instalat corect, puteți executa scriptul dintr-o linie de comandă cu

python fcbt.py

Va afișa următorul meniu:

FreeCAD Build Tool
Usage:
   fcbt <command name> [command parameter] 
possible commands are:
 - DistSrc         (DS)   Build a source Distr. of the current source tree
 - DistBin         (DB)   Build a binary Distr. of the current source tree
 - DistSetup       (DI)   Build a Setup Distr. of the current source tree
 - DistSetup       (DUI)  Build a User Setup Distr. of the current source tree
 - DistAll         (DA)   Run all three above modules
 - NextBuildNumber (NBN)  Increase the Build Number of this Version
 - CreateModule    (CM)   Insert a new FreeCAD Module in the module directory
 - CreatePyModule  (CP)   Insert a new FreeCAD Python Module in the module directory

For help on the modules type:
  fcbt <command name> ?

La promptul de comandă introduceți "CM" pentru a începe crearea unui modul:

Insert command: ''CM''

Acum vi se cere să specificați un nume pentru noul modul. Permiteți să-l numiți "TestMod" pentru acest exemplu:

Please enter a name for your application: ''TestMod''

După ce apăsați Enter, fcbt începe să copieze toate fișierele necesare pentru modulul dvs. într-un nou dosar situat la

trunk/src/Mod/TestMod/

Apoi, toate fișierele sunt modificate cu numele noului dvs. modul. Singurul lucru pe care trebuie să-l faceți este să adăugați cele două noi proiecte "appTestMod" și "appTestModGui" în spațiul de lucru (pe Windows) sau în target-urile makefile (unix). Și gata, Asta e!

Setting up a new module manually

Aveți nevoie de 2 lucruri pentru a crea un nou modul:

  • un nou folder in folderul Mod al FreeCAD (either in InstalledPath/FreeCAD/Mod or in UserPath/.FreeCAD/Mod). Puteți să-l numiți așa cum vpă place.
  • În interiorul folderului, un fișierInitGui.py . Fișierul respectiv va fi executat automat la pornirea FreeCAD (poate fi gol, dar doar pentru a-l testa, puneți un print ("hello world") în interior)

Suplimentar, puteți de asemenea să adăugați un Init.py file. InitGui.py fișierul este încărcat numai atunci când FreeCAD rulează în modul GUI, în timp ce fișierul Init.py este întotdeauna încărcat. Din moment ce creăm un atelier de lucru, cu toate acestea, vom pune codul nostru în InitGui.py, deoarece atelierele de lucru sunt instrumente numai pentru GUI.

Crearea unui nou atelier

În interiorul fișierului InitGui.py, primul lucru pe caratelier de lucru. Puteți utiliza exemplul de mai jos ca șablon:

class MyWorkbench ( Workbench ):
	"My workbench object"
	Icon = """
			/* XPM */
			static const char *test_icon[]={
			"16 16 2 1",
			"a c #000000",
			". c None",
			"................",
			"................",
			"..############..",
			"..############..",
			"..############..",
			"......####......",
			"......####......",
			"......####......",
			"......####......",
			"......####......",
			"......####......",
			"......####......",
			"......####......",
			"......####......",
			"................",
			"................"};
			"""
	MenuText = "My Workbench"
	ToolTip = "This is my extraordinary workbench"

        def GetClassName(self):
               return "Gui::PythonWorkbench"
	
	def Initialize(self):
		import myModule1, myModule2
		self.appendToolbar("My Tools", ["MyCommand1","MyCommand2"])
		self.appendMenu("My Tools", ["MyCommand1","MyCommand2"])
		Log ("Loading MyModule... done\n")

	def Activated(self):
               # do something here if needed...
		Msg ("MyWorkbench.Activated()\n")

	def Deactivated(self):
               # do something here if needed...
		Msg ("MyWorkbench.Deactivated()\n")

FreeCADGui.addWorkbench(MyWorkbench)

Atelierul trebuie să aibă toate aceste atribute definite:

  • Icon - An XPM image. Most image software (like GIMP) can convert an image into xpm format, which is a text file. You can then paste the contents here.
  • MenuText - The workbench name as it appears in the workbenches list
  • Tooltip - Defines the tooltip text
  • Initialize() - Executed when FreeCAD loads and creates all menus and toolbars that the workbench will use. If you are going to make your module in C++, you can also define your menus and toolbars inside the C++ module rather than the InitGui.py file. The important thing is that they are created now, before the module is activated.
  • Activated() - Executed when the user switches to your workbench
  • Deactivated() - Executed when the user switches away to another workbench or leaves FreeCAD

Creating FreeCAD commands in Python

De obicei, definiți toate instrumentele (numite Comenzi în FreeCAD) într-un alt modul, apoi importați modulul respectiv înainte de a crea barele de instrumente și meniurile. Iată un exemplu simplu care poate fi folosit ca șablon:

import FreeCAD,FreeCADGui

class MyTool:
	"My tool object"

       def GetResources(self):
               return {"MenuText": "My Command",
                       "Accel": "Ctrl+M",
                       "ToolTip": "My extraordinary command",
                       "Pixmap"  : """
			/* XPM */
			static const char *test_icon[]={
			"16 16 2 1",
			"a c #000000",
			". c None",
			"................",
			"................",
			"..############..",
			"..############..",
			"..############..",
			"......####......",
			"......####......",
			"......####......",
			"......####......",
			"......####......",
			"......####......",
			"......####......",
			"......####......",
			"......####......",
			"................",
			"................"};
			"""}

       def IsActive(self):
               if FreeCAD.ActiveDocument == None:
                       return False
               else:
                       return True

	def Activated(self):
               # do something here...

FreeCADGui.addCommand('MyCommand1',MyTool())

Notă: sunt trei metode definite:

  • GetResources() - Returns a dictionary with the visual attributes of your tool. The Accel parameter defines an optional shortcut key.
  • IsActive() - Determines whether or not the command is active. Inactive commands are indicated by a greyed-out icon in the menus and toolbars.
  • Activated() - Executed when the Command is called, whether through a toolbar button, menu or script API call.

Creating FreeCAD Commands in C++

To Be Documented

Links

  • Câteva exemple despre modul în care (Power User) utilizatorii puternici au extins FreeCAD cu diferite ateliere de lucru personalizate externe sunt colectate în External workbenches
  • Alt exemplu în hub-ul Power User Workbench creation
  • Creating Commands Command