https://wiki.freecad.org/api.php?action=feedcontributions&user=Chrisb&feedformat=atomFreeCAD Documentation - User contributions [en]2024-03-29T09:28:58ZUser contributionsMediaWiki 1.40.1https://wiki.freecad.org/index.php?title=Curves_SketchOnSurface&diff=1375944Curves SketchOnSurface2024-03-16T11:26:54Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
{{UnfinishedDocu{{#translation:}}}}<br />
<translate><br />
<br />
<!--T:1--><br />
{{Docnav<br />
|[[Curves_IsoCurve|IsoCurve]]<br />
|[[Curves_ProfileSupport|ProfileSupport]]<br />
|[[Curves_Workbench|Curves]]<br />
|IconL=Curves_IsoCurve.svg<br />
|IconR=Curves_ProfileSupport.svg<br />
|IconC=Curves_workbench_icon.svg<br />
}}<br />
<br />
<!--T:2--><br />
{{GuiCommand<br />
|Name=Curves SketchOnSurface<br />
|MenuLocation=Surfaces → Sketch on Surface<br />
|Workbenches=[[Curves_Workbench|Curves]]<br />
}}<br />
<br />
==Description== <!--T:3--><br />
<br />
<!--T:13--><br />
This tool maps a sketch onto an arbitrary curved face, like a label on a bottle.<br />
The sketch must be actually attached to a face (see Sketch.Support).<br />
The {{incode|Map}} mode of the sketch has no effect on the result.<br />
<br />
<!--T:12--><br />
[[File:Curves_SketchOnSurface_demo.png|600x400px]]<br />
{{Caption|Above: shows the {{incode|Sketch_On_Surface}} object applied to the cylinder face (left) and the source sketch in edit mode (right)}}<br />
<br />
==Usage== <!--T:4--><br />
<br />
<!--T:5--><br />
# Switch to the [[Image:Curves_workbench_icon.svg|24px]] [[Curves_Workbench|Curves]] workbench (install from [[Image:Std_AddonMgr.svg|24px]] [[Std_AddonMgr|Addon Manager]] is necessary, if not previously installed)<br />
# There are 2 methods to use the SketchOnSurface tool:<br />
#; You already have a sketch that you want to map on a face:<br />
## Attach the sketch to the target face:<br />
##* In the attachment dialog selet the face<br />
##* Set the mode to Deactivated while leaving the face as the first reference<br />
##* Close the Attachment dialog<br />
##* Set Placement.z=0<br />
## Edit the sketch and add a Construction (blue) rectangle around the geometries. This rectangle will be the parametric bounds of the face. <br />
## Exit edit mode.<br />
## Select the sketch.<br />
## Activate SketchOnSurface by either:<br />
##* Pressing on the [[Image:Curves_SketchOnSurface.svg|24px]] button <br />
##* Using the {{MenuCommand|Surfaces → Sketch on Surface}} entry in the Curves menu<br />
#; You have no sketch to map yet:<br />
## Select the target face in the [[3D_view|3D view]] <br />
## Activate SketchOnSurface by either:<br />
##* Pressing on the [[Image:Curves_SketchOnSurface.svg|24px]] button <br />
##* Using the {{MenuCommand|Surfaces → Sketch on Surface}} entry in the Curves menu<br />
## A Sketch_On_Surface object appears in the [[Tree_view|Tree view]].<br />
## Expand this object to make the Mapped_Sketch appear below.<br />
## Edit the sketch and add geometries inside the blue construction bounds.<br />
## A SketchOnSurface object will be created on the surface of your object based on this sketch.<br />
<br />
==Options== <!--T:15--> <br />
<br />
<!--T:6--><br />
* Fill Extrusion: When the Thickness value is not null, this will generate lofting faces (the blue faces in the above screenshot).<br />
* Fill Faces: This will fill all the geometrical figures closed in faces (the red faces in the above screenshot).<br />
* Offset: This will push the shapes mapped above into the target face. Do not put an offset greater than the thickness, it makes the face disappear on the inside.<br />
* Thickness: If not null, this will give thickness to the surfaces created above.<br />
<br />
==Notes== <!--T:17--><br />
<br />
<!--T:8--><br />
It is assumed that all geometry in the sketch is enclosed within the blue construction frame. This includes all other construction geometry, as well as the visible internal geometry of complex curves (Bezier, Ellipse). If this is not the case the bounding box of the sketch will be larger than the construction frame and the final mapping will be scaled down accordingly. If required [[Sketcher_RestoreInternalAlignmentGeometry|hide the internal geometry]] that is not fully inside the construction frame.<br />
<br />
==Properties== <!--T:7--><br />
<br />
==Scripting== <!--T:14--><br />
<br />
<br />
<!--T:9--><br />
{{Docnav<br />
|[[Curves_IsoCurve|IsoCurve]]<br />
|[[Curves_ProfileSupport|ProfileSupport]]<br />
|[[Curves_Workbench|Curves]]<br />
|IconL=Curves_IsoCurve.svg<br />
|IconR=Curves_ProfileSupport.svg<br />
|IconC=Curves_workbench_icon.svg<br />
}}<br />
<br />
</translate><br />
{{Curves Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=Start_up_and_Configuration&diff=1280129Start up and Configuration2023-06-19T22:26:40Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:41--><br />
{{Docnav<br />
|[[Import_Export_Preferences|Import Export Preferences]]<br />
|[[Scripting_and_macros|Scripting and macros]]<br />
}}<br />
<br />
<!--T:88--><br />
{{VeryImportantMessage|In FreeCAD version 0.20 the default location of the program's configuration, data and cache files was changed for Linux.<br><br />
See [[Release_notes_0.20#Core|Release notes 0.20]] for more information. This page has not yet been updated accordingly.}}<br />
<br />
</translate><br />
{{TOCright}}<br />
<translate><br />
<br />
==Overview== <!--T:85--><br />
<br />
<!--T:1--><br />
This page shows the different ways to start FreeCAD and the most important configuration features. <br />
<br />
== Starting FreeCAD from the Command line == <!--T:2--><br />
<br />
<!--T:3--><br />
FreeCAD can be started normally by double-clicking on its desktop icon or selecting it from the start menu, but it can also be started directly from the command line. This allows you to change some of the default startup options.<br />
<br />
=== Using command line options without a command line shell === <!--T:86--><br />
<br />
<!--T:40--><br />
* On Ubuntu you can create a desktop icon and edit its properties. Add the command line options separated by spaces behind the program name in the "Command" field.<br />
* On Windows create a shortcut and edit the properties. Add the command line options separated by spaces to "Target" field.<br />
<br />
=== Command line options === <!--T:4--><br />
<br />
<!--T:5--><br />
The command line options are subject to frequent changes.Therefore, it is a good idea to check the current options by typing:<br />
<br />
</translate><br />
FreeCAD --help<br />
<translate><br />
<br />
<!--T:6--><br />
From the response you can read the possible parameters:<br />
<br />
</translate><br />
Usage: FreeCAD [options] File1 File2 ...<br />
<br />
Allowed options:<br />
<br />
Generic options:<br />
-v [ --version ] Prints version string<br />
-h [ --help ] Prints help message<br />
-c [ --console ] Starts in console mode<br />
--response-file arg Can be specified with '@name', too<br />
--dump-config Dumps configuration<br />
--get-config arg Prints the value of the requested configuration key<br />
<br />
Configuration:<br />
-l [ --write-log ] Writes a log file to:<br />
/home/username/.FreeCAD/FreeCAD.log<br />
--log-file arg Unlike --write-log this allows logging to an <br />
arbitrary file<br />
-u [ --user-cfg ] arg User config file to load/save user settings<br />
-s [ --system-cfg ] arg System config file to load/save system settings<br />
-t [ --run-test ] arg Test case - or 0 for all<br />
-M [ --module-path ] arg Additional module paths<br />
-P [ --python-path ] arg Additional python paths<br />
--single-instance Allow to run a single instance of the application<br />
<translate><br />
<br />
<!--T:53--><br />
In the following table, selected options are described in more detail:<br />
<br />
<!--T:54--><br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
|-<br />
! Long option !! Corresponding [[#Configuration_set|config var name]] !! Synopsis<br />
|-<br />
| {{incode|--user-cfg <filename>}} || UserParameter || Filename or relative path that ends with a filename. Defaults to {{incode|user.cfg}}.<br />
|-<br />
| {{incode|--module-path <dir>}} || Prepends to AdditionalModulePaths || Directory that contains modules. This option can be given repeatedly to specify multiple directories.<br />
|-<br />
| {{incode|--get-config <config-var-name>}} || most || Outputs the requested value in a popup dialog. Exits upon confirmation with {{KEY|OK}}. Cannot be used repeatedly. If an unknown/illegal variable name is used, the response is empty. The {{incode|--console}} flag is not honored.<br />
|}<br />
Options can written in two forms: {{incode|--long-option arg}} and {{incode|--long-option<nowiki>=</nowiki>arg}}.<br />
<br />
=== Response and config files === <!--T:7--><br />
<br />
<!--T:8--><br />
FreeCAD can read some of these options from a config file. This file must be in the bin path and must be named {{FileName|FreeCAD.cfg}}. Be aware that options specified in the command line override the config file!<br />
<br />
<!--T:9--><br />
Some operating systems have a very low limit of characters on the command line. The common way to work around those limitations is using response files. A response file is just a configuration file which uses the same syntax as the command line. If the command line specifies a response file, it's loaded and parsed in addition to the command line:<br />
<br />
</translate><br />
<pre><br />
FreeCAD @ResponseFile.txt <br />
</pre><br />
<translate><br />
<br />
<!--T:10--><br />
or:<br />
<br />
</translate> <br />
<pre><br />
FreeCAD --response-file=ResponseFile.txt<br />
</pre><br />
<translate><br />
<br />
<!--T:55--><br />
or:<br />
<br />
</translate> <br />
<pre><br />
FreeCAD --response-file ResponseFile.txt<br />
</pre><br />
<translate><br />
<br />
=== Hidden options === <!--T:11--><br />
<br />
<!--T:12--><br />
There are a couple of options not visible to the user. These options are e.g. the X-Window parameters parsed by the Windows system:<br />
* ''-display'' - Sets the X display (default is $DISPLAY).<br />
* ''-geometry'' - Sets the client geometry of the first window that is shown.<br />
* ''-fn'' or ''-font'' - Defines the application font. The font should be specified using an X logical font description.<br />
* ''-bg'' or ''-background'' - Sets the default background color and an application palette (light and dark shades are calculated).<br />
* ''-fg'' or ''-foreground'' - Sets the default foreground color.<br />
* ''-btn'' or ''-button'' - Sets the default button color.<br />
* ''-name'' - Sets the application name.<br />
* ''-title'' - Sets the application title.<br />
* ''-visual'' - Forces the application to use a TrueColor visual on an 8-bit display.<br />
* ''-ncols'' - Limits the number of colors allocated in the color cube on an 8-bit display, if the application is using the QApplication::ManyColor color specification. If count is 216 then a 6x6x6 color cube is used (i.e. 6 levels of red, 6 of green, and 6 of blue); for other values, a cube approximately proportional to a 2x3x1 cube is used.<br />
* ''-cmap'' - Causes the application to install a private color map on an 8-bit display.<br />
<br />
=== Running FreeCAD without GUI (headless) === <!--T:13--><br />
<br />
<!--T:14--><br />
FreeCAD is usually built with two executables: a GUI-capable one called {{FileName|FreeCAD}} or {{FileName|freecad}}, and a headless one, called {{FileName|FreeCADCmd}} or {{FileName|freecadcmd}}.<br />
FreeCAD can be used in console mode using the {{incode|--console}} switch (which is the default behavior of {{FileName|FreeCADCmd}}):<br />
<br />
</translate><br />
FreeCAD --console<br />
<translate><br />
<br />
<!--T:15--><br />
In console mode, no graphical user interface will be displayed, and you will be presented with a Python interpreter prompt: {{incode|>>>}}. From that prompt, you have the same functionality as the Python interpreter that runs inside the FreeCAD GUI, and access to all modules and plugins of FreeCAD, except the FreeCADGui module. Be aware that modules that depend on FreeCADGui might also be unavailable.<br />
<br />
<!--T:56--><br />
To read more about console or headless mode, refer to [[Headless_FreeCAD|Headless FreeCAD]].<br />
<br />
=== Running modules, macros and scripts === <!--T:49--><br />
<br />
<!--T:50--><br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
! File type !! System !! Command line example<br />
|-<br />
| Module ||Windows || {{incode|"C:\Program Files\FreeCAD\bin\FreeCAD.exe" -M "C:\FreeCAD\Mod\Draft"}}<br />
|- <br />
| ||Linux || {{incode|FreeCAD_0.19 -M ~/.FreeCAD/Mod/Draft}}<br />
|-<br />
| ||Linux (AppImage) || {{incode|path/to/FreeCADXXX.AppImage -M ~/.FreeCAD/Mod/Draft}}<br />
|-<br />
|-<br />
| .FCMacro or .py ||Windows || {{incode|"C:\Program Files\FreeCAD\bin\FreeCAD.exe" "C:\Users\userName\AppData\Roaming\FreeCAD\Mod\WorkFeature\start_WF.FCMacro"}}<br />
|-<br />
| ||Linux || {{incode|FreeCAD_0.19 ~/.FreeCAD/Mod/WorkFeature/start_WF.FCMacro}}<br />
|-<br />
| ||Linux (AppImage) || {{incode|path/to/FreeCADXXX.AppImage ~/.FreeCAD/Mod/WorkFeature/start_WF.FCMacro}}<br />
|}<br />
<br />
<!--T:57--><br />
See [[Macro_at_Startup|Macro at Startup]] on how to set up a macro to automatically run at FreeCAD startup.<br />
<br />
== Environment variables == <!--T:58--><br />
<br />
<!--T:59--><br />
FreeCAD supports the following environment variables, which can be used to configure directories: {{Version|0.19}}<br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
|-<br />
! Environment variable !! Corresponding [[#Configuration_set|config var name]] !! Synopsis<br />
|-<br />
| {{incode|FREECAD_USER_HOME}} || UserHomePath || FreeCAD's "base" directory for keeping local user data.<br />
|-<br />
| {{incode|FREECAD_USER_DATA}} || UserAppData || If not set, defaults to {{incode|FREECAD_USER_HOME/.FreeCAD}}, but only if {{incode|FREECAD_USER_HOME}} is set.<br />
|-<br />
| {{incode|FREECAD_USER_TEMP}} || AppTempPath || If not set, defaults to {{incode|FREECAD_USER_HOME/temp}}, but only if {{incode|FREECAD_USER_HOME}} is set.<br />
|}<br />
If the specified path does not exist, the setting is ignored!<br />
<br />
<!--T:60--><br />
The above environment variables are meant to be used to realize a ''portable'' FreeCAD environment. For an example how environment variables can be used from the command line on Linux refer to the [[Download#Notes_for_GNU.2FLinux_users|notes for Linux users on the downloads page]].<br />
<br />
=== {{incode|HOME}} === <!--T:61--><br />
<br />
<!--T:62--><br />
FreeCAD uses [[Third_Party_Libraries#Qt|Qt]], which does honor the {{incode|HOME}} environmental variable. Thus, setting {{incode|HOME}} can be used to specify the base directory of Qt-related configuration files ({{incode|.config/FreeCAD/FreeCAD.conf}}).<br />
<br />
<!--T:63--><br />
FreeCad itself does not honor the {{incode|HOME}} environmental variable (because it determines the user's home directory from a lower-level system API). Use {{incode|FREECAD_USER_HOME}} for this pupose.<br />
<br />
=== {{incode|TMPDIR}} === <!--T:64--><br />
<br />
<!--T:65--><br />
The default temporary directory is {{FileName|/tmp/}}. The {{incode|TMPDIR}} environmental variable can be used to override the default. (''Editor: precedence?'').<br />
<br />
=== Libraries === <!--T:87--><br />
<br />
<!--T:27--><br />
Some libraries need to call system environment variables. Sometimes when there is a problem with a FreeCAD installation, it is because some environment variable is absent or incorrect. Therefore, some important variables get duplicated in the Config and saved in the log file.<br />
<br />
<!--T:28--><br />
'''Python'''<br />
<br />
</translate><br />
* PYTHONPATH<br />
* PYTHONHOME<br />
* TCL_LIBRARY<br />
* TCLLIBPATH<br />
<translate><br />
<br />
<!--T:29--><br />
'''OpenCascade'''<br />
<br />
</translate><br />
* CSF_MDTVFontDirectory<br />
* CSF_MDTVTexturesDirectory<br />
* CSF_UnitsDefinition<br />
* CSF_UnitsLexicon<br />
* CSF_StandardDefaults<br />
* CSF_PluginDefaults<br />
* CSF_LANGUAGE<br />
* CSF_SHMessage<br />
* CSF_XCAFDefaults<br />
* CSF_GraphicShr<br />
* CSF_IGESDefaults<br />
* CSF_STEPDefaults<br />
<translate><br />
<br />
== Configuration set == <!--T:19--><br />
<br />
<!--T:20--><br />
On every startup FreeCAD examines its surrounding and the command line parameters. It builds up a '''configuration set''' which holds the essence of the runtime information. This information is later used to determine the place where to save user data or log files. It is also very important for postmortem analyzes. Therefore it is saved in the log file.<br />
<br />
=== User related information=== <!--T:21--><br />
<br />
<!--T:22--><br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
|-<br />
! Config var name !! Synopsis !! Example Windows !! Example Linux<br />
|-<br />
| UserAppData || Path where FreeCAD stores User Related application data. || {{FileName|C:\Documents and Settings\username\AppData\FreeCAD}}<hr />''Short path : ''{{FileName|%APPDATA%\FreeCAD}} || {{FileName|/home/username/.FreeCAD}}<hr />''Short path : ''{{FileName|~/.FreeCAD}}<br />
|-<br />
| UserParameter || File where FreeCAD stores User Related application data. || {{FileName|C:\Documents and Settings\username\AppData\FreeCAD\user.cfg}}<hr />''Short path : ''{{FileName|%APPDATA%\FreeCAD\user.cfg}} || {{FileName|/home/username/.config/FreeCAD/user.cfg}}<hr />''Short path : ''{{FileName|~/.config/FreeCAD/user.cfg}} or {{FileName|$HOME/.config/FreeCAD/user.cfg}} <br />
|-<br />
| SystemParameter || File where FreeCAD stores Application Related data. || {{FileName|C:\Documents and Settings\username\AppData\FreeCAD\system.cfg}}<hr />''Short path : ''{{FileName|%APPDATA%\FreeCAD\system.cfg}} || {{FileName|/home/username/.config/FreeCAD/system.cfg}}<hr />''Short path : ''{{FileName|~/.FreeCAD/system.cfg}} or {{FileName|$HOME/.FreeCAD/system.cfg}}<br />
|- <br />
| UserHomePath || Home path of the current user || {{FileName|C:\Documents and Settings\username}}<hr />''Short path : ''{{FileName|%USERPROFILE%}} || {{FileName|/home/username}}<hr />''Short path : ''{{FileName|~}}<br />
|}<br />
<br />
<!--T:66--><br />
Note: For Linux distributions, an additional configuration file that relates to [[Third_Party_Tools#Qt-Toolkit|Qt]] may exist at path {{FileName|/home/username/.config/FreeCAD/FreeCAD.conf}}.<br />
<br />
=== Command line arguments === <!--T:23--><br />
<br />
<!--T:24--><br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
|-<br />
! Config var name !! Synopsis !! Example <br />
|-<br />
| LoggingFile || 1 if the logging is switched on || 1<br />
|-<br />
| LoggingFileName || File name where the log is placed || {{FileName|C:\Documents and Settings\username\AppData\FreeCAD\FreeCAD.log}}<br />
|-<br />
| RunMode || This indicates how the main loop will work. '''"Script"''' means that the given script is called and then exit. '''"Cmd"''' runs the command line interpreter. '''"Internal"''' runs an internal script. '''"Gui"''' enters the Gui event loop. '''"Module"''' loads a given python module. || "Cmd"<br />
|-<br />
| FileName || Meaning depends on the RunMode || <br />
|- <br />
| ScriptFileName || Meaning depends on the RunMode || <br />
|-<br />
| Verbose || Verbosity level of FreeCAD || "" or "strict"<br />
|-<br />
| OpenFileCount ||Holds the number of files opened through command line arguments || "12"<br />
|-<br />
| AdditionalModulePaths||Holds the additional Module paths given in the cmd line || "extraModules/"<br />
|}<br />
<br />
=== System related === <!--T:25--><br />
<br />
<!--T:26--><br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
|-<br />
! Config var name !! Synopsis !! Example Windows !! Example Linux<br />
|-<br />
| AppHomePath || Path where FreeCAD is installed || {{FileName|c:/Progam Files/FreeCAD_0.19}} || {{FileName|/user/local/FreeCAD_0.19}}<br />
|-<br />
| PythonSearchPath || Holds a list of paths which python search modules. This is at startup can change during execution || || <br />
|-<br />
| AppTempPath || Path of the temporary directory. Can be given with {{incode|TMPDIR}} environment variable, or with the [[Image:Std_DlgParameter.svg|16px]] [[Std_DlgParameter|Parameter Editor]]: {{MenuCommand|Tools → Edit parameters... → BaseApp → Preferences → General → TempPath}} || || {{FileName|/tmp/}} (default)<br />
|}<br />
<br />
=== Build related information=== <!--T:31--><br />
<br />
<!--T:32--><br />
The table below shows the available information about the Build version. Most of it comes from the Subversion repository. This stuff is needed to exactly rebuild a version!<br />
<br />
<!--T:33--><br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
|-<br />
! Config var name !! Synopsis !! Example <br />
|- <br />
| BuildVersionMajor || Major Version number of the Build. Defined in {{FileName|src/Build/Version.h.in}} || 0<br />
|- <br />
| BuildVersionMinor || Minor Version number of the Build. Defined in {{FileName|src/Build/Version.h.in}} || 7<br />
|- <br />
| BuildRevision || SVN Repository Revision number of the src in the Build. Generated by SVN || 356 <br />
|- <br />
| BuildRevisionRange || Range of different changes || 123-356 <br />
|- <br />
| BuildRepositoryURL || Repository URL || https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk/src<br />
|- <br />
| BuildRevisionDate || Date of the above Revision || 2007/02/03 22:21:18 <br />
|- <br />
| BuildScrClean || Indicates if the source was changed after checkout ||Src modified <br />
|- <br />
| BuildScrMixed || || Src not mixed<br />
|}<br />
<br />
=== Branding related === <!--T:34--><br />
<br />
<!--T:35--><br />
These Config entries are related to the branding mechanism of FreeCAD. See [[Branding|Branding]] for more details.<br />
<br />
<!--T:36--><br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
|-<br />
! Config var name !! Synopsis !! Example <br />
|- <br />
| ExeName || Name of the build Executable file. Can differ from FreeCAD if a different {{FileName|main.cpp}} is used. || {{FileName|FreeCAD.exe}}<br />
|- <br />
| ExeVersion || Over all Version shows up at start time || "0.19"<br />
|- <br />
| AppIcon || Icon which is used for the Executable, shows in Application MainWindow. || "FCIcon" <br />
|- <br />
| ConsoleBanner || Banner which is prompted in console mode || <br />
|- <br />
| SplashPicture || Name of the Icon used for the Splash Screen || "FreeCADSplasher" <br />
|- <br />
| SplashAlignment || Alignment of the Text in the Splash dialog || "Bottom" or "Left" <br />
|- <br />
| SplashTextColor || Color of the splasher Text || "#000000" <br />
|- <br />
| StartWorkbench || Name of the Workbench which get started automatically after Startup || "Part design" <br />
|- <br />
| HiddenDockWindow || List of dockwindows (separated by a semicolon) which will be disabled || "Property editor" <br />
|}<br />
<br />
=== Querying the configuration === <!--T:67--><br />
<br />
<!--T:68--><br />
'''From FreeCAD's Python console'''<br />
<br />
<!--T:69--><br />
Entries of the configuration set can be queried with the '''config var name''' (see tables above) from the [[Python_console|Python console]]. For example:<br />
>>> FreeCAD.ConfigGet("ExeVersion")<br />
'0.19'<br />
If the name is not found, an empty string is returned.<br />
<br />
<!--T:70--><br />
'''From command line'''<br />
<br />
<!--T:71--><br />
Use the {{incode|--get-config <config-var-name>}} option to query a single name. Not all names are supported. For example:<br />
FreeCAD --get-config ExeVersion<br />
<br />
<!--T:72--><br />
Use the {{incode|--dump-config}} option to get a list of names and their values. Not all names are supported.<br />
<br />
<!--T:73--><br />
'''From FreeCAD console'''<br />
<br />
<!--T:74--><br />
Start FreeCAD in console mode with {{incode|--console}} and query with Python code. For example:<br />
$ FreeCAD --console<br />
[FreeCAD Console mode <Use Ctrl-D (i.e. EOF) to exit.>]<br />
>>> FreeCAD.ConfigGet("ExeVersion")<br />
'0.19'<br />
>>> exit()<br />
<br />
<!--T:75--><br />
For Linux (bash shell) you can modify the following command line to suit your needs:<br />
$ FreeCAD --console <<EOF<br />
print( "FREECAD_USER_HOME: " + ( "not set" if ( os.environ.get('FREECAD_USER_HOME') is None ) else os.environ.get('FREECAD_USER_HOME') ) )<br />
print( "UserHomePath: " + FreeCAD.ConfigGet("UserHomePath") )<br />
exit()<br />
EOF<br />
<br />
== Starting FreeCAD from the desktop == <!--T:76--><br />
<br />
=== Linux: Creating an additional start option === <!--T:77--><br />
<br />
<!--T:78--><br />
The following assumes that your desktop is configured such that you can launch FreeCAD from it. Depending on your Linux distribution and desktop environment, you may have to adapt the following steps:<br />
# Copy the freedesktop entry file for FreeCAD from {{FileName|/usr/share/applications/freecad.desktop}} to {{FileName|~/.local/share/applications}}.<br />
# Change the name from {{FileName|freecad.desktop}} to something else (e.g. {{FileName|MyFreeCADConfig.desktop}}).<br />
# Open the file with a text editor and change how FreeCAD is invoked by modifying the line starting with {{incode|Exec}}.<br />
# As a result, an additional entry in your start menu/application launcher is available. This way, you can have multiple FreeCAD entries with various launch options.<br />
<br />
== Starting FreeCAD from a portable USB medium == <!--T:79--><br />
<br />
<!--T:81--><br />
'''Windows'''<br />
<br />
<!--T:82--><br />
Put the FreeCAD executable, {{FileName|FreeCAD.exe}}, on the USB medium. Create a batch file, {{FileName|FreeCAD.bat}}, and put it into the same directory as {{FileName|FreeCAD.exe}}. Inside the batch file write:<br />
</translate> <br />
<br />
{{Code|code=<br />
set CURRENTDIR=%cd%<br />
set FREECAD_USER_HOME=%CURRENTDIR%<br />
start FreeCAD.exe -u FreeCAD/user.cfg -s FreeCAD/system.cfg --write-log <br />
}}<br />
<br />
Or with {{incode|FREECAD_USER_DATA}} ([https://forum.freecadweb.org/viewtopic.php?f=12&t=54784&start=60#p474759 see]):<br />
<br />
{{Code|code=<br />
set CURRENTDIR="%cd%"<br />
set FREECAD_USER_DATA=%CURRENTDIR%/..<br />
start FreeCAD.exe -u %FREECAD_USER_DATA%/user.cfg -s %FREECAD_USER_DATA%/system.cfg}}<br />
<translate><br />
<br />
<!--T:84--><br />
With the batch in the root of the USB medium:<br />
<br />
</translate><br />
{{Code|code=<br />
set CURRENTDIR=%cd%<br />
set FREECAD_USER_DATA=%CURRENTDIR%FreeCAD\<br />
start %cd%FreeCAD\bin\FreeCAD.exe -u %FREECAD_USER_DATA%user.cfg -s %FREECAD_USER_DATA%system.cfg<br />
}}<br />
<translate><br />
<br />
<!--T:83--><br />
Now double-click the batch file to start FreeCAD. ([https://forum.freecadweb.org/viewtopic.php?f=4&t=49028 see])<br />
<br />
<br />
<!--T:37--><br />
{{Docnav<br />
|[[Import_Export_Preferences|Import Export Preferences]]<br />
|[[Scripting_and_macros|Scripting and macros]]<br />
}}<br />
<br />
</translate><br />
{{Userdocnavi{{#translation:}}}}<br />
[[Category:Developer Documentation{{#translation:}}]]</div>Chrisbhttps://wiki.freecad.org/index.php?title=Start_up_and_Configuration&diff=1280128Start up and Configuration2023-06-19T22:22:45Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:41--><br />
{{Docnav<br />
|[[Import_Export_Preferences|Import Export Preferences]]<br />
|[[Scripting_and_macros|Scripting and macros]]<br />
}}<br />
<br />
<!--T:88--><br />
{{VeryImportantMessage|In FreeCAD version 0.20 the default location of the program's configuration, data and cache files was changed for Linux.<br><br />
See [[Release_notes_0.20#Core|Release notes 0.20]] for more information. This page has not yet been updated accordingly.}}<br />
<br />
</translate><br />
{{TOCright}}<br />
<translate><br />
<br />
==Overview== <!--T:85--><br />
<br />
<!--T:1--><br />
This page shows the different ways to start FreeCAD and the most important configuration features. <br />
<br />
== Starting FreeCAD from the Command line == <!--T:2--><br />
<br />
<!--T:3--><br />
FreeCAD can be started normally by double-clicking on its desktop icon or selecting it from the start menu, but it can also be started directly from the command line. This allows you to change some of the default startup options.<br />
<br />
=== Using command line options without a command line shell === <!--T:86--><br />
<br />
<!--T:40--><br />
* On Ubuntu you can create a desktop icon and edit its properties. Add the command line options separated by spaces behind the program name in the "Command" field.<br />
* On Windows create a shortcut and edit the properties. Add the command line options separated by spaces to "Target" field.<br />
<br />
=== Command line options === <!--T:4--><br />
<br />
<!--T:5--><br />
The command line options are subject to frequent changes.Therefore, it is a good idea to check the current options by typing:<br />
<br />
</translate><br />
FreeCAD --help<br />
<translate><br />
<br />
<!--T:6--><br />
From the response you can read the possible parameters:<br />
<br />
</translate><br />
Usage: FreeCAD [options] File1 File2 ...<br />
<br />
Allowed options:<br />
<br />
Generic options:<br />
-v [ --version ] Prints version string<br />
-h [ --help ] Prints help message<br />
-c [ --console ] Starts in console mode<br />
--response-file arg Can be specified with '@name', too<br />
--dump-config Dumps configuration<br />
--get-config arg Prints the value of the requested configuration key<br />
<br />
Configuration:<br />
-l [ --write-log ] Writes a log file to:<br />
/home/username/.FreeCAD/FreeCAD.log<br />
--log-file arg Unlike --write-log this allows logging to an <br />
arbitrary file<br />
-u [ --user-cfg ] arg User config file to load/save user settings<br />
-s [ --system-cfg ] arg System config file to load/save system settings<br />
-t [ --run-test ] arg Test case - or 0 for all<br />
-M [ --module-path ] arg Additional module paths<br />
-P [ --python-path ] arg Additional python paths<br />
--single-instance Allow to run a single instance of the application<br />
<translate><br />
<br />
<!--T:53--><br />
In the following table, selected options are described in more detail:<br />
<br />
<!--T:54--><br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
|-<br />
! Long option !! Corresponding [[#Configuration_set|config var name]] !! Synopsis<br />
|-<br />
| {{incode|--user-cfg <filename>}} || UserParameter || Filename or relative path that ends with a filename. Defaults to {{incode|user.cfg}}.<br />
|-<br />
| {{incode|--module-path <dir>}} || Prepends to AdditionalModulePaths || Directory that contains modules. This option can be given repeatedly to specify multiple directories.<br />
|-<br />
| {{incode|--get-config <config-var-name>}} || most || Outputs the requested value in a popup dialog. Exits upon confirmation with {{KEY|OK}}. Cannot be used repeatedly. If an unknown/illegal variable name is used, the response is empty. The {{incode|--console}} flag is not honored.<br />
|}<br />
Options can written in two forms: {{incode|--long-option arg}} and {{incode|--long-option<nowiki>=</nowiki>arg}}.<br />
<br />
=== Response and config files === <!--T:7--><br />
<br />
<!--T:8--><br />
FreeCAD can read some of these options from a config file. This file must be in the bin path and must be named {{FileName|FreeCAD.cfg}}. Be aware that options specified in the command line override the config file!<br />
<br />
<!--T:9--><br />
Some operating systems have a very low limit of characters on the command line. The common way to work around those limitations is using response files. A response file is just a configuration file which uses the same syntax as the command line. If the command line specifies a response file, it's loaded and parsed in addition to the command line:<br />
<br />
</translate><br />
<pre><br />
FreeCAD @ResponseFile.txt <br />
</pre><br />
<translate><br />
<br />
<!--T:10--><br />
or:<br />
<br />
</translate> <br />
<pre><br />
FreeCAD --response-file=ResponseFile.txt<br />
</pre><br />
<translate><br />
<br />
<!--T:55--><br />
or:<br />
<br />
</translate> <br />
<pre><br />
FreeCAD --response-file ResponseFile.txt<br />
</pre><br />
<translate><br />
<br />
=== Hidden options === <!--T:11--><br />
<br />
<!--T:12--><br />
There are a couple of options not visible to the user. These options are e.g. the X-Window parameters parsed by the Windows system:<br />
* ''-display'' - Sets the X display (default is $DISPLAY).<br />
* ''-geometry'' - Sets the client geometry of the first window that is shown.<br />
* ''-fn'' or ''-font'' - Defines the application font. The font should be specified using an X logical font description.<br />
* ''-bg'' or ''-background'' - Sets the default background color and an application palette (light and dark shades are calculated).<br />
* ''-fg'' or ''-foreground'' - Sets the default foreground color.<br />
* ''-btn'' or ''-button'' - Sets the default button color.<br />
* ''-name'' - Sets the application name.<br />
* ''-title'' - Sets the application title.<br />
* ''-visual'' - Forces the application to use a TrueColor visual on an 8-bit display.<br />
* ''-ncols'' - Limits the number of colors allocated in the color cube on an 8-bit display, if the application is using the QApplication::ManyColor color specification. If count is 216 then a 6x6x6 color cube is used (i.e. 6 levels of red, 6 of green, and 6 of blue); for other values, a cube approximately proportional to a 2x3x1 cube is used.<br />
* ''-cmap'' - Causes the application to install a private color map on an 8-bit display.<br />
<br />
=== Running FreeCAD without GUI (headless) === <!--T:13--><br />
<br />
<!--T:14--><br />
FreeCAD is usually built with two executables: a GUI-capable one called {{FileName|FreeCAD}} or {{FileName|freecad}}, and a headless one, called {{FileName|FreeCADCmd}} or {{FileName|freecadcmd}}.<br />
FreeCAD can be used in console mode using the {{incode|--console}} switch (which is the default behavior of {{FileName|FreeCADCmd}}):<br />
<br />
</translate><br />
FreeCAD --console<br />
<translate><br />
<br />
<!--T:15--><br />
In console mode, no graphical user interface will be displayed, and you will be presented with a Python interpreter prompt: {{incode|>>>}}. From that prompt, you have the same functionality as the Python interpreter that runs inside the FreeCAD GUI, and access to all modules and plugins of FreeCAD, except the FreeCADGui module. Be aware that modules that depend on FreeCADGui might also be unavailable.<br />
<br />
<!--T:56--><br />
To read more about console or headless mode, refer to [[Headless_FreeCAD|Headless FreeCAD]].<br />
<br />
=== Running modules, macros and scripts === <!--T:49--><br />
<br />
<!--T:50--><br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
! File type !! System !! Command line example<br />
|-<br />
| Module ||Windows || {{incode|"C:\Program Files\FreeCAD\bin\FreeCAD.exe" -M "C:\FreeCAD\Mod\Draft"}}<br />
|- <br />
| ||Linux || {{incode|FreeCAD_0.19 -M ~/.FreeCAD/Mod/Draft}}<br />
|-<br />
| ||Linux (AppImage) || {{incode|path/to/FreeCADXXX.AppImage -M ~/.FreeCAD/Mod/Draft}}<br />
|-<br />
|-<br />
| .FCMacro or .py ||Windows || {{incode|"C:\Program Files\FreeCAD\bin\FreeCAD.exe" "C:\Users\userName\AppData\Roaming\FreeCAD\Mod\WorkFeature\start_WF.FCMacro"}}<br />
|-<br />
| ||Linux || {{incode|FreeCAD_0.19 ~/.FreeCAD/Mod/WorkFeature/start_WF.FCMacro}}<br />
|-<br />
| ||Linux (AppImage) || {{incode|path/to/FreeCADXXX.AppImage ~/.FreeCAD/Mod/WorkFeature/start_WF.FCMacro}}<br />
|}<br />
<br />
<!--T:57--><br />
See [[Macro_at_Startup|Macro at Startup]] on how to set up a macro to automatically run at FreeCAD startup.<br />
<br />
== Environment variables == <!--T:58--><br />
<br />
<!--T:59--><br />
FreeCAD supports the following environment variables, which can be used to configure directories: {{Version|0.19}}<br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
|-<br />
! Environment variable !! Corresponding [[#Configuration_set|config var name]] !! Synopsis<br />
|-<br />
| {{incode|FREECAD_USER_HOME}} || UserHomePath || FreeCAD's "base" directory for keeping local user data.<br />
|-<br />
| {{incode|FREECAD_USER_DATA}} || UserAppData || If not set, defaults to {{incode|FREECAD_USER_HOME/.FreeCAD}}, but only if {{incode|FREECAD_USER_HOME}} is set.<br />
|-<br />
| {{incode|FREECAD_USER_TEMP}} || AppTempPath || If not set, defaults to {{incode|FREECAD_USER_HOME/temp}}, but only if {{incode|FREECAD_USER_HOME}} is set.<br />
|}<br />
If the specified path does not exist, the setting is ignored!<br />
<br />
<!--T:60--><br />
The above environment variables are meant to be used to realize a ''portable'' FreeCAD environment. For an example how environment variables can be used from the command line on Linux refer to the [[Download#Notes_for_GNU.2FLinux_users|notes for Linux users on the downloads page]].<br />
<br />
=== {{incode|HOME}} === <!--T:61--><br />
<br />
<!--T:62--><br />
FreeCAD uses [[Third_Party_Libraries#Qt|Qt]], which does honor the {{incode|HOME}} environmental variable. Thus, setting {{incode|HOME}} can be used to specify the base directory of Qt-related configuration files ({{incode|.config/FreeCAD/FreeCAD.conf}}).<br />
<br />
<!--T:63--><br />
FreeCad itself does not honor the {{incode|HOME}} environmental variable (because it determines the user's home directory from a lower-level system API). Use {{incode|FREECAD_USER_HOME}} for this pupose.<br />
<br />
=== {{incode|TMPDIR}} === <!--T:64--><br />
<br />
<!--T:65--><br />
The default temporary directory is {{FileName|/tmp/}}. The {{incode|TMPDIR}} environmental variable can be used to override the default. (''Editor: precedence?'').<br />
<br />
=== Libraries === <!--T:87--><br />
<br />
<!--T:27--><br />
Some libraries need to call system environment variables. Sometimes when there is a problem with a FreeCAD installation, it is because some environment variable is absent or incorrect. Therefore, some important variables get duplicated in the Config and saved in the log file.<br />
<br />
<!--T:28--><br />
'''Python'''<br />
<br />
</translate><br />
* PYTHONPATH<br />
* PYTHONHOME<br />
* TCL_LIBRARY<br />
* TCLLIBPATH<br />
<translate><br />
<br />
<!--T:29--><br />
'''OpenCascade'''<br />
<br />
</translate><br />
* CSF_MDTVFontDirectory<br />
* CSF_MDTVTexturesDirectory<br />
* CSF_UnitsDefinition<br />
* CSF_UnitsLexicon<br />
* CSF_StandardDefaults<br />
* CSF_PluginDefaults<br />
* CSF_LANGUAGE<br />
* CSF_SHMessage<br />
* CSF_XCAFDefaults<br />
* CSF_GraphicShr<br />
* CSF_IGESDefaults<br />
* CSF_STEPDefaults<br />
<translate><br />
<br />
== Configuration set == <!--T:19--><br />
<br />
<!--T:20--><br />
On every startup FreeCAD examines its surrounding and the command line parameters. It builds up a '''configuration set''' which holds the essence of the runtime information. This information is later used to determine the place where to save user data or log files. It is also very important for postmortem analyzes. Therefore it is saved in the log file.<br />
<br />
=== User related information=== <!--T:21--><br />
<br />
<!--T:22--><br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
|-<br />
! Config var name !! Synopsis !! Example Windows !! Example Linux<br />
|-<br />
| UserAppData || Path where FreeCAD stores User Related application data. || {{FileName|C:\Documents and Settings\username\AppData\FreeCAD}}<hr />''Short path : ''{{FileName|%APPDATA%\FreeCAD}} || {{FileName|/home/username/.FreeCAD}}<hr />''Short path : ''{{FileName|~/.FreeCAD}}<br />
|-<br />
| UserParameter || File where FreeCAD stores User Related application data. || {{FileName|C:\Documents and Settings\username\AppData\FreeCAD\user.cfg}}<hr />''Short path : ''{{FileName|%APPDATA%\FreeCAD\user.cfg}} || {{FileName|/home/username/.FreeCAD/user.cfg}}<hr />''Short path : ''{{FileName|~/.FreeCAD/user.cfg}} <br />
|-<br />
| SystemParameter || File where FreeCAD stores Application Related data. || {{FileName|C:\Documents and Settings\username\AppData\FreeCAD\system.cfg}}<hr />''Short path : ''{{FileName|%APPDATA%\FreeCAD\system.cfg}} || {{FileName|/home/username/.config/FreeCAD/system.cfg}}<hr />''Short path : ''{{FileName|~/.FreeCAD/system.cfg}} or {{FileName|$HOME/.FreeCAD/system.cfg}}<br />
|- <br />
| UserHomePath || Home path of the current user || {{FileName|C:\Documents and Settings\username}}<hr />''Short path : ''{{FileName|%USERPROFILE%}} || {{FileName|/home/username}}<hr />''Short path : ''{{FileName|~}}<br />
|}<br />
<br />
<!--T:66--><br />
Note: For Linux distributions, an additional configuration file that relates to [[Third_Party_Tools#Qt-Toolkit|Qt]] may exist at path {{FileName|/home/username/.config/FreeCAD/FreeCAD.conf}}.<br />
<br />
=== Command line arguments === <!--T:23--><br />
<br />
<!--T:24--><br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
|-<br />
! Config var name !! Synopsis !! Example <br />
|-<br />
| LoggingFile || 1 if the logging is switched on || 1<br />
|-<br />
| LoggingFileName || File name where the log is placed || {{FileName|C:\Documents and Settings\username\AppData\FreeCAD\FreeCAD.log}}<br />
|-<br />
| RunMode || This indicates how the main loop will work. '''"Script"''' means that the given script is called and then exit. '''"Cmd"''' runs the command line interpreter. '''"Internal"''' runs an internal script. '''"Gui"''' enters the Gui event loop. '''"Module"''' loads a given python module. || "Cmd"<br />
|-<br />
| FileName || Meaning depends on the RunMode || <br />
|- <br />
| ScriptFileName || Meaning depends on the RunMode || <br />
|-<br />
| Verbose || Verbosity level of FreeCAD || "" or "strict"<br />
|-<br />
| OpenFileCount ||Holds the number of files opened through command line arguments || "12"<br />
|-<br />
| AdditionalModulePaths||Holds the additional Module paths given in the cmd line || "extraModules/"<br />
|}<br />
<br />
=== System related === <!--T:25--><br />
<br />
<!--T:26--><br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
|-<br />
! Config var name !! Synopsis !! Example Windows !! Example Linux<br />
|-<br />
| AppHomePath || Path where FreeCAD is installed || {{FileName|c:/Progam Files/FreeCAD_0.19}} || {{FileName|/user/local/FreeCAD_0.19}}<br />
|-<br />
| PythonSearchPath || Holds a list of paths which python search modules. This is at startup can change during execution || || <br />
|-<br />
| AppTempPath || Path of the temporary directory. Can be given with {{incode|TMPDIR}} environment variable, or with the [[Image:Std_DlgParameter.svg|16px]] [[Std_DlgParameter|Parameter Editor]]: {{MenuCommand|Tools → Edit parameters... → BaseApp → Preferences → General → TempPath}} || || {{FileName|/tmp/}} (default)<br />
|}<br />
<br />
=== Build related information=== <!--T:31--><br />
<br />
<!--T:32--><br />
The table below shows the available information about the Build version. Most of it comes from the Subversion repository. This stuff is needed to exactly rebuild a version!<br />
<br />
<!--T:33--><br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
|-<br />
! Config var name !! Synopsis !! Example <br />
|- <br />
| BuildVersionMajor || Major Version number of the Build. Defined in {{FileName|src/Build/Version.h.in}} || 0<br />
|- <br />
| BuildVersionMinor || Minor Version number of the Build. Defined in {{FileName|src/Build/Version.h.in}} || 7<br />
|- <br />
| BuildRevision || SVN Repository Revision number of the src in the Build. Generated by SVN || 356 <br />
|- <br />
| BuildRevisionRange || Range of different changes || 123-356 <br />
|- <br />
| BuildRepositoryURL || Repository URL || https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk/src<br />
|- <br />
| BuildRevisionDate || Date of the above Revision || 2007/02/03 22:21:18 <br />
|- <br />
| BuildScrClean || Indicates if the source was changed after checkout ||Src modified <br />
|- <br />
| BuildScrMixed || || Src not mixed<br />
|}<br />
<br />
=== Branding related === <!--T:34--><br />
<br />
<!--T:35--><br />
These Config entries are related to the branding mechanism of FreeCAD. See [[Branding|Branding]] for more details.<br />
<br />
<!--T:36--><br />
{| border="2" cellpadding="4" cellspacing="0" style="margin-top:1em; margin-bottom:1em; background:#f9f9f9; border:1px #aaa solid; border-collapse:collapse;"<br />
|-<br />
! Config var name !! Synopsis !! Example <br />
|- <br />
| ExeName || Name of the build Executable file. Can differ from FreeCAD if a different {{FileName|main.cpp}} is used. || {{FileName|FreeCAD.exe}}<br />
|- <br />
| ExeVersion || Over all Version shows up at start time || "0.19"<br />
|- <br />
| AppIcon || Icon which is used for the Executable, shows in Application MainWindow. || "FCIcon" <br />
|- <br />
| ConsoleBanner || Banner which is prompted in console mode || <br />
|- <br />
| SplashPicture || Name of the Icon used for the Splash Screen || "FreeCADSplasher" <br />
|- <br />
| SplashAlignment || Alignment of the Text in the Splash dialog || "Bottom" or "Left" <br />
|- <br />
| SplashTextColor || Color of the splasher Text || "#000000" <br />
|- <br />
| StartWorkbench || Name of the Workbench which get started automatically after Startup || "Part design" <br />
|- <br />
| HiddenDockWindow || List of dockwindows (separated by a semicolon) which will be disabled || "Property editor" <br />
|}<br />
<br />
=== Querying the configuration === <!--T:67--><br />
<br />
<!--T:68--><br />
'''From FreeCAD's Python console'''<br />
<br />
<!--T:69--><br />
Entries of the configuration set can be queried with the '''config var name''' (see tables above) from the [[Python_console|Python console]]. For example:<br />
>>> FreeCAD.ConfigGet("ExeVersion")<br />
'0.19'<br />
If the name is not found, an empty string is returned.<br />
<br />
<!--T:70--><br />
'''From command line'''<br />
<br />
<!--T:71--><br />
Use the {{incode|--get-config <config-var-name>}} option to query a single name. Not all names are supported. For example:<br />
FreeCAD --get-config ExeVersion<br />
<br />
<!--T:72--><br />
Use the {{incode|--dump-config}} option to get a list of names and their values. Not all names are supported.<br />
<br />
<!--T:73--><br />
'''From FreeCAD console'''<br />
<br />
<!--T:74--><br />
Start FreeCAD in console mode with {{incode|--console}} and query with Python code. For example:<br />
$ FreeCAD --console<br />
[FreeCAD Console mode <Use Ctrl-D (i.e. EOF) to exit.>]<br />
>>> FreeCAD.ConfigGet("ExeVersion")<br />
'0.19'<br />
>>> exit()<br />
<br />
<!--T:75--><br />
For Linux (bash shell) you can modify the following command line to suit your needs:<br />
$ FreeCAD --console <<EOF<br />
print( "FREECAD_USER_HOME: " + ( "not set" if ( os.environ.get('FREECAD_USER_HOME') is None ) else os.environ.get('FREECAD_USER_HOME') ) )<br />
print( "UserHomePath: " + FreeCAD.ConfigGet("UserHomePath") )<br />
exit()<br />
EOF<br />
<br />
== Starting FreeCAD from the desktop == <!--T:76--><br />
<br />
=== Linux: Creating an additional start option === <!--T:77--><br />
<br />
<!--T:78--><br />
The following assumes that your desktop is configured such that you can launch FreeCAD from it. Depending on your Linux distribution and desktop environment, you may have to adapt the following steps:<br />
# Copy the freedesktop entry file for FreeCAD from {{FileName|/usr/share/applications/freecad.desktop}} to {{FileName|~/.local/share/applications}}.<br />
# Change the name from {{FileName|freecad.desktop}} to something else (e.g. {{FileName|MyFreeCADConfig.desktop}}).<br />
# Open the file with a text editor and change how FreeCAD is invoked by modifying the line starting with {{incode|Exec}}.<br />
# As a result, an additional entry in your start menu/application launcher is available. This way, you can have multiple FreeCAD entries with various launch options.<br />
<br />
== Starting FreeCAD from a portable USB medium == <!--T:79--><br />
<br />
<!--T:81--><br />
'''Windows'''<br />
<br />
<!--T:82--><br />
Put the FreeCAD executable, {{FileName|FreeCAD.exe}}, on the USB medium. Create a batch file, {{FileName|FreeCAD.bat}}, and put it into the same directory as {{FileName|FreeCAD.exe}}. Inside the batch file write:<br />
</translate> <br />
<br />
{{Code|code=<br />
set CURRENTDIR=%cd%<br />
set FREECAD_USER_HOME=%CURRENTDIR%<br />
start FreeCAD.exe -u FreeCAD/user.cfg -s FreeCAD/system.cfg --write-log <br />
}}<br />
<br />
Or with {{incode|FREECAD_USER_DATA}} ([https://forum.freecadweb.org/viewtopic.php?f=12&t=54784&start=60#p474759 see]):<br />
<br />
{{Code|code=<br />
set CURRENTDIR="%cd%"<br />
set FREECAD_USER_DATA=%CURRENTDIR%/..<br />
start FreeCAD.exe -u %FREECAD_USER_DATA%/user.cfg -s %FREECAD_USER_DATA%/system.cfg}}<br />
<translate><br />
<br />
<!--T:84--><br />
With the batch in the root of the USB medium:<br />
<br />
</translate><br />
{{Code|code=<br />
set CURRENTDIR=%cd%<br />
set FREECAD_USER_DATA=%CURRENTDIR%FreeCAD\<br />
start %cd%FreeCAD\bin\FreeCAD.exe -u %FREECAD_USER_DATA%user.cfg -s %FREECAD_USER_DATA%system.cfg<br />
}}<br />
<translate><br />
<br />
<!--T:83--><br />
Now double-click the batch file to start FreeCAD. ([https://forum.freecadweb.org/viewtopic.php?f=4&t=49028 see])<br />
<br />
<br />
<!--T:37--><br />
{{Docnav<br />
|[[Import_Export_Preferences|Import Export Preferences]]<br />
|[[Scripting_and_macros|Scripting and macros]]<br />
}}<br />
<br />
</translate><br />
{{Userdocnavi{{#translation:}}}}<br />
[[Category:Developer Documentation{{#translation:}}]]</div>Chrisbhttps://wiki.freecad.org/index.php?title=Debugging&diff=1258389Debugging2023-04-29T23:11:48Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:27--><br />
{{Docnav<br />
|[[Bug_Triage|Bug Triage]]<br />
|[[Testing|Testing]]<br />
}}<br />
<br />
</translate><br />
{{TOCright}}<br />
<translate><br />
<br />
== Test First == <!--T:1--><br />
<br />
<!--T:51--><br />
Before you go through the pain of debugging use the [[Testing|Test framework]] to check if the standard tests work properly. If they do not run complete there is possibly a broken installation.<br />
<br />
== Command Line == <!--T:2--><br />
<br />
<!--T:52--><br />
The ''debugging'' of FreeCAD is supported by a few internal mechanisms. The command line version of FreeCAD provides some options for debugging support.<br />
<br />
<!--T:13--><br />
These are the currently recognized options in FreeCAD 0.19:<br />
<br />
<!--T:14--><br />
Generic options:<br />
-v [ --version ] Prints version string<br />
-h [ --help ] Prints help message<br />
-c [ --console ] Starts in console mode<br />
--response-file arg Can be specified with '@name', too<br />
--dump-config Dumps configuration<br />
--get-config arg Prints the value of the requested configuration key<br />
<br />
<!--T:15--><br />
Configuration:<br />
-l [ --write-log ] Writes a log file to:<br />
$HOME/.local/share/FreeCAD/FreeCAD.log (Linux)<br />
$HOME/Library/Application\ Support/FreeCAD/FreeCAD.log (macOS)<br />
%APPDATA%\FreeCAD\FreeCAD.log (Windows)<br />
--log-file arg Unlike to --write-log this allows to log to an <br />
arbitrary file<br />
-u [ --user-cfg ] arg User config file to load/save user settings<br />
-s [ --system-cfg ] arg System config file to load/save system settings<br />
-t [ --run-test ] arg Test case - or 0 for all<br />
-M [ --module-path ] arg Additional module paths<br />
-P [ --python-path ] arg Additional Python paths<br />
--single-instance Allow to run a single instance of the application<br />
<br />
== Generating a Backtrace == <!--T:3--><br />
<br />
<!--T:53--><br />
If you are running a version of FreeCAD from the bleeding edge of the development curve, it may "crash". You can help solve such problems by providing the developers with a "backtrace". To do this, you need to be running a "debug build" of the software. "Debug build" is a parameter that is set at compile time, so you'll either need to compile FreeCAD yourself, or obtain a pre-compiled "debug" version. <br />
<br />
=== For Linux === <!--T:4--><br />
<br />
</translate><br />
<!-- START OF COLLAPSIBLE DIV --><div class="toccolours mw-collapsible mw-collapsed" style="width:800px;"><br />
<translate><br />
<br />
<!--T:48--><br />
Linux Debugging → <br />
<br />
</translate><br />
<div class="mw-collapsible-content"><br />
<translate><br />
<br />
<!--T:49--><br />
Prerequisites: <br />
<br />
<!--T:5--><br />
* software package gdb installed<br />
* a debug build of FreeCAD (at this time only available by [[Compile_on_Linux#For_a_Debug_build|building from source]])<br />
* a FreeCAD model that causes a crash<br />
<br />
<!--T:6--><br />
Steps:<br />
Enter the following in your terminal window:<br />
<br />
<!--T:65--><br />
Find FreeCAD binary on your system:<br />
<br />
</translate><br />
{{Code|code=<br />
$ whereis freecad<br />
freecad: /usr/local/freecad <--- for example<br />
<br />
$ cd /usr/local/freecad/bin<br />
$ gdb FreeCAD<br />
}}<br />
<translate><br />
<br />
<!--T:50--><br />
GNUdebugger will output some initializing information. The (gdb) shows GNUDebugger is running in the terminal, now input:<br />
<br />
</translate><br />
{{Code|code=<br />
(gdb) handle SIG33 noprint nostop<br />
(gdb) run<br />
}}<br />
<translate><br />
<br />
<!--T:7--><br />
FreeCAD will now start up. Perform the steps that cause FreeCAD to crash or freeze, then enter in the terminal window:<br />
<br />
</translate><br />
{{Code|code=<br />
(gdb) bt<br />
}}<br />
<translate><br />
<br />
<!--T:38--><br />
This will generate a lengthy listing of exactly what the program was doing when it crashed or froze. Include this with your problem report.<br />
<br />
</translate><br />
{{Code|code=<br />
(gdb) bt full<br />
}}<br />
<translate><br />
<br />
<!--T:39--><br />
Print the values of the local variables also. This can be combined with a number to limit the number of frames shown.<br />
<br />
</translate><br />
</div></div> <!-- END OF COLLAPSIBLE DIV --><br />
<translate><br />
<br />
=== For macOS === <!--T:16--><br />
<br />
</translate><br />
<!-- START OF COLLAPISBLE DIV --><div class="toccolours mw-collapsible mw-collapsed" style="width:800px;"><br />
<translate><br />
<br />
<!--T:40--><br />
macOS Debugging → <br />
<br />
</translate><br />
<div class="mw-collapsible-content"><br />
<translate><br />
<br />
<!--T:41--><br />
Prerequisites: <br />
<br />
<!--T:17--><br />
* software package lldb installed<br />
* a debug build of FreeCAD<br />
* a FreeCAD model that causes a crash<br />
<br />
<!--T:18--><br />
Steps:<br />
Enter the following in your terminal window:<br />
<br />
</translate><br />
{{Code|code=<br />
$ cd FreeCAD/bin<br />
$ lldb FreeCAD<br />
}}<br />
<translate><br />
<br />
<!--T:42--><br />
LLDB will output some initializing information. The (lldb) shows the debugger is running in the terminal, now input:<br />
<br />
</translate><br />
{{Code|code=<br />
(lldb) run<br />
}}<br />
<translate><br />
<br />
<!--T:20--><br />
FreeCAD will now start up. Perform the steps that cause FreeCAD to crash or freeze, then enter in the terminal window:<br />
<br />
</translate><br />
{{Code|code=<br />
(lldb) bt<br />
}}<br />
<translate><br />
<br />
<!--T:43--><br />
This will generate a lengthy listing of exactly what the program was doing when it crashed or froze. Include this with your problem report.<br />
<br />
</translate><br />
</div></div> <!-- END OF COLLAPSIBLE DIV --><br />
<translate><br />
<br />
== List Libraries Loaded by FreeCAD == <!--T:55--><br />
<br />
<!--T:56--><br />
(Applicable to Linux and macOS)<br />
<br />
<!--T:57--><br />
Sometimes it's helpful to understand what libraries FreeCAD is loading, specifically if there are multiple libraries being loaded of the same name but different versions (version collision). In order to see which libraries are loaded by FreeCAD when it crashes you should open a terminal and run it in the debugger. In a second terminal window, find out the process id of FreeCAD:<br />
<br />
<!--T:58--><br />
{{incode|ps -A &#124; grep FreeCAD}}<br />
<br />
<!--T:59--><br />
Use the returned id and pass it to {{incode|lsof}}:<br />
<br />
<!--T:60--><br />
{{incode| lsof -p process_id}}<br />
<br />
<!--T:61--><br />
This prints a long list of loaded resources. So for example, if trying to ascertain if more than one Coin3d library versions is loaded, scroll through the list or search directly for Coin in the output:<br />
<br />
<!--T:62--><br />
{{incode|lsof -p process_id &#124; grep Coin}}<br />
<br />
== Python Debugging == <!--T:8--><br />
<br />
<!--T:54--><br />
For a more modern approach to debugging Python, see these posts:<br />
* [https://forum.freecadweb.org/viewtopic.php?f=22&t=28901 Debugging macros with VS 2017]<br />
* [https://forum.freecadweb.org/viewtopic.php?f=10&t=35383 Python workbenches debugging]<br />
* [https://forum.freecadweb.org/viewtopic.php?f=4&t=40251 python3.dll, Qt5Windgets.dll, Qt5Gui.dll and Qt5Core.dll not found]<br />
<br />
=== winpdb === <!--T:36--><br />
<br />
</translate><br />
<!-- START OF COLLAPSIBLE DIV --><div class="toccolours mw-collapsible mw-collapsed" style="width:800px;"><br />
<translate><br />
<br />
<!--T:44--><br />
winpdb Debugging → <br />
<br />
</translate><br />
<div class="mw-collapsible-content"><br />
<translate><br />
<br />
<!--T:45--><br />
Here is an example of using ''Winpdb'' inside FreeCAD:<br />
<br />
<!--T:22--><br />
We need the Python debugger: ''Winpdb''. If you do not have it installed, on Ubuntu/Debian install it with:<br />
<br />
</translate><br />
{{Code|code=<br />
sudo apt-get install winpdb<br />
}}<br />
<translate><br />
<br />
<!--T:24--><br />
Now lets setup the debugger.<br />
<br />
<!--T:25--><br />
# Start ''Winpdb''.<br />
# Set the debugger password to "test": Go to menu ''File'' → ''Password" and set the password.<br />
<br />
<!--T:26--><br />
Now we will run a test Python script in FreeCAD step by step.<br />
<br />
<!--T:9--><br />
# Run winpdb and set the password (e.g. test)<br />
# Create a Python file with this content<br />
<br />
</translate><br />
{{Code|code=<br />
import rpdb2<br />
rpdb2.start_embedded_debugger("test")<br />
import FreeCAD<br />
import Part<br />
import Draft<br />
print "hello"<br />
print "hello"<br />
import Draft<br />
points=[FreeCAD.Vector(-3.0,-1.0,0.0),FreeCAD.Vector(-2.0,0.0,0.0)]<br />
Draft.makeWire(points,closed=False,face=False,support=None)<br />
}}<br />
<translate><br />
<br />
<!--T:10--><br />
# Start FreeCAD and load the above file into FreeCAD<br />
# Press F6 to execute it<br />
# Now FreeCAD will become unresponsive because the Python debugger is waiting<br />
# Switch to the Windpdb GUI and click on "Attach". After a few seconds an item "<Input>" appears where you have to double-click<br />
# Now the currently executed script appears in Winpdb.<br />
# Set a break at the last line and press F5<br />
# Now press F7 to step into the Python code of Draft.makeWire<br />
<br />
</translate><br />
</div></div> <!-- END OF COLLAPSIBLE DIV --><br />
<translate><br />
<br />
=== Visual Studio Code (VS Code) === <!--T:29--><br />
<br />
</translate><br />
<!-- START OF COLLAPSIBLE DIV --><div class="toccolours mw-collapsible mw-collapsed" style="width:800px;"><br />
<translate><br />
<br />
<!--T:46--><br />
VS Code Debugging → <br />
<br />
</translate><br />
<div class="mw-collapsible-content"><br />
<translate><br />
<br />
<!--T:47--><br />
Prerequisites: <br />
<br />
<!--T:30--><br />
* The ptvsd package needs to be installed in a Python 3 outside of FreeCAD, then the module must be copied to FreeCAD's Python library folder.<br />
<br />
</translate><br />
{{Code|code=<br />
# In a cmd window that has a path to you local Python 3:<br />
pip install ptvsd<br />
# Then if your Python is installed in C:\Users\<userid>\AppData\Local\Programs\Python\Python37<br />
# and your FreeCAD is installed in C:\freecad\bin<br />
xcopy "C:\Users\<userid>\AppData\Local\Programs\Python\Python37\Lib\site-packages\ptvsd" "C:\freecad\bin\Lib\site-packages\ptvsd"<br />
}}<br />
<translate><br />
<br />
<!--T:31--><br />
[https://pypi.org/project/ptvsd/ pypi page]<br />
<br />
<!--T:32--><br />
[https://code.visualstudio.com/docs/python/debugging#_remote-debugging Visual Studio Code documentation for remote debugging]<br />
<br />
<!--T:33--><br />
Steps:<br />
* Add following code at the beginning of your script<br />
<br />
</translate><br />
{{Code|code=<br />
import ptvsd<br />
print("Waiting for debugger attach")<br />
# 5678 is the default attach port in the VS Code debug configurations<br />
ptvsd.enable_attach(address=('localhost', 5678), redirect_output=True)<br />
ptvsd.wait_for_attach()<br />
}}<br />
<translate><br />
<br />
<!--T:34--><br />
* Add a debug configuration in Visual Studio Code {{MenuCommand|Debug → Add Configurations…}}. <br />
* The config should look like this:<br />
<br />
</translate><br />
<!--NOT CHANGE THE <pre> </pre> BALISE CAUSE THE PIPE OR SPACE IN MACRO CODE CUT THE MACRO--><br />
<pre><br />
"configurations": [<br />
{<br />
"name": "Python: Attacher",<br />
"type": "python",<br />
"request": "attach",<br />
"port": 5678,<br />
"host": "localhost",<br />
"pathMappings": [<br />
{<br />
"localRoot": "${workspaceFolder}",<br />
"remoteRoot": "."<br />
}<br />
]<br />
},<br />
</pre><br />
<translate><br />
<br />
<!--T:35--><br />
* In VS Code add a breakpoint anywhere you want.<br />
* Launch the script in FreeCAD. FreeCAD freeze waiting for attachment.<br />
* In VS Code start debugging using created configuration. You should see variables in debugger area.<br />
* When setting breakpoints, VS Code will complain about not finding the .py file opened in the VS Code editor.<br />
** Change "remoteRoot": "." to "remoteRoot": "<directory of file>"<br />
*** For example, if the Python file resides in ''/home/FC_myscripts/myscript.py''<br />
*** Change to: "remoteRoot": "/home/FC_myscripts"<br />
** If you're just debugging FreeCAD macros from the FreeCAD macro folder, and that folder is "C:/Users/<userid>/AppData/Roaming/FreeCAD/Macro", then use:<br />
*** "localRoot": "C:/Users/<userid>/AppData/Roaming/FreeCAD/Macro",<br />
*** "remoteRoot": "C:/Users/<userid>/AppData/Roaming/FreeCAD/Macro"<br />
* If your macro can't find ptvsd despite having installed it somewhere precede 'import ptvsd' with<br />
<br />
</translate><br />
{{Code|code=<br />
from sys import path<br />
sys.path.append('/path/to/site-packages')<br />
}}<br />
<translate><br />
<br />
<!--T:66--><br />
Where the path is to the directory where ptvsd was installed.<br />
* On the left bottom edge of VSCode you can choose the Python executable - it's best to make this the version packaged with FreeCAD.<br />
In the Mac package it is /Applications/FreeCAD.App/Contents/Resources/bin/python.<br />
<br />
<!--T:67--><br />
You can locate it on your system by typing<br />
<br />
</translate><br />
{{Code|code=<br />
import sys<br />
print(sys.executable)<br />
}}<br />
<translate><br />
<br />
<!--T:68--><br />
into FreeCAD's Python console.<br />
<br />
</translate><br />
</div></div> <!-- END OF COLLAPSIBLE DIV --><br />
<translate><br />
<br />
=== With LiClipse and AppImage === <!--T:69--><br />
<br />
</translate><br />
<!-- START OF COLLAPSIBLE DIV --><div class="toccolours mw-collapsible mw-collapsed" style="width:800px;"><br />
<translate><br />
<br />
<!--T:70--><br />
LiClipse Debugging → <br />
<br />
</translate><br />
<div class="mw-collapsible-content"><br />
<translate><br />
<br />
<!--T:71--><br />
* Extract AppImage.<br />
<br />
</translate><br />
{{Code|code=<br />
> ./your location/FreeCAD_xxx.AppImage --appimage-extract<br />
> cd squashfs-root/<br />
}}<br />
<translate><br />
<br />
<!--T:72--><br />
* The sqashfs-root location is where the debugger later on is hooked up to.<br />
<br />
<!--T:73--><br />
* Make sure you can start a FreeCAD session from within the squashfs-root location.<br />
<br />
</translate><br />
{{Code|code=<br />
squashfs-root> ./usr/bin/freecadcmd<br />
}}<br />
<translate><br />
<br />
<!--T:74--><br />
* Should start up a FreeCAD commandline session.<br />
<br />
<!--T:75--><br />
* Install [https://www.liclipse.com/ LiClipse].<br />
** Comes ready with pydev and has installers for all platforms.<br />
** For linux it is just to extract (to any location) and run.<br />
<br />
<!--T:76--><br />
* Configure liclipse for debugging.<br />
** Right-click pydev icon (upper right corner) and choose customize.<br />
*** Activate "PyDev Debug" (through checkbox, or it might be needed to go to tab "Action Set Availability" and activate there first).<br />
*** In the pydev menu you can now choose "start debug server".<br />
** Use menu window/open perspective/other > debug.<br />
*** Right-click debug icon (upper right corner) and choose customize.<br />
*** Checking "Debug" brings the debugging navigation tools to the toolbar.<br />
** Open preferences through menu window/preferences.<br />
*** In PyDev/Interpreters add "new Interpreter by browsing".<br />
*** The added interpreter should be: {{incode|your loc/squashfs-root/usr/bin/python}}.<br />
*** If you are only using this for fc, you can add AddOn workbench folders as well, or do that in a pydev-project later on.<br />
<br />
<!--T:77--><br />
* Find path to {{incode|pydevd.py}} in your liclipse installation.<br />
** Something along the lines of: {{incode|your location/liclipse/plugins/org.python.pydev.xx/pysrc}}.<br />
* Create a regular pydev-project in liclipse.<br />
** Import external sources, for example a macro that you want to debug, or an external workbench.<br />
** In that macro (or workbench .py file) add the code lines:<br />
<br />
</translate><br />
: {{Code|code=<br />
import sys; sys.path.append("path ending with /pysrc")<br />
import pydevd; pydevd.settrace()<br />
}}<br />
<translate><br />
<br />
<!--T:78--><br />
:* This is where the execution will halt when the macro is run.<br />
<br />
<!--T:79--><br />
* Start the liclipse debug server (menu pydev).<br />
<br />
<!--T:80--><br />
* Start FreeCAD.<br />
<br />
</translate><br />
{{Code|code=<br />
squashfs-root> ./usr/bin/freecad<br />
}}<br />
<translate><br />
<br />
<!--T:81--><br />
* Run the macro (or any other file with a {{incode|pydevd.settrace()}} trigger) from within freecad, as you would normally do.<br />
<br />
<!--T:82--><br />
* Happy debugging.<br />
<br />
<!--T:83--><br />
* The use of LiClipse for remote debugging, and the steps described here related to liclipse, should work on any platform. The parts related to AppImage is for linux only.<br />
<br />
</translate><br />
</div></div> <!-- END OF COLLAPSIBLE DIV --><br />
<translate><br />
<br />
== Debugging OpenCasCade == <!--T:63--><br />
<br />
<!--T:64--><br />
For developers needing to dig deeper in to the OpenCasCade kernel, user @abdullah has created a [https://forum.freecadweb.org/viewtopic.php?f=10&t=47017 thread] orientation discussing how to do so.<br />
<br />
<br />
<!--T:11--><br />
{{Docnav<br />
|[[Bug_Triage|Bug Triage]]<br />
|[[Testing|Testing]]<br />
}}<br />
<br />
</translate><br />
{{Powerdocnavi{{#translation:}}}}<br />
[[Category:Developer Documentation{{#translation:}}]]<br />
[[Category:Python Code{{#translation:}}]]<br />
{{clear}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=Draft_PathArray&diff=1254499Draft PathArray2023-04-20T21:24:56Z<p>Chrisb: Reverted edits by Chrisb (talk) to last revision by Roy 043</p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:35--><br />
{{Docnav<br />
|[[Draft_CircularArray|CircularArray]]<br />
|[[Draft_PathLinkArray|PathLinkArray]]<br />
|[[Draft_Workbench|Draft]]<br />
|IconL=Draft_CircularArray.svg<br />
|IconR=Draft_PathLinkArray.svg<br />
|IconC=Workbench_Draft.svg<br />
}}<br />
<br />
<!--T:1--><br />
{{GuiCommand<br />
|Name=Draft PathArray<br />
|MenuLocation=Modification → Array tools → Path array<br />
|Workbenches=[[Draft_Workbench|Draft]], [[Arch_Workbench|Arch]]<br />
|Version=0.14<br />
|SeeAlso=[[Draft_OrthoArray|Draft OrthoArray]], [[Draft_PolarArray|Draft PolarArray]], [[Draft_CircularArray|Draft CircularArray]], [[Draft_PathLinkArray|Draft PathLinkArray]], [[Draft_PointArray|Draft PointArray]], [[Draft_PointLinkArray|Draft PointLinkArray]]<br />
}}<br />
<br />
==Description== <!--T:2--><br />
<br />
<!--T:3--><br />
The [[Image:Draft_PathArray.svg|24px]] '''Draft PathArray''' command creates a regular array from a selected object by placing copies along a path. Use the [[Draft_PathLinkArray|Draft PathLinkArray]] command to create a more efficient [[App_Link|Link]] array instead. Except for the type of array that is created, Link array or regular array, the [[Draft_PathLinkArray|Draft PathLinkArray]] command is identical to this command.<br />
<br />
<!--T:22--><br />
Both commands can be used on 2D objects created with the [[Draft_Workbench|Draft Workbench]] or [[Sketcher_Workbench|Sketcher Workbench]], but also on many 3D objects such as those created with the [[Part_Workbench|Part Workbench]], [[PartDesign_Workbench|PartDesign Workbench]] or [[Arch_Workbench|Arch Workbench]].<br />
<br />
</translate><br />
[[Image:Draft_PathArray_Example.png|400px]]<br />
<translate><br />
<!--T:24--><br />
{{Caption|Draft PathArray}}<br />
<br />
==Usage== <!--T:4--><br />
<br />
<!--T:5--><br />
# Select the object you wish to array.<br />
# Add the path object to the selection. It is also possible to select edges instead. The edges must belong to the same object and they must be connected.<br />
# There are several ways to invoke the command:<br />
#* Press the {{Button|[[Image:Draft_PathArray.svg|16px]] [[Draft_PathArray|Draft PathArray]]}} button.<br />
#* Select the {{MenuCommand|Modification → Array tools → [[Image:Draft_PathArray.svg|16px]] Path array}} option from the menu.<br />
# The array is created.<br />
# Optionally change the [[#Properties|properties]] of the array in the [[property_editor|Property editor]].<br />
<br />
==Alignment== <!--T:54--><br />
<br />
<!--T:55--><br />
The alignment of the elements in a Draft PathArray depends on the properties of the array and the orientation of the source object. The position of the source object is ignored: for the purpose of the array the {{Value|x}}, {{Value|y}} and {{Value|z}} are set to {{Value|0}}. If the {{PropertyData|Align}} property of the array is set to {{FALSE}} the orientation of the array elements is identical to that of the source object. If it is set to {{TRUE}} the X axis of the local coordinate system of each element placement is tangent to the path. The Y and Z axes of the local coordinate systems depend on the {{PropertyData|Align Mode}} property of the array. Other array properties involved in the alignment include {{PropertyData|Tangent Vector}}, {{PropertyData|Force Vertical}} and {{PropertyData|Vertical Vector}}.<br />
<br />
</translate><br />
[[Image:Draft_PathArray_example2.png|600px]]<br />
<translate><br />
<!--T:56--><br />
{{Caption|3 arrays based on the same non-planar path. From left to right: Align is false, Align is true with Align Mode Original and Align is true with Align Mode Frenet}}.<br />
<br />
===Align Mode=== <!--T:57--><br />
<br />
<!--T:58--><br />
Three modes are available:<br />
<br />
====Original==== <!--T:59--><br />
<br />
<!--T:60--><br />
This mode comes closest to the single {{PropertyData|Align Mode}} available in version 0.18. It relies on a fixed normal vector. If the path is planar this vector is perpendicular to the plane of the path, else a default vector, the positive Z axis, is used. From this normal vector and the local tangent vector (the local X axis) a [https://en.wikipedia.org/wiki/Cross_product cross product] is calculated. This new vector is used as the local Z axis. The orientation of the local Y axis is determined from the local X and Z axes.<br />
<br />
====Frenet==== <!--T:61--><br />
<br />
<!--T:62--><br />
This mode uses the local normal vector derived from the path at each element placement. If this vector cannot be determined (for example in the case of a straight segment) a default vector, again the positive Z axis, is used instead. With this vector and the local tangent vector the local coordinate system is determined using the same procedure as in the previous paragraph.<br />
<br />
====Tangent==== <!--T:63--><br />
<br />
<!--T:64--><br />
This mode is similar to {{PropertyData|Align Mode}} {{Value|Original}} but includes the possibility to pre-rotate the source object by specifying a {{PropertyData|Tangent Vector}}.<br />
<br />
===Force Vertical and Vertical Vector=== <!--T:65--><br />
<br />
<!--T:66--><br />
These properties are only available if {{PropertyData|Align Mode}} is {{Value|Original}} or {{Value|Tangent}}. If {{PropertyData|Force Vertical}} is set to {{TRUE}} the local coordinate system is calculated in a different manner. The {{PropertyData|Vertical Vector}} is used as a fixed normal vector. From this normal vector and the local tangent vector (the local X axis) again a cross product is calculated. But now this vector is used as the local Y axis. The orientation of the local Z axis is determined from the local X and Y axes.<br />
<br />
<!--T:67--><br />
Using these properties can be required if one of the edged of the path is (almost) parallel to the default normal of the path.<br />
<br />
==Properties== <!--T:8--><br />
<br />
<!--T:68--><br />
See also: [[property_editor|Property editor]].<br />
<br />
<!--T:46--><br />
A Draft PathArray object is derived from a [[Part_Feature|Part Feature]] object and inherits all its properties (with the exception of some View properties that are not inherited by Link arrays). The following properties are additional unless otherwise stated:<br />
<br />
===Data=== <!--T:69--><br />
<br />
<!--T:70--><br />
{{TitleProperty|Link}}<br />
<br />
<!--T:71--><br />
The properties in this group are only available for Link arrays. See [[Std_LinkMake#Properties|Std LinkMake]] for more information.<br />
<br />
<!--T:72--><br />
* {{PropertyData|Scale|Float}}<br />
* {{PropertyData|Scale Vector|Vector|Hidden}}<br />
* {{PropertyData|Scale List|VectorList}}<br />
* {{PropertyData|Visibility List|BoolList|Hidden}}<br />
* {{PropertyData|Placement List|PlacementList|Hidden}}<br />
* {{PropertyData|Element List|LinkList|Hidden}}<br />
* {{PropertyData|_ Link Touched|Bool|Hidden}}<br />
* {{PropertyData|_ Child Cache|LinkList|Hidden}}<br />
* {{PropertyData|Colored Elements|LinkSubHidden|Hidden}}<br />
* {{PropertyData|Link Transform|Bool}}<br />
<br />
<!--T:50--><br />
{{TitleProperty|Alignment}}<br />
<br />
<!--T:9--><br />
* {{PropertyData|Align|Bool}}: specifies if the elements in the array are aligned along the path or not. If it is {{FALSE}} all other properties in this group, except {{PropertyData|Extra Translation}}, do not apply and are hidden.<br />
* {{PropertyData|Align Mode|Enumeration}}: specifies the align mode, which can be {{Value|Original}}, {{Value|Frenet}} or {{Value|Tangent}}.<br />
* {{PropertyData|End Offset|Length}}: specifies the length from the end of the path to the last copy. Must be smaller than the length of the path minus the {{PropertyData|Start Offset}}. {{Version|1.0}}<br />
* {{PropertyData|Extra Translation|VectorDistance}}: specifies an additional displacement for each element along the path.<br />
* {{PropertyData|Force Vertical|Bool}}: specifies whether to override the default normal direction with the value of {{PropertyData|Vertical Vector}}. Only used if {{PropertyData|Align Mode}} is {{Value|Original}} or {{Value|Tangent}}.<br />
* {{PropertyData|Start Offset|Length}}: specifies the length from the start of the path to the first copy. Must be smaller than the length of the path. {{Version|1.0}}<br />
* {{PropertyData|Tangent Vector|Vector}}: specifies the alignment vector. Only used if {{PropertyData|Align Mode}} is {{Value|Tangent}}.<br />
* {{PropertyData|Vertical Vector|Vector}}: specifies the override for the default normal direction. Only used if {{PropertyData|Vertical Vector}} is {{TRUE}}.<br />
<br />
<!--T:51--><br />
{{TitleProperty|Objects}}<br />
<br />
<!--T:47--><br />
* {{PropertyData|Base|LinkGlobal}}: specifies the object to duplicate in the array.<br />
* {{PropertyData|Count|Integer}}: specifies the number of elements in the array.<br />
* {{PropertyData|Expand Array|Bool}}: specifies whether to expand the array in the [[Tree_view|Tree view]] to enable the selection of its individual elements. Only available for Link arrays.<br />
* {{PropertyData|Path Object|LinkGlobal}}: specifies the object to be used for the path. It must contain {{Value|Edges}} in its [[Part_TopoShape|Part TopoShape]].<br />
* {{PropertyData|Path Subelements|LinkSubListGlobal}}: specifies a list of edges of the {{PropertyData|Path Object}}. If supplied only these edges are used for the path.<br />
<br />
===View=== <!--T:73--><br />
<br />
<!--T:74--><br />
{{TitleProperty|Link}}<br />
<br />
<!--T:75--><br />
The properties in this group, with the exception of the inherited property, are only available for Link arrays. See [[Std_LinkMake#Properties|Std LinkMake]] for more information.<br />
<br />
<!--T:76--><br />
* {{PropertyView|Draw Style|Enumeration}}<br />
* {{PropertyView|Line Width|FloatConstraint}}<br />
* {{PropertyView|Override Material|Bool}}<br />
* {{PropertyView|Point Size|FloatConstraint}}<br />
* {{PropertyView|Selectable|Bool}}: this is an inherited property that appears in the Selection group for other arrays<br />
* {{PropertyView|Shape Material|Material}}<br />
<br />
<!--T:77--><br />
{{TitleProperty|Base}}<br />
<br />
<!--T:78--><br />
The properties in this group, with the exception of the inherited property, are only available for Link arrays. See [[Std_LinkMake#Properties|Std LinkMake]] for more information.<br />
<br />
<!--T:79--><br />
* {{PropertyView|Child View Provider|PersistentObject|Hidden}}<br />
* {{PropertyView|Material List|MaterialList|Hidden}}<br />
* {{PropertyView|Override Color List|ColorList|Hidden}}<br />
* {{PropertyView|Override Material List|BoolList|Hidden}}<br />
* {{PropertyView|Proxy|PythonObject|Hidden}}: this is an inherited property.<br />
<br />
<!--T:80--><br />
{{TitleProperty|Display Options}}<br />
<br />
<!--T:81--><br />
The properties in this group are inherited properties. See [[Part_Feature#Properties|Part Feature]] for more information.<br />
<br />
<!--T:82--><br />
* {{PropertyView|Bounding Box|Bool}}: this property is not inherited by Link arrays.<br />
* {{PropertyView|Display Mode|Enumeration}}: for Link arrays it can be {{value|Link}} or {{value|ChildView}}. For other arrays it can be: {{value|Flat Lines}}, {{value|Shaded}}, {{value|Wireframe}} or {{value|Points}}<br />
* {{PropertyView|Show In Tree|Bool}}<br />
* {{PropertyView|Visibility|Bool}}<br />
<br />
<!--T:83--><br />
{{TitleProperty|Draft}}<br />
<br />
<!--T:84--><br />
* {{PropertyView|Pattern|Enumeration}}: not used.<br />
* {{PropertyView|Pattern Size|Float}}: not used.<br />
<br />
<!--T:85--><br />
{{TitleProperty|Object style}}<br />
<br />
<!--T:86--><br />
The properties in this group are not inherited by Link arrays.<br />
<br />
==Scripting== <!--T:52--><br />
<br />
<!--T:10--><br />
See also: [https://freecad.github.io/SourceDoc/ Autogenerated API documentation] and [[FreeCAD Scripting Basics|FreeCAD Scripting Basics]].<br />
<br />
<!--T:11--><br />
To create a path array use the {{incode|make_path_array}} method ({{Version|0.19}}) of the Draft module. This method replaces the deprecated {{incode|makePathArray}} method.<br />
<br />
</translate><br />
{{Code|code=<br />
path_array = make_path_array(base_object, path_object,<br />
count=4, extra=App.Vector(0, 0, 0), subelements=None,<br />
align=False, align_mode="Original", tan_vector=App.Vector(1, 0, 0),<br />
force_vertical=False, vertical_vector=App.Vector(0, 0, 1),<br />
use_link=True)<br />
}}<br />
<translate><br />
<br />
<!--T:12--><br />
* {{incode|base_object}} is the object to be arrayed. It can also be the {{incode|Label}} (string) of an object in the current document.<br />
* {{incode|path_object}} is the path object. It can also be the {{incode|Label}} (string) of an object in the current document.<br />
* {{incode|count}} is the number of elements in the array.<br />
* {{incode|extra}} is a vector that displaces each element.<br />
* {{incode|subelements}} is a list of edges of {{incode|path_object}}, for example {{incode|["Edge1", "Edge2"]}}. If supplied only these edges are used for the path.<br />
* If {{incode|align}} is {{incode|True}} the elements are aligned along the path depending on the value of {{incode|align_mode}}, which can be {{incode|"Original"}}, {{incode|"Frenet"}} or {{incode|"Tangent"}}.<br />
* {{incode|tan_vector}} is a unit vector that defines the local tangent direction of the elements along the path. It is used when {{incode|align_mode}} is {{incode|"Tangent"}}.<br />
* If {{incode|force_vertical}} is {{incode|True}} {{incode|vertical_vector}} is used for the local Z direction of the elements along the path. It is used when {{incode|align_mode}} is {{incode|"Original"}} or {{incode|"Tangent"}}.<br />
* If {{incode|use_link}} is {{incode|True}} the created elements are [[App_Link|App Links]] instead of regular copies.<br />
* {{incode|path_array}} is returned with the created array object.<br />
<br />
<!--T:13--><br />
Example:<br />
<br />
</translate><br />
{{Code|code=<br />
import FreeCAD as App<br />
import Draft<br />
<br />
doc = App.newDocument()<br />
<br />
p1 = App.Vector(500, -1000, 0)<br />
p2 = App.Vector(1500, 1000, 0)<br />
p3 = App.Vector(3000, 500, 0)<br />
p4 = App.Vector(4500, 100, 0)<br />
spline = Draft.make_bspline([p1, p2, p3, p4])<br />
obj = Draft.make_polygon(3, 500)<br />
<br />
path_array = Draft.make_path_array(obj, spline, 6)<br />
doc.recompute()<br />
<br />
wire = Draft.make_wire([p1, -p2, -p3, -p4])<br />
path_array2 = Draft.make_path_array(obj, wire, count=3, extra=App.Vector(0, -500, 0), subelements=["Edge2", "Edge3"], align=True, force_vertical=True)<br />
doc.recompute()<br />
}}<br />
<translate><br />
<br />
<br />
<!--T:34--><br />
{{Docnav<br />
|[[Draft_CircularArray|CircularArray]]<br />
|[[Draft_PathLinkArray|PathLinkArray]]<br />
|[[Draft_Workbench|Draft]]<br />
|IconL=Draft_CircularArray.svg<br />
|IconR=Draft_PathLinkArray.svg<br />
|IconC=Workbench_Draft.svg<br />
}}<br />
<br />
</translate><br />
{{Draft Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=Draft_PathArray&diff=1254472Draft PathArray2023-04-20T17:24:48Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:35--><br />
{{Docnav<br />
|[[Draft_CircularArray|CircularArray]]<br />
|[[Draft_PathLinkArray|PathLinkArray]]<br />
|[[Draft_Workbench|Draft]]<br />
|IconL=Draft_CircularArray.svg<br />
|IconR=Draft_PathLinkArray.svg<br />
|IconC=Workbench_Draft.svg<br />
}}<br />
<br />
<!--T:1--><br />
{{GuiCommand<br />
|Name=Draft PathArray<br />
|MenuLocation=Modification → Array tools → Path array<br />
|Workbenches=[[Draft_Workbench|Draft]], [[Arch_Workbench|Arch]]<br />
|Version=0.14<br />
|SeeAlso=[[Draft_OrthoArray|Draft OrthoArray]], [[Draft_PolarArray|Draft PolarArray]], [[Draft_CircularArray|Draft CircularArray]], [[Draft_PathLinkArray|Draft PathLinkArray]], [[Draft_PointArray|Draft PointArray]], [[Draft_PointLinkArray|Draft PointLinkArray]]<br />
}}<br />
<br />
==Description== <!--T:2--><br />
<br />
<!--T:3--><br />
The [[Image:Draft_PathArray.svg|24px]] '''Draft PathArray''' command creates a regular array from a selected object by placing copies along a path. Use the [[Draft_PathLinkArray|Draft PathLinkArray]] command to create a more efficient [[App_Link|Link]] array instead. Except for the type of array that is created, Link array or regular array, the [[Draft_PathLinkArray|Draft PathLinkArray]] command is identical to this command.<br />
<br />
<!--T:22--><br />
Both commands can be used on 2D objects created with the [[Draft_Workbench|Draft Workbench]] or [[Sketcher_Workbench|Sketcher Workbench]], but also on many 3D objects such as those created with the [[Part_Workbench|Part Workbench]], [[PartDesign_Workbench|PartDesign Workbench]] or [[Arch_Workbench|Arch Workbench]].<br />
<br />
</translate><br />
[[Image:Draft_PathArray_Example.png|400px]]<br />
<translate><br />
<!--T:24--><br />
{{Caption|Draft PathArray}}<br />
<br />
==Usage== <!--T:4--><br />
<br />
<!--T:5--><br />
# Select the object you wish to array.<br />
# Add the path object to the selection. It is also possible to select edges instead. The edges must belong to the same object and they must be connected.<br />
# There are several ways to invoke the command:<br />
#* Press the {{Button|[[Image:Draft_PathArray.svg|16px]] [[Draft_PathArray|Draft PathArray]]}} button.<br />
#* Select the {{MenuCommand|Modification → Array tools → [[Image:Draft_PathArray.svg|16px]] Path array}} option from the menu.<br />
# The array is created.<br />
# Optionally change the [[#Properties|properties]] of the array in the [[property_editor|Property editor]].<br />
<br />
==Alignment== <!--T:54--><br />
<br />
<!--T:55--><br />
The alignment of the elements in a Draft PathArray depends on the properties of the array and the Placement of the source object:<br />
===Starting point of the PathArray===<br />
The Placement of the source object is treated as an offset to the starting point of the array's path. If you want the array to start at the beginning of the path, set the {{Value|x}}, {{Value|y}} and {{Value|z}} components of the source object to {{Value|0}}.<br />
<br />
===Orientation of the array elements along the PathArray===<br />
If the {{PropertyData|Align}} property of the array is set to {{FALSE}} the orientation of the array elements is identical to that of the source object. If it is set to {{TRUE}} the X axis of the local coordinate system of each element placement is tangent to the path. The Y and Z axes of the local coordinate systems depend on the {{PropertyData|Align Mode}} property of the array. Other array properties involved in the alignment include {{PropertyData|Tangent Vector}}, {{PropertyData|Force Vertical}} and {{PropertyData|Vertical Vector}}.<br />
<br />
</translate><br />
[[Image:Draft_PathArray_example2.png|600px]]<br />
<translate><br />
<!--T:56--><br />
{{Caption|3 arrays based on the same non-planar path. From left to right: Align is false, Align is true with Align Mode Original and Align is true with Align Mode Frenet}}.<br />
<br />
===Align Mode=== <!--T:57--><br />
<br />
<!--T:58--><br />
Three modes are available:<br />
<br />
====Original==== <!--T:59--><br />
<br />
<!--T:60--><br />
This mode comes closest to the single {{PropertyData|Align Mode}} available in version 0.18. It relies on a fixed normal vector. If the path is planar this vector is perpendicular to the plane of the path, else a default vector, the positive Z axis, is used. From this normal vector and the local tangent vector (the local X axis) a [https://en.wikipedia.org/wiki/Cross_product cross product] is calculated. This new vector is used as the local Z axis. The orientation of the local Y axis is determined from the local X and Z axes.<br />
<br />
====Frenet==== <!--T:61--><br />
<br />
<!--T:62--><br />
This mode uses the local normal vector derived from the path at each element placement. If this vector cannot be determined (for example in the case of a straight segment) a default vector, again the positive Z axis, is used instead. With this vector and the local tangent vector the local coordinate system is determined using the same procedure as in the previous paragraph.<br />
<br />
====Tangent==== <!--T:63--><br />
<br />
<!--T:64--><br />
This mode is similar to {{PropertyData|Align Mode}} {{Value|Original}} but includes the possibility to pre-rotate the source object by specifying a {{PropertyData|Tangent Vector}}.<br />
<br />
===Force Vertical and Vertical Vector=== <!--T:65--><br />
<br />
<!--T:66--><br />
These properties are only available if {{PropertyData|Align Mode}} is {{Value|Original}} or {{Value|Tangent}}. If {{PropertyData|Force Vertical}} is set to {{TRUE}} the local coordinate system is calculated in a different manner. The {{PropertyData|Vertical Vector}} is used as a fixed normal vector. From this normal vector and the local tangent vector (the local X axis) again a cross product is calculated. But now this vector is used as the local Y axis. The orientation of the local Z axis is determined from the local X and Y axes.<br />
<br />
<!--T:67--><br />
Using these properties can be required if one of the edged of the path is (almost) parallel to the default normal of the path.<br />
<br />
==Properties== <!--T:8--><br />
<br />
<!--T:68--><br />
See also: [[property_editor|Property editor]].<br />
<br />
<!--T:46--><br />
A Draft PathArray object is derived from a [[Part_Feature|Part Feature]] object and inherits all its properties (with the exception of some View properties that are not inherited by Link arrays). The following properties are additional unless otherwise stated:<br />
<br />
===Data=== <!--T:69--><br />
<br />
<!--T:70--><br />
{{TitleProperty|Link}}<br />
<br />
<!--T:71--><br />
The properties in this group are only available for Link arrays. See [[Std_LinkMake#Properties|Std LinkMake]] for more information.<br />
<br />
<!--T:72--><br />
* {{PropertyData|Scale|Float}}<br />
* {{PropertyData|Scale Vector|Vector|Hidden}}<br />
* {{PropertyData|Scale List|VectorList}}<br />
* {{PropertyData|Visibility List|BoolList|Hidden}}<br />
* {{PropertyData|Placement List|PlacementList|Hidden}}<br />
* {{PropertyData|Element List|LinkList|Hidden}}<br />
* {{PropertyData|_ Link Touched|Bool|Hidden}}<br />
* {{PropertyData|_ Child Cache|LinkList|Hidden}}<br />
* {{PropertyData|Colored Elements|LinkSubHidden|Hidden}}<br />
* {{PropertyData|Link Transform|Bool}}<br />
<br />
<!--T:50--><br />
{{TitleProperty|Alignment}}<br />
<br />
<!--T:9--><br />
* {{PropertyData|Align|Bool}}: specifies if the elements in the array are aligned along the path or not. If it is {{FALSE}} all other properties in this group, except {{PropertyData|Extra Translation}}, do not apply and are hidden.<br />
* {{PropertyData|Align Mode|Enumeration}}: specifies the align mode, which can be {{Value|Original}}, {{Value|Frenet}} or {{Value|Tangent}}.<br />
* {{PropertyData|End Offset|Length}}: specifies the length from the end of the path to the last copy. Must be smaller than the length of the path minus the {{PropertyData|Start Offset}}. {{Version|1.0}}<br />
* {{PropertyData|Extra Translation|VectorDistance}}: specifies an additional displacement for each element along the path.<br />
* {{PropertyData|Force Vertical|Bool}}: specifies whether to override the default normal direction with the value of {{PropertyData|Vertical Vector}}. Only used if {{PropertyData|Align Mode}} is {{Value|Original}} or {{Value|Tangent}}.<br />
* {{PropertyData|Start Offset|Length}}: specifies the length from the start of the path to the first copy. Must be smaller than the length of the path. {{Version|1.0}}<br />
* {{PropertyData|Tangent Vector|Vector}}: specifies the alignment vector. Only used if {{PropertyData|Align Mode}} is {{Value|Tangent}}.<br />
* {{PropertyData|Vertical Vector|Vector}}: specifies the override for the default normal direction. Only used if {{PropertyData|Vertical Vector}} is {{TRUE}}.<br />
<br />
<!--T:51--><br />
{{TitleProperty|Objects}}<br />
<br />
<!--T:47--><br />
* {{PropertyData|Base|LinkGlobal}}: specifies the object to duplicate in the array.<br />
* {{PropertyData|Count|Integer}}: specifies the number of elements in the array.<br />
* {{PropertyData|Expand Array|Bool}}: specifies whether to expand the array in the [[Tree_view|Tree view]] to enable the selection of its individual elements. Only available for Link arrays.<br />
* {{PropertyData|Path Object|LinkGlobal}}: specifies the object to be used for the path. It must contain {{Value|Edges}} in its [[Part_TopoShape|Part TopoShape]].<br />
* {{PropertyData|Path Subelements|LinkSubListGlobal}}: specifies a list of edges of the {{PropertyData|Path Object}}. If supplied only these edges are used for the path.<br />
<br />
===View=== <!--T:73--><br />
<br />
<!--T:74--><br />
{{TitleProperty|Link}}<br />
<br />
<!--T:75--><br />
The properties in this group, with the exception of the inherited property, are only available for Link arrays. See [[Std_LinkMake#Properties|Std LinkMake]] for more information.<br />
<br />
<!--T:76--><br />
* {{PropertyView|Draw Style|Enumeration}}<br />
* {{PropertyView|Line Width|FloatConstraint}}<br />
* {{PropertyView|Override Material|Bool}}<br />
* {{PropertyView|Point Size|FloatConstraint}}<br />
* {{PropertyView|Selectable|Bool}}: this is an inherited property that appears in the Selection group for other arrays<br />
* {{PropertyView|Shape Material|Material}}<br />
<br />
<!--T:77--><br />
{{TitleProperty|Base}}<br />
<br />
<!--T:78--><br />
The properties in this group, with the exception of the inherited property, are only available for Link arrays. See [[Std_LinkMake#Properties|Std LinkMake]] for more information.<br />
<br />
<!--T:79--><br />
* {{PropertyView|Child View Provider|PersistentObject|Hidden}}<br />
* {{PropertyView|Material List|MaterialList|Hidden}}<br />
* {{PropertyView|Override Color List|ColorList|Hidden}}<br />
* {{PropertyView|Override Material List|BoolList|Hidden}}<br />
* {{PropertyView|Proxy|PythonObject|Hidden}}: this is an inherited property.<br />
<br />
<!--T:80--><br />
{{TitleProperty|Display Options}}<br />
<br />
<!--T:81--><br />
The properties in this group are inherited properties. See [[Part_Feature#Properties|Part Feature]] for more information.<br />
<br />
<!--T:82--><br />
* {{PropertyView|Bounding Box|Bool}}: this property is not inherited by Link arrays.<br />
* {{PropertyView|Display Mode|Enumeration}}: for Link arrays it can be {{value|Link}} or {{value|ChildView}}. For other arrays it can be: {{value|Flat Lines}}, {{value|Shaded}}, {{value|Wireframe}} or {{value|Points}}<br />
* {{PropertyView|Show In Tree|Bool}}<br />
* {{PropertyView|Visibility|Bool}}<br />
<br />
<!--T:83--><br />
{{TitleProperty|Draft}}<br />
<br />
<!--T:84--><br />
* {{PropertyView|Pattern|Enumeration}}: not used.<br />
* {{PropertyView|Pattern Size|Float}}: not used.<br />
<br />
<!--T:85--><br />
{{TitleProperty|Object style}}<br />
<br />
<!--T:86--><br />
The properties in this group are not inherited by Link arrays.<br />
<br />
==Scripting== <!--T:52--><br />
<br />
<!--T:10--><br />
See also: [https://freecad.github.io/SourceDoc/ Autogenerated API documentation] and [[FreeCAD Scripting Basics|FreeCAD Scripting Basics]].<br />
<br />
<!--T:11--><br />
To create a path array use the {{incode|make_path_array}} method ({{Version|0.19}}) of the Draft module. This method replaces the deprecated {{incode|makePathArray}} method.<br />
<br />
</translate><br />
{{Code|code=<br />
path_array = make_path_array(base_object, path_object,<br />
count=4, extra=App.Vector(0, 0, 0), subelements=None,<br />
align=False, align_mode="Original", tan_vector=App.Vector(1, 0, 0),<br />
force_vertical=False, vertical_vector=App.Vector(0, 0, 1),<br />
use_link=True)<br />
}}<br />
<translate><br />
<br />
<!--T:12--><br />
* {{incode|base_object}} is the object to be arrayed. It can also be the {{incode|Label}} (string) of an object in the current document.<br />
* {{incode|path_object}} is the path object. It can also be the {{incode|Label}} (string) of an object in the current document.<br />
* {{incode|count}} is the number of elements in the array.<br />
* {{incode|extra}} is a vector that displaces each element.<br />
* {{incode|subelements}} is a list of edges of {{incode|path_object}}, for example {{incode|["Edge1", "Edge2"]}}. If supplied only these edges are used for the path.<br />
* If {{incode|align}} is {{incode|True}} the elements are aligned along the path depending on the value of {{incode|align_mode}}, which can be {{incode|"Original"}}, {{incode|"Frenet"}} or {{incode|"Tangent"}}.<br />
* {{incode|tan_vector}} is a unit vector that defines the local tangent direction of the elements along the path. It is used when {{incode|align_mode}} is {{incode|"Tangent"}}.<br />
* If {{incode|force_vertical}} is {{incode|True}} {{incode|vertical_vector}} is used for the local Z direction of the elements along the path. It is used when {{incode|align_mode}} is {{incode|"Original"}} or {{incode|"Tangent"}}.<br />
* If {{incode|use_link}} is {{incode|True}} the created elements are [[App_Link|App Links]] instead of regular copies.<br />
* {{incode|path_array}} is returned with the created array object.<br />
<br />
<!--T:13--><br />
Example:<br />
<br />
</translate><br />
{{Code|code=<br />
import FreeCAD as App<br />
import Draft<br />
<br />
doc = App.newDocument()<br />
<br />
p1 = App.Vector(500, -1000, 0)<br />
p2 = App.Vector(1500, 1000, 0)<br />
p3 = App.Vector(3000, 500, 0)<br />
p4 = App.Vector(4500, 100, 0)<br />
spline = Draft.make_bspline([p1, p2, p3, p4])<br />
obj = Draft.make_polygon(3, 500)<br />
<br />
path_array = Draft.make_path_array(obj, spline, 6)<br />
doc.recompute()<br />
<br />
wire = Draft.make_wire([p1, -p2, -p3, -p4])<br />
path_array2 = Draft.make_path_array(obj, wire, count=3, extra=App.Vector(0, -500, 0), subelements=["Edge2", "Edge3"], align=True, force_vertical=True)<br />
doc.recompute()<br />
}}<br />
<translate><br />
<br />
<br />
<!--T:34--><br />
{{Docnav<br />
|[[Draft_CircularArray|CircularArray]]<br />
|[[Draft_PathLinkArray|PathLinkArray]]<br />
|[[Draft_Workbench|Draft]]<br />
|IconL=Draft_CircularArray.svg<br />
|IconR=Draft_PathLinkArray.svg<br />
|IconC=Workbench_Draft.svg<br />
}}<br />
<br />
</translate><br />
{{Draft Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=CAM_Surface&diff=1253991CAM Surface2023-04-18T18:27:07Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:52--><br />
{{VeryImportantMessage|This is an unfinished experimental feature. [[Path_experimental|Enable Experimental Features]]}}<br />
<br />
</translate><br />
{{UnfinishedDocu{{#translation:}}}}<br />
<translate><br />
<br />
<!--T:48--><br />
{{Docnav<br />
|[[Path_Pocket_3D|Pocket 3D]]<br />
|[[Path_Waterline|Waterline]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=Path_Pocket_3D.svg<br />
|IconR=Path_Waterline.svg<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
<!--T:1--><br />
{{GuiCommand<br />
|Name=Path Surface<br />
|MenuLocation=Path → 3D Surface<br />
|Workbenches=[[Path_Workbench|Path]]<br />
|Version=0.19<br />
}}<br />
<br />
==Description== <!--T:2--><br />
<br />
<!--T:3--><br />
This tool creates a new {{KEY|[[Image:Path_Surface.svg|24px]] [[Path_Surface|3D Surface]]}} operation which is capable of generating G-Code paths for the entire top surface of a 3D model (or is able to work with selected faces) and allows for faces to be avoided. This operation offers multiple cut patterns: Line, Zigzag, Circular, Circular Zigzag, Offset, and Spiral (similar to an adaptive pattern). As of version 0.19, this operation offers many customizations to allow for greater productivity.<br />
<br />
<!--T:53--><br />
The {{KEY|[[Image:Path_Surface.svg|24px]] [[Path_Surface|3D Surface]]}} operation is also capable of generating basic rotational 3D surfacing paths. The rotational capabilities are limited to the entire model, and do not allow for specific faces or regions to be isolated. The rotational paths are also limited to line cut patterns.<br />
<br />
<!--T:7--><br />
The 3D Surface Tool interfaces to OCL.pyd, a 3rd party Open Source module titled [[OpenCamLib|OpenCamLib]], that generates tool paths from a 3D model. OpenCamLib is not integrated directly into FreeCAD. <br />
<br />
<!--T:8--><br />
'''Note:''' In order to use the 3D Surface operation you must:<br />
# Properly install [[OpenCamLib|OpenCamLib]].<br />
# Enable [[Path_experimental|Experimental Features]] for the Path Workbench.<br />
# Check {{MenuCommand|Edit → Preferences... → Path → Advanced → Enable OCL dependent features}}.<br />
<br />
==Usage== <!--T:40--><br />
<br />
<!--T:41--><br />
Usage instructions for multiple variations of the [[Path_Surface|3D Surface]] operation are presented here.<br />
<br />
====Basic Operation==== <!--T:42--><br />
<br />
<!--T:5--><br />
# Press the {{KEY|[[Image:Path_Surface.svg|24px]] [[Path_Surface|3D Surface]]}} icon, or select {{MenuCommand|Path → 3D Surface}} from the dropdown menu.<br />
# Select the tool controller for the Operation from the Tool controller dialogue pop up window, if presented.<br />
# In the Base Geometry tab, select any specific faces you wish to focus on and/or avoid for the operation.<br />
# Adjust the operation depths as needed in the Depths tab: Start Depth, Finish Depth, Step Down.<br />
# Make adjustments in Heights tab if needed.<br />
# Configure settings in the Operations tab as needed:<br />
#* Choose your Coolant Mode.<br />
#* Choose the BoundBox: Stock or BaseBoundBox<br />
#* Set the Scan Type for the operation: Planar or Rotational<br />
#* Select the Layer Mode for the operation: Single-pass or Multi-pass<br />
#*# Single-pass is for a finishing pass<br />
#*# Multi-pass could be used for clearing in combination with the use of Depth Offset to leave a thin surface layer for a finish pass<br />
#* Add additional BoundBox Extra Offset to X and Y as desired (''Rotational scans only'')<br />
#* Set the Drop Cutter Direction: X or Y. This is the linear direction the cutter(spindle) will travel. (''Rotational scans only'')<br />
#* Add a Depth Offset value if you wish to leave a specified thickness of material on the surface, for say a final finish pass<br />
#* Set the Sample Interval used for the OCL scan.<br />
#* Set the Step Over value as a percentage of the diameter of the Tool.<br />
#* Check the Use Start Point box if you wish to provide a start point for the operation in the properties view of the data tab for the operation.<br />
#* Boundary Enforcement is enabled by default. This forces the cutter to remain inside the boundaries of the feature geometry for the operation, like a pocketing operation. Disable to allow the cutter to extend to the outside of the feature geometry. The Boundary Adjustment property supersedes this property.<br />
#* Optimize Linear Paths is enabled by default. Disabling will yield a longer gcode result and likely increase cut time.<br />
# If you wish to preview the result before accepting the settings, click {{Button|Apply}}<br />
# Click {{Button|OK}} button to confirm and generate paths.<br />
<br />
<!--T:73--><br />
To achieve different, or more complex, effects, adjust additional operation properties within the Data tab of the Properties View for the operation.<br />
<br />
====Rotational Scans (4th-axis)==== <!--T:43--><br />
<br />
<!--T:54--><br />
# Initiate a [[#Basic_Operation|Basic Operation]] as described above and set the '''Scan Type''' to '''Rotational'''.<br />
# '''Note:''' Face selection is unavailable for Rotational scans, so changes to Base Geometry are ignored.<br />
# Locate the Data tab and Properties View for the new [[Path_Surface|3D Surface]] operation. A '''Rotation''' section should be available with additional properties to adjust, listed below.<BR>It is recommended that you set the desired rotation properties all at once before recomputing. This is done by clicking the ENTER key immediately after changing a property setting. This process will allow you to change and save multiple properties before recomputing the operation.<br />
# Adjust the following settings as needed:<br />
#* Set {{PropertyData|Cutter Tilt}} to the offset index(angle) [0-90]. (Used for ball mill cutters)<br />
#* Change {{PropertyData|Drop Cutter Dir}} to the axis of travel for the cutter(spindle).<br />
#* Change {{PropertyData|Drop Cutter Extra Offset}} to extend the BoundBox in the X and Y directions.<br />
#* Set {{PropertyData|Rotation Axis}} to the desired axis.<br />
#* Adjust {{PropertyData|Start Index}} to start index(angle) [0-360].<br />
#* Adjust {{PropertyData|Stop Index}} to stop index(angle) [0-360].<br />
# Click the {{KEY|[[File:View-refresh.svg|16px]] [[Std_Refresh|Refresh]]}} icon in the tool bar.<br />
# Wait for the results...<br />
<br />
=====Notes About Rotational Scans===== <!--T:74--><br />
<br />
<!--T:36--><br />
* '''Rotational''' scans require much more time and processing than '''Planar''' scans. Factors affecting processing time include: Sample Interval, Step Over, tool diameter, and model size. Again, rotational scans can take a long time. Some might take 3, 5 or 10 minutes or longer.<br />
* For time purposes, it is better that you not recompute a rotational scan after every property change; rather, consider one of the following:<br />
** use the ' ''change all settings with ENTER key'' ' technique mentioned in Step 2 above, then {{KEY|[[File:View-refresh.svg|16px]] [[Std_Refresh|Refresh]]}} the operation.<br />
** deactivate the operation with the {{KEY|[[Image:Path_OpActiveToggle.svg|16px]] [[Path_OpActiveToggle|Active]]}} toggle tool, make your changes to the operation's properties, then click the {{KEY|[[Image:Path_OpActiveToggle.svg|16px]] [[Path_OpActiveToggle|Active]]}} icon again to re-activate the operation - which triggers a recompute internally.<br />
* The {{KEY|[[Image:Path_Surface.svg|16px]] [[Path_Surface|3D Surface]]}} operation is still considered an ''experimental feature'' as of 2019-06-25. As such, it may contain a few bugs yet to be clearly identified. Please report bugs and issues in the [https://forum.freecadweb.org/viewforum.php?f=15 FreeCAD Path/CAM Forum].<br />
* The built in {{KEY|[[Image:Path_Simulator.svg|16px]] [[Path_Simulator|CAM Simulator]]}} does NOT support 4th-axis simulation. You will need to use a third party simulator to inspect or verify paths visually. See the [[#Resources|Resources]] section below for suggestions.<br />
* You will likely see red rotational lines around your model in the viewport. This is normal in FreeCAD for the time being.<br />
<br />
=====Notes About Scans of complex models===== <!--T:75--><br />
<br />
<!--T:76--><br />
Excessively long processing times (longer than 10 minutes) can occur when processing large complex models. In addition to the factors already mentioned the following steps could help identify potential causes and solutions.<br />
<br />
<!--T:77--><br />
'''''Low Memory'''''<br><br />
Check how much memory is available while the scan is running using a tool such as the Windows '''Task Manager, Memory tab'''. If more than 90% of memory is consistently being used then a small '''Linear Deflection''' parameter could be generating a mesh that is too large for the available memory.<br><br />
To confirm this ...<br />
# Create a new {{KEY|[[Image:Path_Surface.svg|24px]] [[Path_Surface|3D Surface]]}} operation.<br />
# Switch to the Model tab and increase the {{PropertyData|Linear Deflection}} value. For example change from 2.5um to 20um<br />
# Switch back to the Tasks tab to complete setting up the operation.<br />
# Click {{Button|OK}} button to confirm and generate paths.<br><br />
<br />
<!--T:78--><br />
To make this value the default for all new {{KEY|[[Image:Path_Surface.svg|24px]] [[Path_Surface|3D Surface]]}} operations, change the '''GeometryTolerance''' parameter.<br><br />
{{MenuCommand|Tools → Edit Parameters ... → Preferences → Mod → Path → GeometryTolerance }}. <br><br />
Note as of version 0.19 the {{PropertyData|Linear Deflection}} default = GeometryTolerance / 4<br />
<br />
<!--T:79--><br />
'''''Invalid Geometry'''''<br><br />
If a model contains invalid geometry the scanning time can increase significantly. A model can be checked using the [[Part_CheckGeometry|Part CheckGeometry]] function in [[Image:Workbench_Part.svg|24px]]'''Part Workbench'''. <br><br />
To run the tool:<br />
# Switch to the [[Image:Workbench_Part.svg|24px]]'''Part Workbench''' and select the model to check<br />
# Click on the {{Button|[[Image:Part_CheckGeometry.svg|16px]] [[Part_CheckGeometry|Part CheckGeometry]]}} button available in the Part workbench toolbar OR use the {{MenuCommand|Part → [[Image:Part_CheckGeometry.svg|16px]] Check geometry}} entry from the top menu.<br />
# Click the '''Run Check''' button and review the results.<br />
<br />
<!--T:80--><br />
If the results includes items like ''BOPAlgo SelfIntersect'' then the geometry is invalid and should be corrected by adjusting the model. <br><br />
(Hint: Boolean operations and Loft commands can sometimes introduce ''Self Intersections'')<br><br />
<br />
====Available Tool (Cutter) Shapes==== <!--T:81--><br />
<br />
<!--T:82--><br />
This 3D Surface op currently uses [[OpenCamLib|OpenCamLib]] to extract paths from the part base. As such, a tool setting translation is required between the FreeCAD tool controller and OCL in order to complete the scan with your chosen tool(cutter) shape. <br />
<br />
<!--T:37--><br />
These tool shapes are respected and available for this 3D Surface operation:<br />
<br />
<!--T:38--><br />
* End mill<br />
* Ball end mill<br />
* Bull nose end mill<br />
* Chamfer bit<br />
* Engraver<br />
<br />
<!--T:39--><br />
Should you choose to run the path simulator in the Path Workbench, it only uses the standard end mill to simulate paths. Therefore, you will not see tool-shape-specific material removal. Material removal is shown using the end mill shape.<br />
<br />
<!--T:83--><br />
NOTE: As of May 2019, only the End Mill has any type of testing to determine accuracy of the FreeCAD-to-OCL tool settings translation. Please post any feedback for non-end-mill usage to the [https://forum.freecadweb.org/viewforum.php?f=15 Path/CAM] section in the FreeCAD forums.<br />
<br />
==Properties: Version 0.19== <!--T:55--><br />
<br />
<!--T:9--><br />
''' ''Note'' ''': Not all of these Properties are available in the Task Window Editor. Some are only accessible in the Data tab of the Properties View panel for this Operation.<br />
<br />
<!--T:12--><br />
{{TitleProperty|Base}}<br />
<br />
<!--T:13--><br />
Note: It is suggested that you do not edit the Placement property of path operations. Rather, move or rotate the Path Job model as needed.<br />
<br />
<!--T:14--><br />
* {{PropertyData|Placement}}: Overall placement[position and rotation] of the object - with respect to the origin (or origin of parent object container)<br />
** {{PropertyData|Angle}}: Angle in degrees applied to rotation of the object around Axis property value<br />
** {{PropertyData|Axis}}: Axis(one or multiple) around which to rotate the object, set in sub-properties: x, y, z<br />
*** {{PropertyData|X}}: x axis value<br />
*** {{PropertyData|Y}}: y axis value<br />
*** {{PropertyData|Z}}: z axis value<br />
** {{PropertyData|Position}}: Position of the object, set in sub-properties: x, y, z - with respect to the origin (or origin of parent object container)<br />
*** {{PropertyData|X}}: x distance value<br />
*** {{PropertyData|Y}}: y distance value<br />
*** {{PropertyData|Z}}: z distance value<br />
* {{PropertyData|Label}}: User-provided name of the object (UTF-8)<br />
<br />
<!--T:56--><br />
{{TitleProperty|Clearing Options}}<br />
<br />
<!--T:57--><br />
* {{PropertyData|Bound Box}}: Should the operation be limited by the stock object or by the bounding box of the base object<br />
* {{PropertyData|Cut Mode}}: The direction that the toolpath should go around the part: Climb(ClockWise) or Conventional(CounterClockWise)<br />
* {{PropertyData|Cut Pattern}}: Clearing pattern to use<br />
* {{PropertyData|Cut Pattern Reversed}}: Reverse the cut order of the stepover paths. For circular cut patterns, begin at the outside and work toward the center<br />
* {{PropertyData|Depth Offset}}: Z-axis offset from the surface of the object<br />
* {{PropertyData|Layer Mode}}: The completion mode for the operation: single or multi-pass<br />
* {{PropertyData|Pattern Center At}}: Choose location of the center point for starting the cut pattern<br />
* {{PropertyData|Pattern Center Custom}}: Set the start point for the cut pattern<br />
* {{PropertyData|Profile Edges}}: Profile the edges of the selection. There are the following options (images can be seen in this forum post: https://forum.freecad.org/viewtopic.php?p=676452#p676452):<br />
** {{PropertyData|None}}: Dont create a profile<br />
** {{PropertyData|Only}}: Create only a profile and no inner paths<br />
** {{PropertyData|First}}: Start with the profile, then the rest<br />
** {{PropertyData|Last}}: Start with the rest and then do the profile<br />
* {{PropertyData|Sample Interval}}: The Sample Interval. Small values cause long wait times<br />
* {{PropertyData|Step Over}}: Step over percentage of the drop cutter path<br />
<br />
<!--T:15--><br />
{{TitleProperty|Depth}}<br />
<br />
<!--T:16--><br />
* {{PropertyData|Clearance Height}}: The height needed to clear clamps and obstructions<br />
* {{PropertyData|Final Depth}}: Final Depth of Tool- lowest value in Z<br />
* {{PropertyData|Safe Height}}: The above which Rapid motions are allowed.<br />
* {{PropertyData|Start Depth}}: Starting Depth of Tool- first cut depth in Z<br />
* {{PropertyData|Step Down}}: Incremental Step Down of Tool<br />
<br />
<!--T:58--><br />
{{TitleProperty|Mesh Conversion}}<br />
<br />
<!--T:59--><br />
* {{PropertyData|Angular Deflection}}: Smaller values yield a finer, more accurate mesh. Smaller values increase processing time a lot<br />
* {{PropertyData|Linear Deflection}}: Smaller values yield a finer, more accurate mesh. Smaller values do not increase processing time much but can increase memory comsumption<br />
<br />
<!--T:60--><br />
{{TitleProperty|Optimization}}<br />
<br />
<!--T:61--><br />
* {{PropertyData|Circular Use G2 G3}}: Convert co-planar arcs to G2/G3 gcode commands for `Circular` and `CircularZigZag` cut patterns<br />
* {{PropertyData|Gap Sizes}}: Feedback: three smallest gaps identified in the path geometry<br />
* {{PropertyData|Gap Threshold}}: Collinear and co-radial artifact gaps that are smaller than this threshold are closed in the path<br />
* {{PropertyData|Optimize Linear Paths}}: Enable optimization of linear paths (co-linear points). Removes unnecessary co-linear points from G-Code output<br />
* {{PropertyData|Optimize Step Over Transitions}}: Enable separate optimization of transitions between, and breaks within, each step over path<br />
<br />
<!--T:17--><br />
{{TitleProperty|Path}}<br />
<br />
<!--T:62--><br />
* {{PropertyData|Active}}: make False, to prevent operation from generating code<br />
* {{PropertyData|Base}}: The base geometry for this operation<br />
* {{PropertyData|Comment}}: An optional comment for this Operation<br />
* {{PropertyData|Coolant Mode}}: Coolant mode for this operation<br />
* {{PropertyData|Cycle Time}}: Operations Cycle Time Estimation<br />
* {{PropertyData|Tool Controller}}: Defines the Tool controller used in the Operation<br />
* {{PropertyData|User Label}}: User assigned label<br />
<br />
<!--T:19--><br />
{{TitleProperty|Rotation}}<br />
<br />
<!--T:63--><br />
* {{PropertyData|Cutter Tilt}}: Set the cutter (spindle) tilt angle.<br />
* {{PropertyData|Drop Cutter Dir}}: The direction along which dropcutter lines are created<br />
* {{PropertyData|Drop Cutter Extra Offset}}: Additional offset to the selected bounding box - use sub-properties to set values<br />
** {{PropertyData|X}}: x distance value<br />
** {{PropertyData|Y}}: y distance value<br />
** {{PropertyData|Z}}: z distance value<br />
* {{PropertyData|Rotation Axis}}: Set the axis for model rotation.<br />
* {{PropertyData|Start Index}}: Start index(angle) for rotation<br />
* {{PropertyData|Stop Index}}: Stop index(angle) for rotation<br />
<br />
<!--T:64--><br />
{{TitleProperty|Selected Geometry Settings}}<br />
<br />
<!--T:65--><br />
* {{PropertyData|Avoid Last X Faces}}: Avoid cutting the last 'N' faces in the Base Geometry list of selected faces<br />
* {{PropertyData|Avoid Last X Internal Features}}: Do not cut internal features on avoided faces<br />
* {{PropertyData|Boundary Adjustment}}: Positive values push the cutter toward, or beyond, the boundary. Negative values retract the cutter away from the boundary<br />
* {{PropertyData|Boundary Enforcement}}: If true, the cutter will remain inside the boundaries of the model or selected face(s)<br />
* {{PropertyData|Handle Multiple Features}}: Choose how to process multiple Base Geometry features<br />
* {{PropertyData|Internal Features Adjustment}}: Positive values push the cutter toward, or into, the feature. Negative values retract the cutter away from the feature<br />
* {{PropertyData|Internal Features Cut}}: Cut internal feature areas within a larger selected face<br />
<br />
<!--T:66--><br />
{{TitleProperty|Start Point}}<br />
<br />
<!--T:67--><br />
* {{PropertyData|Start Point}}: The custom start point for the path of this operation, set in sub-properties: x, y, z<br />
** {{PropertyData|X}}: x axis value<br />
** {{PropertyData|Y}}: y axis value<br />
** {{PropertyData|Z}}: z axis value<br />
* {{PropertyData|Use Start Point}}: Make True, if specifying a Start Point<br />
<br />
<!--T:68--><br />
{{TitleProperty|Surface}}<br />
<br />
<!--T:69--><br />
* {{PropertyData|Scan Type}}: Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan.<br />
<br />
<!--T:23--><br />
{{TitleProperty|Waste}}<br />
<br />
<!--T:24--><br />
* {{PropertyData|Ignore Waste}}: Ignore areas that proceed below specified depth.<br />
* {{PropertyData|Ignore Waste Depth}}: Depth used to identify waste areas to ignore.<br />
* {{PropertyData|Release From Waste}}: Cut through waste to depth at model edge, releasing the model.<br />
<br />
==Tasks Window Editor Layout== <!--T:84--><br />
<br />
<!--T:25--><br />
''Descriptions for the settings are provided in the Properties list above.''<br />
This section is simply a layout map of the settings in the window editor for the Operation.<br />
<br />
===Base Location=== <!--T:26--><br />
<br />
<!--T:70--><br />
* '''Base Geometry import selection''': Use this list to select Base Geometry to be imported from the selected, existing operation<br />
* '''Import''': imports the selected operation's Base Geometry into the current operations Base Geometry list<br />
* '''Base Geometry list for current operation''': List of Base Geometry for current operation, if any selected<br />
* '''Add''': adds selected element(s) which should be the base(s) for the path(s)<br />
* '''Remove''': remove the selected item(s) in the Base Location list<br />
* '''Edit''': clear all items in the Base Location list<br />
<br />
===Depth=== <!--T:28--><br />
<br />
<!--T:29--><br />
* {{PropertyData|Start Depth}}<br />
* {{PropertyData|Final Depth}}<br />
* {{PropertyData|Step Down}}<br />
<br />
===Height=== <!--T:30--><br />
<br />
<!--T:31--><br />
* {{PropertyData|Safe Height}}<br />
* {{PropertyData|Clearance Height}}<br />
<br />
===Operation=== <!--T:34--><br />
<br />
<!--T:35--><br />
* {{PropertyData|Tool Controller}}<br />
* {{PropertyData|Coolant Mode}}<br />
<br />
<!--T:71--><br />
* {{PropertyData|BoundBox}}<br />
* {{PropertyData|Scan Type}}<br />
* {{PropertyData|Layer Mode}}<br />
* {{PropertyData|BoundBox extra offset X}}<br />
* {{PropertyData|BoundBox extra offset Y}}<br />
* {{PropertyData|Drop Cutter Direction}}<br />
* {{PropertyData|Depth Offset}}<br />
* {{PropertyData|Step Over}}<br />
* {{PropertyData|Sample Interval}}<br />
* {{PropertyData|Optimize Output Enabled}}<br />
<br />
<!--T:72--><br />
* {{PropertyData|Use Start Point}}<br />
* {{PropertyData|Boundary Enforcement}}<br />
* {{PropertyData|Optimize Linear Paths}}<br />
<br />
==Resources== <!--T:46--><br />
<br />
<!--T:47--><br />
* G-code(path) simulator: [https://ncviewer.com/ NCViewer]<br />
* G-code(path) simulator: [https://www.camotics.org/ CAMotics]<br />
<br />
<br />
<!--T:49--><br />
{{Docnav<br />
|[[Path_Pocket_3D|Pocket 3D]]<br />
|[[Path_Waterline|Waterline]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=Path_Pocket_3D.svg<br />
|IconR=Path_Waterline.svg<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{Path Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=CAM_Adaptive&diff=1242943CAM Adaptive2023-03-20T19:22:18Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:1--><br />
{{Docnav<br />
|[[Path_Helix|Helix]]<br />
|[[Path_Slot|Slot]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=Path_Helix.svg<br />
|IconR=Path_Slot.svg<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
<!--T:2--><br />
{{GuiCommand<br />
|Name=Path Adaptive<br />
|MenuLocation=Path → Adaptive<br />
|Workbenches=[[Path_Workbench|Path]]<br />
}}<br />
<br />
==Description== <!--T:3--><br />
<br />
<!--T:4--><br />
The [[Image:Path_Adaptive.svg|24px]] [[Path_Adaptive|Adaptive]] tool uses an adaptive algorithm to create clearing and profiling paths that manage cutter engagement so that engagement and material removal never exceed a maximum value.<br />
<br />
==Usage== <!--T:5--><br />
<br />
<!--T:6--><br />
Usage instructions for the [[Path_Adaptive|Adaptive]] operation are presented here.<br />
<br />
====Basic Operation==== <!--T:7--> <br />
<br />
<!--T:8--><br />
# Press the {{Button|[[Image:Path_Adaptive.svg|16px]] [[Path_Adaptive|Adaptive]]}} icon, or select the {{KEY|Path}} → {{KEY|[[Image:Path_Adaptive.svg|24px]] [[Path_Adaptive|Adaptive]]}} from the top menu.<br />
# Select the tool controller for the Operation from the Tool controller dialogue pop up window, if prompted.<br />
# Adjust the operation depths as needed in the Depths tab: Start Depth, Finish Depth, Step Down.<br />
# Make adjustments in Heights tab if needed.<br />
# Configure settings in the Operations tab:<br />
## ('''See the Properties → Adaptive section below.''')<br />
## Set the Step Over value as a percentage of the diameter of the Tool.<br />
# If you wish to preview the result before accepting the settings, click {{Button|Apply}}<br />
# Click {{Button|OK}} button to confirm and generate paths.<br />
<br />
=====Preliminary Notes About Adaptive Clearing===== <!--T:9--><br />
<br />
<!--T:10--><br />
* Depending on the size and complexity of the area for the operation, is might be better to not recompute the operation after every property change; rather, consider:<br />
** deactivate the operation with the {{KEY|[[Image:Path_OpActiveToggle.svg|16px]] [[Path_OpActiveToggle|Active]]}} toggle tool, make your changes to the operation's properties, then click the {{KEY|[[Image:Path_OpActiveToggle.svg|16px]] [[Path_OpActiveToggle|Active]]}} icon again to re-activate the operation - which triggers a recompute internally.<br />
* The {{KEY|[[Image:Path_Adaptive.svg|16px]] [[Path_Adaptive|Adaptive]]}} operation might contain a few bugs yet to be clearly identified. Please report bugs and issues in the [https://forum.freecadweb.org/viewforum.php?f=15 FreeCAD Path/CAM Forum].<br />
* All tool shapes may not be respected with this operation. Check the FreeCAD forum for further details. <br />
* Should you choose to run the path simulator in the Path Workbench, it only uses the standard end mill to simulate paths. Therefore, you will not see tool-shape-specific material removal. Material removal is shown using the end mill shape.<br />
<br />
==Properties== <!--T:11--><br />
<br />
<!--T:12--><br />
''' ''Note'' ''': The names of some Properties in this list differ a little from the same settings used in the Task Window Editor.<br />
<br />
<!--T:13--><br />
{{TitleProperty|Adaptive}}<br />
<br />
<!--T:14--><br />
* {{PropertyData|Force Inside-Out}}: Force plunging into material inside and clearing towards the edges<br />
* {{PropertyData|Helix Angle}}: Helix ramp entry angle (degrees)<br />
* {{PropertyData|Helix Cone Angle}}: Angle (degrees) of conical helix<br />
* {{PropertyData|Helix Diameter Limit}}: Limit helix entry diameter, if limit larger than tool diameter or 0, tool diameter is used<br />
* {{PropertyData|Keep Tool Down Ratio}}: Max length of keep tool down path compared to direct distance between points<br />
* {{PropertyData|Lift Distance}}: Lift distance for rapid moves<br />
* {{PropertyData|Operation Type}}: Type of adaptive operation: Clearing or Profiling<br />
* {{PropertyData|Side}}: Side of selected faces that tool should cut: Inside or Outside<br />
* {{PropertyData|Step Over}}: Percent of cutter diameter to step over on each pass<br />
* {{PropertyData|Stock to Leave}}: How much stock to leave (i.e. for a separate finishing operation)<br />
* {{PropertyData|Tolerance}}: Influences accuracy and performance<br />
* {{PropertyData|Use Helix Arcs}}: Use Arcs (G2) for helix ramp<br />
<br />
<!--T:15--><br />
{{TitleProperty|Base}}<br />
<br />
<!--T:16--><br />
Note: It is suggested that you do not edit the Placement property of path operations. Rather, move or rotate the Path Job model as needed.<br />
<br />
<!--T:17--><br />
* {{PropertyData|Placement}}: Overall placement[position and rotation] of the object - with respect to the origin (or origin of parent object container)<br />
** {{PropertyData|Angle}}: Angle in degrees applied to rotation of the object around Axis property value<br />
** {{PropertyData|Axis}}: Axis(one or multiple) around which to rotate the object, set in sub-properties: x, y, z<br />
*** {{PropertyData|X}}: x axis value<br />
*** {{PropertyData|Y}}: y axis value<br />
*** {{PropertyData|Z}}: z axis value<br />
** {{PropertyData|Position}}: Position of the object, set in sub-properties: x, y, z - with respect to the origin (or origin of parent object container)<br />
*** {{PropertyData|X}}: x distance value<br />
*** {{PropertyData|Y}}: y distance value<br />
*** {{PropertyData|Z}}: z distance value<br />
* {{PropertyData|Label}}: User-provided name of the object (UTF-8)<br />
<br />
<!--T:18--><br />
{{TitleProperty|Depth}}<br />
<br />
<!--T:19--><br />
* {{PropertyData|Clearance Height}}: The height needed to clear clamps and obstructions<br />
* {{PropertyData|Final Depth}}: Final Depth of Tool- lowest value in Z<br />
* {{PropertyData|Finish Depth}}: Maximum material removed on final pass.<br />
* {{PropertyData|Safe Height}}: The above which Rapid motions are allowed.<br />
* {{PropertyData|Start Depth}}: Starting Depth of Tool- first cut depth in Z<br />
* {{PropertyData|Step Down}}: Incremental Step Down of Tool<br />
<br />
<!--T:20--><br />
{{TitleProperty|Path}}<br />
<br />
<!--T:34--><br />
* {{PropertyData|Active}}: make False, to prevent operation from generating code<br />
* {{PropertyData|Comment}}: An optional comment for this Operation<br />
* {{PropertyData|Tool Controller}}: Defines the Tool controller used in the Operation<br />
* {{PropertyData|User Label}}: User assigned label<br />
<br />
==Tasks Window Editor Layout== <!--T:21--><br />
<br />
<!--T:22--><br />
''Descriptions for these settings are provided in the Properties list above.''<br />
This section is simply a layout map of the settings in the window editor for the Operation.<br />
<br />
===Base Geometry=== <!--T:23--><br />
<br />
<!--T:24--><br />
* '''Add''': adds selected element(s) which should be the base(s) for the path(s)<br />
* '''Delete''': delete the selected item(s) in the Base Geometry list<br />
* '''Clear''': clear all items in the Base Geometry list<br />
<br />
===Depths=== <!--T:25--><br />
<br />
<!--T:26--><br />
* {{PropertyData|Start Depth}}<br />
* {{PropertyData|Final Depth}}<br />
* {{PropertyData|Finish Depth}}<br />
* {{PropertyData|Step Down}}<br />
<br />
===Heights=== <!--T:27--><br />
<br />
<!--T:28--><br />
* {{PropertyData|Safe Height}}<br />
* {{PropertyData|Clearance Height}}<br />
<br />
===Operation=== <!--T:29--><br />
<br />
<!--T:30--><br />
* {{PropertyData|Tool Controller}}<br />
* {{PropertyData|Cut Region}} (Side)<br />
* {{PropertyData|Operation Type}}<br />
* {{PropertyData|Step Over Percent}}<br />
* {{PropertyData|Accuracy vs Performance}} (Tolerance)<br />
* {{PropertyData|Helix Ramp Angle}}<br />
* {{PropertyData|Helix Cone Angle}}<br />
* {{PropertyData|Helix Max Diameter}} (Helix Diameter Limit)<br />
* {{PropertyData|Lift Distance}}<br />
* {{PropertyData|Keep Tool Down Ratio}}<br />
* {{PropertyData|Stock to Leave}}<br />
* {{PropertyData|Force Clearing Inside-Out}}<br />
* {{PropertyData|Stop}}<br />
<br />
==Known Issues==<br />
In case Adaptive Path creates some unwanted paths, try with a Stock to Leave = 0.001mm or more. You can reduce the diameter of the tool by the double of that amount to keep the paths exact.<br />
<br />
==Resources== <!--T:31--><br />
<br />
<!--T:32--><br />
* Author's GitHub page for the original project: [https://github.com/kreso-t/FreeCAD_Mod_Adaptive_Path kreso-t/FreeCAD_Mod_Adaptive_Path]<br />
* Active topic in FreeCAD forums for Path Adaptive operation: [https://forum.freecadweb.org/viewtopic.php?f=15&t=30127 Adaptive Path/CAM Operation]<br />
<br />
<br />
<!--T:33--><br />
{{Docnav<br />
|[[Path_Helix|Helix]]<br />
|[[Path_Slot|Slot]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=Path_Helix.svg<br />
|IconR=Path_Slot.svg<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{Path_Tools_navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=Sketcher_Move/de&diff=1235740Sketcher Move/de2023-03-05T11:19:05Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<br />
{{Docnav/de<br />
|[[Sketcher_Copy/de|Kopieren]]<br />
|[[Sketcher_RectangularArray/de|RechteckigeAnordnung]]<br />
|[[Sketcher_Workbench/de|Sketcher]]<br />
|IconL=Sketcher_Copy.svg<br />
|IconR=Sketcher_RectangularArray.svg<br />
|IconC=Workbench_Sketcher.svg<br />
}}<br />
<br />
{{GuiCommand/de<br />
|Name=Sketcher Move<br />
|Name/de=Sketcher Verschieben<br />
|MenuLocation=Sketch → Skizzen-Werkzeuge → Verschieben<br />
|Workbenches=[[Sketcher_Workbench/de|Sketcher]]<br />
|Shortcut={{KEY|Z}} {{KEY|M}}<br />
|Version=0.18<br />
|SeeAlso=[[Sketcher_Clone/de|Sketcher Klonen]], [[Sketcher_Copy/de|Sketcher Kopieren]]<br />
}}<br />
<br />
<span id="Description"></span><br />
== Beschreibung ==<br />
<br />
Verschiebt die ausgewählten Skizzenelemente von einem Punkt zum anderen, wobei der zuletzt ausgewählte Punkt als Referenz verwendet wird.<br />
<br />
[[Image:sketcher_move.png]]<br />
{{Caption|Die Reihenfolge der Klicks wird durch gelbe Pfeile mit Zahlen angezeigt. Ein Element '''A''' auswählen; Es erscheint eine durch zwei rote Linien gekennzeichnete Vektorlinie, die vom Ausgangspunkt '''A''' zum Mauszeiger mit Positionsnummer '''2''' verläuft. Zieht man den Mauszeiger auf die Zielposition '''3''', wird das Element nun als '''B''' dargestellt und automatisch auf Punkt '''3''' (koinzident) festgelegt.}}<br />
<br />
<span id="Usage"></span><br />
==Anwendung==<br />
<br />
# Skizzenelemente für den Verschiebevorgang auswählen.<br />
# Es gibt mehrere Möglichkeiten den Befehl aufzurufen:<br />
#* Die Schaltfläche {{Button|[[File:Sketcher_Move.svg|16px]] [[Sketcher_Move/de|Verschieben]]}} drücken.<br />
#* Das Tastaturkürzel {{KEY|Z}} dann {{KEY|M}}.<br />
#* Den Menüeintrag {{MenuCommand|Skizze → Skizzen-Werkzeuge → [[File:Sketcher_Move.svg|16px]] Verschieben}} auswählen.<br />
# Den Mauszeiger in der [[3D_view/de|3D-Ansicht]] auf die gewünschten Position bewegen.</br>Wird die {{KEY|Ctrl}}-Taste ({{KEY|Cmd}} in macOS) gedrückt gehalten, kann der zur Position gehörige Winkel in 5° Schritten eingestellt werden. {{Version/de|0.20}}<br />
# Mit einem Links-Klick in der 3D-Ansicht wird die Verschiebung abgeschlossen. Vorhandene Randbedingungen werden ebenfalls verschoben. <br />
# Soll ein Element gelöst und frei bewegt werden, löscht man seine festhaltenden Randbedingungen und verschiebt es mit der Maus.<br />
<br />
<br />
{{Docnav/de<br />
|[[Sketcher_Copy/de|Kopieren]]<br />
|[[Sketcher_RectangularArray/de|RechteckigeAnordnung]]<br />
|[[Sketcher_Workbench/de|Sketcher]]<br />
|IconL=Sketcher_Copy.svg<br />
|IconR=Sketcher_RectangularArray.svg<br />
|IconC=Workbench_Sketcher.svg<br />
}}<br />
<br />
{{Sketcher_Tools_navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=Translations:Sketcher_Move/6/de&diff=1235739Translations:Sketcher Move/6/de2023-03-05T11:19:01Z<p>Chrisb: </p>
<hr />
<div># Skizzenelemente für den Verschiebevorgang auswählen.<br />
# Es gibt mehrere Möglichkeiten den Befehl aufzurufen:<br />
#* Die Schaltfläche {{Button|[[File:Sketcher_Move.svg|16px]] [[Sketcher_Move/de|Verschieben]]}} drücken.<br />
#* Das Tastaturkürzel {{KEY|Z}} dann {{KEY|M}}.<br />
#* Den Menüeintrag {{MenuCommand|Skizze → Skizzen-Werkzeuge → [[File:Sketcher_Move.svg|16px]] Verschieben}} auswählen.<br />
# Den Mauszeiger in der [[3D_view/de|3D-Ansicht]] auf die gewünschten Position bewegen.</br>Wird die {{KEY|Ctrl}}-Taste ({{KEY|Cmd}} in macOS) gedrückt gehalten, kann der zur Position gehörige Winkel in 5° Schritten eingestellt werden. {{Version/de|0.20}}<br />
# Mit einem Links-Klick in der 3D-Ansicht wird die Verschiebung abgeschlossen. Vorhandene Randbedingungen werden ebenfalls verschoben. <br />
# Soll ein Element gelöst und frei bewegt werden, löscht man seine festhaltenden Randbedingungen und verschiebt es mit der Maus.</div>Chrisbhttps://wiki.freecad.org/index.php?title=Curves_SketchOnSurface/de&diff=1234423Curves SketchOnSurface/de2023-02-28T18:21:37Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
{{UnfinishedDocu{{#translation:}}}}<br />
<br />
{{Docnav/de<br />
|[[Curves_IsoCurve/de|IsoKurve]]<br />
|[[Curves_ProfileSupport/de|Profilebene]]<br />
|[[Curves_Workbench/de|Curves]]<br />
|IconL=Curves_IsoCurve.svg<br />
|IconR=Curves_ProfileSupport.svg<br />
|IconC=Curves_workbench_icon.svg<br />
}}<br />
<br />
{{GuiCommand/de<br />
|Name=Curves SketchOnSurface<br />
|Name/de=Curves SkizzeAufFläche<br />
|MenuLocation=Surfaces → Sketch on Surface<br />
|Workbenches=[[Curves_Workbench/de|Curves]]<br />
}}<br />
<br />
<span id="Description"></span><br />
==Beschreibung==<br />
<br />
Dieses Werkzeug legt eine Skizze über eine Fläche, wie ein Etikett auf eine Flasche.<br />
Die Skizze muss an eine Fläche angefügt sein (siehe Sketch.Support).<br />
Der {{incode|Map}}-Modus der Skizze hat keinen Einfluss auf das Ergebnis.<br />
<br />
[[File:Curves_SketchOnSurface_demo.png|600x400px]]<br />
{{Caption|Die Abbildung zeigt ein {{incode|Sketch_On_Surface}}-Objekt auf eine Zylinderfläche angewendet (links) und die zugrundeliegende Skizze im Bearbeitungsmodus (rechts)}}<br />
<br />
<span id="Usage"></span><br />
==Anwendung==<br />
<br />
# Zum Arbeitsbereich [[Image:Curves_workbench_icon.svg|24px]] [[Curves_Workbench/de|Curves]] wechseln. (muss mit dem [[Image:Std_AddonMgr.svg|24px]] [[Std_AddonMgr/de|Addon-Manager]] installiert werden, wenn noch nicht geschehen)<br />
# Es gibt 2 Methoden das Werkzeug SketchOnSurface anzuwenden:<br />
#; Die Skizze, die auf eine Fläche übertragen werden soll, ist schon vorhanden:<br />
## Die Skizze an die Zielfläche anfügen:<br />
##* Im Anfügedialog die Fläche auswählen<br />
##* Anfügemodus auf Deaktiviert setzen<br />
##* Anfügedialog schließen<br />
##* Placement.z=0 setzen.<br />
## Die Skizze bearbeiten und einen Konstruktionsrahmen (blaues Rechteck) um die Geometrien herum hinzufügen. Dies Rechteck stellt die parametrischen Flächenränder dar.<br />
## Bearbeitungsmodus verlassen.<br />
## Die Skizze auswählen.<br />
## Das Werkzeug SketchOnSurface aktivieren durch:<br />
##* Drücken der Schaltfläche [[Image:Curves_SketchOnSurface.svg|24px]].<br />
##* Auswahl des Eintrags {{MenuCommand|Surfaces → Sketch on Surface}} im Curves-Menü.<br />
#; Es ist noch keine Skizze zum Übertragen vorhanden:<br />
## Zielfläche in der [[3D_view/de|3D-Ansicht]] auswählen.<br />
## Das Werkzeug SketchOnSurface aktivieren durch:<br />
##* Drücken der Schaltfläche [[Image:Curves_SketchOnSurface.svg|24px]].<br />
##* Auswahl des Eintrags {{MenuCommand|Surfaces → Sketch on Surface}} im Curves-Menü.<br />
## Ein Sketch_On_Surface-Objekt erscheint in der [[Tree_view/de|Baumansicht]].<br />
## Dieses Objekt ausklappen, um das Mapped_Sketch-Objekt darunter anzuzeigen.<br />
## Die Skizze bearbeiten und dabei Geometrien innerhalb des blauen Konstruktionsrahmens hinzufügen.<br />
## Es wird ein auf dieser Skizze basierendes SketchOnSurface-Objekt auf der Objektoberfläche erstellt.<br />
<br />
<span id="Options"></span><br />
==Optionen== <br />
<br />
* Fill Extrusion: Wenn der Wert von Thickness nicht Null ist, werden Seitenflächen erstellt (die blauen Flächen im obigen Bildschirmfoto).<br />
* Fill Faces: Dies füllt die von Flächen eingeschlossenen geometrischen Figuren (die roten Flächen im obigen Bildschirmfoto).<br />
* Offset: Dies drückt die oberhalb erstellten Formen in die Zielfläche. Der Wert sollte nicht größer als die Dicke sein, da die Fläche sonst auf der Innenseite verschwindet.<br />
* Thickness: Wenn nicht Null, ergibt dieser Wert die Dicke bis zur oberen erstellten Fläche.<br />
<br />
<span id="Notes"></span><br />
==Hinweise==<br />
<br />
Sämtliche Geometrie sollte sich innerhalb des blauen Konstruktionsrahmens befinden, einschließlich weiterer Konstruktionsgeometrien und der sichtbaren internen Geometrien komplexer Kurven (Bezier-Kurven, Ellipsen). Wenn dies nicht der Fall ist, wird das umschließende Rechteck (Bounding-Box) größer als der Konstruktionsrahmen und das übertragene Bild wird entsprechend verkleinert. Wenn nötig, kann die [[Sketcher_RestoreInternalAlignmentGeometry/de|interne Geometrie ausgeblendet]] werden, die nicht vollständig im Konstruktionsrahmen liegt.<br />
<br />
<span id="Properties"></span><br />
==Eigenschaften==<br />
<br />
<span id="Scripting"></span><br />
==Skripten==<br />
<br />
<br />
{{Docnav/de<br />
|[[Curves_IsoCurve/de|IsoKurve]]<br />
|[[Curves_ProfileSupport/de|Profilebene]]<br />
|[[Curves_Workbench/de|Curves]]<br />
|IconL=Curves_IsoCurve.svg<br />
|IconR=Curves_ProfileSupport.svg<br />
|IconC=Curves_workbench_icon.svg<br />
}}<br />
<br />
{{Curves Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=Translations:Curves_SketchOnSurface/5/de&diff=1234422Translations:Curves SketchOnSurface/5/de2023-02-28T18:21:31Z<p>Chrisb: </p>
<hr />
<div># Zum Arbeitsbereich [[Image:Curves_workbench_icon.svg|24px]] [[Curves_Workbench/de|Curves]] wechseln. (muss mit dem [[Image:Std_AddonMgr.svg|24px]] [[Std_AddonMgr/de|Addon-Manager]] installiert werden, wenn noch nicht geschehen)<br />
# Es gibt 2 Methoden das Werkzeug SketchOnSurface anzuwenden:<br />
#; Die Skizze, die auf eine Fläche übertragen werden soll, ist schon vorhanden:<br />
## Die Skizze an die Zielfläche anfügen:<br />
##* Im Anfügedialog die Fläche auswählen<br />
##* Anfügemodus auf Deaktiviert setzen<br />
##* Anfügedialog schließen<br />
##* Placement.z=0 setzen.<br />
## Die Skizze bearbeiten und einen Konstruktionsrahmen (blaues Rechteck) um die Geometrien herum hinzufügen. Dies Rechteck stellt die parametrischen Flächenränder dar.<br />
## Bearbeitungsmodus verlassen.<br />
## Die Skizze auswählen.<br />
## Das Werkzeug SketchOnSurface aktivieren durch:<br />
##* Drücken der Schaltfläche [[Image:Curves_SketchOnSurface.svg|24px]].<br />
##* Auswahl des Eintrags {{MenuCommand|Surfaces → Sketch on Surface}} im Curves-Menü.<br />
#; Es ist noch keine Skizze zum Übertragen vorhanden:<br />
## Zielfläche in der [[3D_view/de|3D-Ansicht]] auswählen.<br />
## Das Werkzeug SketchOnSurface aktivieren durch:<br />
##* Drücken der Schaltfläche [[Image:Curves_SketchOnSurface.svg|24px]].<br />
##* Auswahl des Eintrags {{MenuCommand|Surfaces → Sketch on Surface}} im Curves-Menü.<br />
## Ein Sketch_On_Surface-Objekt erscheint in der [[Tree_view/de|Baumansicht]].<br />
## Dieses Objekt ausklappen, um das Mapped_Sketch-Objekt darunter anzuzeigen.<br />
## Die Skizze bearbeiten und dabei Geometrien innerhalb des blauen Konstruktionsrahmens hinzufügen.<br />
## Es wird ein auf dieser Skizze basierendes SketchOnSurface-Objekt auf der Objektoberfläche erstellt.</div>Chrisbhttps://wiki.freecad.org/index.php?title=Curves_SketchOnSurface/de&diff=1234421Curves SketchOnSurface/de2023-02-28T18:19:39Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
{{UnfinishedDocu{{#translation:}}}}<br />
<br />
{{Docnav/de<br />
|[[Curves_IsoCurve/de|IsoKurve]]<br />
|[[Curves_ProfileSupport/de|Profilebene]]<br />
|[[Curves_Workbench/de|Curves]]<br />
|IconL=Curves_IsoCurve.svg<br />
|IconR=Curves_ProfileSupport.svg<br />
|IconC=Curves_workbench_icon.svg<br />
}}<br />
<br />
{{GuiCommand/de<br />
|Name=Curves SketchOnSurface<br />
|Name/de=Curves SkizzeAufFläche<br />
|MenuLocation=Surfaces → Sketch on Surface<br />
|Workbenches=[[Curves_Workbench/de|Curves]]<br />
}}<br />
<br />
<span id="Description"></span><br />
==Beschreibung==<br />
<br />
Dieses Werkzeug legt eine Skizze über eine Fläche, wie ein Etikett auf eine Flasche.<br />
Die Skizze muss an eine Fläche angefügt sein (siehe Sketch.Support).<br />
Der {{incode|Map}}-Modus der Skizze hat keinen Einfluss auf das Ergebnis.<br />
<br />
[[File:Curves_SketchOnSurface_demo.png|600x400px]]<br />
{{Caption|Die Abbildung zeigt ein {{incode|Sketch_On_Surface}}-Objekt auf eine Zylinderfläche angewendet (links) und die zugrundeliegende Skizze im Bearbeitungsmodus (rechts)}}<br />
<br />
<span id="Usage"></span><br />
==Anwendung==<br />
<br />
# Zum Arbeitsbereich [[Image:Curves_workbench_icon.svg|24px]] [[Curves_Workbench/de|Curves]] wechseln. (muss mit dem [[Image:Std_AddonMgr.svg|24px]] [[Std_AddonMgr/de|Addon-Manager]] installiert werden, wenn noch nicht geschehen)<br />
# Es gibt 2 Methoden das Werkzeug SketchOnSurface anzuwenden:<br />
#; Die Skizze, die auf eine Fläche übertragen werden soll, ist schon vorhanden:<br />
## Die Skizze an die Zielfläche anfügen:<br />
##* Im Anfügedialog die Fläche auswählen<br />
##* Den Anfügemodus auf Deaktiviert setzen<br />
##* Den Anfügedialog schließen<br />
##* Placement.z=0 setzen.<br />
## Die Skizze bearbeiten und einen Konstruktionsrahmen (blaues Rechteck) um die Geometrien herum hinzufügen. Dies Rechteck stellt die parametrischen Flächenränder dar.<br />
## Bearbeitungsmodus verlassen.<br />
## Die Skizze auswählen.<br />
## Das Werkzeug SketchOnSurface aktivieren durch:<br />
##* Drücken der Schaltfläche [[Image:Curves_SketchOnSurface.svg|24px]].<br />
##* Auswahl des Eintrags {{MenuCommand|Surfaces → Sketch on Surface}} im Curves-Menü.<br />
#; Es ist noch keine Skizze zum Übertragen vorhanden:<br />
## Zielfläche in der [[3D_view/de|3D-Ansicht]] auswählen.<br />
## Das Werkzeug SketchOnSurface aktivieren durch:<br />
##* Drücken der Schaltfläche [[Image:Curves_SketchOnSurface.svg|24px]].<br />
##* Auswahl des Eintrags {{MenuCommand|Surfaces → Sketch on Surface}} im Curves-Menü.<br />
## Ein Sketch_On_Surface-Objekt erscheint in der [[Tree_view/de|Baumansicht]].<br />
## Dieses Objekt ausklappen, um das Mapped_Sketch-Objekt darunter anzuzeigen.<br />
## Die Skizze bearbeiten und dabei Geometrien innerhalb des blauen Konstruktionsrahmens hinzufügen.<br />
## Es wird ein auf dieser Skizze basierendes SketchOnSurface-Objekt auf der Objektoberfläche erstellt.<br />
<br />
<span id="Options"></span><br />
==Optionen== <br />
<br />
* Fill Extrusion: Wenn der Wert von Thickness nicht Null ist, werden Seitenflächen erstellt (die blauen Flächen im obigen Bildschirmfoto).<br />
* Fill Faces: Dies füllt die von Flächen eingeschlossenen geometrischen Figuren (die roten Flächen im obigen Bildschirmfoto).<br />
* Offset: Dies drückt die oberhalb erstellten Formen in die Zielfläche. Der Wert sollte nicht größer als die Dicke sein, da die Fläche sonst auf der Innenseite verschwindet.<br />
* Thickness: Wenn nicht Null, ergibt dieser Wert die Dicke bis zur oberen erstellten Fläche.<br />
<br />
<span id="Notes"></span><br />
==Hinweise==<br />
<br />
Sämtliche Geometrie sollte sich innerhalb des blauen Konstruktionsrahmens befinden, einschließlich weiterer Konstruktionsgeometrien und der sichtbaren internen Geometrien komplexer Kurven (Bezier-Kurven, Ellipsen). Wenn dies nicht der Fall ist, wird das umschließende Rechteck (Bounding-Box) größer als der Konstruktionsrahmen und das übertragene Bild wird entsprechend verkleinert. Wenn nötig, kann die [[Sketcher_RestoreInternalAlignmentGeometry/de|interne Geometrie ausgeblendet]] werden, die nicht vollständig im Konstruktionsrahmen liegt.<br />
<br />
<span id="Properties"></span><br />
==Eigenschaften==<br />
<br />
<span id="Scripting"></span><br />
==Skripten==<br />
<br />
<br />
{{Docnav/de<br />
|[[Curves_IsoCurve/de|IsoKurve]]<br />
|[[Curves_ProfileSupport/de|Profilebene]]<br />
|[[Curves_Workbench/de|Curves]]<br />
|IconL=Curves_IsoCurve.svg<br />
|IconR=Curves_ProfileSupport.svg<br />
|IconC=Curves_workbench_icon.svg<br />
}}<br />
<br />
{{Curves Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=Translations:Curves_SketchOnSurface/5/de&diff=1234420Translations:Curves SketchOnSurface/5/de2023-02-28T18:19:31Z<p>Chrisb: </p>
<hr />
<div># Zum Arbeitsbereich [[Image:Curves_workbench_icon.svg|24px]] [[Curves_Workbench/de|Curves]] wechseln. (muss mit dem [[Image:Std_AddonMgr.svg|24px]] [[Std_AddonMgr/de|Addon-Manager]] installiert werden, wenn noch nicht geschehen)<br />
# Es gibt 2 Methoden das Werkzeug SketchOnSurface anzuwenden:<br />
#; Die Skizze, die auf eine Fläche übertragen werden soll, ist schon vorhanden:<br />
## Die Skizze an die Zielfläche anfügen:<br />
##* Im Anfügedialog die Fläche auswählen<br />
##* Den Anfügemodus auf Deaktiviert setzen<br />
##* Den Anfügedialog schließen<br />
##* Placement.z=0 setzen.<br />
## Die Skizze bearbeiten und einen Konstruktionsrahmen (blaues Rechteck) um die Geometrien herum hinzufügen. Dies Rechteck stellt die parametrischen Flächenränder dar.<br />
## Bearbeitungsmodus verlassen.<br />
## Die Skizze auswählen.<br />
## Das Werkzeug SketchOnSurface aktivieren durch:<br />
##* Drücken der Schaltfläche [[Image:Curves_SketchOnSurface.svg|24px]].<br />
##* Auswahl des Eintrags {{MenuCommand|Surfaces → Sketch on Surface}} im Curves-Menü.<br />
#; Es ist noch keine Skizze zum Übertragen vorhanden:<br />
## Zielfläche in der [[3D_view/de|3D-Ansicht]] auswählen.<br />
## Das Werkzeug SketchOnSurface aktivieren durch:<br />
##* Drücken der Schaltfläche [[Image:Curves_SketchOnSurface.svg|24px]].<br />
##* Auswahl des Eintrags {{MenuCommand|Surfaces → Sketch on Surface}} im Curves-Menü.<br />
## Ein Sketch_On_Surface-Objekt erscheint in der [[Tree_view/de|Baumansicht]].<br />
## Dieses Objekt ausklappen, um das Mapped_Sketch-Objekt darunter anzuzeigen.<br />
## Die Skizze bearbeiten und dabei Geometrien innerhalb des blauen Konstruktionsrahmens hinzufügen.<br />
## Es wird ein auf dieser Skizze basierendes SketchOnSurface-Objekt auf der Objektoberfläche erstellt.</div>Chrisbhttps://wiki.freecad.org/index.php?title=Curves_SketchOnSurface&diff=1234413Curves SketchOnSurface2023-02-28T18:12:20Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
{{UnfinishedDocu{{#translation:}}}}<br />
<translate><br />
<br />
<!--T:1--><br />
{{Docnav<br />
|[[Curves_IsoCurve|IsoCurve]]<br />
|[[Curves_ProfileSupport|ProfileSupport]]<br />
|[[Curves_Workbench|Curves]]<br />
|IconL=Curves_IsoCurve.svg<br />
|IconR=Curves_ProfileSupport.svg<br />
|IconC=Curves_workbench_icon.svg<br />
}}<br />
<br />
<!--T:2--><br />
{{GuiCommand<br />
|Name=Curves SketchOnSurface<br />
|MenuLocation=Surfaces → Sketch on Surface<br />
|Workbenches=[[Curves_Workbench|Curves]]<br />
}}<br />
<br />
==Description== <!--T:3--><br />
<br />
<!--T:13--><br />
This tool maps a sketch onto a face, like a label on a bottle.<br />
The sketch must be actually attached to a face (see Sketch.Support).<br />
The {{incode|Map}} mode of the sketch has no effect on the result.<br />
<br />
<!--T:12--><br />
[[File:Curves_SketchOnSurface_demo.png|600x400px]]<br />
{{Caption|Above: shows the {{incode|Sketch_On_Surface}} object applied to the cylinder face (left) and the source sketch in edit mode (right)}}<br />
<br />
==Usage== <!--T:4--><br />
<br />
<!--T:5--><br />
# Switch to the [[Image:Curves_workbench_icon.svg|24px]] [[Curves_Workbench|Curves]] workbench (install from [[Image:Std_AddonMgr.svg|24px]] [[Std_AddonMgr|Addon Manager]] is necessary, if not previously installed)<br />
# There are 2 methods to use the SketchOnSurface tool:<br />
#; You already have a sketch that you want to map on a face:<br />
## Attach the sketch to the target face:<br />
##* In the attachment dialog selet the face<br />
##* Set the mode to Deactivated while leaving the face as the first reference<br />
##* Close the Attachment dialog<br />
##* Set Placement.z=0<br />
## Edit the sketch and add a Construction (blue) rectangle around the geometries. This rectangle will be the parametric bounds of the face. <br />
## Exit edit mode.<br />
## Select the sketch.<br />
## Activate SketchOnSurface by either:<br />
##* Pressing on the [[Image:Curves_SketchOnSurface.svg|24px]] button <br />
##* Using the {{MenuCommand|Surfaces → Sketch on Surface}} entry in the Curves menu<br />
#; You have no sketch to map yet:<br />
## Select the target face in the [[3D_view|3D view]] <br />
## Activate SketchOnSurface by either:<br />
##* Pressing on the [[Image:Curves_SketchOnSurface.svg|24px]] button <br />
##* Using the {{MenuCommand|Surfaces → Sketch on Surface}} entry in the Curves menu<br />
## A Sketch_On_Surface object appears in the [[Tree_view|Tree view]].<br />
## Expand this object to make the Mapped_Sketch appear below.<br />
## Edit the sketch and add geometries inside the blue construction bounds.<br />
## A SketchOnSurface object will be created on the surface of your object based on this sketch.<br />
<br />
==Options== <!--T:15--> <br />
<br />
<!--T:6--><br />
* Fill Extrusion: When the Thickness value is not null, this will generate lofting faces (the blue faces in the above screenshot).<br />
* Fill Faces: This will fill all the geometrical figures closed in faces (the red faces in the above screenshot).<br />
* Offset: This will push the shapes mapped above into the target face. Do not put an offset greater than the thickness, it makes the face disappear on the inside.<br />
* Thickness: If not null, this will give thickness to the surfaces created above.<br />
<br />
==Notes== <!--T:17--><br />
<br />
<!--T:8--><br />
It is assumed that all geometry in the sketch is enclosed within the blue construction frame. This includes all other construction geometry, as well as the visible internal geometry of complex curves (Bezier, Ellipse). If this is not the case the bounding box of the sketch will be larger than the construction frame and the final mapping will be scaled down accordingly. If required [[Sketcher_RestoreInternalAlignmentGeometry|hide the internal geometry]] that is not fully inside the construction frame.<br />
<br />
==Properties== <!--T:7--><br />
<br />
==Scripting== <!--T:14--><br />
<br />
<br />
<!--T:9--><br />
{{Docnav<br />
|[[Curves_IsoCurve|IsoCurve]]<br />
|[[Curves_ProfileSupport|ProfileSupport]]<br />
|[[Curves_Workbench|Curves]]<br />
|IconL=Curves_IsoCurve.svg<br />
|IconR=Curves_ProfileSupport.svg<br />
|IconC=Curves_workbench_icon.svg<br />
}}<br />
<br />
</translate><br />
{{Curves Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=Sketcher_Move&diff=1224684Sketcher Move2023-01-29T18:12:14Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:8--><br />
{{Docnav<br />
|[[Sketcher_Copy|Copy]]<br />
|[[Sketcher_RectangularArray|Rectangular array]]<br />
|[[Sketcher_Workbench|Sketcher]]<br />
|IconL=Sketcher_Copy.svg<br />
|IconR=Sketcher_RectangularArray.svg<br />
|IconC=Workbench_Sketcher.svg<br />
}}<br />
<br />
<!--T:1--><br />
{{GuiCommand<br />
|Name=Sketcher Move<br />
|MenuLocation=Sketch → Sketcher tools → Move<br />
|Workbenches=[[Sketcher_Workbench|Sketcher]]<br />
|Shortcut={{KEY|Z}} {{KEY|M}}<br />
|Version=0.18<br />
|SeeAlso=[[Sketcher_Clone|Sketcher Clone]], [[Sketcher_Copy|Sketcher Copy]]<br />
}}<br />
<br />
== Description == <!--T:2--><br />
<br />
<!--T:3--><br />
Moves the selected sketch elements from one point to another, using the last selected point as reference.<br />
<br />
</translate><br />
[[Image:sketcher_move.png]]<br />
<translate><br />
<!--T:4--><br />
{{Caption|The sequence of clicks is indicated by yellow arrows with numbers. Select element '''A'''; see a vector line indicated by two red lines from pivot point '''A''' pointing to mouse position number '''2'''. Move the mouse pointer to the target location '''3''' and see the element now as '''B''' autoconstrained on point '''3'''.}}<br />
<br />
==Usage== <!--T:5--><br />
<br />
<!--T:6--><br />
# Select the sketch elements for the move operation.<br />
# There are several ways to invoke the command:<br />
#* Press the {{Button|[[File:Sketcher_Move.svg|16px]] [[Sketcher_Move|Move]]}} button in the toolbar.<br />
#* Use the {{KEY|Z}} then {{KEY|M}} keyboard shortcut.<br />
#* Use the {{MenuCommand|Sketch → Sketcher tools → [[File:Sketcher_Move.svg|16px]] Move}} entry in the menu.<br />
# Move the mouse in the [[3D_view|3D view]] to the desired location.</br>By keeping {{KEY|Ctrl}} pressed ({{KEY|Cmd}} on macOS), the angle to the location can be fixed in steps of 5°. {{Version|0.20}}<br />
# Left-click in the 3D view to finish the move. The existing constraints move as well. <br />
# If you want to detach an element and move it freely, delete its locking constraints and drag it with the mouse.<br />
<br />
<br />
<!--T:9--><br />
{{Docnav<br />
|[[Sketcher_Copy|Copy]]<br />
|[[Sketcher_RectangularArray|Rectangular array]]<br />
|[[Sketcher_Workbench|Sketcher]]<br />
|IconL=Sketcher_Copy.svg<br />
|IconR=Sketcher_RectangularArray.svg<br />
|IconC=Workbench_Sketcher.svg<br />
}}<br />
<br />
</translate><br />
{{Sketcher_Tools_navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=PartDesign_PolarPattern&diff=1200060PartDesign PolarPattern2022-10-16T11:03:15Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:28--><br />
{{Docnav<br />
|[[PartDesign_LinearPattern|Linear Pattern]]<br />
|[[PartDesign_MultiTransform|Create MultiTransform]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_LinearPattern.svg<br />
|IconR=PartDesign_MultiTransform.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
<!--T:1--><br />
{{GuiCommand<br />
|Name=PartDesign PolarPattern<br />
|MenuLocation=Part Design → Apply a pattern → PolarPattern<br />
|Workbenches=[[PartDesign_Workbench|PartDesign]]<br />
|SeeAlso=[[PartDesign_MultiTransform|PartDesign MultiTransform]]<br />
}}<br />
<br />
==Description== <!--T:2--><br />
<br />
<!--T:11--><br />
The [[Image:PartDesign_PolarPattern.svg|24px]] '''PartDesign PolarPattern''' tool creates a polar pattern of one or more features.<br />
<br />
</translate><br />
[[File:PartDesign PolarPattern example.png|none]]<br />
<translate><br />
<!--T:12--><br />
{{Caption|A slot-shaped pocket (B) made on top of a base pad (A, also referred to as support) is used for a polar pattern. The result (C) is shown on the right.}}<br />
<br />
==Usage== <!--T:13--><br />
<br />
=== Create === <!--T:50--><br />
<br />
<!--T:51--><br />
# Optionally [[PartDesign_Body#Active_status|activate]] the correct Body.<br />
# Optionally select one or more features in the [[Tree_view|Tree view]] or the [[3D_view|3D view]].<br />
# There are several ways to invoke the tool:<br />
#* Press the {{Button|[[Image:PartDesign_PolarPattern.svg|16px]] [[PartDesign_PolarPattern|PolarPattern]]}} button.<br />
#* Select the {{MenuCommand|Part Design → Apply a pattern → [[Image:PartDesign_PolarPattern.svg|16px]] PolarPattern}} option from the menu.<br />
# If there is no active Body, and there are two or more Bodies in the document, the {{MenuCommand|Active Body Required}} dialog will open and prompt you to activate one. If there is a single Body it will be activated automatically.<br />
# If no features were selected the {{MenuCommand|Select feature}} [[Task_panel|task panel]] opens: select one or more (hold down the {{KEY|Ctrl}} key) from the list and press the {{Button|OK}} button.<br />
# The {{MenuCommand|PolarPattern parameters}} [[Task_panel|task panel]] opens. See [[#Options|Options]] for more information.<br />
# Press the {{Button|OK}} button to finish.<br />
<br />
=== Edit === <!--T:52--><br />
<br />
<!--T:53--><br />
# Do one of the following:<br />
#* Double-click the PolarPattern object in the [[Tree_view|Tree view]].<br />
#* Right-click the PolarPattern object in the [[Tree_view|Tree view]] and select {{MenuCommand|Edit PolarPattern}} from the context menu.<br />
# The {{MenuCommand|PolarPattern parameters}} [[Task_panel|task panel]] opens. See [[#Options|Options]] for more information.<br />
# Press the {{Button|OK}} button to finish.<br />
<br />
==Options== <!--T:6--><br />
<br />
<!--T:54--><br />
* To add features:<br />
*# Press the {{Button|Add feature}} button.<br />
*# Select a feature in the [[Tree_view|Tree view]] or the [[3D_view|3D view]].<br />
*# Repeat to add more features.<br />
* To remove features:<br />
*# Press the {{Button|Remove feature}} button.<br />
*# Do one of the following:<br />
*#* Select a feature in the [[Tree_view|Tree view]] or the [[3D_view|3D view]].<br />
*#* Select a feature in the list and press the {{KEY|Del}} key.<br />
*#* Right-click a feature in the list and select {{MenuCommand|Remove}} from the context menu.<br />
*# Repeat to remove more features.<br />
* If there are several features in the pattern, their order can be important. See [[#Ordering_features|Ordering features]].<br />
* Specify the {{MenuCommand|Axis}} of the pattern:<br />
** {{MenuCommand|Normal sketch axis}}: The Z axis of the sketch (only available for sketch-based features).<br />
** {{MenuCommand|Vertical sketch axis}}: The Y axis of the sketch (idem).<br />
** {{MenuCommand|Horizontal sketch axis}}: The X axis of the sketch (idem).<br />
** {{MenuCommand|Construction line #}}: A separate entry for each construction line in the sketch (idem).<br />
** {{MenuCommand|Base X axis}}: The X axis of the Body.<br />
** {{MenuCommand|Base Y axis}}: The Y axis of the Body.<br />
** {{MenuCommand|Base Z axis}}: The Z axis of the Body.<br />
** {{MenuCommand|Select reference...}}: Select a [[PartDesign_Line|Datum Line]] in the [[Tree_view|Tree view]] or a [[PartDesign_Line|Datum Line]] or edge in the [[3D_view|3D view]].<br />
* Check the {{MenuCommand|Reverse direction}} checkbox to reverse the pattern.<br />
* Specify the {{MenuCommand|Angle}} to be covered by the pattern. If the angle is less than 360°, the instances are evenly distributed from 0° (first instance) to the given angle (last instance). If the angle is a full 360°circle, then the instances are distributed evenly around the circle. That means for ''n'' instances an angle of 360° is equivalent to an angle of 360°*(1-1/''n'').<br />
* Specify the number of {{MenuCommand|Occurrences}} (including the original feature).<br />
* If the {{MenuCommand|Update view}} checkbox is checked the view will update in real time.<br />
<br />
== Ordering features == <!--T:35--><br />
<br />
<!--T:55--><br />
If some of the selected features are additive and others subtractive, their order can have have an impact on the final result. You can change the order by dragging individual features in the list. {{Version|0.19}}<br />
<br />
</translate><br />
[[File:PartDesign_feature-order.gif]]<br />
<translate><br />
<!--T:32--><br />
{{Caption|Effect of the feature order}}<br />
<br />
==Limitations== <!--T:3--><br />
<br />
<!--T:56--><br />
* Any shape in the pattern that does not overlap the parent feature will be excluded. This ensures that a PartDesign Body always consists of a single, connected solid.<br />
* The PartDesign patterns are not yet as optimized as their Draft counterparts. So for a large number of instances you should consider using a [[Draft_PolarArray|Draft PolarArray]] instead, combined with a Part boolean operation. This may require major changes to your model as you are leaving PartDesign and therefore cannot simply continue with further PartDesign features in the same body. An example is shown in [https://forum.freecadweb.org/viewtopic.php?f=3&t=55192 this Forum topic].<br />
* A pattern cannot be applied directly to another pattern, be it polar, linear or a mirror. For this you need a [[PartDesign_MultiTransform|PartDesign MultiTransform]].<br />
<br />
<br />
<!--T:29--><br />
{{Docnav<br />
|[[PartDesign_LinearPattern|Linear Pattern]]<br />
|[[PartDesign_MultiTransform|Create MultiTransform]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_LinearPattern.svg<br />
|IconR=PartDesign_MultiTransform.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
</translate><br />
{{PartDesign Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=TechDraw_SpreadsheetView&diff=1194031TechDraw SpreadsheetView2022-10-01T15:25:18Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:11--><br />
{{Docnav<br />
|[[TechDraw_ArchView|ArchView]]<br />
|[[TechDraw_MoveView|MoveView]]<br />
|[[TechDraw_Workbench|TechDraw]]<br />
|IconL=TechDraw_ArchView.svg<br />
|IconR=TechDraw_MoveView.svg<br />
|IconC=Workbench_TechDraw.svg<br />
}}<br />
<br />
<!--T:1--><br />
{{GuiCommand<br />
|Name=TechDraw SpreadsheetView<br />
|MenuLocation=TechDraw → Insert Spreadsheet View<br />
|Workbenches=[[TechDraw_Workbench|TechDraw]], [[Spreadsheet_Workbench|Spreadsheet]]<br />
}}<br />
<br />
==Description== <!--T:2--> <br />
<br />
<!--T:3--><br />
This tool allows you to place a view of a selected [[Spreadsheet_Workbench|spreadsheet]] on a [[TechDraw_Workbench|Page]].<br />
<br />
</translate><br />
[[Image:TechDraw Spreadsheetview.png]]<br />
<translate><br />
<!--T:8--><br />
{{Caption|Spreadsheet element inserted in the TechDraw drawing page}}<br />
<br />
==Usage== <!--T:4--> <br />
<br />
<!--T:5--><br />
# Select a spreadsheet in the [[Tree_view|Tree view]].<br />
# Press the {{Button|[[Image:TechDraw SpreadsheetView.svg|16px]] [[TechDraw_SpreadsheetView|Insert Spreadsheet View]]}} button.<br />
<br />
==Properties== <!--T:6--><br />
<br />
<!--T:13--><br />
See also [[TechDraw_View#Properties|TechDraw View]].<br />
<br />
=== Data === <!--T:14--><br />
<br />
<!--T:15--><br />
{{TitleProperty|Spreadsheet}}<br />
<br />
<!--T:7--><br />
* {{PropertyData|Source|Link}}: The spreadsheet to be added to the page.<br />
* {{PropertyData|Cell Start|String}}: The top left cell of the cell range to be included in this view.<br />
* {{PropertyData|Cell End|String}}: The bottom right cell of the cell range to be included in this view.<br />
* {{PropertyData|Font|Font}}: The name of the font used for texts.<br />
* {{PropertyData|Text Color|Color}}: The color of texts and lines that have no color specified in the spreadsheet.<br />
* {{PropertyData|Text Size|Float}}: The font size of texts.<br />
* {{PropertyData|Line Width|Float}}: The width of the cell borders.<br />
<br />
== Limitations ==<br />
Some characters in a spreadsheet cell may cause errors in TechDraw, whole cell contents can be omitted. These characters have to be quoted in the HTML-style.<br />
<br />
'''Example:''' The character '&' has to be entered as "<code>&amp;amp;</code>" in the Spreadsheet cell.<br />
See also this [https://forum.freecadweb.org/viewtopic.php?p=629853#p629885 discussion] in the forum.<br />
<br />
<!--T:12--><br />
{{Docnav<br />
|[[TechDraw_ArchView|ArchView]]<br />
|[[TechDraw_MoveView|MoveView]]<br />
|[[TechDraw_Workbench|TechDraw]]<br />
|IconL=TechDraw_ArchView.svg<br />
|IconR=TechDraw_MoveView.svg<br />
|IconC=Workbench_TechDraw.svg<br />
}}<br />
<br />
</translate><br />
{{TechDraw Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=Part_Fuse&diff=1175777Part Fuse2022-08-23T06:51:57Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<!--T:14--><br />
{{Docnav<br />
|[[Part_Cut|Cut]]<br />
|[[Part_Common|Common]]<br />
|[[Part_Workbench|Part]]<br />
|IconL=Part_Cut.svg<br />
|IconR=Part_Common.svg<br />
|IconC=Workbench_Part.svg<br />
}}<br />
<br />
<!--T:1--><br />
{{GuiCommand<br />
|Name=Part Fuse<br />
|MenuLocation=Part → Boolean → Union<br />
|Workbenches=[[Part_Workbench|Part]]<br />
|SeeAlso=[[Part_Boolean|Part Boolean]], [[Part_Cut|Part Cut]], [[Part_Common|Part Common]]<br />
}}<br />
<br />
== Description == <!--T:13--><br />
<br />
<!--T:2--><br />
The {{Button|[[Image:Part_Fuse.svg|24px|link=Part_Fuse]] [[Part_Fuse|Part Fuse]]}} tool fuses (unites) selected Part objects into one. This operation is fully parametric and the components can be modified and the result recomputed.<br />
<br />
<!--T:4--><br />
'''Note:''' This command is an automated form of the [[Image:Part_Boolean.svg|24px|link=Part_Boolean]] [[Part Boolean|Boolean operation]].<br />
<br />
== Usage == <!--T:5--><br />
<br />
<!--T:18--><br />
# Select two or more shapes<br />
# There are several ways to invoke the command:<br />
#* Press the {{Button|[[Image:Part_Fuse.svg|16px|link=Part_Fuse]] Part Fuse}} button in the '''Part tools''' toolbar<br />
#* Use the {{MenuCommand|Part → Boolean → Union}} entry in the Part menu<br />
<br />
== Supported inputs == <!--T:7--><br />
<br />
<!--T:8--><br />
Input objects must be [[OpenCASCADE|OpenCASCADE]] shapes. Examples: stuff made with Part, PartDesign, Sketcher workbenches. Not meshes (unless those were converted to shapes) - for meshes, there are specific Boolean tools in MeshDesign workbench.<br />
<br />
<!--T:9--><br />
* Solid + Solid: the result is a solid that occupies all the volume covered by the inputs<br />
<br />
<!--T:10--><br />
* Shell + Shell, Shell + Face, Face + Face: the result is a shell. Where faces intersect, they are split. Shells can be non-manifold. After fusion, faces can be united by [[Part_RefineShape|Refining]] the result.<br />
<br />
<!--T:11--><br />
* Wire + Wire, Edge + Wire, Edge + Edge: the result is a wire. Edges are split where they intersect. <br />
<br />
<!--T:12--><br />
Compounds are supported; however, it is assumed that shapes packed into a compound do not touch or intersect. If they actually do, Fusion will likely fail, or produce an incorrect result.<br />
<br />
== Options == <!--T:3--><br />
Items can be added and removed from the fusion, by dragging them in or out of the fusion feature in the tree view with the mouse. To drag an object out of a fusion you have to move it onto the filename of your model. A manual recompute (press {{KEY|F5}} key or click on the [[Image:Std_Refresh.svg|24px]] [[Std_Refresh|Refresh/Recompute]] icon) is required to see the results. <br />
<br />
<!--T:6--><br />
After this operation is complete, it may be necessary to clean up the shape with [[Image:Part_RefineShape.svg|24px|link=Part_RefineShape]] [[Part_RefineShape|RefineShape]].<br />
<br />
<br />
<!--T:15--><br />
{{Docnav<br />
|[[Part_Cut|Cut]]<br />
|[[Part_Common|Common]]<br />
|[[Part_Workbench|Part]]<br />
|IconL=Part_Cut.svg<br />
|IconR=Part_Common.svg<br />
|IconC=Workbench_Part.svg<br />
}}<br />
<br />
</translate><br />
{{Part Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}<br />
{{clear}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=Expressions/de&diff=1174771Expressions/de2022-08-20T06:10:39Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
{{TOCright}}<br />
<br />
==Übersicht==<br />
<br />
Es ist möglich, Eigenschaften unter Verwendung von mathematischen Ausdrücken festzulegen. In der GUI enthalten Drehfelder oder Eingabefelder, die an Eigenschaften gebunden sind, ein blaues Symbol [[Image:Bound-expression.svg|24px]]. Klicken auf das Symbol oder Eingeben des Gleichheitszeichens {{KEY|&#61;}} ruft den Ausdruckseditor für diese bestimmte Eigenschaft auf.<br />
<br />
Ein FreeCAD Ausdruck ist ein mathematischer Ausdruck, der der Schreibweise für die unten beschriebenen mathematischen Standardoperatoren und -funktionen folgt. Außerdem kann der Ausdruck auf andere Eigenschaften verweisen und auch Konditionale verwenden. Zahlen in einem Ausdruck können eine optionalen Einheit angehängt bekommen.<br />
<br />
Zahlen können entweder ein Komma {{incode|,}} oder einen Dezimalpunkt {{incode|.}} zur Trennung der Ganzzahlen von Nachkommastellen verwenden. Wenn diese Trennung benutzt wird, ''muss'' danach mindestens eine Ziffer folgen.<br />
Daher sind die Ausdrücke {{incode|1.+2.}} und {{incode|1,+2,}} ungültig, aber {{incode|1.0 + 2.0}} und {{incode|1,0 + 2,0}} sind gültig.<br />
<br />
Operatoren und Funktionen sind einheitenbewusst und erfordern gültige Kombinationen von Einheiten, falls verfügbar. Zum Beispiel ist {{incode|2mm + 4mm}} ein gültiger Ausdruck, während {{incode|2mm + 4}} kein gültiger Ausdruck ist (der Grund dafür ist, dass ein Ausdruck wie {{incode|1in + 4}} von Menschen höchstwahrscheinlich als {{incode|1in + 4in}} interpretiert wird, aber alle Einheiten werden intern in das SI System umgewandelt, und das System ist nicht in der Lage, dies zu erraten). Diese [[#Einheiten|Einheiten]] werden derzeit erkannt.<br />
<br />
Du kannst [[#Unterstützte_Konstanten|vorgegebene Konstanten]] und [[#Unterstützte_Funktionen|Funktionen]] verwenden.<br />
<br />
===Funktionsargumente===<br />
<br />
Mehrere Argumente zu einer Funktion können entweder durch ein Semikolon {{incode|;}} oder ein Komma <em> gefolgt von einem Leerzeichen</em> {{incode|,}} getrennt werden. Im letzteren Fall wird das Komma nach der Eingabe in ein Semikolon umgewandelt. Wenn ein Semikolon verwendet wird, ist kein Leerzeichen am Ende des Semikolons erforderlich.<br />
<br />
Die Argumente können Verweise auf Zellen in einer Kalkulationstabelle enthalten. Ein Zellverweis besteht aus dem großen Zeilenbuchstaben der Zelle, gefolgt von ihrer Spaltennummer, zum Beispiel {{incode|A1}}. Eine Zelle kann auch durch den Alias der Zelle referenziert werden, zum Beispiel {{incode|Tabellenblatt.MeineTeilbreite}}.<br />
<br />
===Referenzierende Objekte===<br />
<br />
Du kannst auf ein Objekt über seinen {{PropertyData/de|Namen}} oder über seine {{PropertyData/de|Beschriftung}} verweisen. Im Falle einer {{PropertyData/de|Beschriftung}} muss es in doppelten {{PropertyData/de|<<}} und {{PropertyData/de|>>}} Symbolen eingeschlossen sein, wie z.B. {{PropertyData/de|<<Beschriftung>>}}.<br />
<br />
Es kann auf jede Eigenschaft eines Objekts referenziert werden. Um sich beispielsweise auf die Höhe eines Zylinders zu beziehen, können {{incode|Zylinder.Height}} oder {{incode|<<Langer_Name_des_Zylinders>>.Height}} verwendet werden. Um auf das Objekt selbst zu referenzieren, verwendet man die Pseudeo-Eigenschaft {{incode|_self}}. Z.B. können {{incode|Zylinder._self}} oder {{incode|<<Label_des_Zylinders>>._self}} verwendet werden.<br />
<br />
Um auf Listenobjekte zu verweisen, verwende {{incode|<<object_label>>.list[list_index]}} oder {{incode|object_name.list[list_index]}}. <br />
Wenn du beispielsweise auf eine Beschränkung in einer Skizze verweisen möchtest, verwende {{incode|<<MeineSkizze>>.Constraints[16]}}. Wenn du dich in derselben Skizze befindest, kann man den Namen weglassen und einfach {{incode|Constraints[16]}} verwenden.<br/> <br />
'''Hinweis:''' Der Index beginnt mit 0, daher hat die Beschränkung 17 den Index 16. <br />
<br />
Für weitere Informationen über das Referenzieren von Objekten siehe [[#Reference_to_CAD_data/de|Referenz zu CAD Daten]].<br />
{{Top}}<br />
==Unterstützte Konstanten==<br />
<br />
Die folgenden Konstanten werden unterstützt:<br />
<br />
{| class="wikitable"<br />
!style="width: 33%;"|Konstante<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| style="text-align:center;" | '''e'''<br />
| [https://de.wikipedia.org/wiki/Eulersche_Zahl Eulersche Zahl]<br />
|-<br />
| style="text-align:center;" | '''pi'''<br />
| [https://de.wikipedia.org/wiki/Kreiszahl Kreiszahl <math>\pi</math>]<br />
|}<br />
{{Top}}<br />
== Unterstützte Operatoren ==<br />
<br />
Die folgenden Operatoren werden untertstützt:<br />
<br />
{| class="wikitable"<br />
!style="width: 33%;"|Operator<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| style="text-align:center;" |'''+'''<br />
| [https://de.wikipedia.org/wiki/Addition Addition]<br />
|-<br />
| style="text-align:center;" |'''-'''<br />
| [https://de.wikipedia.org/wiki/Subtraktion Subtraktion]<br />
|-<br />
| style="text-align:center;" | '''*'''<br />
| [https://de.wikipedia.org/wiki/Multiplikation Multiplikation]<br />
|-<br />
| style="text-align:center;" | '''/'''<br />
| Fließkomma [https://de.wikipedia.org/wiki/Division_(Mathematik) Division]<br />
|-<br />
| style="text-align:center;" | '''%'''<br />
| [https://de.wikipedia.org/wiki/Division_mit_Rest Division mit Rest]<br />
|-<br />
| style="text-align:center;" | '''^'''<br />
| [https://de.wikipedia.org/wiki/Potenz_(Mathematik) Potenz]<br />
|}<br />
{{Top}}<br />
== Unterstützte Funktionen ==<br />
<br />
=== Allgemeine mathematische Funktionen ===<br />
<br />
Die folgenden mathematischen Funktionen werden untertstützt:<br />
<br />
==== Trigonometrische Funktionen ====<br />
<br />
[https://de.wikipedia.org/wiki/Trigonometrische_Funktion Trigonometrische Funktionen] verwenden Grad als Standardeinheit. Für die Angabe im Bogenmaß wird {{incode|rad}} nach dem <em>ersten</em> Wert in einem Ausdruck hinzugefügt. So ist z.B. {{incode|cos(45)}} das gleiche, wie {{incode|cos(pi rad / 4)}}. Ausdrücke in Grad können entweder {{incode|deg}} oder {{incode|°}} verwenden, z.B. {{incode|360deg - atan2(3; 4)}} oder {{incode|360&deg; - atan2(3; 4)}}. Ein Ausdruck, der ohne Einheiten angegeben ist und aus Kompatibilitätsgründen in Grad oder Bogenmaß umgewandelt werden muss, wird mit {{incode|1&nbsp;deg}}, {{incode|1&nbsp;°}} oder {{incode|1&nbsp;rad}} multipliziert, gegebenenfalls, z.B. {{incode|(360 - X) * 1deg}}; {{incode|(360 - X) * 1°}}; {{incode|(0.5 + pi / 2) * 1rad}}.<br />
<br />
<br />
{| class="wikitable"<br />
!style="width: 15%;"|Funktion<br />
!style="width: 55%;"|Beschreibung<br />
!style="width: 30%;"|Wertebereich<br />
|-<br />
| acos(x)<br />
| [https://de.wikipedia.org/wiki/Arkusfunktion#Beziehungen_zwischen_den_Funktionen arccos]<br />
| -1 <= x <= 1 <br />
|-<br />
| asin(x)<br />
| [https://de.wikipedia.org/wiki/Arkusfunktion#Beziehungen_zwischen_den_Funktionen arcsin]<br />
| -1 <= x <= 1 <br />
|-<br />
| atan(x)<br />
| [https://de.wikipedia.org/wiki/Arkusfunktion#Beziehungen_zwischen_den_Funktionen arctan]<br />
| alle<br />
|-<br />
| atan2(x; y)<br />
| [https://de.wikipedia.org/wiki/Arctan2#Implementierungen arctan2] von ''x/y''<br />
| alle, außer y = 0<br />
|-<br />
| cos(x)<br />
| [https://de.wikipedia.org/wiki/Trigonometrische_Funktion#Definition cos]<br />
| alle<br />
|-<br />
| cosh(x)<br />
| [https://de.wikipedia.org/wiki/Hyperbelfunktion#Definition cosh]<br />
| alle<br />
|-<br />
| sin(x)<br />
| [https://de.wikipedia.org/wiki/Trigonometrische_Funktion#Definition sin]<br />
| alle<br />
|-<br />
| sinh(x)<br />
| [https://de.wikipedia.org/wiki/Hyperbelfunktion#Definition sinh]<br />
| alle<br />
|-<br />
| tan(x)<br />
| [https://de.wikipedia.org/wiki/Trigonometrische_Funktion#Definition tan]<br />
| alle, außer x = n*90 mit n = uneven integer (ungerade Ganzzahlen)<br />
|-<br />
| tanh(x)<br />
| [https://de.wikipedia.org/wiki/Hyperbelfunktion#Definition tanh]<br />
| alle<br />
|-<br />
| hypot(x; y)<br />
| [https://de.wikipedia.org/wiki/Pythagoreische_Addition Pythagoreische Addition] ('''Hypot'''enuse), z.B. hypot(4; 3) = 5.<br />
| x und y > 0<br />
|-<br />
| cath(x; y)<br />
| Die gegebene Hypotenuse und eine Seite ergibt die andere Seite eines Dreiecks, z.B. cath(5; 3) = 4.<br />
| x und y > 0, x >= y <br />
|}<br />
<br />
==== Exponential- und Logarithmusfunktionen ====<br />
<br />
{| class="wikitable"<br />
!style="width: 33%;"|Funktion<br />
!style="width: 33%;"|Beschreibung<br />
!style="width: 33%;"|Wertebereich<br />
|-<br />
| exp(x)<br />
| [https://en.wikipedia.org/wiki/Exponential_function#Definition Exponentialfunktion]<br />
| alle<br />
|-<br />
| log(x)<br />
| [https://de.wikipedia.org/wiki/Logarithmus#Nat%C3%BCrlicher_Logarithmus Natürlicher Logarithmus]<br />
| x > 0 <br />
|-<br />
| log10(x)<br />
| [https://de.wikipedia.org/wiki/Dekadischer_Logarithmus Dekadischer Logarithmus]<br />
| x > 0 <br />
|-<br />
| pow(x, y)<br />
| [https://de.wikipedia.org/wiki/Potenz_(Mathematik) Potenz (Mathematik)]<br />
| alle<br />
|-<br />
| sqrt(x)<br />
| [https://de.wikipedia.org/wiki/Quadratwurzel Quadratwurzel]<br />
| x >= 0<br />
|}<br />
<br />
==== Rundung, Trunkierung und Modulo ====<br />
<br />
{| class="wikitable"<br />
!style="width: 20%;"|Funktion<br />
!style="width: 55%;"|Beschreibung<br />
!style="width: 25%;"|Wertebereich<br />
|-<br />
| abs(x)<br />
| [https://de.wikipedia.org/wiki/Betragsfunktion Betragsfunktion]<br />
| alle<br />
|-<br />
| ceil(x)<br />
| [https://de.wikipedia.org/wiki/Abrundungsfunktion_und_Aufrundungsfunktion Aufrundungsfunktion], kleinster ganzzahliger Wert größer oder gleich x<br />
| alle<br />
|-<br />
| floor(x)<br />
| [https://de.wikipedia.org/wiki/Abrundungsfunktion_und_Aufrundungsfunktion Abrundungsfunktion], größter ganzzahliger Wert kleiner oder gleich x<br />
| alle<br />
|-<br />
| mod(x, y)<br />
| [https://de.wikipedia.org/wiki/Division_mit_Rest Division mit Rest] nach einer Division ''x'' durch ''y''<br />
| alle, außer y = 0<br />
|-<br />
| round(x)<br />
| [https://de.wikipedia.org/wiki/Rundung Rundung] auf die nächste Ganzzahl in Richtung Null<br />
| alle<br />
|-<br />
| trunc(x)<br />
| [https://de.wikipedia.org/wiki/Trunkierung_(Mathematik) Trunkierung] auf die nächste Ganzzahl (Kürzen auf einer Reihe oder Zahl auf eine gewisse Länge)<br />
| alle<br />
|}<br />
{{Top}}<br />
=== Statistische / Aggregatfunktionen ===<br />
<br />
[https://de.wikipedia.org/wiki/Aggregatfunktion Aggregatfunktion] verwenden ein oder mehrere Argumente.<br><br />
<br />
Einzelne Argumente für Aggregatfunktionen können aus Zellbereichen bestehen. Ein Zellbereich wird durch zwei Zellbezüge ausgedrückt, die durch einen Doppelpunkt {{Incode|:}} getrennt sind, zum Beispiel {{Incode|Durchschnitt(B1:B8)}} oder {{Incode|Summe(A1:A4; B1:B4)}}.<br />
Die Zellbezüge können auch Zell Aliase verwenden, zum Beispiel {{Incode|Durchschnitt(StartTemp:EndTemp)}}.<br />
<br />
Diese Aggregatfunktionen werden unterstützt:<br />
<br />
{| class="wikitable"<br />
!style="width: 20%;"|Funktion<br />
!style="width: 55%;"|Beschreibung<br />
!style="width: 25%;"|Wertebereich<br />
|-<br />
| average(a; b; c; ...)<br />
| [https://de.wikipedia.org/wiki/Arithmetisches_Mittel Arithmetisches Mittel] der Werte der Argumente; dasselbe, wie sum(a; b; c; ...) / count(a; b; c; ...)<br />
| alle<br />
|-<br />
| count(a; b; c; ...)<br />
| [https://de.wikipedia.org/wiki/Z%C3%A4hlen Zählen] der Argumente; üblicherweise für Zellbereiche genutzt<br />
| alle <br />
|-<br />
| max(a; b; c; ...)<br />
| [https://de.wikipedia.org/wiki/Extremwert Extremwert (Maximum)]-Werte der Argumente<br />
| alle <br />
|-<br />
| min(a; b; c; ...)<br />
| [https://de.wikipedia.org/wiki/Extremwert Minimum (Minimum)]-Werten der Argumente<br />
| alle<br />
|-<br />
| stddev(a; b; c; ...)<br />
| [https://de.wikipedia.org/wiki/Varianz_(Stochastik) Varianz (Stochastik)] der Werten der Argumente<br />
| alle<br />
|-<br />
| sum(a; b; c; ...)<br />
| [https://de.wikipedia.org/wiki/Summe Summe] der Werte der Argumente; üblicherweise für Zellbereiche genutzt<br />
| alle<br />
|}<br />
{{Top}}<br />
=== Zeichenkettenhandhabung ===<br />
<br />
==== Zeichenkettenerkennung ====<br />
<br />
Zeichenketten werden in Ausdrücken erkannt, indem sie in doppelte öffnende/schließende Winkel eingeschlossen werden (so wie Beschriftungen).<br />
<br />
Im folgenden Beispiel wird "TEXT" als eine Zeichenkette erkannt: {{Incode|<<TEXT>>}}<br />
<br />
==== Zeichenkettenverkettung ====<br />
<br />
Zeichenketten können durch das '+'-Zeichen aneinandergehängt werden.<br />
<br />
Das folgende Beispiel {{Incode|<<MY>>+<<TEXT>>}} wird verbunden zu "MYTEXT".<br />
<br />
====Umwandlung in Zeichenketten ====<br />
<br />
Numerische Werte können mit der Funktion {{incode|str}} in Zeichenketten gewandelt werden:<br />
<br />
{{incode|str(Box.Length.Value)}}<br />
<br />
==== Zeichenkettenformatierung ====<br />
<br />
Zeichenkettenformatierung wird unterstützt durch die (alte) %-Form von Python.<br />
<br />
Alle %-Spezifizierer wie in der (engl.) [https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting Python documentation] definiert.<br />
<br />
Hat man bspw. einen mit den Vorgabewerten erstellten Würfel namens 'Box' (FreeCAD-Standardbezeichnung) mit 10mm-Kantenlänge, wird der folgende Ausdruck {{incode|<<Würfellänge: %s>> % Box.Length}} erweitert zu "Würfellänge: 10.0 mm"<br />
<br />
Für mehr als einen %-Spezifizierer verwendet man folgende Syntax: {{incode|<<Würfellänge ist %s und Würfelbreite ist %s>> % tuple(Box.Length; Box.Width)}}. Oder man verwendet die Verkettung: {{Incode|<<Würfellänge ist %s>> % Box.Length + << und Länge ist %s>> % Box.Width}}. Beide ergeben zusammen "Würfellänge ist 10.0 mm und Breite ist 10.0 mm".<br />
<br />
Eine FreeCAD-Beispieldatei, die Zeichenkettenformatierung zeigt, ist unter [https://forum.freecadweb.org/viewtopic.php?f=8&t=58657 im Forum] verfügbar (engl.)<br />
{{Top}}<br />
===Funktion erstellen===<br />
<br />
Die folgenden Objekte können in Ausdrücken durch die {{incode|create}}-Funktion erstellt werden:<br />
* Vektor<br />
* Matrix<br />
* Rotation<br />
* Positionierung<br />
<br />
Die {{incode|create}}-Funktion übergibt bei der Erstellung des Objekts weitere Argumente an den zugrunde liegenden Python-Konstruktor.<br />
<br />
Verschiedene mathematische Operationen wie Multiplikation, Addition und Subtraktion werden durch standardmäßige mathematische Operatoren, wie z.B. {{incode|*}}, {{incode|+}}, {{incode|-}} unterstützt.<br />
<br />
====Vektor====<br />
<br />
Wenn {{incode|create}} {{incode|<<vector>>}} als erstes Argument übergeben wird, sind die folgenden drei Argumente die X-, Y- und die Z-Koordinaten des {{incode|Vector}}s.<br />
<br />
Beispiel:<br />
<br />
{{incode|create(<<vector>>; 2; 1; 2)}}<br />
<br />
====Matrix====<br />
<br />
Wenn {{incode|create}} {{incode|<<matrix>>}} als erstes Argument übergeben wird, sind die folgenden 16 Argumente die Elemente der {{incode|Matrix}} in [https://en.wikipedia.org/wiki/Row-_and_column-major_order row-major order].<br />
<br />
Beispiel:<br />
<br />
{{incode|create(<<matrix>>; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16)}}<br />
<br />
====Rotation====<br />
<br />
Wenn {{incode|create}} {{incode|<<rotation>>}} als erstes Argument übergeben wird, gibt es zwei Möglichkeiten, eine {{incode|Rotation}} zu erstellen:<br />
<br />
1. Einen Achsenvektor und einen Rotationswinkel angeben.<br />
<br />
Beispiel:<br />
<br />
{{incode|create(<<rotation>>; create(<<vector>>; 0; 1; 0); 45)}}<br />
<br />
2. Drei Rotationen über die X-, Y-, und Z-Achsen als Eulerwinkel angeben.<br />
<br />
Beispiel:<br />
<br />
{{incode|create(<<rotation>>; 30; 30; 30)}}<br />
<br />
====Positionierung====<br />
<br />
Wenn {{incode|create}} {{incode|<<placement>>}} als erstes Argument übergeben wird, gibt es fünf Wege eine {{incode|placement}} zu erstellen.<br />
<br />
Diese möglichen Kombinationen werden in der Tabelle unten angezeigt und basieren auf der [https://freecad.github.io/SourceDoc/]-Seite.<br />
<br />
{| class="wikitable"<br />
!style="width: 33%;"|Anzahl der Argumente<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| 2<br />
| {{incode|create(<<placement>>; Positionierung)}}<br />
|-<br />
| 2<br />
| {{incode|create(<<placement>>; Matrix)}}<br />
|-<br />
| 3<br />
| {{incode|create(<<placement>>; Basis; Rotation)}}<br />
|-<br />
| 4<br />
| {{incode|create(<<placement>>; Basis; Rotation; Mittelpunkt)}}<br />
|-<br />
| 4<br />
| {{incode|create(<<placement>>; Basis; Achse; Winkel)}}<br />
|}<br />
<br />
Das folgende Beispiel zeigt die Syntax zur Erstellung einer {{incode|Positionierung}} aus einem {{incode|Basis}}-Vektor und einer {{incode|Rotation}}:<br />
<br />
{{incode|create(<<placement>>; create(<<vector>>; 2; 1; 2); create(<<rotation>>; create(<<vector>>; 0; 1; 0); 45))}}<br />
<br />
Vektoren und Rotationen können zur einfachen Lesbarkeit in einzelnen Zellen, auf die in Ausdrücken verwiesen werden kann, festgelegt werden.<br />
{{Top}}<br />
===Matrixfunktionen===<br />
<br />
====mscale====<br />
<br />
Eine {{incode|Matrix}} mit einem gegebenen {{incode|Vector}} skalieren.<br />
<br />
{{incode|mscale(Matrix; Vector)}}<br />
<br />
{{incode|mscale(Matrix; x; y; z)}}<br />
<br />
====minvert====<br />
<br />
Die gegebene Matrix {{incode|Matrix}}, {{incode|Rotation}}, oder {{incode|Placement}} invertieren.<br />
<br />
{{incode|minvert(Matrix)}}<br />
<br />
{{incode|minvert(Rotation)}}<br />
<br />
{{incode|minvert(Placement)}}<br />
{{Top}}<br />
===Tuple & Liste===<br />
<br />
Es kann ein Python {{incode|tuple}}- oder ein {{incode|List}}en- Objekt über deren entsprechende Funktionen erstellt werden.<br />
<br />
{{incode|tuple(2; 1; 2)}}<br />
<br />
{{incode|list(2; 1; 2)}}<br />
{{Top}}<br />
== Bedingte Ausdrücke ==<br />
<br />
Bedingte Ausdrücke haben die Form {{incode|Bedingung ? ResultatWahr : ResultatFalsch}}.<br />
Die Bedingung ist definiert als ein Ausdruck, der entweder zu {{incode|0}} (falsch/false) oder Nicht-Null (wahr/true) ausgewertet wird.<br />
Beachte, dass das Einschließen des bedingten Ausdrucks in Klammern derzeit als Fehler angesehen wird.<br />
<br />
Die folgenden [https://de.wikipedia.org/wiki/Vergleichsoperator Vergleichsoperatoren] sind definiert:<br />
{| class="wikitable"<br />
!style="width: 33%;"|Einheit<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| style="text-align:center;" | '''=='''<br />
| gleich<br />
|-<br />
| style="text-align:center;" | '''!='''<br />
| ungleich<br />
|-<br />
| style="text-align:center;" | '''>'''<br />
| größer als <br />
|-<br />
| style="text-align:center;" | '''<'''<br />
| kleiner als<br />
|-<br />
| style="text-align:center;" | '''>='''<br />
| größer oder gleich<br />
|-<br />
| style="text-align:center;" | '''<='''<br />
| kleiner oder gleich<br />
|}<br />
{{Top}}<br />
== Einheiten ==<br />
<br />
Einheiten können direkt in Ausdrücken verwendet werden. Der Analysator (parser) verbindet sie mit dem vorherigen Wert. So ist {{incode|2mm}} oder {{incode|2 mm}} gültig, während {{incode|mm}} ungültig ist, weil es keinen vorhergehenden Wert gibt.<br />
<br />
Alle Werte müssen eine Einheit haben. Daher müssen Werte auch in Kalkulationstabellen im allgemeinen eine Einheit haben.<br/><br />
In einigen Fällen funktioniert es auch ohne Einheit, z.B. wenn Sie in Zelle B1 der Kalkulationstabelle z.B. nur die Zahl {{incode|1.5}} haben und sich für eine Blockhöhe darauf beziehen. Dies funktioniert nur, weil die Blockhöhe die Einheit {{incode|mm}} vordefiniert und die verwendet wird, wenn keine Einheit angegeben ist. Es schlägt jedoch fehl, wenn Sie für die Blockhöhe z.B. {{incode|Sketch1.Constraints.Breite - Kalkulationstabelle.B1}} verwenden, weil {{incode|Sketch1.Constraints.Breite}} eine Einheit hat und {{incode|Kalkulationstabelle.B1}} keine Einheit.<br />
<br />
Einheiten mit Exponenten können direkt eingegeben werden. So wird z.B. {{incode|mm^3}} als mm³ erkannt und {{incode|m^3}} wird als m³ erkannt.<br />
<br />
Wenn eine Variable mit dem Namen einer Einheit verwendet wird, muss die Variable in {{incode|<< >>}} gesetzt werden. Das verhindert, dass die Variable als Einheit erkannt wird. Das Maß {{incode|Sketch.Constraints.A}} würde z.B. als Einheit Ampere erkannt werden. Daher muss der Ausdruck als {{incode|Sketch.Constraints.<<A>>}} geschrieben werden.<br />
<br />
Die folgenden Einheiten werden vom Analysator für Ausdrücke erkannt:<br />
<br />
=== Stoffmenge ===<br />
<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
!style="width: 33%;"|Einheit<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| mol<br />
| [https://de.wikipedia.org/wiki/Mol Mol]<br />
|}<br />
<br />
=== Winkel ===<br />
<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
!style="width: 33%;"|Einheit<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| °<br />
| [https://de.wikipedia.org/wiki/Grad_(Winkel) Grad (Winkel)]; Alternative zur Einheit deg<br />
|-<br />
| deg<br />
| [https://en.wikipedia.org/wiki/Degree_(angle) Degree]; Alternative zur Einheit °<br />
|-<br />
| rad<br />
| [https://en.wikipedia.org/wiki/Radian Radian]<br />
|-<br />
| gon<br />
| [https://en.wikipedia.org/wiki/Gon_(unit) Gradian]<br />
|-<br />
| S<br />
| [https://de.wikipedia.org/wiki/Winkelminute Winkelsekunde]; Alternative zur Einheit "<br />
|-<br />
| ″<br />
| [https://de.wikipedia.org/wiki/Winkelminute Winkelsekunde]; Alternative zur Einheit S<br />
|-<br />
| M<br />
| [https://de.wikipedia.org/wiki/Winkelminute Winkelminute]; Alternative zur Einheit '<br />
|-<br />
| ′<br />
| [https://de.wikipedia.org/wiki/Winkelminute Winkelminute]; Alternative zur Einheit M<br />
|}<br />
<br />
=== Strom ===<br />
<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
!style="width: 33%;"|Einheit<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| mA<br />
| Milli[https://de.wikipedia.org/wiki/Ampere ampere]<br />
|-<br />
| A<br />
| [https://de.wikipedia.org/wiki/Ampere Ampere]<br />
|-<br />
| kA<br />
| Kilo[https://de.wikipedia.org/wiki/Ampere ampere]<br />
|-<br />
| MA<br />
| Mega[https://de.wikipedia.org/wiki/Ampere ampere]<br />
|}<br />
<br />
=== Energie/Arbeit ===<br />
<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
!style="width: 33%;"|Einheit<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| J<br />
| [https://de.wikipedia.org/wiki/Joule Joule]<br />
|-<br />
| Ws<br />
| [https://de.wikipedia.org/wiki/Joule Wattsekunde]; Alternative zur Einheit Joule<br />
|-<br />
| VAs<br />
| [https://de.wikipedia.org/wiki/Joule Voltamperesekunde]; Alternative zur Einheit Joule<br />
|-<br />
| CV<br />
| [https://de.wikipedia.org/wiki/Joule Coulombvolt]; Alternative zur Einheit Joule<br />
|}<br />
<br />
=== Kraft ===<br />
<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
!style="width: 33%;"|Einheit<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| mN<br />
| Milli[https://de.wikipedia.org/wiki/Newton_(Einheit) newton]<br />
|-<br />
| N<br />
| [https://de.wikipedia.org/wiki/Newton_(Einheit) Newton]<br />
|-<br />
| kN<br />
| Kilo[https://de.wikipedia.org/wiki/Newton_(Einheit) newton]<br />
|-<br />
| MN<br />
| Mega[https://de.wikipedia.org/wiki/Newton_(Einheit) newton]<br />
|-<br />
| lbf<br />
| [https://de.wikipedia.org/wiki/Pound-force Pound-force]<br />
|}<br />
<br />
=== Länge ===<br />
<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
!style="width: 33%;"|Einheit<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| nm<br />
| Nano[https://de.wikipedia.org/wiki/Meter meter]<br />
|-<br />
| um<br />
| Micro-[https://de.wikipedia.org/wiki/Meter Meter]; Alternative zur Einheit µm<br />
|-<br />
| µm<br />
| Micro[https://de.wikipedia.org/wiki/Meter meter]; Alternative zur Einheit um<br />
|-<br />
| mm<br />
| Milli[https://de.wikipedia.org/wiki/Meter meter]<br />
|-<br />
| cm<br />
| Zenti[https://de.wikipedia.org/wiki/Meter meter]<br />
|-<br />
| dm<br />
| Dezi[https://de.wikipedia.org/wiki/Meter meter]<br />
|-<br />
| m<br />
| [https://de.wikipedia.org/wiki/Meter Meter]<br />
|-<br />
| km<br />
| Kilo[https://de.wikipedia.org/wiki/Meter meter]<br />
|-<br />
| mil<br />
| [https://de.wikipedia.org/wiki/Thou Thou] (Abk. f. Thousandth of an inch); Alternative zur Einheit thou<br />
|-<br />
| thou<br />
| [https://de.wikipedia.org/wiki/Thou Thou] (Abk. f. Thousandth of an inch); Alternative zur Einheit mil<br />
|-<br />
| in<br />
| [https://de.wikipedia.org/wiki/Zoll_(Einheit) Zoll (Einheit)], in = inch, Alternative zur Einheit "<br />
|-<br />
| "<br />
| [https://en.wikipedia.org/wiki/Inch Inch]; Alternative zur Einheit in<br />
|-<br />
| ft<br />
| [https://de.wikipedia.org/wiki/Fu%C3%9F_(Einheit) Fuß (Einheit)]; Alternative zur Einheit '<br />
|-<br />
| '<br />
| [https://de.wikipedia.org/wiki/Fu%C3%9F_(Einheit) Fuß (Einheit)]; Alternative zur Einheit ft<br />
|-<br />
| yd<br />
| [https://de.wikipedia.org/wiki/Yard Yard]<br />
|-<br />
| mi<br />
| [https://de.wikipedia.org/wiki/Meile Meile]<br />
|}<br />
<br />
=== Lichtstärke ===<br />
<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
!style="width: 33%;"|Einheit<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| cd<br />
| [https://de.wikipedia.org/wiki/Candela Candela]<br />
|}<br />
<br />
=== Masse ===<br />
<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
!style="width: 33%;"|Einheit<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| ug<br />
| Micro[https://de.wikipedia.org/wiki/Gramm gramm]; Alternative zur Einheit µg<br />
|-<br />
| µg<br />
| Micro[https://de.wikipedia.org/wiki/Gramm gramm]; Alternative zur Einheit ug<br />
|-<br />
| mg<br />
| Milli[https://de.wikipedia.org/wiki/Gramm gramm]<br />
|-<br />
| g<br />
| [https://de.wikipedia.org/wiki/Gramm Gramm]<br />
|-<br />
| kg<br />
| Kilo[https://de.wikipedia.org/wiki/Gramm gramm]<br />
|-<br />
| t<br />
| [https://de.wikipedia.org/wiki/Tonne_(Einheit) Tonne (Einheit)]<br />
|-<br />
| oz<br />
| [https://de.wikipedia.org/wiki/Unze Unze]<br />
|-<br />
| lb<br />
| [https://de.wikipedia.org/wiki/Pfund Pfund]; Alternative zur Einheit lbm<br />
|-<br />
| lbm<br />
| [https://de.wikipedia.org/wiki/Pfund Pfund]; Alternative zur Einheit lb<br />
|-<br />
| st<br />
| [https://de.wikipedia.org/wiki/Stone_(Einheit) Stone (Einheit)]<br />
|-<br />
| cwt<br />
| [https://de.wikipedia.org/wiki/Hundredweight Hundredweight]<br />
|}<br />
<br />
=== Leistung ===<br />
<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
!style="width: 33%;"|Einheit<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| W<br />
| [https://de.wikipedia.org/wiki/Watt_(Einheit) Watt(Einheit)]<br />
|-<br />
| VA<br />
| [https://de.wikipedia.org/wiki/Voltampere Voltampere]<br />
|}<br />
<br />
=== Druck ===<br />
<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
!style="width: 33%;"|Einheit<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| Pa<br />
| [https://de.wikipedia.org/wiki/Pascal_(Einheit) Pascal (Einheit)]<br />
|-<br />
| kPa<br />
| Kilo-[https://de.wikipedia.org/wiki/Pascal_(Einheit) Pascal (Einheit)]<br />
|-<br />
| MPa<br />
| Mega-[https://de.wikipedia.org/wiki/Pascal_(Einheit) Pascal (Einheit)]<br />
|-<br />
| GPa<br />
| Giga-[https://de.wikipedia.org/wiki/Pascal_(Einheit) Pascal (Einheit)]<br />
|-<br />
| uTorr<br />
| Micro-[https://de.wikipedia.org/wiki/Torr Torr]; Alternative zu Einheit µTorr<br />
|-<br />
| µTorr<br />
| Micro-[https://de.wikipedia.org/wiki/Torr Torr]; Alternative zu Einheit uTorr<br />
|-<br />
| mTorr<br />
| Milli-[https://de.wikipedia.org/wiki/Torr Torr]<br />
|-<br />
| Torr<br />
| [https://de.wikipedia.org/wiki/Torr Torr]; 1 Torr = 133.32 Pa<br />
|-<br />
| psi<br />
| [https://de.wikipedia.org/wiki/Pound-force_per_square_inch Pound-force per square inch]; 1 psi = 6.895 kPa<br />
|-<br />
| ksi<br />
| Kilo-[https://en.wikipedia.org/wiki/Pounds_per_square_inch Pound-force per square inch]<br />
|}<br />
<br />
=== Temperatur ===<br />
<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
!style="width: 33%;"|Einheit<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| uK<br />
| Micro[https://de.wikipedia.org/wiki/Kelvin kelvin]; Alternative zur Einheit ''µK''<br />
|-<br />
| µK<br />
| Micro[https://de.wikipedia.org/wiki/Kelvin kelvin]; Alternative zur Einheit ''uK''<br />
|-<br />
| mK<br />
| Milli[https://de.wikipedia.org/wiki/Kelvin kelvin]<br />
|-<br />
| K<br />
| [https://de.wikipedia.org/wiki/Kelvin Kelvin]<br />
|}<br />
<br />
=== Zeit ===<br />
<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
!style="width: 33%;"|Einheit<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| s<br />
| [https://de.wikipedia.org/wiki/Sekunde Secunde]<br />
|-<br />
| min<br />
| [https://de.wikipedia.org/wiki/Minute Minute]<br />
|-<br />
| h<br />
| [https://de.wikipedia.org/wiki/Stunde Stunde]<br />
|}<br />
<br />
=== Volumen ===<br />
<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
!style="width: 33%;"|Einheit<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| l<br />
| [https://de.wikipedia.org/wiki/Liter Liter]<br />
|}<br />
<br />
=== Nicht unterstützte Einheiten ===<br />
<br />
Die folgenden häufig verwendeten Einheiten werden noch nicht unterstützt, für einige gibt es aber Alternativen:<br />
<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
!style="width: 25%;"|Einheit<br />
!style="width: 50%;"|Beschreibung<br />
!style="width: 25%;"|Alternative<br />
|-<br />
| °C<br />
| [https://de.wikipedia.org/wiki/Grad_Celsius Grad Celsius ]<br />
| [°C] + 273.15 K<br />
|-<br />
| °F<br />
| [https://de.wikipedia.org/wiki/Grad_Fahrenheit Grad Fahrenheit];<br />
| ([°F] + 459.67) × 5/9<br />
|-<br />
| u<br />
| [https://de.wikipedia.org/wiki/Atomare_Masseneinheit Atomare Masseneinheit]; Alternative zur Einheit Da (Dalton) =<br />
| 1.66053906660e-27 kg<br />
|-<br />
| Da<br />
| [https://de.wikipedia.org/wiki/Atomare_Masseneinheit Dalton]; Alternative zur Einheit u<br />
| 1.66053906660e-27 kg<br />
|-<br />
| sr<br />
| [https://de.wikipedia.org/wiki/Steradiant Steradiant]<br />
| nicht direkt<br />
|-<br />
| lm<br />
| [https://de.wikipedia.org/wiki/Lumen_(Einheit) Lumen (Einheit)]<br />
| nicht direkt<br />
|-<br />
| lx<br />
| [https://de.wikipedia.org/wiki/Lux_(Einheit) Lux (Einheit)]<br />
| nicht direkt<br />
|-<br />
| px<br />
| [https://de.wikipedia.org/wiki/Pixel Pixel]<br />
| nicht direkt<br />
|}<br />
{{Top}}<br />
==Ungültige Zeichen und Namen==<br />
<br />
Das Ausdrucks-Feature ist sehr leistungsfähig. Um das zu ermöglichen gibt es ein paar Einschränkungen bei ein paar Zeichen. Als Abhilfe gibt es in FreeCAD die Möglichkeit anstatt der Objektnamen sog. Bezeichner ('labels') zu verwenden und sich auf diese zu beziehen.<br />
<br />
In Fällen, in denen du keine Beschriftung verwenden kannst, wie z. B. der Name einer Skizzenbeschränkung, musst du dir bewusst sein, welche Zeichen nicht erlaubt sind.<br />
<br />
===Bezeichner===<br />
<br />
Für [[Object_name/de#Bezeichner|Bezeichner]] gibt es keine ungültigen Zeichen, jedoch müssen einige Zeichen maskiert werden:<br />
{| class="wikitable"<br />
!style="width: 33%;"|Zeichen<br />
!style="Breite: 66%;"|Beschreibung<br />
|-<br />
| {{incode|'}}, {{incode|\}}, {{incode|"}}<br />
| Müssen durch das Voranstellen von {{incode|\}} maskiert werden.<br />
|}<br />
<br />
Zum Beispiel muss der Bezeichner {{incode|Skizze\002}} als {{incode|<<Skizze\002>>}} referenziert werden.<br />
<br />
===Namen===<br />
<br />
[[Object_name/de#Name|Namen]] von Objekten wie Dimensionen, Skizzen, usw. dürfen folgende Zeichen oder Zeichenfolgen nicht enthalten. Anderenfalls ist der Namen ungültig.<br />
<br />
{| class="wikitable float-right mw-collapsible mw-uncollapsed"<br />
!style="width: 33%;"|Zeichen / Zeichenfolgen<br />
!style="width: 66%;"|Beschreibung<br />
|-<br />
| '''+''', '''-''', '''*''', '''/''', '''^''', '''_''', '''<''', '''>''', '''(''', ''')''', '''{''', '''}''', '''[''', ''']''', '''.''', ''',''', '''='''<br />
| Zeichen die mathematische Operatoren oder mathematische Konstruktionen sind.<br />
|-<br />
| '''A''', '''kA''', '''mA''', '''MA''', '''J''', '''K''', ''' ' ''', ''' ft ''', '''°''', und viele andere!<br />
| Zeichen und Zeichenfolgen, die Einheiten sind (siehe Abschnitt [[#Einheiten|Einheiten]] ).<br />
|-<br />
| '''#''', '''!''', '''?''', '''§''', '''$''', '''%''', '''&''', ''':''', ''';''', '''\''', '''<nowiki>|</nowiki>''', '''~''', '''∆''', '''¿''', und viele andere!<br />
| Zeichen, die als Platzhalter verwendet werden oder die Funktionen auslösen.<br />
|-<br />
| '''pi''', '''e'''<br />
| Mathematische Konstanten<br />
|-<br />
| '''´''', '''`''', ''' ' ''', '''"'''<br />
| Akzente<br />
|-<br />
| Leerzeichen (Space)<br />
| Ein Leerzeichen definiert das Ende eines Namens und kann daher nicht verwendet werden.<br />
|}<br />
<br />
Beispielsweise ist folgender Name gültig: {{incode|<<Sketch>>.Constraints.T2üßµ@}}. <br />
Hingegen sind diese ungültige Namen: {{incode|<<Sketch>>.Constraints.test\result_2}} (\r bedeutet "Wagenrücklauf (carriage return)") oder'''<<Sketch>>.Constraints.mol''' (mol ist eine Einheit).<br />
<br />
Da kürzere Namen (vor allem, wenn sie nur ein oder zwei Zeichen haben) leicht zu ungültigen Namen führen können, sollte die Verwendung längerer Namen in Betracht gezogen und/oder eine geeignete Namenskonvention festgelegt werden.<br />
<br />
===Zell Aliasse===<br />
<br />
Siehe [[Spreadsheet_SetAlias/de#Anwendung|Spreadsheet Alias-Namen festlegen]].<br />
{{Top}}<br />
== Referenzen auf CAD Daten ==<br />
<br />
Es ist möglich, Daten aus dem Modell selbst in einem Ausdruck zu verwenden. Um auf eine Eigenschaft zu verweisen, verwende {{incode|object.property}}. Wenn die Eigenschaft ein Verbund von Feldern ist, kann auf die einzelnen Felder mit {{incode|object.property.field}} zugegriffen werden. <br />
<br />
Die folgende Tabelle zeigt einige Beispiele:<br />
{| class="wikitable"<br />
!CAD-Daten<br />
!Aufruf im Ausdruck<br />
!Ergebnis<br />
|-<br />
|Parametrische Länge eines Würfels (Quaders) im Arbeitsbereich Part<br />
|{{incode|Würfel.Length}}<br />
|{{incode|Length}} mit der Einheit mm<br />
|-<br />
|Volumen des Würfels<br />
|{{incode|Würfel.Shape.Volume}}<br />
|Volume in mm&sup3; ohne Einheiten<br />
|-<br />
|Typ der Würfelform (geometrische Figur)<br />
|{{incode|Würfel.Shape.ShapeType}}<br />
|String: Solid<br />
|-<br />
|Bezeichnung des Würfels<br />
|{{incode|Würfel.Label}}<br />
|String: Label<br />
|-<br />
|X-Koordinate des Schwerpunktes des Würfels<br />
|{{incode|Würfel.Shape.CenterOfMass.x}}<br />
|X-Koordinate in mm ohne Einheiten<br />
|-<br />
|Vollständiges Würfel-Objekt<br />
|{{incode|Würfel._self}}<br />
|Objekttyp <Part::PartFeature><br />
|-<br />
|Wert der Beschränkung in einer Skizze<br />
|{{incode|Constraints.Width}}<br />
|numerischer Wert der benannten Beschränkung "{{incode|Width}}" (Breite) in der Skizze, wenn der Ausdruck in der Skizze selbst verwendet wird.<br />
|-<br />
|Wert der Beschränkung in einer Skizze<br />
|{{incode|MeineSkizze.Constraints.Width}}<br />
|numerischer Wert der benannten Beschränkung {{incode|Width}} in der Skizze, wenn der Ausdruck außerhalb der Skizze verwendet wird.<br />
|-<br />
|Wert eines Alias einer Kalkulationstabelle<br />
|{{incode|Spreadsheet.Depth}}<br />
|Wert eines Alias "{{incode|Depth}}" (Tiefe) in der Kalkulationstabelle {{incode|Spreadsheet}}<br />
|-<br />
|Wert einer lokalen Eigenschaft eines Objekts<br />
|{{incode|Length}}<br />
|Wert der Eigenschaft "{{incode|Length}}" (Länge) z.B. in einem aufgepolsteren (Pad-) Objekt, wenn der Ausdruck z.B. in {{PropertyData|Length2}} im gleichen Objekt verwendet wird.<br />
|}<br />
{{Top}}<br />
==Dokumentweit gültige globale Variablen==<br />
<br />
In FreeCAD gibt es zur Zeit kein Konzept für globale Variablen. Stattdessen können beliebige Variablen mit Hilfe der [[Spreadsheet Workbench/de|Arbeitsbereich Kalkulationstabelle]] als Zellen in einer Kalkulationstabelle definiert werden und dann mit Hilfe der Alias Eigenschaft für die Zelle (Rechtsklick auf die Zelle) einen Namen erhalten. Dann kann von jedem Ausdruck aus auf sie zugegriffen werden, wie auf jede andere Objekteigenschaft auch.<br />
{{Top}}<br />
== Dokumentenübergreifende Verweise ==<br />
<br />
Es ist (mit Begrenzungen) möglich, eine Eigenschaft eines Objekts in deinem aktuellen Dokument (".FCstd" Datei) durch Verwendung eines Ausdrucks zu definieren, um auf eine Eigenschaft eines Objekts in einem anderen Dokument zu verweisen (".FCstd" file). Zum Beispiel kann eine Zelle in einer Kalkulationstabelle oder die {{PropertyData/de|Länge}} eines Formteil Würfels usw. in einem Dokument durch einen Ausdruck definiert werden, der auf den X Platzierungswert oder eine andere Eigenschaft eines Objekts in einem anderen Dokument verweist.<br />
<br />
Der Name des Dokuments wird verwendet, um von einem anderen Dokument aus darauf zu referenzieren. Wenn ein Dokument zum ersten Mal gespeichert wird, muss dem Dokument ein Name gegeben werden. Dies ist normalerweise ein anderer Name als die Vorgabe "Unbenannt1". Um zu verhindern, dass Verknüpfungen beim Speichern des Hauptdokumentes verloren gehen, wenn dieses dabei einen anderen Namen bekommt, sollte das Hauptdokument zuerst mit einer Kalkulationstabelle erstellt werden. Danach kann der Inhalt des Dokuments geändert und das Dokument gespeichert werden, aber es darf nicht umbenannt werden.<br />
<br />
Sobald das Mutterdokument mit der Kalkulationstabelle erstellt und gespeichert (benannt) ist, können abhängige Dokumente erstellt werden. Angenommen, du nennst das Mutterdokument {{incode|master}}, die Kalkulationstabelle {{incode|modelConstants}} und gibst einer Zelle einen Alias-Namen {{incode|Length}}, dann kannst du auf den Wert zugreifen als:<br />
<br />
{{incode|master#modelConstants.Length}}<br />
<br />
'''Hinweis:''' dass das Mutterdokument geladen sein muss, damit die Werte des Mutterdokuments für das abhängige Dokument verfügbar sind.<br />
<br />
Leider meldet der integrierte Prüfer manchmal, dass ein gültiger Name nicht existiert. Tippe trotzdem weiter. Wenn du die vollständige Referenz eingegeben hast, wird die Schaltfläche {{Button|OK}} aktiv.<br />
<br />
Natürlich liegt es bei dir, die zugehörigen Dokumente später zu laden, wenn du etwas ändern willst.<br />
{{Top}}<br />
==Bekannte Probleme / Verbleibende Aufgaben==<br />
<br />
* Das Abhängigkeitsdiagramm basiert auf der Beziehung zwischen Dokumentobjekten, nicht auf Eigenschaften. Das bedeutet, dass man nicht Daten einem Objekt zur Verfügung stellen kann und gleichzeitig Daten von diesem Objekt abfragt. Auch wenn es beispielsweise keine zyklischen Abhängigkeiten gibt, wenn die Eigenschaften selbst berücksichtigt werden, kann es vorkommen, dass es kein Objekt gibt, das seine Abmessungen aus einer Kalkulationstabelle erhält und dann das Volumen dieses Objekts in derselben Kalkulationstabelle anzeigt. Zur Umgehung des Problems können mehrere Tabellen angelegt werden: Eine Tabelle, die die Objektdaten zur Verfügung stellt und eine andere zur Datenauswertung.<br />
* Der Analysator für Ausdrücke kann mit Klammern nicht gut umgehen und ist nicht in der Lage, einige Ausdrücke korrekt zu analysieren. Zum Beispiel führt {{incode|<nowiki>=</nowiki> (A1 > A2) ? 1 : 0}} zu einem Fehler, während {{incode|<nowiki>=</nowiki> A1 > A2 ? 1 : 0}} akzeptiert wird. Der Ausdruck {{incode|<nowiki>=</nowiki> 5 + ((A1>A2) ? 1 : 0)}} kann in keiner Form eingegeben werden.<br />
* Wie oben erwähnt, erkennt der eingebaute Formelprüfer einen gültigen Namen manchmal nicht. Daher einfach mit der Eingabe fortfahren. Wenn die vollständige Verknüpfung eingegeben ist, wird die Schaltfläche {{Button|OK}} aktiv.<br />
* FreeCAD hat bisher keinen eingebauten Ausdrucksverwalter, mit dem alle Ausdrücke in einem Dokument aufgeführt und erstellt, gelöscht, abgefragt, etc. werden können. Aber es ist ein Addon verfügbar: [https://github.com/gbroques/fcxref fcxref expression manager].<br />
* Offene Fehler/Tickets für die Ausdrücke (Expressions) können hier nachgeschlagen werden: [https://freecadweb.org/tracker/set_project.php?project_id=4;20 FreeCAD Bugtracker Expressions category]<br />
{{Top}}<br />
<br />
{{Powerdocnavi{{#translation:}}}}<br />
[[Category:Spreadsheet{{#translation:}}]]</div>Chrisbhttps://wiki.freecad.org/index.php?title=Translations:Expressions/31/de&diff=1174770Translations:Expressions/31/de2022-08-20T06:10:38Z<p>Chrisb: </p>
<hr />
<div>{| class="wikitable"<br />
!style="width: 20%;"|Funktion<br />
!style="width: 55%;"|Beschreibung<br />
!style="width: 25%;"|Wertebereich<br />
|-<br />
| abs(x)<br />
| [https://de.wikipedia.org/wiki/Betragsfunktion Betragsfunktion]<br />
| alle<br />
|-<br />
| ceil(x)<br />
| [https://de.wikipedia.org/wiki/Abrundungsfunktion_und_Aufrundungsfunktion Aufrundungsfunktion], kleinster ganzzahliger Wert größer oder gleich x<br />
| alle<br />
|-<br />
| floor(x)<br />
| [https://de.wikipedia.org/wiki/Abrundungsfunktion_und_Aufrundungsfunktion Abrundungsfunktion], größter ganzzahliger Wert kleiner oder gleich x<br />
| alle<br />
|-<br />
| mod(x, y)<br />
| [https://de.wikipedia.org/wiki/Division_mit_Rest Division mit Rest] nach einer Division ''x'' durch ''y''<br />
| alle, außer y = 0<br />
|-<br />
| round(x)<br />
| [https://de.wikipedia.org/wiki/Rundung Rundung] auf die nächste Ganzzahl in Richtung Null<br />
| alle<br />
|-<br />
| trunc(x)<br />
| [https://de.wikipedia.org/wiki/Trunkierung_(Mathematik) Trunkierung] auf die nächste Ganzzahl (Kürzen auf einer Reihe oder Zahl auf eine gewisse Länge)<br />
| alle<br />
|}</div>Chrisbhttps://wiki.freecad.org/index.php?title=Debugging&diff=1162275Debugging2022-07-12T22:40:29Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:27--><br />
{{Docnav<br />
|[[Bug_Triage|Bug Triage]]<br />
|[[Testing|Testing]]<br />
}}<br />
<br />
</translate><br />
{{TOCright}}<br />
<translate><br />
<br />
== Test First == <!--T:1--><br />
<br />
<!--T:51--><br />
Before you go through the pain of debugging use the [[Testing|Test framework]] to check if the standard tests work properly. If they do not run complete there is possibly a broken installation.<br />
<br />
== Command Line == <!--T:2--><br />
<br />
<!--T:52--><br />
The ''debugging'' of FreeCAD is supported by a few internal mechanisms. The command line version of FreeCAD provides some options for debugging support.<br />
<br />
<!--T:13--><br />
These are the currently recognized options in FreeCAD 0.19:<br />
<br />
<!--T:14--><br />
Generic options:<br />
-v [ --version ] Prints version string<br />
-h [ --help ] Prints help message<br />
-c [ --console ] Starts in console mode<br />
--response-file arg Can be specified with '@name', too<br />
--dump-config Dumps configuration<br />
--get-config arg Prints the value of the requested configuration key<br />
<br />
<!--T:15--><br />
Configuration:<br />
-l [ --write-log ] Writes a log file to:<br />
$HOME/.FreeCAD/FreeCAD.log (Linux)<br />
$HOME/Library/Application\ Support/FreeCAD/FreeCAD.log (macOS)<br />
%APPDATA%\FreeCAD\FreeCAD.log (Windows)<br />
--log-file arg Unlike to --write-log this allows to log to an <br />
arbitrary file<br />
-u [ --user-cfg ] arg User config file to load/save user settings<br />
-s [ --system-cfg ] arg System config file to load/save system settings<br />
-t [ --run-test ] arg Test case - or 0 for all<br />
-M [ --module-path ] arg Additional module paths<br />
-P [ --python-path ] arg Additional Python paths<br />
--single-instance Allow to run a single instance of the application<br />
<br />
== Generating a Backtrace == <!--T:3--><br />
<br />
<!--T:53--><br />
If you are running a version of FreeCAD from the bleeding edge of the development curve, it may "crash". You can help solve such problems by providing the developers with a "backtrace". To do this, you need to be running a "debug build" of the software. "Debug build" is a parameter that is set at compile time, so you'll either need to compile FreeCAD yourself, or obtain a pre-compiled "debug" version. <br />
<br />
=== For Linux === <!--T:4--><br />
<br />
</translate><br />
<!-- START OF COLLAPSIBLE DIV --><div class="toccolours mw-collapsible mw-collapsed" style="width:800px;"><br />
<translate><br />
<br />
<!--T:48--><br />
Linux Debugging → <br />
<br />
</translate><br />
<div class="mw-collapsible-content"><br />
<translate><br />
<br />
<!--T:49--><br />
Prerequisites: <br />
<br />
<!--T:5--><br />
* software package gdb installed<br />
* a debug build of FreeCAD (at this time only available by [[Compile_on_Linux#For_a_Debug_build|building from source]])<br />
* a FreeCAD model that causes a crash<br />
<br />
<!--T:6--><br />
Steps:<br />
Enter the following in your terminal window:<br />
<br />
<!--T:65--><br />
Find FreeCAD binary on your system:<br />
<br />
</translate><br />
{{Code|code=<br />
$ whereis freecad<br />
freecad: /usr/local/freecad <--- for example<br />
<br />
$ cd /usr/local/freecad/bin<br />
$ gdb FreeCAD<br />
}}<br />
<translate><br />
<br />
<!--T:50--><br />
GNUdebugger will output some initializing information. The (gdb) shows GNUDebugger is running in the terminal, now input:<br />
<br />
</translate><br />
{{Code|code=<br />
(gdb) handle SIG33 noprint nostop<br />
(gdb) run<br />
}}<br />
<translate><br />
<br />
<!--T:7--><br />
FreeCAD will now start up. Perform the steps that cause FreeCAD to crash or freeze, then enter in the terminal window:<br />
<br />
</translate><br />
{{Code|code=<br />
(gdb) bt<br />
}}<br />
<translate><br />
<br />
<!--T:38--><br />
This will generate a lengthy listing of exactly what the program was doing when it crashed or froze. Include this with your problem report.<br />
<br />
</translate><br />
{{Code|code=<br />
(gdb) bt full<br />
}}<br />
<translate><br />
<br />
<!--T:39--><br />
Print the values of the local variables also. This can be combined with a number to limit the number of frames shown.<br />
<br />
</translate><br />
</div></div> <!-- END OF COLLAPSIBLE DIV --><br />
<translate><br />
<br />
=== For macOS === <!--T:16--><br />
<br />
</translate><br />
<!-- START OF COLLAPISBLE DIV --><div class="toccolours mw-collapsible mw-collapsed" style="width:800px;"><br />
<translate><br />
<br />
<!--T:40--><br />
macOS Debugging → <br />
<br />
</translate><br />
<div class="mw-collapsible-content"><br />
<translate><br />
<br />
<!--T:41--><br />
Prerequisites: <br />
<br />
<!--T:17--><br />
* software package lldb installed<br />
* a debug build of FreeCAD<br />
* a FreeCAD model that causes a crash<br />
<br />
<!--T:18--><br />
Steps:<br />
Enter the following in your terminal window:<br />
<br />
</translate><br />
{{Code|code=<br />
$ cd FreeCAD/bin<br />
$ lldb FreeCAD<br />
}}<br />
<translate><br />
<br />
<!--T:42--><br />
LLDB will output some initializing information. The (lldb) shows the debugger is running in the terminal, now input:<br />
<br />
</translate><br />
{{Code|code=<br />
(lldb) run<br />
}}<br />
<translate><br />
<br />
<!--T:20--><br />
FreeCAD will now start up. Perform the steps that cause FreeCAD to crash or freeze, then enter in the terminal window:<br />
<br />
</translate><br />
{{Code|code=<br />
(lldb) bt<br />
}}<br />
<translate><br />
<br />
<!--T:43--><br />
This will generate a lengthy listing of exactly what the program was doing when it crashed or froze. Include this with your problem report.<br />
<br />
</translate><br />
</div></div> <!-- END OF COLLAPSIBLE DIV --><br />
<translate><br />
<br />
== List Libraries Loaded by FreeCAD == <!--T:55--><br />
<br />
<!--T:56--><br />
(Applicable to Linux and macOS)<br />
<br />
<!--T:57--><br />
Sometimes it's helpful to understand what libraries FreeCAD is loading, specifically if there are multiple libraries being loaded of the same name but different versions (version collision). In order to see which libraries are loaded by FreeCAD when it crashes you should open a terminal and run it in the debugger. In a second terminal window, find out the process id of FreeCAD:<br />
<br />
<!--T:58--><br />
{{incode|ps -A &#124; grep FreeCAD}}<br />
<br />
<!--T:59--><br />
Use the returned id and pass it to {{incode|lsof}}:<br />
<br />
<!--T:60--><br />
{{incode| lsof -p process_id}}<br />
<br />
<!--T:61--><br />
This prints a long list of loaded resources. So for example, if trying to ascertain if more than one Coin3d library versions is loaded, scroll through the list or search directly for Coin in the output:<br />
<br />
<!--T:62--><br />
{{incode|lsof -p process_id &#124; grep Coin}}<br />
<br />
== Python Debugging == <!--T:8--><br />
<br />
<!--T:54--><br />
For a more modern approach to debugging Python, see these posts:<br />
* [https://forum.freecadweb.org/viewtopic.php?f=22&t=28901 Debugging macros with VS 2017]<br />
* [https://forum.freecadweb.org/viewtopic.php?f=10&t=35383 Python workbenches debugging]<br />
* [https://forum.freecadweb.org/viewtopic.php?f=4&t=40251 python3.dll, Qt5Windgets.dll, Qt5Gui.dll and Qt5Core.dll not found]<br />
<br />
=== winpdb === <!--T:36--><br />
<br />
</translate><br />
<!-- START OF COLLAPSIBLE DIV --><div class="toccolours mw-collapsible mw-collapsed" style="width:800px;"><br />
<translate><br />
<br />
<!--T:44--><br />
winpdb Debugging → <br />
<br />
</translate><br />
<div class="mw-collapsible-content"><br />
<translate><br />
<br />
<!--T:45--><br />
Here is an example of using ''Winpdb'' inside FreeCAD:<br />
<br />
<!--T:22--><br />
We need the Python debugger: ''Winpdb''. If you do not have it installed, on Ubuntu/Debian install it with:<br />
<br />
</translate><br />
{{Code|code=<br />
sudo apt-get install winpdb<br />
}}<br />
<translate><br />
<br />
<!--T:24--><br />
Now lets setup the debugger.<br />
<br />
<!--T:25--><br />
# Start ''Winpdb''.<br />
# Set the debugger password to "test": Go to menu ''File'' → ''Password" and set the password.<br />
<br />
<!--T:26--><br />
Now we will run a test Python script in FreeCAD step by step.<br />
<br />
<!--T:9--><br />
# Run winpdb and set the password (e.g. test)<br />
# Create a Python file with this content<br />
<br />
</translate><br />
{{Code|code=<br />
import rpdb2<br />
rpdb2.start_embedded_debugger("test")<br />
import FreeCAD<br />
import Part<br />
import Draft<br />
print "hello"<br />
print "hello"<br />
import Draft<br />
points=[FreeCAD.Vector(-3.0,-1.0,0.0),FreeCAD.Vector(-2.0,0.0,0.0)]<br />
Draft.makeWire(points,closed=False,face=False,support=None)<br />
}}<br />
<translate><br />
<br />
<!--T:10--><br />
# Start FreeCAD and load the above file into FreeCAD<br />
# Press F6 to execute it<br />
# Now FreeCAD will become unresponsive because the Python debugger is waiting<br />
# Switch to the Windpdb GUI and click on "Attach". After a few seconds an item "<Input>" appears where you have to double-click<br />
# Now the currently executed script appears in Winpdb.<br />
# Set a break at the last line and press F5<br />
# Now press F7 to step into the Python code of Draft.makeWire<br />
<br />
</translate><br />
</div></div> <!-- END OF COLLAPSIBLE DIV --><br />
<translate><br />
<br />
=== Visual Studio Code (VS Code) === <!--T:29--><br />
<br />
</translate><br />
<!-- START OF COLLAPSIBLE DIV --><div class="toccolours mw-collapsible mw-collapsed" style="width:800px;"><br />
<translate><br />
<br />
<!--T:46--><br />
VS Code Debugging → <br />
<br />
</translate><br />
<div class="mw-collapsible-content"><br />
<translate><br />
<br />
<!--T:47--><br />
Prerequisites: <br />
<br />
<!--T:30--><br />
* The ptvsd package needs to be installed in a Python 3 outside of FreeCAD, then the module must be copied to FreeCAD's Python library folder.<br />
<br />
</translate><br />
{{Code|code=<br />
# In a cmd window that has a path to you local Python 3:<br />
pip install ptvsd<br />
# Then if your Python is installed in C:\Users\<userid>\AppData\Local\Programs\Python\Python37<br />
# and your FreeCAD is installed in C:\freecad\bin<br />
xcopy "C:\Users\<userid>\AppData\Local\Programs\Python\Python37\Lib\site-packages\ptvsd" "C:\freecad\bin\Lib\site-packages\ptvsd"<br />
}}<br />
<translate><br />
<br />
<!--T:31--><br />
[https://pypi.org/project/ptvsd/ pypi page]<br />
<br />
<!--T:32--><br />
[https://code.visualstudio.com/docs/python/debugging#_remote-debugging Visual Studio Code documentation for remote debugging]<br />
<br />
<!--T:33--><br />
Steps:<br />
* Add following code at the beginning of your script<br />
<br />
</translate><br />
{{Code|code=<br />
import ptvsd<br />
print("Waiting for debugger attach")<br />
# 5678 is the default attach port in the VS Code debug configurations<br />
ptvsd.enable_attach(address=('localhost', 5678), redirect_output=True)<br />
ptvsd.wait_for_attach()<br />
}}<br />
<translate><br />
<br />
<!--T:34--><br />
* Add a debug configuration in Visual Studio Code {{MenuCommand|Debug → Add Configurations…}}. <br />
* The config should look like this:<br />
<br />
</translate><br />
<!--NOT CHANGE THE <pre> </pre> BALISE CAUSE THE PIPE OR SPACE IN MACRO CODE CUT THE MACRO--><br />
<pre><br />
"configurations": [<br />
{<br />
"name": "Python: Attacher",<br />
"type": "python",<br />
"request": "attach",<br />
"port": 5678,<br />
"host": "localhost",<br />
"pathMappings": [<br />
{<br />
"localRoot": "${workspaceFolder}",<br />
"remoteRoot": "."<br />
}<br />
]<br />
},<br />
</pre><br />
<translate><br />
<br />
<!--T:35--><br />
* In VS Code add a breakpoint anywhere you want.<br />
* Launch the script in FreeCAD. FreeCAD freeze waiting for attachment.<br />
* In VS Code start debugging using created configuration. You should see variables in debugger area.<br />
* When setting breakpoints, VS Code will complain about not finding the .py file opened in the VS Code editor.<br />
** Change "remoteRoot": "." to "remoteRoot": "<directory of file>"<br />
*** For example, if the Python file resides in ''/home/FC_myscripts/myscript.py''<br />
*** Change to: "remoteRoot": "/home/FC_myscripts"<br />
** If you're just debugging FreeCAD macros from the FreeCAD macro folder, and that folder is "C:/Users/<userid>/AppData/Roaming/FreeCAD/Macro", then use:<br />
*** "localRoot": "C:/Users/<userid>/AppData/Roaming/FreeCAD/Macro",<br />
*** "remoteRoot": "C:/Users/<userid>/AppData/Roaming/FreeCAD/Macro"<br />
* If your macro can't find ptvsd despite having installed it somewhere precede 'import ptvsd' with<br />
<br />
</translate><br />
{{Code|code=<br />
from sys import path<br />
sys.path.append('/path/to/site-packages')<br />
}}<br />
<translate><br />
<br />
<!--T:66--><br />
Where the path is to the directory where ptvsd was installed.<br />
* On the left bottom edge of VSCode you can choose the Python executable - it's best to make this the version packaged with FreeCAD.<br />
In the Mac package it is /Applications/FreeCAD.App/Contents/Resources/bin/python.<br />
<br />
<!--T:67--><br />
You can locate it on your system by typing<br />
<br />
</translate><br />
{{Code|code=<br />
import sys<br />
print(sys.executable)<br />
}}<br />
<translate><br />
<br />
<!--T:68--><br />
into FreeCAD's Python console.<br />
<br />
</translate><br />
</div></div> <!-- END OF COLLAPSIBLE DIV --><br />
<translate><br />
<br />
=== With LiClipse and AppImage === <!--T:69--><br />
<br />
</translate><br />
<!-- START OF COLLAPSIBLE DIV --><div class="toccolours mw-collapsible mw-collapsed" style="width:800px;"><br />
<translate><br />
<br />
<!--T:70--><br />
LiClipse Debugging → <br />
<br />
</translate><br />
<div class="mw-collapsible-content"><br />
<translate><br />
<br />
<!--T:71--><br />
* Extract AppImage.<br />
<br />
</translate><br />
{{Code|code=<br />
> ./your location/FreeCAD_xxx.AppImage --appimage-extract<br />
> cd squashfs-root/<br />
}}<br />
<translate><br />
<br />
<!--T:72--><br />
* The sqashfs-root location is where the debugger later on is hooked up to.<br />
<br />
<!--T:73--><br />
* Make sure you can start a FreeCAD session from within the squashfs-root location.<br />
<br />
</translate><br />
{{Code|code=<br />
squashfs-root> ./usr/bin/freecadcmd<br />
}}<br />
<translate><br />
<br />
<!--T:74--><br />
* Should start up a FreeCAD commandline session.<br />
<br />
<!--T:75--><br />
* Install [https://www.liclipse.com/ LiClipse].<br />
** Comes ready with pydev and has installers for all platforms.<br />
** For linux it is just to extract (to any location) and run.<br />
<br />
<!--T:76--><br />
* Configure liclipse for debugging.<br />
** Right-click pydev icon (upper right corner) and choose customize.<br />
*** Activate "PyDev Debug" (through checkbox, or it might be needed to go to tab "Action Set Availability" and activate there first).<br />
*** In the pydev menu you can now choose "start debug server".<br />
** Use menu window/open perspective/other > debug.<br />
*** Right-click debug icon (upper right corner) and choose customize.<br />
*** Checking "Debug" brings the debugging navigation tools to the toolbar.<br />
** Open preferences through menu window/preferences.<br />
*** In PyDev/Interpreters add "new Interpreter by browsing".<br />
*** The added interpreter should be: {{incode|your loc/squashfs-root/usr/bin/python}}.<br />
*** If you are only using this for fc, you can add AddOn workbench folders as well, or do that in a pydev-project later on.<br />
<br />
<!--T:77--><br />
* Find path to {{incode|pydevd.py}} in your liclipse installation.<br />
** Something along the lines of: {{incode|your location/liclipse/plugins/org.python.pydev.xx/pysrc}}.<br />
* Create a regular pydev-project in liclipse.<br />
** Import external sources, for example a macro that you want to debug, or an external workbench.<br />
** In that macro (or workbench .py file) add the code lines:<br />
<br />
</translate><br />
: {{Code|code=<br />
import sys; sys.path.append("path ending with /pysrc")<br />
import pydevd; pydevd.settrace()<br />
}}<br />
<translate><br />
<br />
<!--T:78--><br />
:* This is where the execution will halt when the macro is run.<br />
<br />
<!--T:79--><br />
* Start the liclipse debug server (menu pydev).<br />
<br />
<!--T:80--><br />
* Start FreeCAD.<br />
<br />
</translate><br />
{{Code|code=<br />
squashfs-root> ./usr/bin/freecad<br />
}}<br />
<translate><br />
<br />
<!--T:81--><br />
* Run the macro (or any other file with a {{incode|pydevd.settrace()}} trigger) from within freecad, as you would normally do.<br />
<br />
<!--T:82--><br />
* Happy debugging.<br />
<br />
<!--T:83--><br />
* The use of LiClipse for remote debugging, and the steps described here related to liclipse, should work on any platform. The parts related to AppImage is for linux only.<br />
<br />
</translate><br />
</div></div> <!-- END OF COLLAPSIBLE DIV --><br />
<translate><br />
<br />
== Debugging OpenCasCade == <!--T:63--><br />
<br />
<!--T:64--><br />
For developers needing to dig deeper in to the OpenCasCade kernel, user @abdullah has created a [https://forum.freecadweb.org/viewtopic.php?f=10&t=47017 thread] orientation discussing how to do so.<br />
<br />
<br />
<!--T:11--><br />
{{Docnav<br />
|[[Bug_Triage|Bug Triage]]<br />
|[[Testing|Testing]]<br />
}}<br />
<br />
</translate><br />
{{Powerdocnavi{{#translation:}}}}<br />
[[Category:Developer Documentation{{#translation:}}]]<br />
[[Category:Python Code{{#translation:}}]]<br />
{{clear}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=CAM_Postprocessor_Customization&diff=1158169CAM Postprocessor Customization2022-06-26T20:37:07Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
{{UnfinishedDocu{{#translation:}}}}<br />
<translate><br />
<br />
<!--T:29--><br />
{{Docnav<br />
|[[Path_SetupSheet|SetupSheet]]<br />
|[[Path_fourth_axis|Fourth axis]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=<br />
|IconR=<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{TOCright}}<br />
<translate><br />
<br />
==Introduction== <!--T:2--><br />
<br />
<!--T:3--><br />
FreeCAD uses as internal representation for the generated paths, so called G-codes. They can describe such things as: speed and feed rates, stopping the motor etc... But the most important thing is the movements they describe. These movements are rather simple: They can be straight lines or they can be circular arcs. More sophisticated curves such as B-splines are already approximated by FreeCAD's [[Image:Workbench_Path.svg|24px]] [[Path_Workbench|Path Workbench]].<br />
<br />
==What the postprocessor can do for you== <!--T:4--><br />
<br />
<!--T:5--><br />
Many mills use G-codes as well to control the milling process. They may look almost like the internal codes, but there may be some differences:<br />
* the machine can have a special startup sequence<br />
* it can have a special stop sequence<br />
* arcs can be defined with a relative or an absolute center<br />
* it may require line numbers in a certain format<br />
* it can used so called canned cycles for predefined subprocesses such as drilling<br />
* you might prefer your G-code output in either metric or imperial units.<br />
* it might be useful to perform a set of moves prior to calling for a tool change to make the action easier for the operator<br />
* you might wish to include comments for readability or suppress them to keep the program small<br />
* you might wish to include a custom header to identify or document the program for future reference.<br />
* ...<br />
<br />
<!--T:6--><br />
Furthermore there are other languages to control a mill, such as HPGL, DXF, or others.<br />
<br />
<!--T:7--><br />
The postprocessor is a program which translates the internal codes into a complete file, that can be uploaded to your machine.<br />
<br />
==Preparation for writing your own postprocessor== <!--T:8--><br />
<br />
<!--T:9--><br />
You may start with a very simple model showing how your machine reads straight lines and arcs. Prepare it with any program suitable for your machine.<br />
<br />
<!--T:10--><br />
A file for such paths starting at (0,0,0) and going towards Y would be helpful. Make sure it is the tool itself moving along this path, i.e. no tool radius compensation must be applied.<br />
<br />
<!--T:11--><br />
[[File:Path_PostProcessorSketch.png]]<br />
<br />
<!--T:12--><br />
The path in FreeCAD would look like this. Please note the small blue arrow, it indicates the starting direction. For a very first go you may provide only one level in the XY-plane.<br />
<br />
<!--T:13--><br />
[[File:Path PostProcessorModel.png]]<br />
<br />
<!--T:14--><br />
You can then have a look at the file and compare it to the output of existing postprocessors such as {{FileName|linux_cnc_post.py}} or {{FileName|grbl_post.py}} and try yourself to adapt them or you upload your to the [https://forum.freecadweb.org/viewforum.php?f=15 Path forum] to get some help.<br />
<br />
==Naming convention== <!--T:15--><br />
<br />
<!--T:16--><br />
The postprocessor can be placed in your FreeCAD macro directory. For a prefix {{FileName|<filename>}} the postprocessor should get the name {{FileName|<filename>_post.py}}. Please note that the postfix and extension, {{FileName|_post.py}}, have to be lower case.<br />
<br />
<!--T:32--><br />
The new name should be reflected at the head of the parser arguments list in the {{FileName|<filename>_post.py}} file, e.g.:<br />
<br />
<!--T:33--><br />
{{Code|lang=text|code=<br />
parser = argparse.ArgumentParser(prog="grbl", add_help=False)<br />
}}<br />
<br />
<!--T:17--><br />
If you are testing, place it in your macro directory. If it functions well, please consider providing it for others to benefit (post it to the FreeCAD Path forum) so that it can be included in the FreeCAD distribution going forward.<br />
<br />
==Other existing postprocessors== <!--T:18--><br />
<br />
<!--T:19--><br />
For comparison you may look at the postprocessors which come with your FreeCAD installation. They are located under the directory <path_to_your_FreeCAD_distro>/Mod/Path/PathScripts/post. Widely used are the [http://linuxcnc.org/ linuxcnc] and the [https://github.com/grbl/grbl grbl] postprocessors. Studying their code can give helpful insights.<br />
<br />
==Programming your own postprocessor== <!--T:22--><br />
<br />
<!--T:31--><br />
This post discusses some internals from the linuxcnc postprocessors. The same strucure is used in other postprocessors as well.<br />
<br />
<!--T:23--><br />
Looking at linux_cnc_post.py, you'll see the export function (as of 0.19.20514 its at line 156)<br />
<br />
</translate><br />
{{Code|code=<br />
def export(objectslist, filename, argstring):<br />
# pylint: disable=global-statement<br />
...<br />
gcode = ""<br />
...<br />
...<br />
}}<br />
<translate><br />
<br />
<!--T:24--><br />
it collects step by step in the variable "gcode" the processed G-codes and handles the overall exporting of post-processable objects (operations, tools, jobs ,etc).<br />
Export handles the high level stuff like comments and coolant but any objects that have multiple path commands (tool changes and operations) it delegates to the parse function (as of 0.19.20514 its at line 288).<br />
<br />
</translate><br />
{{Code|code=<br />
def parse(pathobj):<br />
...<br />
out = ""<br />
lastcommand = None<br />
...<br />
...<br />
}}<br />
<translate><br />
<br />
<!--T:25--><br />
Similarly to the "export" function collects parse the G-codes in the variable "out". In the variable "command" the commands as seen in the Path workbench's "inspect G-code" function are stored and can be investigated for further processing.<br />
<br />
</translate><br />
{{Code|code=<br />
for c in pathobj.Path.Commands:<br />
<br />
command = c.Name<br />
}}<br />
<translate><br />
<br />
<!--T:26--><br />
It recognizes the different G, M, F, S, and other G-codes. By remembering the last command in the variable "lastcommand" it can suppress subsequent repetitions of modal commands.<br />
<br />
<!--T:27--><br />
Both parse and export are just formatting strings and concatenating them together into what will be the final output.<br />
<br />
<!--T:28--><br />
You'll see that both functions also call the "linenumber()" function. If the user wants line numbers, the linenumber function returns the string to stick in to the appropriate spot, otherwise it returns an empty string so nothing is added.<br />
<br />
==Related== <!--T:20--><br />
<br />
<!--T:21--><br />
* [[Image:Path_Post.svg|24px]] [[Path_Post|Path PostProcess]]<br />
<br />
<br />
<!--T:30--><br />
{{Docnav<br />
|[[Path_SetupSheet|SetupSheet]]<br />
|[[Path_fourth_axis|Fourth axis]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=<br />
|IconR=<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{Path_Tools_navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=CAM_Tools&diff=1157497CAM Tools2022-06-24T22:49:34Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
{{UnfinishedDocu{{#translation:}}}}<br />
<translate><br />
<br />
<!--T:1--><br />
{{Docnav<br />
|[[Path_Area_Workplane|Area Workplane]]<br />
|[[Path_ToolShape|ToolShape]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=Path_Area_Workplane.svg<br />
|IconR=<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{TOCright}}<br />
<translate><br />
<br />
== Description == <!--T:2--><br />
<br />
<!--T:3--><br />
This page describes the ToolBit architecture used in the [[Path_Workbench|Path Workbench]] which became the default for FreeCAD v 0.19. For the older 'Legacy' tool system see [[Path_ToolLibraryEdit|Path ToolLibraryEdit]]. Tools in the Path workbench are handled differently than in other CAM packages.<br />
<br />
<!--T:4--><br />
There are several concepts that the user needs to understand:<br />
<br />
<!--T:5--><br />
* [[Path_ToolShape|Path ToolShapes]]: are templates for creating toolbits. Toolshapes are FreeCAD documents that model the tool using named constraints. The toolshape is an ''abstract'' tool template from which tool instances (called toolbits) are created. For example, all endmills will share the same toolshape file.<br />
<br />
<!--T:6--><br />
* [[Path_ToolBit|Path ToolBit]]s: are instances of a toolshape. A toolbit will have ''specific'' values for each of the named constraints in the toolshape. A toolbit is used in a Path Job through a Tool Controller (TC). The same toolbit can exist in multiple libraries.<br />
<br />
<!--T:7--><br />
* [[Path_ToolBit_Library|Path ToolBit Library]]: contains an arbitrary collection of toolbits. The specific tools in a library is entirely up to the user. Possible use cases for libraries:<br />
** A hobbyist user may have only one library for all of the tools they own.<br />
** A library may contain all the tools used for a specific material like aluminum or wood.<br />
** A library may have toolbits for working on specific material.<br />
** A library may hold toolbits from a specific supplier.<br />
** A library may correspond to an automatic tool changer layout.<br />
<br />
<!--T:8--><br />
A [[Path_ToolController|Tool Controller]] controls how a tool is used in a Path Job. A controller combines the toolbit with properties for spindle speed, direction and Horizontal/Vertical feed rates.<br />
<br />
== Dialogs == <!--T:9--><br />
<br />
<!--T:10--><br />
The user will interact via path menu with the tool management system in two different workflows. Each workflow has dedicated GUI elements.<br />
<br />
<!--T:11--><br />
* {{Button|[[Image:Path_ToolBitLibraryOpen.svg|24px]] [[Path_ToolBitDock|Toolbit Dock]]}} view indicated at the box top as ''Tool selector'', for using tools in a Path Job by creating Tool Controllers.<br />
* {{Button|[[Image:Path_ToolBitDock.svg|24px]] [[Path_ToolBitLibraryOpen|Toolbit Library Manager]]}} for managing the user's Toolbit collection with ''Create Toolbit'', ''Add Existing'' and ''Remove'' buttons.<br />
<br />
== Organization == <!--T:12--><br />
<br />
<!--T:13--><br />
When FreeCAD is installed an example hierarchy of tool libraries and toolbits is created in the installation directory at: <br />
<br />
<!--T:14--><br />
* On Linux it is usually {{FileName|/usr/lib64/FreeCAD/Mod/Path/Tools}}<br />
* On Windows it is usually {{FileName|C:\Program Files\FreeCAD\Mod\Path\Tools}}<br />
* On macOS it is usually {{FileName|/Applications/FreeCAD.app/Contents/Resources/Mod/Path/Tools}}<br />
<br />
<!--T:15--><br />
<pre><br />
Tools<br />
+ Bit<br />
+ Library<br />
+ Shape<br />
</pre><br />
<br />
<!--T:16--><br />
It is always recommended to store the new created toolbits and libraries in a safe location to avoid them being overwritten on a program upgrade. Even custom toolshapes can be stored in arbitrary locations where they can be backed up. The user is encouraged, however, to use a comparable logical structure as shown above to keep toolbits and libraries well organized. When the Tool library Manager is opened, Path checks the location of the working directory. If the location is not writeable or is the same as the example/default location, Path will prompt the user to select or create a new working directory.<br />
<br />
== Options == <!--T:17--><br />
<br />
<!--T:18--><br />
References to Tool Bits and their shapes can either be stored with an absolute path or with a relative path to the search path. Generally it is recommended to use relative paths due to their flexibility and robustness to layout changes. Should multiple tools or tool shapes with the same name exist in different directories it can be required to use absolute paths. <br />
<br />
<!--T:19--><br />
See [[Path_Preferences|Path Preferences]] to choose whether absolute or relative paths are used.<br />
<br />
== Migrating from Legacy Tools == <!--T:20--><br />
<br />
<!--T:21--><br />
If you have been using FreeCAD Path workbench for a while, you may need to adjust your preferences before you can use the Toolbit system. If pressing the Tool Library button on the toolbar shows the legacy dialog, go to the page below in [[Path_Preferences|Path Preferences]] and disable legacy tools.<br><br />
You have to restart FreeCAD to make the change valid.<br />
<br />
<!--T:22--><br />
[[File:Preferences.png|thumb|Disable Legacy Tools]]<br />
<br />
== Getting Started with Tools in FC 0.19 == <!--T:23--><br />
<br />
<!--T:24--><br />
Read the `Migrating from Legacy Tools` section above. The steps below will walk you through the process of getting a ToolBit into your particular {{KEY|[[Image:Path_Job.svg|16px]] [[Path_Job|Path Job]]}}.<br />
<br />
<!--T:25--><br />
In short, the process begins with a Tool Shape (profile) file that contains only a FreeCAD sketch of half the tool's physical shape (profile). This tool shape file is then used as the basis to create a ToolBit file containing the 3D representation of the ToolBit or cutter. One or more ToolBits are assigned to any number of Tool Libraries as needed by the user. This structure and workflow allows for sharing of Tool Shapes, ToolBits, and entire Tool Libraries - a giant leap forward from the Legacy tool management system in place prior to version 0.19.<br />
<br />
=== Verify or create a Tool Shape === <!--T:26--><br />
<br />
<!--T:27--><br />
Getting a cutter or tool into a Path Job for use in operations starts with a [[Path_ToolShape|Tool Shape]]. This step of verification or creation of a Tool Shape is not necessary if you already have an existing ToolBit available.<br />
<br />
==== Verify your desired Tool Shape exists ==== <!--T:28--><br />
<br />
<!--T:29--><br />
* FreeCAD includes a set of common tool shapes with each distribution. Visit the [[Path_ToolShape|ToolShapes]] page to see the list of included, common tool shapes. <br />
* You might have additional tool shape files available in your personal files.<br />
* Be mindful of the greater ToolBit system [[Path_Tools#Organization|organization]] as mentioned above.<br />
<br />
==== Create a new Tool Shape ==== <!--T:30--><br />
<br />
<!--T:31--><br />
:Follow the instructions outlined in the [[Path_ToolShape#Usage|Usage]] section of the [[Path_ToolShape|Tool Shape]] page to create a custom tool shape.<br />
<br />
=== Load or create a ToolBit === <!--T:32--><br />
<br />
<!--T:33--><br />
Once the desired tool shape(profile) exists, you need to create a [[Path_ToolBit|tool bit]] using the tool shape (profile).<br />
# In the [[Image:Workbench_Path.svg|24px]] [[Path_Workbench|Path Workbench]] menu bar, navigate to {{MenuCommand|Path → Create Tool}}.<br />
# In the [[Path_ToolBit|Tool Bit]] creation task panel that appears, give the new tool bit a name and select the corresponding tool shape file as the basis for this new tool bit.<br />
# A thumbnail of the selected tool shape should appear along with a list of parameters.<br />
# Set the Bit Parameters as desired.<br />
# Click {{KEY|OK}} to save the new tool bit.<br />
# The new Tool Bit will appear in the FreeCAD object tree.<br />
<br />
=== Save the new ToolBit === <!--T:34--><br />
<br />
<!--T:35--><br />
# Locate and select the new tool bit in the object tree in the main FreeCAD window.<br />
# In the [[Image:Workbench_Path.svg|24px]] [[Path_Workbench|Path Workbench]] menu bar, navigate to, and select, {{MenuCommand|Path → Save Tool as...}}.<br />
# A pop-up window will appear.<br />
# Navigate to the folder where you wish to save the new tool bit file.<br />
# Enter a file name for the tool bit.<br />
# Click the {{KEY|Save}} button.<br />
<br />
=== Register the ToolBit in a Tool Library === <!--T:36--><br />
<br />
<!--T:37--><br />
# In the [[Image:Workbench_Path.svg|24px]] [[Path_Workbench|Path Workbench]] menu bar, navigate to {{MenuCommand|Path → Open ToolBit Library editor}}.<br />
# The [[Path_ToolBitLibraryOpen|ToolBit Library Manager]] window will open.<br />
# At the top of this window, verify or set the path to the folder containing your existing tool libraries, or the location you want to store your tool libraries.<br />
# Under the path entry, on the left is the Tool Libraries list area. Click on an existing tool library you wish to use as the destination for your new tool bit, or click the green plus icon to create new Tool Library in the folder identified above.<br />
# On the right side of the Tool Library editor window is the Tool Bit list and action buttons for the currently selected tool library. Click the {{KEY|Add ToolBit}} icon.<br />
# In the file navigation window that opens, navigate to your new tool bit, select it, and click the {{KEY|Open}} button. The new tool bit will be added to the active tool library.<br />
# Be sure to click the {{KEY|Save Table}} button at the bottom of the Tool Library window in order to save the changes.<br />
# Leave this ToolBit Library window open for the next step.<br />
# Once your ToolBits are created and saved in a ToolBit Library, you may reuse them.<br />
<br />
=== Add a ToolBit Tool Controller to a Job === <!--T:38--><br />
<br />
<!--T:39--><br />
# In the open Tool Library window, locate and activate the desired tool library.<br />
# Select the desired tool bit(s) to be added to the Job. Select multiple by holding down the CTRL key when selecting.<br />
# Click the {{KEY|Add Tool Controller(s) to Job}} button.<br />
# Close the ToolBit Library<br />
<br />
== Related == <!--T:40--><br />
<br />
<!--T:41--><br />
* [[Path_ToolBit|Path ToolBit]]<br />
* [[Path_ToolBitLibraryOpen|Path ToolBitLibraryOpen]]<br />
<br />
<br />
<!--T:42--><br />
{{Docnav<br />
|[[Path_Area_Workplane|Area Workplane]]<br />
|[[Path_ToolShape|ToolShape]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=Path_Area_Workplane.svg<br />
|IconR=<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{Path_Tools_navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=CAM_ToolShape&diff=1157496CAM ToolShape2022-06-24T22:48:52Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:1--><br />
{{Docnav<br />
|[[Path_Tools|Tools]]<br />
|[[Path_ToolBit|ToolBit]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=<br />
|IconR=<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{TOCright}}<br />
<translate><br />
<br />
== Description == <!--T:2--><br />
<br />
<!--T:3--><br />
ToolShapes are a core part of the [[Path_Tools|Path Tools]] system. ToolShapes are the templates from which ToolBits are created. They represent the specific physical shape of a tool. A ToolShape does not completely describe the bit - for that some additional parameters are needed which will be added when an actual bit is parameterized from the template.<br />
<br />
<!--T:4--><br />
Initially ToolShapes are just FreeCAD documents with a single Body created from the [[Image:Workbench_PartDesign.svg|24px|link=PartDesign_Workbench]] [[PartDesign_Workbench|Part Design ]] workbench. <br />
<br />
<!--T:5--><br />
Creating new ToolShapes is an advanced topic. The most commonly needed ToolShapes already exist and are provided with the FreeCAD installation at:<br />
<br />
<!--T:6--><br />
* On Linux it is usually {{incode|/usr/lib64/FreeCAD/Mod/Path/Tools/Shape}}<br />
* On Windows it is usually {{incode|C:\Program Files\FreeCAD\Mod\Path\Tools\Shape}}<br />
* On macOS it is usually {{incode|/Applications/FreeCAD.app/Contents/Resources/Mod/Path/Tools/Shape}}<br />
<br />
<!--T:7--><br />
They are:<br />
: {{FileName|ballend.fcstd}}<br />
: {{FileName|bullnose.fcstd}}<br />
: {{FileName|chamfer.fcstd}}<br />
: {{FileName|drill.fcstd}}<br />
: {{FileName|endmill.fcstd}}<br />
: {{FileName|probe.fcstd}}<br />
: {{FileName|slittingsaw.fcstd}}<br />
: {{FileName|thread-mill.fcstd}} <br />
: {{FileName|v-bit.fcstd}}<br />
<br />
These can be found in the {{FileName|Mod/Path/Tools/Shape/}} subdirectory where FreeCAD was installed.<br />
<br />
== Usage == <!--T:8--><br />
<br />
<!--T:9--><br />
# Create a new FreeCAD document.<br />
# Open the [[Image:Workbench_PartDesign.svg|16px]] [[PartDesign_Workbench|PartDesign Workbench]].<br />
# Create a [[PartDesign_Body|Body]] and give the Body a label you want to show up in the bit selection.<br />
# Create a [[Image:PartDesign_NewSketch.svg|16px]] [[PartDesign_NewSketch|Sketch]] on the XZ plane and draw half the profile of the bit.<br />
# Constrain the bottom most center of the bit on the origin {{incode|(0,0)}}. This will be the center of the axis on which the G-code will rotate the bit.<br />
#* Note: Do not add dimensional constraints at this time.<br />
# Close the Sketch.<br />
# [[Image:PartDesign_Revolution.svg|16px]] [[PartDesign_Revolution|Revolve]] the Sketch around the vertical Sketch axis.<br />
# Open the [[Image:Workbench_Path.svg|16px]] [[Path_Workbench|Path Workbench]].<br />
# Select the Sketch in the [[Tree_view|Tree view]]. This ensures that the PropertyBag created in the next step will be nested in the Body.<br />
# Select the {{MenuCommand|Path → Utils → PropertyBag}} option from the menu.<br />
# A PropertyBag named {{Value|Attributes}} is created. This PropertyBag will be used to control the dimensions in the Sketch.<br />
# Double-click the PropertyBag in the [[Tree_view|Tree view]].<br />
# The {{MenuCommand|Property Bag}} task panel opens.<br />
# Click the {{Button|Add...}} button.<br />
# The {{MenuCommand|Create Property}} dialog opens.<br />
# Create a property named {{Value|Diameter}}. This property is mandatory for ToolBits. Property names are case-sensitive and may not contain spaces.<br />
# Select {{Value|Shape}} from the {{MenuCommand|Group}} dropdown list.<br />
# Select the appropriate {{MenuCommand|Type}}.<br />
# Optionally specify a {{MenuCommand|ToolTip}}.<br />
# Click the {{Button|OK}} button.<br />
# In the {{MenuCommand|Property Bag}} task panel enter a value for the '''Diameter''' property.<br />
# Similarly add all other required properties.<br />
# Click the {{Button|OK}} button in the {{MenuCommand|Property Bag}} task panel when done.<br />
# Double-click the Sketch in the [[Tree_view|Tree view]].<br />
# Add dimensional constraints and apply the properties from the created PropertyBag. For example to apply the '''Diameter''' property:<br />
## Double-click a dimension.<br />
## Click the [[Image:Bound-expression.svg|16px]] icon.<br />
## Enter {{Value|<<Attributes>>.Diameter}} in the {{MenuCommand|Formula editor}}.<br />
## Click the {{Button|OK}} button twice.<br />
# Repeat this until the Sketch is fully constrained.<br />
# Save the {{FileName|FCStd}} file where FreeCAD expects to find ToolBit files. See [[#Description|Description]] above.<br />
<br />
<!--T:15--><br />
* Note 1. If you are denied access to the folder on Windows, start FreeCAD in ADMINISTRATOR mode.<br />
* Note 2. The Body of the ToolBit must be the first object in the [[Tree_view|Tree view]]. These instructions ensure that this is the case.<br />
<br />
== Tool Thumbnail Images == <!--T:10--><br />
<br />
<!--T:11--><br />
ToolBits will have a small icon image of the tool in the [[Tree_view|Tree view]] if the file is saved with thumbnails active.<br />
<br />
<!--T:12--><br />
Important notes:<br />
* Before saving the document make sure you have Save Thumbnail selected, and Add program logo deselected in FreeCAD's preferences.<br />
* Also make sure to switch to Front View and Fit content to screen<br />
* Whatever you see when saving the document will end up being the visual representation of the template<br />
<br />
<br />
<!--T:14--><br />
{{Docnav<br />
|[[Path_Tools|Tools]]<br />
|[[Path_ToolBit|ToolBit]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=<br />
|IconR=<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{Path_Tools_navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=CAM_Tools&diff=1157495CAM Tools2022-06-24T22:47:08Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
{{UnfinishedDocu{{#translation:}}}}<br />
<translate><br />
<br />
<!--T:1--><br />
{{Docnav<br />
|[[Path_Area_Workplane|Area Workplane]]<br />
|[[Path_ToolShape|ToolShape]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=Path_Area_Workplane.svg<br />
|IconR=<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{TOCright}}<br />
<translate><br />
<br />
== Description == <!--T:2--><br />
<br />
<!--T:3--><br />
This page describes the ToolBit architecture used in the [[Path_Workbench|Path Workbench]] which became the default for FreeCAD v 0.19. For the older 'Legacy' tool system see [[Path_ToolLibraryEdit|Path ToolLibraryEdit]]. Tools in the Path workbench are handled differently than in other CAM packages.<br />
<br />
<!--T:4--><br />
There are several concepts that the user needs to understand:<br />
<br />
<!--T:5--><br />
* [[Path_ToolShape|Path ToolShapes]]: are templates for creating toolbits. Toolshapes are FreeCAD documents that model the tool using named constraints. The toolshape is an ''abstract'' tool template from which tool instances (called toolbits) are created. For example, all endmills will share the same toolshape file.<br />
<br />
<!--T:6--><br />
* [[Path_ToolBit|Path ToolBit]]s: are instances of a toolshape. A toolbit will have ''specific'' values for each of the named constraints in the toolshape. A toolbit is used in a Path Job through a Tool Controller (TC). The same toolbit can exist in multiple libraries.<br />
<br />
<!--T:7--><br />
* [[Path_ToolBit_Library|Path ToolBit Library]]: contains an arbitrary collection of toolbits. The specific tools in a library is entirely up to the user. Possible use cases for libraries:<br />
** A hobbyist user may have only one library for all of the tools they own.<br />
** A library may contain all the tools used for a specific material like aluminum or wood.<br />
** A library may have toolbits for working on specific material.<br />
** A library may hold toolbits from a specific supplier.<br />
** A library may correspond to an automatic tool changer layout.<br />
<br />
<!--T:8--><br />
A [[Path_ToolController|Tool Controller]] controls how a tool is used in a Path Job. A controller combines the toolbit with properties for spindle speed, direction and Horizontal/Vertical feed rates.<br />
<br />
== Dialogs == <!--T:9--><br />
<br />
<!--T:10--><br />
The user will interact via path menu with the tool management system in two different workflows. Each workflow has dedicated GUI elements.<br />
<br />
<!--T:11--><br />
* {{Button|[[Image:Path_ToolBitLibraryOpen.svg|24px]] [[Path_ToolBitDock|Toolbit Dock]]}} view indicated at the box top as ''Tool selector'', for using tools in a Path Job by creating Tool Controllers.<br />
* {{Button|[[Image:Path_ToolBitDock.svg|24px]] [[Path_ToolBitLibraryOpen|Toolbit Library Manager]]}} for managing the user's Toolbit collection with ''Create Toolbit'', ''Add Existing'' and ''Remove'' buttons.<br />
<br />
== Organization == <!--T:12--><br />
<br />
<!--T:13--><br />
When FreeCAD is installed an example hierarchy of tool libraries and toolbits is created in the installation directory at: <br />
<br />
<!--T:14--><br />
* On Linux it is usually {{FileName|/usr/lib64/FreeCAD/Mod/Path/Tools}}<br />
* On Windows it is usually {{FileName|C:\Program Files\FreeCAD\Mod\Path\Tools}}<br />
* On macOS it is usually {{FileName|/Applications/FreeCAD.app/Contents/Resources/Mod/}}<br />
<br />
<!--T:15--><br />
<pre><br />
Tools<br />
+ Bit<br />
+ Library<br />
+ Shape<br />
</pre><br />
<br />
<!--T:16--><br />
It is always recommended to store the new created toolbits and libraries in a safe location to avoid them being overwritten on a program upgrade. Even custom toolshapes can be stored in arbitrary locations where they can be backed up. The user is encouraged, however, to use a comparable logical structure as shown above to keep toolbits and libraries well organized. When the Tool library Manager is opened, Path checks the location of the working directory. If the location is not writeable or is the same as the example/default location, Path will prompt the user to select or create a new working directory.<br />
<br />
== Options == <!--T:17--><br />
<br />
<!--T:18--><br />
References to Tool Bits and their shapes can either be stored with an absolute path or with a relative path to the search path. Generally it is recommended to use relative paths due to their flexibility and robustness to layout changes. Should multiple tools or tool shapes with the same name exist in different directories it can be required to use absolute paths. <br />
<br />
<!--T:19--><br />
See [[Path_Preferences|Path Preferences]] to choose whether absolute or relative paths are used.<br />
<br />
== Migrating from Legacy Tools == <!--T:20--><br />
<br />
<!--T:21--><br />
If you have been using FreeCAD Path workbench for a while, you may need to adjust your preferences before you can use the Toolbit system. If pressing the Tool Library button on the toolbar shows the legacy dialog, go to the page below in [[Path_Preferences|Path Preferences]] and disable legacy tools.<br><br />
You have to restart FreeCAD to make the change valid.<br />
<br />
<!--T:22--><br />
[[File:Preferences.png|thumb|Disable Legacy Tools]]<br />
<br />
== Getting Started with Tools in FC 0.19 == <!--T:23--><br />
<br />
<!--T:24--><br />
Read the `Migrating from Legacy Tools` section above. The steps below will walk you through the process of getting a ToolBit into your particular {{KEY|[[Image:Path_Job.svg|16px]] [[Path_Job|Path Job]]}}.<br />
<br />
<!--T:25--><br />
In short, the process begins with a Tool Shape (profile) file that contains only a FreeCAD sketch of half the tool's physical shape (profile). This tool shape file is then used as the basis to create a ToolBit file containing the 3D representation of the ToolBit or cutter. One or more ToolBits are assigned to any number of Tool Libraries as needed by the user. This structure and workflow allows for sharing of Tool Shapes, ToolBits, and entire Tool Libraries - a giant leap forward from the Legacy tool management system in place prior to version 0.19.<br />
<br />
=== Verify or create a Tool Shape === <!--T:26--><br />
<br />
<!--T:27--><br />
Getting a cutter or tool into a Path Job for use in operations starts with a [[Path_ToolShape|Tool Shape]]. This step of verification or creation of a Tool Shape is not necessary if you already have an existing ToolBit available.<br />
<br />
==== Verify your desired Tool Shape exists ==== <!--T:28--><br />
<br />
<!--T:29--><br />
* FreeCAD includes a set of common tool shapes with each distribution. Visit the [[Path_ToolShape|ToolShapes]] page to see the list of included, common tool shapes. <br />
* You might have additional tool shape files available in your personal files.<br />
* Be mindful of the greater ToolBit system [[Path_Tools#Organization|organization]] as mentioned above.<br />
<br />
==== Create a new Tool Shape ==== <!--T:30--><br />
<br />
<!--T:31--><br />
:Follow the instructions outlined in the [[Path_ToolShape#Usage|Usage]] section of the [[Path_ToolShape|Tool Shape]] page to create a custom tool shape.<br />
<br />
=== Load or create a ToolBit === <!--T:32--><br />
<br />
<!--T:33--><br />
Once the desired tool shape(profile) exists, you need to create a [[Path_ToolBit|tool bit]] using the tool shape (profile).<br />
# In the [[Image:Workbench_Path.svg|24px]] [[Path_Workbench|Path Workbench]] menu bar, navigate to {{MenuCommand|Path → Create Tool}}.<br />
# In the [[Path_ToolBit|Tool Bit]] creation task panel that appears, give the new tool bit a name and select the corresponding tool shape file as the basis for this new tool bit.<br />
# A thumbnail of the selected tool shape should appear along with a list of parameters.<br />
# Set the Bit Parameters as desired.<br />
# Click {{KEY|OK}} to save the new tool bit.<br />
# The new Tool Bit will appear in the FreeCAD object tree.<br />
<br />
=== Save the new ToolBit === <!--T:34--><br />
<br />
<!--T:35--><br />
# Locate and select the new tool bit in the object tree in the main FreeCAD window.<br />
# In the [[Image:Workbench_Path.svg|24px]] [[Path_Workbench|Path Workbench]] menu bar, navigate to, and select, {{MenuCommand|Path → Save Tool as...}}.<br />
# A pop-up window will appear.<br />
# Navigate to the folder where you wish to save the new tool bit file.<br />
# Enter a file name for the tool bit.<br />
# Click the {{KEY|Save}} button.<br />
<br />
=== Register the ToolBit in a Tool Library === <!--T:36--><br />
<br />
<!--T:37--><br />
# In the [[Image:Workbench_Path.svg|24px]] [[Path_Workbench|Path Workbench]] menu bar, navigate to {{MenuCommand|Path → Open ToolBit Library editor}}.<br />
# The [[Path_ToolBitLibraryOpen|ToolBit Library Manager]] window will open.<br />
# At the top of this window, verify or set the path to the folder containing your existing tool libraries, or the location you want to store your tool libraries.<br />
# Under the path entry, on the left is the Tool Libraries list area. Click on an existing tool library you wish to use as the destination for your new tool bit, or click the green plus icon to create new Tool Library in the folder identified above.<br />
# On the right side of the Tool Library editor window is the Tool Bit list and action buttons for the currently selected tool library. Click the {{KEY|Add ToolBit}} icon.<br />
# In the file navigation window that opens, navigate to your new tool bit, select it, and click the {{KEY|Open}} button. The new tool bit will be added to the active tool library.<br />
# Be sure to click the {{KEY|Save Table}} button at the bottom of the Tool Library window in order to save the changes.<br />
# Leave this ToolBit Library window open for the next step.<br />
# Once your ToolBits are created and saved in a ToolBit Library, you may reuse them.<br />
<br />
=== Add a ToolBit Tool Controller to a Job === <!--T:38--><br />
<br />
<!--T:39--><br />
# In the open Tool Library window, locate and activate the desired tool library.<br />
# Select the desired tool bit(s) to be added to the Job. Select multiple by holding down the CTRL key when selecting.<br />
# Click the {{KEY|Add Tool Controller(s) to Job}} button.<br />
# Close the ToolBit Library<br />
<br />
== Related == <!--T:40--><br />
<br />
<!--T:41--><br />
* [[Path_ToolBit|Path ToolBit]]<br />
* [[Path_ToolBitLibraryOpen|Path ToolBitLibraryOpen]]<br />
<br />
<br />
<!--T:42--><br />
{{Docnav<br />
|[[Path_Area_Workplane|Area Workplane]]<br />
|[[Path_ToolShape|ToolShape]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=Path_Area_Workplane.svg<br />
|IconR=<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{Path_Tools_navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=PartDesign_LinearPattern&diff=1120861PartDesign LinearPattern2022-03-26T10:43:46Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:24--><br />
{{Docnav<br />
|[[PartDesign_Mirrored|Mirrored]]<br />
|[[PartDesign_PolarPattern|Polar Pattern]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_Mirrored.svg<br />
|IconR=PartDesign_PolarPattern.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
<!--T:1--><br />
{{GuiCommand<br />
|Name=PartDesign LinearPattern<br />
|MenuLocation=PartDesign → Apply a pattern → LinearPattern<br />
|Workbenches=[[PartDesign_Workbench|PartDesign]]<br />
}}<br />
<br />
==Description== <!--T:2--><br />
<br />
<!--T:4--><br />
The '''LinearPattern''' tool creates evenly spaced copies of a feature along a straight line or edge.<br />
<br />
</translate><br />
[[File:PartDesign LinearPattern example.svg|none]]<br />
<translate><br />
<br />
<!--T:5--><br />
''Above: An L-shaped pad (B) made on top of a base pad (A, also referred to as ''support'') is used for a linear pattern. The result (C) is shown on the right.''<br />
<br />
==Usage== <!--T:6--><br />
<br />
<!--T:7--><br />
To create a pattern:<br />
# Select the feature ({{Version|0.19}} or several features) to be patterned.<br />
# Press the {{KEY|[[File:PartDesign_LinearPattern.svg|24px]] '''LinearPattern'''}} button.<br />
# Define the '''Direction'''. See [[#Options|Options]].<br />
# Define the '''Length''' (distance) between the last copied occurrence and the original feature.<br />
# Set the number of '''Occurrences'''.<br />
# If you have several features in the pattern, their order can be important, see for example the image in the [[PartDesign_PolarPattern#Usage|PolarPattern feature]]. {{Version|0.19}} You can change the order by dragging the feature in the list and you will see the result immediately as preview.<br />
# Press {{KEY|OK}}.<br />
<br />
<!--T:28--><br />
To add or remove features from an existing pattern:<br />
# Press {{KEY|Add feature}} to add a feature to be patterned. The feature must be visible in the [[3D_view|3D view]]:<br />
## Switch to the Model tree;<br />
## Select in the tree the feature to be added and press {{KEY|Space}} to make it visible in the [[3D_view|3D view]];<br />
## Switch back to the Tasks panel;<br />
## Select the feature in the 3D view; it will be added to the list.<br />
## Repeat to add other features.<br />
# Press {{KEY|Remove feature}} to remove a feature from the list, or right-click on the feature in the list and select {{Button|Remove}}<br />
<br />
==Options == <!--T:8--><br />
<br />
<!--T:9--><br />
[[File:Linearpattern_parameters_v017.png|frame|right|LinearPattern parameters]]<br />
<br />
===Direction === <!--T:10--><br />
<br />
<!--T:11--><br />
When creating a linear pattern feature, the '''LinearPattern parameters''' dialogue offers different ways of specifying the pattern direction.<br />
<br />
====Horizontal sketch axis==== <!--T:12--><br />
<br />
<!--T:13--><br />
Uses the horizontal axis of the sketch for direction. <br />
<br />
====Vertical sketch axis==== <!--T:14--><br />
<br />
<!--T:15--><br />
Uses the vertical axis of the sketch for direction.<br />
<br />
====Normal sketch axis==== <!--T:16--><br />
<br />
<!--T:17--><br />
Uses the normal axis of the sketch for direction.<br />
<br />
====Select reference...==== <!--T:18--><br />
<br />
<!--T:19--><br />
Allows you to select a DatumLine, a straight edge from an object or a line from a sketch to use for direction.<br />
<br />
====Custom Sketch Axis==== <!--T:20--><br />
<br />
<!--T:21--><br />
If the sketch which defines the feature to be patterned also contains a construction line (or lines), then the drop down list will contain one custom sketch axis for each construction line. The first construction line will be labelled ''Sketch axis 0''.<br />
<br />
====Base (X/Y/Z) axis==== <!--T:22--><br />
<br />
<!--T:23--><br />
Select one of the Body Origin's standard axis (X, Y or Z) as direction.<br />
<br />
==Limitations== <!--T:29--><br />
<br />
<!--T:3--><br />
* Pattern shapes may not overlap one another except for the special case of only two occurrences (original plus one copy)<br />
* Any pattern shapes that do not overlap the original's support will be excluded. This ensures that a PartDesign feature always consists of a single, connected solid<br />
* The PartDesign patterns are not yet as optimized as their Draft counterparts. So for a bigger number of instances you should consider using [[Draft_OrthoArray|Draft array]] instead, combined with a Part boolean operation. This may include major changes to your model as you are leaving PartDesign, which means that you cannot simply continue with further PartDesign features in the same body. An example is shown in this [https://forum.freecadweb.org/viewtopic.php?f=3&t=55192 Forum topic]<br />
* A LinearPattern cannot be applied directly to another pattern, be it polar, linear or a mirror. For this you need a [[PartDesign_MultiTransform|PartDesign MultiTransform]].<br />
* For further limitations, see the [[PartDesign_Mirrored|PartDesign mirrored]] feature.<br />
<br />
<br />
<!--T:25--><br />
{{Docnav<br />
|[[PartDesign_Mirrored|Mirrored]]<br />
|[[PartDesign_PolarPattern|Polar Pattern]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_Mirrored.svg<br />
|IconR=PartDesign_PolarPattern.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
</translate><br />
{{PartDesign Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=PartDesign_ShapeBinder&diff=1114779PartDesign ShapeBinder2022-03-12T12:41:02Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:14--><br />
{{Docnav<br />
|[[PartDesign_CoordinateSystem|Create a local coordinate system]]<br />
|[[PartDesign_SubShapeBinder|Shape binder to subelement]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_CoordinateSystem.svg<br />
|IconR=PartDesign_SubShapeBinder.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
<!--T:1--><br />
{{GuiCommand<br />
|Name=PartDesign ShapeBinder<br />
|MenuLocation=Part Design → Create a shape binder<br />
|Workbenches=[[PartDesign_Workbench|PartDesign]]<br />
|Version=0.17<br />
|SeeAlso=[[PartDesign_SubShapeBinder|PartDesign SubShapeBinder]], [[PartDesign_Clone|PartDesign Clone]]<br />
}}<br />
<br />
==Description== <!--T:2--><br />
<br />
<!--T:3--><br />
Creates a datum '''shape binder''' inside the active Body. A shape binder is a reference object that links to edges or faces from another Body. It also can be used to link a sketch from one body to another body. The shape binder object displays as translucent yellow in the [[3D_view|3D view]].<br />
<br />
<!--T:23--><br />
Examples of use would be to build a box with fitting cover in two different bodies or to make holes that are aligned between different bodies. <br />
<br />
</translate><br />
[[File:Shapebinder tree.png]]<br />
[[File:Shapebinder flow.png|600px]]<br />
<translate><br />
<!--T:13--><br />
{{Caption|Two shapes from Body.Pad004 are selected and their datum objects are now available in Body001.Sketch005 as external geometry through Body001.ShapeBinder.}}<br />
<br />
==Usage== <!--T:5--><br />
<br />
<!--T:6--><br />
# [[PartDesign_Body#Active_status|Activate the body]], which is to receive the shape binder object.<br />
# Press the {{Button|[[Image:PartDesign_ShapeBinder.svg|16px]] [[PartDesign_ShapeBinder|Create a shape binder]]}} button.<br />
# Press either the {{Button|Object}} button or the {{Button|Add geometry}} button.<br />
# In the [[3D_view|3D view]], select the object or geometry to copy. ''Object'' picks the whole shape; ''Add geometry'' picks the highlighted geometry element (e.g., vertex, edge, or face).<br />
# To remove geometry, press the {{Button|Remove geometry}} button and then select the geometry in the [[3D_view|3D view]].<br />
# Alternatively, geometry elements can be selected in the [[3D_view|3D view]] before launching the tool.<br />
# Press {{Button|OK}}.<br />
To cancel an action that has been started with a button, press the same button again.<br />
<br />
<!--T:18--><br />
'''Example'''<br />
: The example uses the ShapeBinder feature to make a hole (with or without threads) through more than one body. Normally the Hole function of the Part Design workbench is limited to a single body. The example uses two cubes facing each other but misaligned in an arbitrary way. The holes are created with sketches containing a circle for every hole (the diameter is ignored by the hole function). When you copy the sketch to the other cube it will be at the same position in the local cube coordinate system. In the image this is shown by the white circle on the back cube. This is not what we want, because the hole at that position would not be aligned to the hole in the front cube.<br />
<br />
<!--T:19--><br />
::[[File:ShapeBinderThroughHole.png]]<br />
::''Example setup for showing HowTo make holes through different bodies. The white circle shows that copying sketches is not enough''<br />
<br />
<!--T:20--><br />
Here is how you use the ShapeBinder Feature to achieve it:<br />
# Prepare a scene as per the above image. If you use the cubes from the [[Part_Workbench|Part workbench]], remember that you must put them into a "body" container. Each one in a single body container. Otherwise the [[PartDesign_Workbench|PartDesign]] functions would not work. If you build them from sketches the system should create body containers by default.<br />
# Select the Properties Dialog Tab then Data to move the second cube to touch the first cube with a side displacement.<br />
# Select the PartDesign workbench<br />
# Create a sketch on the front face of the first cube and place a circle anywhere and close the sketch<br />
# Select the sketch in the tree and press [[PartDesign_Hole|Hole]] function button. Before make sure the first body is the [[PartDesign_Body#Active_status|active body]] (double-click). <br />
# Select a hole of appropriate size. The image above had also counterbore selected. Close the [[PartDesign_Hole|Hole]] function.<br />
#:Now the image should look as above. When you hide the first cube (select and press space) you can see that the hole does not reach the second cube. It will not, even when you select "Through All", or when you enter a really large distance in the [[PartDesign_Hole|Hole]] dialog. The hole dialog is always limited to a single body. <br />
#: Here is where our ShapeBinder comes in. <br />
# First select the back cube. This is the target where the ShapeBinder will be added. It must be [[PartDesign_Body#Active_status|actived]] before, so be sure it has been double-clicked.<br />
# In the tree select the sketch we used for the hole. It's important to not activate the first body.<br />
# Select the shapeBinder function. <br />
#: A dialog should open. In the line "Object" the name of our sketch should be visible. If you had selected the function without selecting the sketch, you could press "Object" and then select the sketch from the list. It's recommended to select it first in order to get the right one, especially if you have many sketches with automatically generated names Sketch001,.. The "Add Geometry" is not useful for us, because we want to select the whole sketch. "AddGeometry" is used if only parts should be selected.<br />
# Press {{Button|OK}} to close the dialog and check that a new item has been added to the tree of the second cube.<br />
#: When you toggle the visibility of the ShapeBinder it is shown yellow in the [[3D_view|3D view]]. However it's on the wrong position, just as the white circle in the image above. That is because of the default setting for the Trace parameter.<br />
# In the PropertyView of the ShapeBinder in the Data tab set the '''Trace Support''' parameter to true. The default was false. <br />
#: With '''Trace Support''' true, the ShapeBinder in not affected by local transformations of the target body, e.g. our translations. The shape remains exactly where the original front object shape has been. Try moving the front object around and you can see that the ShapeBinder always follows to the new position.<br />
#: Unfortunately we can not select the ShapeBinder for a [[PartDesign_Hole|Hole]]. Therefore we create a local sketch and use that for our hole in the second cube.<br />
# Select the front face of the back cube and create a new sketch (click {{Button|OK}} for the suggestion in the dialog)<br />
# Make all geometry invisible and the ShapeBinder visible. Now you can use the external geometry function and select the circle in the shape binder. We need the center point of that circle.<br />
# Create a new circle and put it at the center point of the ShapeBinders circle. The radius is not important. The [[PartDesign_Hole|Hole]] function only uses the center points of the circles (note: single points are ignored by the Hole function, we must use circles)<br />
# Close the sketch and click [[PartDesign_Hole|Hole]]. Set the dialog to the same values as the initial hole and press OK.<br />
<br />
<!--T:21--><br />
'''Done.'''<br />
:Now you have two linked holes in two different bodies. If you change the geometry or the positions of the holes, both holes will adapt. Only when you add a new hole, you need to update the sketch in the second cube for the second hole.<br />
<br />
<!--T:22--><br />
:Notes:<br />
: that there is another way to create a ShapeBinder: with the back cube activated click the front face of the front cube and create a new sketch. A dialog will pop up where you select "Dependent sketch". This will actually create a shape binder. You can see the '''Trace Support''' parameter in the property window. It's a few clicks less than our procedure.<br />
:Also note that working with ShapeBinder with Sketches is only a subset of its capabilities. It's also possible to use parts of 3D geometry as seen in the example above.<br />
<br />
==Options== <!--T:7--><br />
<br />
<!--T:8--><br />
Double-click the ShapeBinder label in the [[Tree_view|tree view]] or right-click and select '''Edit shape binder''' in the contextual menu to edit its parameters.<br />
<br />
==Properties== <!--T:9--><br />
<br />
<!--T:10--><br />
* {{PropertyData|Label}}: name given to the object, this name can be changed at convenience.<br />
* {{PropertyData|Trace Support}}: Default is false. When true, the shape binder does observe relative placements of the parts and bodies (by manipulating values of its hidden {{PropertyData|Placement}} property). See the example above for how this is used and works.<br />
<br />
==Limitations== <!--T:11--><br />
<br />
<!--T:12--><br />
* Multiple selection is not supported. The Add geometry and Remove geometry buttons need to be pressed for each single selection.<br />
** There is a workaround for multiple selection: If you select all the elements you want to have ''before'' creating the shape binder, they appear in the initial list. <br />
* A shape binder cannot serve as base feature.<br />
* Selected geometry on a body must be contiguous.<br />
* If the body to be copied is selected first before launching the command, or if the {{Button|Object}} button is used, it is no longer possible to only select specific geometry elements.<br />
* The relative placement of the target body and the referenced body is not taken into account. The shape binder will adopt the same internal coordinates as the referenced body.<br />
** Use the '''Trace Support''' property to change this behavior.<br />
<br />
<br />
<!--T:15--><br />
{{Docnav<br />
|[[PartDesign_CoordinateSystem|Create a local coordinate system]]<br />
|[[PartDesign_SubShapeBinder|Shape binder to subelement]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_CoordinateSystem.svg<br />
|IconR=PartDesign_SubShapeBinder.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
</translate><br />
{{PartDesign Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=PartDesign_Fillet&diff=1114355PartDesign Fillet2022-03-12T10:04:19Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:38--><br />
{{Docnav<br />
|[[PartDesign_MultiTransform|Create MultiTransform]]<br />
|[[PartDesign_Chamfer|Chamfer]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_MultiTransform.svg<br />
|IconR=PartDesign_Chamfer.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
<!--T:20--><br />
{{GuiCommand<br />
|Name=PartDesign Fillet<br />
|MenuLocation=PartDesign → Apply a dress-up feature → Fillet<br />
|Workbenches=[[PartDesign_Workbench|PartDesign]]<br />
|SeeAlso=[[PartDesign_Chamfer|PartDesign Chamfer]], [[Part_Fillet|Part Fillet]]<br />
}}<br />
<br />
== Description == <!--T:21--><br />
<br />
<!--T:28--><br />
This tool creates fillets (rounds) on the selected edges of an object. A new separate Fillet entry (followed by a sequential number if there are already existing fillets in the document) is created in the project tree.<br />
<br />
== Usage == <!--T:22--><br />
<br />
<!--T:30--><br />
* Select a single or multiple edges or a face on an object, then start the tool either by clicking its icon or going into the menu. In case you selected a face or a 3D object ({{Version|0.20}}) all its edges are respected for filleting.<br />
* In the appearing [[Task_panel|Task panel]] set the fillet radius either by entering the value, or by clicking on the up/down arrows.<br />
* If you want to add more edges or faces click the {{Button|Add}} button and select edges and/or the faces.<br />
* After clicking the {{Button|Add}} button you can add all edges of the object by right-clicking and selecting {{MenuCommand|Add all edges}} from the context menu. {{Version|0.20}}<br />
* If you want to remove edges or faces<br />
** either select the edge/face in the list of the dialog and press the {{KEY|DEL}} key. ''Note'': Since there must be at least one edge for the feature, the last remaining edge or face in the list cannot be removed.<br />
** or click the {{Button|Remove}} button. All edges and faces being previously selected are highlighted in purple. Select the edge or the face to be removed.<br />
** Ensure the {{MenuCommand|Use all edges}} checkbox is unchecked or else some widgets in the dialog will be disabled. {{Version|0.20}}<br />
* Click {{Button|OK}} to validate.<br />
* For a chain of edges tangential to one another, one single edge can be selected; the fillet will propagate along the chain. <br />
* To edit the fillet after the function has been validated, either double-click on the Fillet label in the Project tree, or right-click on it and select {{MenuCommand|Edit Fillet}}.<br />
<br />
== Notes == <!--T:50--><br />
<br />
<!--T:51--><br />
* PartDesign Fillet should not be confused with [[Part_Fillet|Part Fillet]]. Unless you know what you are doing, [[Part_Fillet|Part Fillet]] should not be used on a PartDesign Body. See [[Part_and_PartDesign|Part and PartDesign]].<br />
<br />
== Known issues == <br />
<!--T:31--><br />
Fillets cannot consume the whole adjacent face.<br />
<br />
Fillets, chamfers, and other features that operate on solid bodies depend on the underlying OpenCASCADE Technology (OCCT) kernel that FreeCAD uses.<br />
The OCCT kernel occasionally has difficulty handling coincident sharp edges, where two faces meet. If this is the case FreeCAD may crash without an explanation.<br />
<br />
<!--T:32--><br />
If run from the terminal, FreeCAD may output a log like this one after the crash:<br />
<br />
</translate><br />
{{code|code=<br />
#1 0x7fff63d660ba in BRep_Tool::Curve(TopoDS_Edge const&, TopLoc_Location&, double&, double&) from /usr/lib/x86_64-linux-gnu/libTKBRep.so.7+0x2a<br />
#2 0x7fff63d69546 in BRep_Tool::Curve(TopoDS_Edge const&, double&, double&) from /usr/lib/x86_64-linux-gnu/libTKBRep.so.7+0x46<br />
#3 0x7fff71f4fef5 in ChFi3d_Builder::PerformIntersectionAtEnd(int) from /usr/lib/x86_64-linux-gnu/libTKFillet.so.7+0x3b05<br />
#4 0x7fff71f58307 in ChFi3d_Builder::PerformOneCorner(int, bool) from /usr/lib/x86_64-linux-gnu/libTKFillet.so.7+0x1097<br />
#5 0x7fff71ef6218 in ChFi3d_Builder::PerformFilletOnVertex(int) from /usr/lib/x86_64-linux-gnu/libTKFillet.so.7+0x4e8<br />
#6 0x7fff71ef71d1 in ChFi3d_Builder::Compute() from /usr/lib/x86_64-linux-gnu/libTKFillet.so.7+0xe31<br />
#7 0x7fff720ad7c3 in BRepFilletAPI_MakeChamfer::Build() from /usr/lib/x86_64-linux-gnu/libTKFillet.so.7+0x33<br />
#8 0x7fff723be48e in PartDesign::Chamfer::execute() from /usr/lib/freecad-daily/lib/_PartDesign.so+0x60e<br />
...<br />
}}<br />
<translate><br />
<br />
<!--T:33--><br />
This output references functions located in {{incode|libTKBRep.so}}, {{incode|libTKFillet.so}}, etc., which are OCCT libraries. If this type of crashes occurs, the problem may need to be reported and solved in OCCT rather than in FreeCAD.<br />
<br />
<!--T:34--><br />
See the forum threads for more information:<br />
*[https://forum.freecadweb.org/viewtopic.php?p=263818#p263818 Bug Chamfer bigger than 2mm crashes freecad]<br />
*[https://forum.freecadweb.org/viewtopic.php?p=264827#p264827 Segfault when using part design fillet]<br />
<br />
<!--T:35--><br />
The user is also responsible for the integrity of his or her own model. Depending on the model, it may be impossible to perform a fillet or chamfer if the body is not big enough to support that operation. For example, it wouldn't be possible to create a 10 mm fillet if an edge is separated only 5 mm from the next surface. In that case, the maximum radius for a fillet would be 5 mm; trying to use a larger value may result in a shape that doesn't compute, or even a crash. If using the exact limit of 5 mm doesn't work, it may be possible to use a very close approximation, like 4.9999 mm, to produce the same visible result.<br />
<br />
=== Topological naming === <!--T:49--> <br />
<br />
<!--T:36--><br />
Edge numbers are not completely stable, therefore it is advisable that you finish the main design work of your solid body before applying features like fillets and chamfers, otherwise edges could change name and filleted edges would likely become invalid. When the {{PropertyData|Use All Edges}} property ({{Version|0.20}}) is {{TRUE}} there is some protection from this. Because in such cases all the edges of the base object are used and there is no dependence on individual edge names.<br />
<br />
<!--T:42--><br />
Read more in [[Topological_naming_problem|topological naming problem]].<br />
<br />
==Scripting== <!--T:23--><br />
<br />
<!--T:37--><br />
The tool {{KEY|[[File:PartDesign_Fillet.svg|16px|text-top=Fillet|link=PartDesign_Fillet]] [[PartDesign_Fillet|Fillet]]}} can be used in a macro, and, from the Python console using the following function:<br />
<br />
</translate><br />
{{Code|code=<br />
Box = Box.makeFillet(3,[Box.Edges[0]]) # 1 Fillet<br />
Box = Box.makeFillet(3,[Box.Edges[1],Box.Edges[2],Box.Edges[3],Box.Edges[4]]) # for several Fillets<br />
}}<br />
<translate><br />
<br />
<!--T:24--><br />
*3 = radius<br />
*Box.Edges[2] = Edge with its number<br />
<br />
<!--T:25--><br />
Example:<br />
<br />
</translate><br />
{{Code|code=<br />
import PartDesign<br />
from FreeCAD import Base<br />
<br />
Box = Part.makeBox(10,10,10)<br />
Box = Box.makeFillet(3,[Box.Edges[0]]) # pour 1 Fillet<br />
Box = Box.makeFillet(3,[Box.Edges[1],Box.Edges[2],Box.Edges[3],Box.Edges[4]]) # for several Fillets<br />
Part.show(Box)<br />
}}<br />
<translate><br />
<br />
<br />
<!--T:39--><br />
{{Docnav<br />
|[[PartDesign_MultiTransform|Create MultiTransform]]<br />
|[[PartDesign_Chamfer|Chamfer]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_MultiTransform.svg<br />
|IconR=PartDesign_Chamfer.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
</translate><br />
{{PartDesign Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=CAM_Post&diff=1093417CAM Post2022-01-22T21:31:13Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:22--><br />
{{Docnav<br />
|[[Path_Job|Job]]<br />
|[[Path_Sanity|Sanity]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=Path_Job.svg<br />
|IconR=Path_Sanity.svg<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
<!--T:1--><br />
{{GuiCommand<br />
|Name=Path Post<br />
|MenuLocation=Path → Post Process<br />
|Workbenches=[[Path_Workbench|Path]]<br />
|Shortcut={{KEY|P}} {{KEY|P}}<br />
}}<br />
<br />
==Description== <!--T:2--><br />
<br />
<!--T:3--><br />
The {{Button|[[Image:Path_Post.svg|16px]] [[Path_Post|Post]]}} command exports the selected {{Button|[[Image:Path_Job.svg|16px]] [[Path_Job|Path Job]]}} to a G-code file.<br />
<br />
<!--T:8--><br />
'''Each CNC Controller speaks a specific G-Code dialect, requiring a Dialect-correct Postprocessor to translate the final output from the agnostic internal FreeCAD G-Code dialect.'''<br />
<br />
=== Typical functions of the Postprocessor include === <!--T:27--><br />
<br />
<!--T:18--><br />
*Using a correct Job output G-Code file extension. <br />
*Selecting the G-Code commands. CNC controllers typically support a subset of available G-Code commands. The super-set of G-Code commands contains powerful and specialized commands that otherwise must be processed using multiple simpler commands. Postprocessors are written to select the best G-Code for an Operation, available on the target. <br />
*Formatting the G-Code syntax by reordering the Feed, X, Y, Z, A, and B inputs, and the precision.<br />
*Inserting a Pre-amble to set units, units format, Work plane, coordinate system, etc...<br />
*Inserting a Post-amble to park the machine, stop it, process any arguments. <br />
*Inserting Tool changes, or suppressing them between subsequent operations using the same tool.<br />
*Formatting the Feed and Speed rate information to revolutions per minute, or per second.<br />
*Formatting Function Call Naming and Calling.<br />
<br />
=== Postprocessor Customization === <!--T:28--><br />
<br />
<!--T:19--><br />
If you want to write your own postprocessor, have a look at the [[Path_Postprocessor_Customization|Path Postprocessor Customization]] page.<br />
<br />
<!--T:26--><br />
'''Note:''' Several provided Postprocessors generate suitable code for many CNC controllers, or can be used as templates for modification<br />
<br />
<!--T:20--><br />
Postprocessors contain configuration flags and are designed to be tuned by adding G-Codes and M-Codes to provided definitions for:<br />
*Machine initialization<br />
*Job finalization<br />
*Tool-Changes<br />
*Cooling on /off<br />
*Etc...<br />
<br />
<!--T:9--><br />
Postprocessors use [[Path_scripting#The_FreeCAD_Internal_GCode_Format|FreeCAD's internal G-Code dialect]] in conjunction with the Postprocessor configuration definitions, to generate Dialect-Correct G-Code for target machines. This allows the Path workbench to generate correct G-Code to target various CNC machine controllers by invoking different Postprocessors.<br />
<br />
<!--T:10--><br />
CNC Machine Controller types include:<br />
*CNC mills<br />
*CNC lathes<br />
*3D Printers<br />
*DragKnife Cutters<br />
*Laser Cutters<br />
*Engravers<br />
*Plasma Torch Cutters<br />
*Wire Benders<br />
*EDM Cutters<br />
*Etc...<br />
<br />
<!--T:11--><br />
If only one CNC machine is used, or if all CNC machines share a common Postprocesor, the Path workbench would need to include only a single Postprocessor. If a single Postprocessor is inadequate to output G-Code for all target CNC controllers, then multiple Postprocessors must be installed.<br />
<br />
==Usage== <!--T:4--><br />
<br />
<!--T:5--><br />
# Select a [[Image:Path_Job.svg|16px]] [[Path_Job|Path Job]] in the [[Tree_view|Tree view]].<br />
# There are several ways to invoke the command:<br />
#* Press the {{Button|[[Image:Path_Post.svg|16px]] [[Path_Post|Path Post]]}} button.<br />
#* Select the {{MenuCommand|Path → [[Image:Path_Post.svg|16px]] Post Process}} option from the menu.<br />
#* Use the keyboard shortcut: {{KEY|P}} then {{KEY|P}}.<br />
# Confirm the {{MenuCommand|Output File}} name and directory<br />
<br />
==Options== <!--T:6--><br />
<br />
<!--T:7--><br />
Output file and Postprocessor properties can be set in the [[Path_Job|Job]], at any time, prior to invoking the Postprocessor.<br />
<br />
<!--T:12--><br />
The provided Postprocessors are written with comments indicating areas containing Flags, Configuration Variables, and Sections of G-Codes and M-Codes that are to be used by the Postprocessor to configure the output.<br />
<br />
<!--T:13--><br />
Typical Configuration True/False Flags include:<br />
*OUTPUT_COMMENTS (True = Allow, False = Suppress), Used to insert Text Comments in the output G-Code file.<br />
*OUTPUT_HEADER (True = Allow, False = Suppress), Used to insert Text Headers in the output G-Code file.<br />
*OUTPUT_LINE_NUMBERS (True = Allow, False = Suppress), Used to insert Line Numbers in the output G-Code file.<br />
*SHOW_EDITOR (True = Allow, False = Suppress), Used to show the output G-Code in a Pop-up window when invoking the Postprocessor.<br />
*MODAL (True = Allow, False = Suppress), Used to reduce the number of output G-Code lines by stripping Mode information when the Mode is not changing.<br />
<br />
<!--T:14--><br />
Typical Configuration Variables include:<br />
*LINENR (Line Number), Used to Set the Line Number index.<br />
*UNITS (G20 or G21), Used to explicitly communicate to the target CNC controller what Units to use to interpret the final output file.<br />
*MACHINE_NAME (Name of Target CNC Mill), Used to Insert a machine name label in the final output file.<br />
*PRECISION, Used to Set the number of digits to include after the decimal place in final output file<br />
<br />
<!--T:15--><br />
Typical Configuration Sections include:<br />
*PREAMBLE (Code configuration inserted at beginning of the Job)<br />
*POSTAMBLE (Code configuration appended to the Job, providing for parking the machine, etc...)<br />
*TOOL_CHANGE (Code inserted with each tool change in the Job)<br />
<br />
<!--T:16--><br />
The {{KEY|Edit}} → {{KEY|Preferences...}} → {{KEY|Path}} → {{KEY|Job Preferences tab}} → {{KEY|Defaults}} → {{KEY|Path}} is used to set the default Postprocessor selected on Job creation. This allows Path workbench to be configured to only display desired Postprocessors, and to set a default. <br />
<br />
<!--T:21--><br />
Included Postprocessors are saved in the '''FreeCAD/Mod/Path/Pathscripts/Post''' by default:<br />
*centroid<br />
*comparams<br />
*dxf<br />
*dynapath<br />
*grbl, including support for bCNC header blocks using Job output argument --bcnc<br />
*jtech (laser)<br />
*[http://linuxcnc.org/docs/html/gcode/g-code.html#gcode:g17-g19.1 linuxcnc] <br />
*mach3_mach4<br />
*nccad<br />
*opensbp<br />
*phillips<br />
*rml<br />
*smoothie<br />
*uccnc<br />
<br />
== Limitations == <!--T:29--><br />
<br />
<!--T:17--><br />
* Do '''not''' use the {{KEY|File}} → {{KEY|Export}} menu for export to G-code, it will produce damaged G-code!<br />
<br />
<br />
<!--T:23--><br />
{{Docnav<br />
|[[Path_Job|Job]]<br />
|[[Path_Sanity|Sanity]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=Path_Job.svg<br />
|IconR=Path_Sanity.svg<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{Path_Tools_navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=TechDraw_Workbench&diff=1089976TechDraw Workbench2022-01-06T19:00:36Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:65--><br />
{{Docnav<br />
|[[Surface_Workbench|Surface Workbench]]<br />
|[[Web_Workbench|Web Workbench]]<br />
|IconL=Workbench_Surface.svg<br />
|IconR=Workbench_Web.svg<br />
}}<br />
<br />
<!--T:305--><br />
[[Image:Workbench_TechDraw.svg|thumb|128px|TechDraw workbench icon]]<br />
<br />
== Introduction == <!--T:57--><br />
<br />
<!--T:1--><br />
The [[Image:Workbench_TechDraw.svg|24px]] [[TechDraw Workbench|TechDraw Workbench]] is used to produce basic technical drawings from 3D models created with another workbench such as [[Part Workbench|Part]], [[PartDesign Workbench|PartDesign]], or [[Arch Workbench|Arch]], or imported from other applications. Each drawing is a Page, which can contain various Views of drawable objects such as Part::Features, PartDesign::Bodies, App::Part groups, and Document Object groups. The resulting drawings can be used for things like documentation, manufacturing instructions, contracts, permits, etc.<br />
<br />
<!--T:15--><br />
Dimensions, sections, hatched areas, annotations, and [[SVG|SVG]] symbols can be added to the page, which can be further exported to different formats like [[DXF|DXF]], [[SVG|SVG]], and [[PDF|PDF]].<br />
<br />
<!--T:58--><br />
TechDraw was officially included in FreeCAD starting with version 0.17; it is intended to replace the unsupported [[Drawing Workbench|Drawing Workbench]]. Both workbenches are still provided in v0.17, but the Drawing Workbench may be removed in future releases. To keep up with TechDraw plans and developments, visit the [[TechDraw Roadmap|TechDraw Roadmap]].<br />
<br />
<!--T:11--><br />
If your primary goal is the production of complex 2D drawings and [[DXF|DXF]] files, and you don't need 3D modelling, FreeCAD may not be the right choice for you. You may wish to consider a dedicated software program for technical drafting instead, such as [https://en.wikipedia.org/wiki/LibreCAD LibreCAD] or [https://en.wikipedia.org/wiki/QCad QCad].<br />
<br />
</translate><br />
{{TOCright}}<br />
<translate><br />
<br />
<!--T:318--><br />
[[File:TechDraw Workbench Example.png|600px]]<br />
<br />
== Pages == <!--T:2--><br />
<br />
<!--T:18--><br />
These are tools for creating Page objects.<br />
<br />
<!--T:19--><br />
* [[File:TechDraw PageDefault.svg|32px]] [[TechDraw_PageDefault|Insert Default Page]]: adds a new page using the default [[TechDraw_Templates|template]].<br />
<br />
<!--T:20--><br />
* [[File:TechDraw PageTemplate.svg|32px]] [[TechDraw_PageTemplate|Insert Page using Template]]: adds a new page using a selected [[TechDraw_Templates|template]].<br />
<br />
<!--T:304--><br />
* [[File:TechDraw RedrawPage.svg|32px]] [[TechDraw_RedrawPage|Redraw Page]]: forces an update of the selected page. {{Version|0.19}}<br />
<br />
== Views == <!--T:21--><br />
<br />
<!--T:22--><br />
These are tools for creating View objects.<br />
<br />
<!--T:23--><br />
* [[File:TechDraw View.svg|32px]] [[TechDraw_View|Insert View]]: adds a 2D projection view of an object.<br />
<br />
<!--T:301--><br />
* [[File:TechDraw ActiveView.svg|32px]] [[TechDraw_ActiveView|Insert Active View]]: inserts a view of the active 3D view. {{Version|0.19}}<br />
<br />
<!--T:24--><br />
* [[File:TechDraw ProjectionGroup.svg|32px]] [[TechDraw_ProjectionGroup|Insert Projection Group]]: invokes a dialog to create many views of an object from multiple directions.<br />
<br />
<!--T:25--><br />
* [[File:TechDraw SectionView.svg|32px]] [[TechDraw_SectionView|Insert Section View]]: inserts a cross-section view of an existing view.<br />
<br />
<!--T:26--><br />
* [[File:TechDraw DetailView.svg|32px]] [[TechDraw_DetailView|Insert Detail View]]: inserts a detail view of a portion of an existing view.<br />
<br />
<!--T:28--><br />
* [[File:TechDraw DraftView.svg|32px]] [[TechDraw_DraftView|Insert Draft Workbench Object]]: inserts a view of a [[Draft Workbench|Draft Workbench]] object.<br />
<br />
<!--T:29--><br />
* [[File:TechDraw ArchView.svg|32px]] [[TechDraw_ArchView|Insert Arch Workbench Object]]: inserts a view of an [[Arch Workbench|Arch Workbench]] [[Arch SectionPlane|Section Plane]] object.<br />
<br />
<!--T:30--><br />
* [[File:TechDraw SpreadsheetView.svg|32px]] [[TechDraw_SpreadsheetView|Insert Spreadsheet View]]: inserts a view of a [[Spreadsheet Workbench|Spreadsheet Workbench]] sheet.<br />
<br />
== Clips == <!--T:31--><br />
<br />
<!--T:32--><br />
These are tools to create and manage Clip objects (clipped views).<br />
<br />
<!--T:33--><br />
* [[File:TechDraw ClipGroup.svg|32px]] [[TechDraw_ClipGroup|Insert Clip Group]]: inserts a clip group into a page.<br />
<br />
<!--T:34--><br />
* [[File:TechDraw ClipGroupAdd.svg|32px]] [[TechDraw_ClipGroupAdd|Add View to Clip Group]]: adds an existing view to a clip group.<br />
<br />
<!--T:35--><br />
* [[File:TechDraw ClipGroupRemove.svg|32px]] [[TechDraw_ClipGroupRemove|Remove View from Clip Group]]: removes a view from a clip group.<br />
<br />
== Decorations == <!--T:48--><br />
<br />
<!--T:49--><br />
These are tools to decorate pages or views:<br />
<br />
<!--T:50--><br />
* [[File:TechDraw Hatch.svg|32px]] [[TechDraw_Hatch|Hatch Face using Image File]]: applies a hatch pattern from a file to a face.<br />
<br />
<!--T:51--><br />
* [[File:TechDraw GeometricHatch.svg|32px]] [[TechDraw_GeometricHatch|Apply Geometric Hatch to Face]]: applies a hatch pattern to a face using an Autodesk PAT specification.<br />
<br />
<!--T:52--><br />
* [[File:TechDraw Symbol.svg|32px]] [[TechDraw_Symbol|Insert SVG Symbol]]: inserts a symbol from a [[SVG|SVG]] file into a page.<br />
<br />
<!--T:53--><br />
* [[File:TechDraw Image.svg|32px]] [[TechDraw_Image|Insert Bitmap Image]]: inserts a PNG or JPG [[bitmap|bitmap]] image into a page.<br />
<br />
<!--T:54--><br />
* [[File:TechDraw ToggleFrame.svg|32px]] [[TechDraw_ToggleFrame|Turn View Frames On/Off]]: turns on/off frames and labels surrounding a view.<br />
<br />
== Dimensions == <!--T:36--><br />
<br />
<!--T:37--><br />
These are tools for creating and working with Dimension objects.<br />
<br />
<!--T:59--><br />
Linear dimensions can be based on two points, on one line, or on two lines.<br />
<br />
<!--T:38--><br />
* [[File:TechDraw_LengthDimension.svg|32px]] [[TechDraw_LengthDimension|Insert Length Dimension]]: adds a length dimension.<br />
<br />
<!--T:39--><br />
* [[File:TechDraw_HorizontalDimension.svg|32px]] [[TechDraw_HorizontalDimension|Insert Horizontal Dimension]]: adds a horizontal length dimension.<br />
<br />
<!--T:40--><br />
* [[File:TechDraw_VerticalDimension.svg|32px]] [[TechDraw_VerticalDimension|Insert Vertical Dimension]]: adds a vertical length dimension.<br />
<br />
<!--T:41--><br />
* [[File:TechDraw_RadiusDimension.svg|32px]] [[TechDraw_RadiusDimension|Insert Radius Dimension]]: adds a radius dimension to a circle or circular arc.<br />
<br />
<!--T:42--><br />
* [[File:TechDraw_DiameterDimension.svg|32px]] [[TechDraw_DiameterDimension|Insert Diameter Dimension]]: adds a diameter dimension to a circle or a circular arc.<br />
<br />
<!--T:43--><br />
* [[File:TechDraw_AngleDimension.svg|32px]] [[TechDraw_AngleDimension|Insert Angle Dimension]]: adds an angle dimension between two straight edges.<br />
<br />
<!--T:56--><br />
* [[File:TechDraw_3PtAngleDimension.svg|32px]] [[TechDraw_3PtAngleDimension|Insert 3-Point Angle Dimension]]: adds an angle dimension using three vertices.<br />
<br />
<!--T:306--><br />
* [[File:TechDraw_HorizontalExtentDimension.svg|32px]] [[TechDraw_HorizontalExtentDimension|Insert Horizontal Extent Dimension]]: adds a horizontal extent dimension. {{Version|0.19}}<br />
<br />
<!--T:307--><br />
* [[File:TechDraw_VerticalExtentDimension.svg|32px]] [[TechDraw_VerticalExtentDimension|Insert Vertical Extent Dimension]]: adds a vertical extent dimension. {{Version|0.19}}<br />
<br />
<!--T:44--><br />
* [[File:TechDraw_LinkDimension.svg|32px]] [[TechDraw_LinkDimension|Link Dimension to 3D Geometry]]: links an existing dimension to the 3D geometry.<br />
<br />
<!--T:67--><br />
* [[File:TechDraw_Balloon.svg|32px]] [[TechDraw_Balloon|Insert Balloon Annotation]]: adds a "balloon" annotation to a page. {{Version|0.19}}<br />
<br />
<!--T:308--><br />
* [[File:TechDraw_LandmarkDimension.svg|32px]] [[TechDraw_LandmarkDimension|Insert Landmark Dimension]]: adds a landmark distance dimension. {{Version|0.19}}<br />
<br />
== Annotations == <!--T:70--><br />
<br />
<!--T:74--><br />
The annotation tools are for "marking up" a drawing with additional information.<br />
<br />
<!--T:27--><br />
* [[File:TechDraw Annotation.svg|32px]] [[TechDraw_Annotation|Insert Annotation]]: adds a plain text block as annotation.<br />
<br />
<!--T:68--><br />
* [[File:TechDraw LeaderLine.svg|32px]] [[TechDraw_LeaderLine|Add Leaderline to View]]: adds a leaderline to a view. {{Version|0.19}}<br />
<br />
<!--T:69--><br />
* [[File:TechDraw RichTextAnnotation.svg|32px]] [[TechDraw_RichTextAnnotation|Insert Rich Text Annotation]]: adds an rich text block as annotation to a leaderline or a view. {{Version|0.19}}<br />
<br />
<!--T:71--><br />
* [[File:TechDraw CosmeticVertex.svg|32px]] [[TechDraw_CosmeticVertex|Add Cosmetic Vertex]]: adds a Vertex which is not part of the source geometry. {{Version|0.19}}<br />
<br />
<!--T:72--><br />
* [[File:TechDraw Midpoints.svg|32px]] [[TechDraw_Midpoints|Add Midpoint Vertices]]: adds Cosmetic Vertices at midpoints of selected edges. {{Version|0.19}}<br />
<br />
<!--T:73--><br />
* [[File:TechDraw Quadrants.svg|32px]] [[TechDraw_Quadrants|Add Quadrant Vertices]]: adds Cosmetic Vertices at quarter points of selected (circular) edges. {{Version|0.19}}<br />
<br />
<!--T:76--><br />
* [[File:TechDraw FaceCenterLine.svg|32px]] [[TechDraw_FaceCenterLine|Add Centerline to Faces]]: adds a centerline to selected face(s). {{Version|0.19}}<br />
<br />
<!--T:77--><br />
* [[File:TechDraw 2LineCenterLine.svg|32px]] [[TechDraw_2LineCenterLine|Add Centerline between 2 Lines]]: adds a centerline between 2 lines. {{Version|0.19}}<br />
<br />
<!--T:78--><br />
* [[File:TechDraw 2PointCenterLine.svg|32px]] [[TechDraw_2PointCenterLine|Add Centerline between 2 Points]]: adds a centerline between 2 points. {{Version|0.19}}<br />
<br />
<!--T:82--><br />
* [[File:TechDraw_2PointCosmeticLine.svg|32px]] [[TechDraw_2PointCosmeticLine|Add Cosmetic Line Through 2 points]]: adds a cosmetic line connecting 2 vertices. {{Version|0.19}}<br />
<br />
<!--T:75--><br />
* [[File:TechDraw CosmeticEraser.svg|32px]] [[TechDraw_CosmeticEraser|Remove Cosmetic Object]]: removes cosmetic objects from a page. {{Version|0.19}}<br />
<br />
<!--T:79--><br />
* [[File:TechDraw DecorateLine.svg|32px]] [[TechDraw_DecorateLine|Change Appearance of Lines]]: changes the appearance of selected line(s). {{Version|0.19}}<br />
<br />
<!--T:80--><br />
* [[File:TechDraw ShowAll.svg|32px]] [[TechDraw_ShowAll|Show/Hide Invisible Edges]]: shows/hides invisible lines/edges in a view. {{Version|0.19}}<br />
<br />
<!--T:81--><br />
* [[File:TechDraw WeldSymbol.svg|32px]] [[TechDraw_WeldSymbol|Add Welding Information to Leader]]: adds welding specifications to an existing leaderline. {{Version|0.19}}<br />
<br />
== Extensions == <!--T:310--><br />
<br />
<!--T:311--><br />
These are tools to improve your TechDraw drawings.<br />
<br />
<!--T:312--><br />
{{Emphasis|Some of these tools have yet to be released.}}<!--Keep this text. Other tools will be added.--><br />
<br />
=== Attributes and modifications === <!--T:322--><br />
<br />
<!--T:313--><br />
* [[File:TechDraw_ExtensionSelectLineAttributes.svg|32px]] [[TechDraw_ExtensionSelectLineAttributes|Aspect]]: select style, width and colour of lines. {{Version|0.20}}<br />
<br />
<!--T:323--><br />
* [[File:TechDraw_ExtensionExtendLine.svg|32px]] [[TechDraw_ExtensionExtendLine|Stretch]]: extend a line at both ends. {{Version|0.20}}<br />
<br />
<!--T:324--><br />
* [[File:TechDraw_ExtensionShortenLine.svg|32px]] [[TechDraw_ExtensionShortenLine|Shorten]]: shorten a line at both ends. {{Version|0.20}}<br />
<br />
<!--T:325--><br />
* [[File:TechDraw_ExtensionLockUnlockView.svg|32px]] [[TechDraw_ExtensionLockUnlockView|Lock/Unlock]]: Lock/Unlock a view. {{Version|0.20}}<br />
<br />
<!--T:326--><br />
* [[File:TechDraw_ExtensionPositionSectionView.svg|32px]] [[TechDraw_ExtensionPositionSectionView|Align Section]]: align a section view orthogonal to its source view. {{Version|0.20}}<br />
<br />
<!--T:327--><br />
* [[File:TechDraw_ExtensionPosHorizChainDimension.svg|32px]] [[TechDraw_ExtensionPosHorizChainDimension|Align Horizontal]]: align a horizontal dimension chain. {{Version|0.20}}<br />
<br />
<!--T:328--><br />
* [[File:TechDraw_ExtensionPosVertChainDimension.svg|32px]] [[TechDraw_ExtensionPosVertChainDimension|Align Vertical]]: align a vertical dimension chain. {{Version|0.20}}<br />
<br />
<!--T:329--><br />
* [[File:TechDraw_ExtensionPosObliqueChainDimension.svg|32px]] [[TechDraw_ExtensionPosObliqueChainDimension|Align Oblique]]: align an oblique dimension chain. {{Version|0.20}}<br />
<br />
<!--T:330--><br />
* [[File:TechDraw_ExtensionCascadeHorizDimension.svg|32px]] [[TechDraw_ExtensionCascadeHorizDimension|Horizontal Spacing]]: cascade horizontal dimensions. {{Version|0.20}}<br />
<br />
<!--T:331--><br />
* [[File:TechDraw_ExtensionCascadeVertDimension.svg|32px]] [[TechDraw_ExtensionCascadeVertDimension|Vertical Spacing]]: cascade vertical dimensions. {{Version|0.20}}<br />
<br />
<!--T:332--><br />
* [[File:TechDraw_ExtensionCascadeObliqueDimension.svg|32px]] [[TechDraw_ExtensionCascadeObliqueDimension|Oblique Spacing]]: cascade oblique dimensions. {{Version|0.20}}<br />
<br />
<!--T:333--><br />
* [[File:TechDraw_ExtensionChangeLineAttributes.svg|32px]] [[TechDraw_ExtensionChangeLineAttributes|Change Aspect]]: change style, width and colour of lines. {{Version|0.20}}<br />
<br />
=== Centerlines and threading === <!--T:334--><br />
<br />
<!--T:335--><br />
* [[File:TechDraw_ExtensionCircleCenterLines.svg|32px]] [[TechDraw_ExtensionCircleCenterLines|Arc-Circle Centerlines]]: adds centerlines to circles and arcs. {{Version|0.20}}<br />
<br />
<!--T:336--><br />
* [[File:TechDraw_ExtensionHoleCircle.svg|32px]] [[TechDraw_ExtensionHoleCircle|Circular Series Centerlines]]: draw the centerlines of a hole/bolt circle. {{Version|0.20}}<br />
<br />
<!--T:337--><br />
* [[File:TechDraw_ExtensionVertexAtIntersection.svg|32px]] [[TechDraw_ExtensionVertexAtIntersection|Intersection Point]]: create the vertexes at intersection of lines. {{Version|0.20}}<br />
<br />
<!--T:338--><br />
* [[File:TechDraw_ExtensionDrawCosmCircle.svg|32px]] [[TechDraw_ExtensionDrawCosmCircle|Circunference]]: draw a cosmetic circumference using center and radius vertex. {{Version|0.20}}<br />
<br />
<!--T:339--><br />
* [[File:TechDraw_ExtensionDrawArc.svg|32px]] [[TechDraw_ExtensionDrawArc|Arch]]: draw an arc rotating counterclockwise. {{Version|0.20}}<br />
<br />
<!--T:340--><br />
* [[File:TechDraw_ExtensionLinePerpendicular.svg|32px]] [[TechDraw_ExtensionLinePerpendicular|Perpendicular]]: draw a line perpendicular to another line through a vertex. {{Version|0.20}}<br />
<br />
<!--T:341--><br />
* [[File:TechDraw_ExtensionLineParallel.svg|32px]] [[TechDraw_ExtensionLineParallel|Parallel]]: draw a line parallel to another line through a vertex. {{Version|0.20}}<br />
<br />
<!--T:314--><br />
* [[File:TechDraw_ExtensionThreadHoleSide.svg|32px]] [[TechDraw_ExtensionThreadHoleSide|Thread section Hole]]: adds a symbolic thread to the side view of a hole. {{Version|0.20}}<br />
<br />
<!--T:316--><br />
* [[File:TechDraw_ExtensionThreadBoltSide.svg|32px]] [[TechDraw_ExtensionThreadBoltSide|Thread section Shaft]]: adds a symbolic thread to the side view of a bolt. {{Version|0.20}}<br />
<br />
<!--T:315--><br />
* [[File:TechDraw_ExtensionThreadHoleBottom.svg|32px]] [[TechDraw_ExtensionThreadHoleBottom|Thread Hole]]: adds symbolic threads to the bottom view of holes. {{Version|0.20}}<br />
<br />
<!--T:317--><br />
* [[File:TechDraw_ExtensionThreadBoltBottom.svg|32px]] [[TechDraw_ExtensionThreadBoltBottom|Thread Shaft]]: adds symbolic threads to the bottom view of bolts. {{Version|0.20}}<br />
<br />
=== Dimensions === <!--T:342--><br />
<br />
<!--T:343--><br />
* [[File:TechDraw_ExtensionInsertDiameter.svg|32px]] [[TechDraw_ExtensionInsertDiameter|Diameter]]: insert diameter sign as prefix character. {{Version|0.20}}<br />
<br />
<!--T:349--><br />
* [[File:TechDraw_ExtensionInsertSquare.svg|32px]] [[TechDraw_ExtensionInsertSquare|Tubular Symbol]]: insert square sign as prefix character. {{Version|0.20}}<br />
<br />
<!--T:350--><br />
* [[File:TechDraw_ExtensionCreateHorizChainDimension.svg|32px]] [[TechDraw_ExtensionCreateHorizChainDimension|Horizontal Series]]: create a horizontal dimension chain. {{Version|0.20}}<br />
<br />
<!--T:344--><br />
* [[File:TechDraw_ExtensionCreateVertChainDimension.svg|32px]] [[TechDraw_ExtensionCreateVertChainDimension|Vertical Series]]: create a vertical dimension chain. {{Version|0.20}}<br />
<br />
<!--T:345--><br />
* [[File:TechDraw_ExtensionCreateObliqueChainDimension.svg|32px]] [[TechDraw_ExtensionCreateObliqueChainDimension|Oblique Series]]: create an oblique dimension chain. {{Version|0.20}}<br />
<br />
<!--T:346--><br />
* [[File:TechDraw_ExtensionCreateHorizCoordDimension.svg|32px]] [[TechDraw_ExtensionCreateHorizCoordDimension|Parallel Horizontal]]: create cascaded horizontal dimensions. {{Version|0.20}}<br />
<br />
<!--T:347--><br />
* [[File:TechDraw_ExtensionCreateVertCoordDimension.svg|32px]] [[TechDraw_ExtensionCreateVertCoordDimension|Parallel Vertical]]: create cascaded vertical dimensions. {{Version|0.20}}<br />
<br />
<!--T:348--><br />
* [[File:TechDraw_ExtensionCreateObliqueCoordDimension.svg|32px]] [[TechDraw_ExtensionCreateObliqueCoordDimension|Parallel Oblique]]: create cascaded oblique dimensions. {{Version|0.20}}<br />
<br />
<!--T:351--><br />
* [[File:TechDraw_ExtensionCreateHorizChamferDimension.svg|32px]] [[TechDraw_ExtensionCreateHorizChamferDimension|Horizontal Chamfer]]: create a horizontal chamfer dimension. {{Version|0.20}}<br />
<br />
<!--T:352--><br />
* [[File:TechDraw_ExtensionCreateVertChamferDimension.svg|32px]] [[TechDraw_ExtensionCreateVertChamferDimension|Vertical Chamfer]]: create a vertical chamfer dimension. {{Version|0.20}}<br />
<br />
<!--T:353--><br />
* [[File:TechDraw_ExtensionCreateLengthArc.svg|32px]] [[TechDraw_ExtensionCreateLengthArc|Arc Length]]: create an arc length dimension. {{Version|0.20}}<br />
<br />
<!--T:354--><br />
* [[File:TechDraw_ExtensionIncreaseDecimal.svg|32px]] [[TechDraw_ExtensionIncreaseDecimal|Increase Accuracy]]: increase decimal places. {{Version|0.20}}<br />
<br />
<!--T:355--><br />
* [[File:TechDraw_ExtensionDecreaseDecimal.svg|32px]] [[TechDraw_ExtensionDecreaseDecimal|Decrease Accuracy]]: decrease decimal places. {{Version|0.20}}<br />
<br />
== Export == <!--T:45--><br />
<br />
<!--T:46--><br />
These are tools for exporting pages to other applications.<br />
<br />
<!--T:47--><br />
* [[File:TechDraw ExportPageSVG.svg|32px]] [[TechDraw_ExportPageSVG|Export Page as SVG]]: saves the current page as [[SVG|SVG]] file.<br />
<br />
<!--T:309--><br />
* [[File:TechDraw ExportPageDXF.svg|32px]] [[TechDraw_ExportPageDXF|Export Page as DXF]]: saves the current page as [[DXF|DXF]] file.<br />
<br />
== Additional features == <!--T:13--><br />
<br />
<!--T:14--><br />
* [[TechDraw_LineGroup|Line Groups]]: to control the appearance of various types of lines.<br />
* [[TechDraw_Templates|Templates]]: the default templates defined for the drawing pages.<br />
* [[TechDraw_Hatching|Hatching]]: explanation of the different hatching techniques.<br />
* [[TechDraw_Geometric_dimensioning_and_tolerancing|Geometric dimensioning and tolerancing]]: explanation on how to achieve geometric dimensioning and tolerancing.<br />
<br />
== Preferences == <!--T:319--><br />
<br />
<!--T:3--><br />
* [[File:Preferences-techdraw.svg|32px]] [[TechDraw_Preferences|Preferences]]: preferences for the default values of the drawing page such as projection angle, colors, text sizes, and line styles.<br />
<br />
== Scripting == <!--T:320--><br />
<br />
<!--T:5--><br />
The TechDraw tools can be used in [[macros|macros]] and from the [[Python|Python]] console by using two APIs.<br />
* [[TechDraw API|TechDraw API]]<br />
* [[TechDrawGui API|TechDrawGui API]]<br />
<br />
== Limitations == <!--T:321--><br />
<br />
<!--T:7--><br />
* TechDraw drawings and its API are not interchangeable with the [[Drawing Workbench|Drawing Workbench]] and its API. It is possible to convert Drawing Pages to TechDraw Pages using a Python script ({{incode|moveViews.py}}).<br />
* It is possible to have both TechDraw and Drawing Pages in the same FreeCAD document, as each page is completely independent from each other. <br />
* There are minor differences in specifying editable texts in [[SVG|SVG]] templates compared to the Drawing module. In TechDraw the scaling of the SVG document affects the position of the editable text fields. See the forum discussion [https://forum.freecadweb.org/viewtopic.php?f=3&t=24981&p=196271#p196271 TechDraw templates scale] for more details.<br />
* Do not cut, copy and paste TechDraw objects in the tree view as this generally does not work out well.<br />
* Do not drag TechDraw items in the TreeView with the mouse.<br />
<br />
== Tutorials == <!--T:60--><br />
<br />
<!--T:61--><br />
* [[Basic TechDraw Tutorial|Basic TechDraw Tutorial]]: introduction to creating drawings with the TechDraw Workbench.<br />
* [[TechDraw_TemplateHowTo|Creating a new template]]: instructions to create a new page template in Inkscape for using with the TechDraw Workbench.<br />
* [[Measurement Of Angles On Holes|Measurement Of Angles On Holes]]: instructions for adding centerlines and subsequent angle representations on holes.<br />
* [[TechDraw HowTo Page|Miscellaneous]]: instructions for different settings like center marks, etc.<br />
* [[TechDraw_Pitch_Circle_Tutorial|TechDraw Pitch Circle Tutorial]]: instructions for adding a pitch circle.<br />
<br />
<!--T:66--><br />
Video tutorials by sliptonic<br />
* TechDraw Workbench [https://www.youtube.com/watch?v=7LbOmSGW9F0 Part 1 (Basics)], [https://www.youtube.com/watch?v=z3w84RfvqaE Part 2 (Dimensions)], [https://www.youtube.com/watch?v=uNjXg-m38aI Part 3 (Multiview)]<br />
* TechDraw Workbench [https://www.youtube.com/watch?v=3zSdeFV6I5o Part 4 (Section and Detail)], [https://www.youtube.com/watch?v=kcmdJ7xa7gg Part 5 (Customizing Templates)]<br />
<br />
<br />
<!--T:8--><br />
{{Docnav<br />
|[[Surface_Workbench|Surface Workbench]]<br />
|[[Web_Workbench|Web Workbench]]<br />
|IconL=Workbench_Surface.svg<br />
|IconR=Workbench_Web.svg<br />
}}<br />
<br />
</translate><br />
{{TechDraw Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}<br />
[[Category:Workbenches{{#translation:}}]]</div>Chrisbhttps://wiki.freecad.org/index.php?title=Part_EditAttachment&diff=1086329Part EditAttachment2021-12-21T23:50:02Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:90--><br />
{{Docnav<br />
|[[Part_ProjectionOnSurface|ProjectionOnSurface]]<br />
|[[Part_CompCompoundTools|CompCompoundTools]]<br />
|[[Part_Workbench|Part]]<br />
|IconL=Part_ProjectionOnSurface.svg<br />
|IconR=Part_CompCompoundTools.png<br />
|IconC=Workbench_Part.svg<br />
}}<br />
<br />
<!--T:1--><br />
{{GuiCommand<br />
|Name=Part EditAttachment<br />
|MenuLocation=Part → Attachment...<br />
|Workbenches=[[Part_Workbench|Part]], [[PartDesign_Workbench|PartDesign]]<br />
|Version=0.17<br />
|SeeAlso=[[Placement|Placement]], [[Basic_Attachment_Tutorial|Basic Attachment Tutorial]], [[Part_Part2DObject|Part Part2DObject]]<br />
}}<br />
<br />
== Description == <!--T:2--> <br />
<br />
<!--T:3--><br />
'''Part EditAttachment''' is a utility to attach an object to another one. The attached object is linked to the other object, which means that if the latter's placement is changed afterwards, the attached object will update to its new position.<br />
<br />
== Usage == <!--T:5--><br />
<br />
<!--T:6--><br />
# Select the object to be attached.<br />
# Go to the '''Part → Attachment...''' menu.<br />
#: '''Note''': when working in [[PartDesign_Workbench|PartDesign]] and creating sketches, datum geometry or primitives, steps 1 and 2 are unnecessary: the Attachment dialogue is brought up automatically.<br />
# Under '''Attachment''' parameters, ''Not attached'' can be read. The first button below is labeled {{KEY|Selecting…}} to indicate it is expecting a selection in the 3D view.<br />
# Select a topology element on the object to attach to: vertex, edge or face/plane. Datum geometry from [[Std_Part|Part containers]] are also selectable.<br />
# The first button's label now adopts the type of topology selected. In the white field to its right, the referenced object and its element is added. For example, if a face on a primitive cube is selected, the field will show Box:Face6.<br />
# Select an [[#Attachment mode|Attachment mode]] in the list. The available modes are filtered by the selected references. ''Attached with mode <mode description>'' will be displayed under the '''Attachment''' header.<br />
#: For live information on the attachment modes, hover the mouse on top of one of the modes in the list for a tooltip to appear.<br />
# Optionally, add up to 3 more references by pressing the {{KEY|Reference2}}, {{KEY|Reference3}}, and {{KEY|Reference4}} buttons and repeating step 4.<br />
# Optionally set an [[#Attachment Offset|Attachment Offset]].<br />
# Press {{KEY|OK}}.<br />
<br />
== Options == <!--T:7--><br />
<br />
<!--T:8--><br />
[[File:Part Offset Tasks.png|right]]<br />
<br />
=== Attachment mode === <!--T:9--><br />
<br />
==== Deactivated ==== <!--T:10--><br />
<br />
<!--T:11--><br />
Default, no reference selected.<br />
<br />
==== Normal to edge ==== <!--T:12--><br />
<br />
<!--T:13--><br />
Object is made perpendicular to edge. Optional vertex reference defines location.<br />
<br />
<!--T:14--><br />
:; Reference combinations:<br />
: Edge<br />
: Edge, Vertex<br />
: Vertex, Edge<br />
<br />
==== Align O-N-X ==== <!--T:15--><br />
<br />
<!--T:16--><br />
Matches object's origin with first referenced vertex, then aligns its normal and horizontal plane axis toward vertex/along line.<br />
<br />
<!--T:17--><br />
:; Reference combinations:<br />
: Vertex, Vertex, Vertex<br />
: Vertex, Vertex, Edge<br />
: Vertex, Edge, Vertex<br />
: Vertex, Edge, Edge<br />
: Vertex, Vertex<br />
: Vertex, Edge<br />
<br />
==== Align O-N-Y ==== <!--T:18--><br />
<br />
<!--T:19--><br />
Matches object's origin with first referenced vertex and aligns its normal and vertical plane axis toward vertex/along line.<br />
<br />
<!--T:20--><br />
:; Reference combinations:<br />
: Vertex, Vertex, Vertex<br />
: Vertex, Vertex, Edge<br />
: Vertex, Edge, Vertex<br />
: Vertex, Edge, Edge<br />
: Vertex, Vertex<br />
: Vertex, Edge<br />
<br />
==== Align O-X-Y ==== <!--T:21--><br />
<br />
<!--T:22--><br />
Matches object's origin with first referenced vertex and aligns its horizontal and vertical plane axes toward vertex/along line.<br />
<br />
<!--T:23--><br />
:; Reference combinations:<br />
: Vertex, Vertex, Vertex<br />
: Vertex, Vertex, Edge<br />
: Vertex, Edge, Vertex<br />
: Vertex, Edge, Edge<br />
: Vertex, Vertex<br />
:Vertex, Edge<br />
<br />
==== Align O-X-N ==== <!--T:24--><br />
<br />
<!--T:25--><br />
Matches object's origin with first referenced vertex and aligns its horizontal plane axis and normal toward vertex/along line.<br />
<br />
<!--T:26--><br />
:; Reference combinations:<br />
: Vertex, Vertex, Vertex<br />
: Vertex, Vertex, Edge<br />
: Vertex, Edge, Vertex<br />
: Vertex, Edge, Edge<br />
: Vertex, Vertex<br />
: Vertex, Edge<br />
<br />
==== Align O-Y-N ==== <!--T:27--><br />
<br />
<!--T:28--><br />
Matches object's origin with first referenced vertex and aligns its vertical plane axis and normal toward vertex/along line.<br />
<br />
<!--T:29--><br />
:; Reference combinations:<br />
: Vertex, Vertex, Vertex<br />
: Vertex, Vertex, Edge<br />
: Vertex, Edge, Vertex<br />
: Vertex, Edge, Edge<br />
: Vertex, Vertex<br />
: Vertex, Edge<br />
<br />
==== Align O-Y-X ==== <!--T:30--><br />
<br />
<!--T:31--><br />
Matches object's origin with first referenced vertex and aligns its vertical and horizontal plane axes toward vertex/along line.<br />
<br />
<!--T:32--><br />
:; Reference combinations:<br />
: Vertex, Vertex, Vertex<br />
: Vertex, Vertex, Edge<br />
: Vertex, Edge, Vertex<br />
: Vertex, Edge, Edge<br />
: Vertex, Vertex<br />
:Vertex, Edge<br />
<br />
==== Translate origin ==== <!--T:33--><br />
<br />
<!--T:34--><br />
Object's origin is aligned to matched vertex. Orientation is controlled by [[Placement|Placement]] property.<br />
<br />
<!--T:35--><br />
:; Reference combinations:<br />
: Vertex.<br />
<br />
==== Object's XY ==== <!--T:36--><br />
<br />
<!--T:37--><br />
Plane is aligned to XY local plane of linked object.<br />
<br />
<!--T:38--><br />
:; Reference combinations:<br />
: Any, Conic.<br />
<br />
==== Object's XZ ==== <!--T:39--><br />
<br />
<!--T:40--><br />
Plane is aligned to XZ local plane of linked object.<br />
<br />
<!--T:41--><br />
:; Reference combinations:<br />
: Any, Conic.<br />
<br />
==== Object's YZ ==== <!--T:42--><br />
<br />
<!--T:43--><br />
Plane is aligned to YZ local plane of linked object.<br />
<br />
<!--T:44--><br />
:; Reference combinations:<br />
: Any, Conic<br />
<br />
==== Plane face ==== <!--T:45--><br />
<br />
<!--T:46--><br />
Plane is aligned to coincide to planar face.<br />
<br />
<!--T:47--><br />
:; Reference combinations:<br />
: Plane<br />
<br />
==== Tangent to surface ==== <!--T:48--><br />
<br />
<!--T:49--><br />
Plane is made tangent to surface at vertex.<br />
<br />
<!--T:50--><br />
:; Reference combinations:<br />
: Face, Vertex<br />
: Vertex, Face<br />
<br />
==== Frenet NB ==== <!--T:51--><br />
<br />
<!--T:52--><br />
Plane is set to normal-binormal (NB) axes of [https://en.wikipedia.org/wiki/Frenet%E2%80%93Serret_formulas Frenet-Serret coordinates ] at the point of the edge's curve that is closest to the vertex (or defined by MapPathParameter property, if vertex is not linked). The object's origin is translated to the vertex if the vertex is first, or kept at the curve if edge is first. This mode is similar to ''Normal to edge'', except that X axis is well-defined.<br />
<br />
<!--T:53--><br />
:;Reference combinations:<br />
: Curve<br />
: Curve, Vertex<br />
: Vertex, Curve<br />
: [[File:Attacher mode FrenetNB.png|250px]]<br />
<br />
==== Frenet TN ==== <!--T:54--><br />
<br />
<!--T:55--><br />
Plane is set to tangent-normal (TN) axes of [https://en.wikipedia.org/wiki/Frenet%E2%80%93Serret_formulas Frenet-Serret coordinates ] at the point of the edge's curve that is closest to the vertex (or defined by MapPathParameter property, if vertex is not linked). The origin of sketch is translated to the vertex if the vertex is first, or kept at the curve if edge is first. Effectively, if the curve is planar, the sketching plane is the plane of the curve.<br />
<br />
<!--T:56--><br />
:;Reference combinations:<br />
: Curve<br />
: Curve, Vertex<br />
: Vertex, Curve<br />
: [[File:Attacher_mode_FrenetTN.png|250px]]<br />
<br />
==== Frenet TB ==== <!--T:57--><br />
<br />
<!--T:58--><br />
Plane is set tangent-binormal (TB) axes of [https://en.wikipedia.org/wiki/Frenet%E2%80%93Serret_formulas Frenet-Serret coordinates] at the point of the edge's curve that is closest to the vertex (or defined by MapPathParameter property, if vertex is not linked). The origin of sketch is translated to the vertex if the vertex is first, or kept at the curve if edge is first.<br />
<br />
<!--T:59--><br />
:;Reference combinations:<br />
: Curve<br />
: Curve, Vertex<br />
: Vertex, Curve<br />
: [[File:Attacher_mode_FrenetTB.png|250px]]<br />
<br />
==== Concentric ==== <!--T:60--><br />
<br />
<!--T:61--><br />
Aligns to plane to osculating circle of an edge. Optional Vertex link defines where.<br />
<br />
<!--T:62--><br />
:; Reference combinations:<br />
: Curve<br />
: Circle<br />
: Curve, Vertex<br />
: Circle, Vertex<br />
: Vertex, Curve<br />
: Vertex, Circle<br />
<br />
==== Revolution Section ==== <!--T:63--><br />
<br />
<!--T:64--><br />
Plane is perpendicular to edge, and Y axis is matched with axis of osculating circle. Optional Vertex link defines where.<br />
<br />
<!--T:65--><br />
:; Reference combinations:<br />
: Curve<br />
: Circle<br />
: Curve, Vertex<br />
: Circle, Vertex<br />
: Vertex, Curve<br />
: Vertex, Circle<br />
<br />
==== Plane by 3 points ==== <!--T:66--><br />
<br />
<!--T:67--><br />
Aligns XY plane to pass through three vertices.<br />
<br />
<!--T:68--><br />
:; Reference combinations:<br />
: Vertex, Vertex, Vertex<br />
: Line, Vertex<br />
: Vertex, Line<br />
: Line, Line<br />
<br />
==== Normal to 3 points ==== <!--T:69--><br />
<br />
<!--T:70--><br />
Aligns plane to pass through first two vertices, and perpendicular to plane that passes through 3 vertices.<br />
<br />
<!--T:71--><br />
:; Reference combinations:<br />
: Vertex, Vertex, Vertex<br />
: Line, Vertex<br />
: Vertex, Line<br />
: Line, Line<br />
<br />
==== Folding ==== <!--T:72--><br />
<br />
<!--T:73--><br />
Specialty mode for folding polyhedra. Select 4 edge in order: glueable edge, fold line, other fold line, other glueable edge. Plane will be aligned to folding the first edge. In the picture below, it is not required that both leafs to fold together be the same.<br />
<br />
<!--T:74--><br />
:; Reference combinations<br />
: Line, Line, Line, Line<br />
: [[File:Attacher_mode_Folding.png| 250px]]<br />
<br />
==== Inertia 2-3 ==== <!--T:75--><br />
<br />
<!--T:76--><br />
Object will be attached to a plane passing through second and third principal axes of inertia (passes through center of mass).<br />
<br />
<!--T:77--><br />
:; Reference combinations:<br />
: Any<br />
: Any, Any<br />
: Any, Any, Any<br />
: Any, Any, Any, Any<br />
<br />
=== Attachment Offset === <!--T:78--><br />
<br />
<!--T:79--><br />
Attachment Offset is used to apply a linear or rotary offset from the referenced object. That means the offsets are relative to the ''local'' coordinate system, not to the global. It becomes active when an attachment mode other than ''Deactivated'' has been selected.<br />
<br />
<!--T:80--><br />
* '''X''': sets an offset distance in the X axis of the reference object.<br />
<br />
<!--T:81--><br />
* '''Y''': sets an offset distance in the Y axis of the reference object.<br />
<br />
<!--T:82--><br />
* '''Z''': sets an offset distance in the Z axis of the reference object. This coordinate is to be used for the frequent use case that you want to offset a sketch perpendicular to the plane.<br />
<br />
<!--T:83--><br />
* '''Yaw''': rotates the attached object along the reference object's Z axis.<br />
<br />
<!--T:84--><br />
* '''Pitch''': rotates the attached object along the reference object's Y axis.<br />
<br />
<!--T:85--><br />
* '''Roll''': rotates the attached object along the reference object's X axis.<br />
<br />
<!--T:86--><br />
* '''Flip sides''': if checked, the attached object is reversed from its XY plane.<br />
<br />
== Limitations == <!--T:87--><br />
<br />
<!--T:88--><br />
* [[Std_Part|Part]] and [[PartDesign_Body|Body]] containers are not supported. While it's possible to use Attachment to align them, the attachment won't be parametrically linked.<br />
* If selecting two lines results in a traceback with "points are collinear. Can't make a plane", try selecting three points instead [https://forum.freecadweb.org/viewtopic.php?f=8&t=55088&p=473614#p473594].<br />
<br />
<!--T:91--><br />
{{Docnav<br />
|[[Part_ProjectionOnSurface|ProjectionOnSurface]]<br />
|[[Part_CompCompoundTools|CompCompoundTools]]<br />
|[[Part_Workbench|Part]]<br />
|IconL=Part_ProjectionOnSurface.svg<br />
|IconR=Part_CompCompoundTools.png<br />
|IconC=Workbench_Part.svg<br />
}}<br />
<br />
</translate><br />
{{Part_Tools_navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=File:Attacher_mode_Folding.png&diff=1086328File:Attacher mode Folding.png2021-12-21T23:46:48Z<p>Chrisb: Chrisb uploaded a new version of File:Attacher mode Folding.png</p>
<hr />
<div></div>Chrisbhttps://wiki.freecad.org/index.php?title=PartDesign_Mirrored&diff=1085911PartDesign Mirrored2021-12-19T16:52:07Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<!--T:39--><br />
{{Docnav<br />
|[[PartDesign_SubtractiveWedge|Subtractive wedge]]<br />
|[[PartDesign_LinearPattern|Linear Pattern]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_SubtractiveWedge.svg<br />
|IconR=PartDesign_LinearPattern.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
<!--T:8--><br />
{{GuiCommand<br />
|Name=PartDesign Mirrored<br />
|MenuLocation=PartDesign → Apply a pattern → Mirrored<br />
|Workbenches=[[PartDesign_Workbench|PartDesign]]<br />
}}<br />
<br />
==Description== <!--T:9--><br />
<br />
<!--T:15--><br />
The '''Mirrored''' tool mirrors features on a plane.<br />
<br />
</translate><br />
[[File:PartDesign Mirrored example.svg]]<br />
<translate><br />
<br />
<!--T:16--><br />
{{Caption|Above: a Pocket feature was created from a sketch containing a circle (A), the Pocket was subsequently used to create a Mirrored feature. The sketch vertical axis (B) was used as axis of symmetry. The result (C) is shown on the right.}} <br />
<br />
==Usage== <!--T:10--><br />
<br />
<!--T:17--><br />
To create a mirroring:<br />
# Select the one or more features to be mirrored.<br />
# Press the {{KEY|[[File:PartDesign_Mirrored.svg|24px]] '''Mirrored'''}} button.<br />
# If you have several features in the mirroring, their order can be important, see for example the image in the [[PartDesign_PolarPattern#Usage|PolarPattern feature]]. You can change the order by dragging the feature in the list and you will see the result immediately as preview.<br />
# Define the mirror '''Plane'''. See [[#Options|Options]].<br />
# Press {{KEY|OK}}.<br />
<br />
<!--T:43--><br />
To add or remove features from an existing mirroring:<br />
# Press {{KEY|Add feature}} to add a feature to be mirrored. The feature must be visible in the [[3D_view|3D view]]: <br />
## Switch to the Model tree;<br />
## Select in the tree the feature to be added and press {{KEY|spacebar}} to make it visible in the [[3D_view|3D view]];<br />
## Switch back to the Tasks panel;<br />
## Select the feature in the 3D view; it will be added to the list.<br />
## Repeat to add other features.<br />
# Press {{KEY|Remove feature}} to remove a feature from the list, or right-click on the feature in the list and select ''Remove''.<br />
<br />
==Options == <!--T:18--><br />
<br />
<!--T:19--><br />
[[File:Mirrored parameters_v017.png|frame|left|Mirrored parameters]]<br />
<br />
===Plane === <!--T:14--><br />
<br />
<!--T:20--><br />
When creating a mirrored feature, the '''Mirrored parameters''' dialog offers different ways of specifying the mirror line or plane .<br />
<br />
====Horizontal sketch axis ==== <!--T:21--><br />
<br />
<!--T:22--><br />
Uses the horizontal axis of the sketch as the axis of symmetry. <br />
<br />
====Vertical sketch axis ==== <!--T:23--> <br />
<br />
<!--T:24--><br />
Uses the vertical axis of the sketch as the axis of symmetry.<br />
<br />
====Select reference... ==== <!--T:25--><br />
<br />
<!--T:26--><br />
Allows you to select a plane (such as a face of an object) to use as a mirror plane .<br />
<br />
====Custom Sketch Axis ==== <!--T:27--><br />
<br />
<!--T:28--><br />
If the sketch which defines the feature to be mirrored also contains a construction line (or lines), then the drop down list will contain one custom sketch axis for each construction line. The first construction line will be labelled 'Sketch axis 0'. The image below is an example with the sketch in edit mode showing that it includes a construction line for use as the Mirrored axis.<br />
<br />
</translate><br />
[[Image:PartDesign_Mirrored_axis_fromconstructionlines.jpg|none]]<br />
<translate><br />
<br />
====Base (XY/XZ/YZ) plane ==== <!--T:29--><br />
<br />
<!--T:30--><br />
Select one of the Body Origin's standard planes (XY, XZ or YZ).<br />
<br />
===Preview === <!--T:31--><br />
<br />
<!--T:32--><br />
The mirror result can be previewed in real time before clicking {{Button|OK}} by checking "Update view" .<br />
</translate><br />
{{clear}}<br />
<translate><br />
<br />
==Limitations== <!--T:11--><br />
<br />
<!--T:37--><br />
* The Mirrored feature cannot mirror a whole solid body. For that, see [[Part_Mirror|Part Mirror]] .<br />
* A Mirrored feature cannot directly be applied to another pattern, be it polar or linear or another mirror. For this you need a [[PartDesign_MultiTransform|PartDesign MultiTransform]]<br />
* The mirrored feature must intersect the solid (also called ''support'') it is based on, or the command will fail .<br />
<br />
<br />
<!--T:40--><br />
{{Docnav<br />
|[[PartDesign_SubtractiveWedge|Subtractive wedge]]<br />
|[[PartDesign_LinearPattern|Linear Pattern]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_SubtractiveWedge.svg<br />
|IconR=PartDesign_LinearPattern.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
</translate><br />
{{PartDesign Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=PartDesign_Mirrored&diff=1085910PartDesign Mirrored2021-12-19T16:51:26Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<!--T:39--><br />
{{Docnav<br />
|[[PartDesign_SubtractiveWedge|Subtractive wedge]]<br />
|[[PartDesign_LinearPattern|Linear Pattern]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_SubtractiveWedge.svg<br />
|IconR=PartDesign_LinearPattern.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
<!--T:8--><br />
{{GuiCommand<br />
|Name=PartDesign Mirrored<br />
|MenuLocation=PartDesign → Apply a pattern → Mirrored<br />
|Workbenches=[[PartDesign_Workbench|PartDesign]]<br />
}}<br />
<br />
==Description== <!--T:9--><br />
<br />
<!--T:15--><br />
The '''Mirrored''' tool mirrors features on a plane.<br />
<br />
</translate><br />
[[File:PartDesign Mirrored example.svg]]<br />
<translate><br />
<br />
<!--T:16--><br />
{{Caption|Above: a Pocket feature was created from a sketch containing a circle (A), the Pocket was subsequently used to create a Mirrored feature. The sketch vertical axis (B) was used as axis of symmetry. The result (C) is shown on the right.}} <br />
<br />
==Usage== <!--T:10--><br />
<br />
<!--T:17--><br />
To create a mirroring:<br />
# Select the one or more features to be mirrored.<br />
# Press the {{KEY|[[File:PartDesign_Mirrored.svg|24px]] '''Mirrored'''}} button.<br />
# If you have several features in the mirroring, their order can be important, see for example the image in the [[PartDesign_PolarPattern#Usage|PolarPattern feature]]. You can change the order by dragging the feature in the list and you will see the result immediately as preview.<br />
# Define the mirror '''Plane'''. See [[#Options|Options]].<br />
# Press {{KEY|OK}}.<br />
<br />
<!--T:43--><br />
To add or remove features from an existing mirroring:<br />
# Press {{KEY|Add feature}} to add a feature to be mirrored. The feature must be visible in the [[3D_view|3D view]]: <br />
## Switch to the Model tree;<br />
## Select in the tree the feature to be added and press {{KEY|spacebar}} to make it visible in the [[3D_view|3D view]];<br />
## Switch back to the Tasks panel;<br />
## Select the feature in the 3D view; it will be added to the list.<br />
## Repeat to add other features.<br />
# Press {{KEY|Remove feature}} to remove a feature from the list, or right-click on the feature in the list and select ''Remove''.<br />
<br />
==Options == <!--T:18--><br />
<br />
<!--T:19--><br />
[[File:Mirrored parameters_v017.png|frame|left|Mirrored parameters]]<br />
<br />
===Plane === <!--T:14--><br />
<br />
<!--T:20--><br />
When creating a mirrored feature, the '''Mirrored parameters''' dialog offers different ways of specifying the mirror line or plane .<br />
<br />
====Horizontal sketch axis ==== <!--T:21--><br />
<br />
<!--T:22--><br />
Uses the horizontal axis of the sketch as the axis of symmetry. <br />
<br />
====Vertical sketch axis ==== <!--T:23--> <br />
<br />
<!--T:24--><br />
Uses the vertical axis of the sketch as the axis of symmetry.<br />
<br />
====Select reference... ==== <!--T:25--><br />
<br />
<!--T:26--><br />
Allows you to select a plane (such as a face of an object) to use as a mirror plane .<br />
<br />
====Custom Sketch Axis ==== <!--T:27--><br />
<br />
<!--T:28--><br />
If the sketch which defines the feature to be mirrored also contains a construction line (or lines), then the drop down list will contain one custom sketch axis for each construction line. The first construction line will be labelled 'Sketch axis 0'. The image below is an example with the sketch in edit mode showing that it includes a construction line for use as the Mirrored axis.<br />
<br />
</translate><br />
[[Image:PartDesign_Mirrored_axis_fromconstructionlines.jpg|none]]<br />
<translate><br />
<br />
====Base (XY/XZ/YZ) plane ==== <!--T:29--><br />
<br />
<!--T:30--><br />
Select one of the Body Origin's standard planes (XY, XZ or YZ).<br />
<br />
===Preview === <!--T:31--><br />
<br />
<!--T:32--><br />
The mirror result can be previewed in real time before clicking {{Button|OK}} by checking "Update view" .<br />
</translate><br />
{{clear}}<br />
<translate><br />
<br />
==Limitations== <!--T:11--><br />
<br />
<!--T:37--><br />
* The Mirrored feature cannot mirror a whole solid body. For that, see [[Part_Mirror|Part Mirror]] .<br />
* A Mirrored feature cannot directly be applied to another pattern, be it polar or linear or another mirror. For this you need a [[PartDesign_MultiTransform|PartDesign MultiTransform]]<br />
<br />
<br />
<!--T:38--><br />
* The mirrored feature must intersect the solid (also called ''support'') it is based on, or the command will fail .<br />
<br />
<br />
<!--T:40--><br />
{{Docnav<br />
|[[PartDesign_SubtractiveWedge|Subtractive wedge]]<br />
|[[PartDesign_LinearPattern|Linear Pattern]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_SubtractiveWedge.svg<br />
|IconR=PartDesign_LinearPattern.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
</translate><br />
{{PartDesign Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=PartDesign_LinearPattern&diff=1085909PartDesign LinearPattern2021-12-19T16:51:02Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<!--T:24--><br />
{{Docnav<br />
|[[PartDesign_Mirrored|Mirrored]]<br />
|[[PartDesign_PolarPattern|Polar Pattern]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_Mirrored.svg<br />
|IconR=PartDesign_PolarPattern.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
<!--T:1--><br />
{{GuiCommand<br />
|Name=PartDesign LinearPattern<br />
|MenuLocation=PartDesign → Apply a pattern → LinearPattern<br />
|Workbenches=[[PartDesign_Workbench|PartDesign]]<br />
}}<br />
<br />
==Description== <!--T:2--><br />
<br />
<!--T:4--><br />
The {{KEY|[[File:PartDesign_LinearPattern.svg|24px]] '''LinearPattern'''}} tool creates evenly spaced copies of a feature in a linear direction. As of {{VersionPlus|0.17}} the Linear pattern tool can pattern multiple features.<br />
<br />
</translate><br />
[[File:PartDesign LinearPattern example.svg|none]]<br />
<translate><br />
<br />
<!--T:5--><br />
''Above: An L-shaped pad (B) made on top of a base pad (A, also referred to as ''support'') is used for a linear pattern. The result (C) is shown on the right.''<br />
<br />
==Usage== <!--T:6--><br />
<br />
<!--T:7--><br />
To create a pattern:<br />
# Select the feature ({{Version|0.19}} or several features) to be patterned.<br />
# Press the {{KEY|[[File:PartDesign_LinearPattern.svg|24px]] '''LinearPattern'''}} button.<br />
# Define the '''Direction'''. See [[#Options|Options]].<br />
# Define the '''Length''' (distance) between the last copied occurrence and the original feature.<br />
# Set the number of '''Occurrences'''.<br />
# If you have several features in the pattern, their order can be important, see for example the image in the [[PartDesign_PolarPattern#Usage|PolarPattern feature]]. {{Version|0.19}} You can change the order by dragging the feature in the list and you will see the result immediately as preview.<br />
# Press {{KEY|OK}}.<br />
<br />
<!--T:28--><br />
To add or remove features from an existing pattern:<br />
# Press {{KEY|Add feature}} to add a feature to be patterned. The feature must be visible in the [[3D_view|3D view]]:<br />
## Switch to the Model tree;<br />
## Select in the tree the feature to be added and press {{KEY|Space}} to make it visible in the [[3D_view|3D view]];<br />
## Switch back to the Tasks panel;<br />
## Select the feature in the 3D view; it will be added to the list.<br />
## Repeat to add other features.<br />
# Press {{KEY|Remove feature}} to remove a feature from the list, or right-click on the feature in the list and select {{Button|Remove}}<br />
<br />
==Options == <!--T:8--><br />
<br />
<!--T:9--><br />
[[File:Linearpattern_parameters.png|frame|left|LinearPattern parameters in v0.16 and below.]]<br />
[[File:Linearpattern parameters v017.png|frame|left|LinearPattern parameters in v0.17 and above.]]<br />
<br />
===Direction === <!--T:10--><br />
<br />
<!--T:11--><br />
When creating a linear pattern feature, the '''LinearPattern parameters''' dialogue offers different ways of specifying the pattern direction.<br />
<br />
====Horizontal sketch axis==== <!--T:12--><br />
<br />
<!--T:13--><br />
Uses the horizontal axis of the sketch for direction. <br />
<br />
====Vertical sketch axis==== <!--T:14--><br />
<br />
<!--T:15--><br />
Uses the vertical axis of the sketch for direction.<br />
<br />
====Normal sketch axis==== <!--T:16--><br />
<br />
<!--T:17--><br />
{{VersionPlus|0.17}} Uses the normal axis of the sketch for direction.<br />
<br />
====Select reference...==== <!--T:18--><br />
<br />
<!--T:19--><br />
Allows you to select either a DatumLine or an edge of an object or a line of a sketch to use for direction.<br />
<br />
====Custom Sketch Axis==== <!--T:20--><br />
<br />
<!--T:21--><br />
If the sketch which defines the feature to be patterned also contains a construction line (or lines), then the drop down list will contain one custom sketch axis for each construction line. The first construction line will be labelled ''Sketch axis 0''.<br />
<br />
====Base (X/Y/Z) axis==== <!--T:22--><br />
<br />
<!--T:23--><br />
{{VersionPlus|0.17}} Select one of the Body Origin's standard axis (X, Y or Z) as direction.<br />
{{clear}}<br />
<br />
==Limitations== <!--T:3--><br />
* Pattern shapes may not overlap one another except for the special case of only two occurrences (original plus one copy)<br />
* Any pattern shapes that do not overlap the original's support will be excluded. This ensures that a PartDesign feature always consists of a single, connected solid<br />
* The PartDesign patterns are not yet as optimized as their Draft counterparts. So for a bigger number of instances you should consider using [[Draft_OrthoArray|Draft array]] instead, combined with a Part boolean operation. This may include major changes to your model as you are leaving PartDesign, which means that you cannot simply continue with further PartDesign features in the same body. An example is shown in this [https://forum.freecadweb.org/viewtopic.php?f=3&t=55192 Forum topic]<br />
* A LinearPattern cannot directly be applied to another pattern, be it polar or linear or a mirror. For this you need a [[PartDesign_MultiTransform|PartDesign MultiTransform]]<br />
* For further limitations, see the [[PartDesign_Mirrored|PartDesign mirrored]] feature.<br />
<br />
<br />
<!--T:25--><br />
{{Docnav<br />
|[[PartDesign_Mirrored|Mirrored]]<br />
|[[PartDesign_PolarPattern|Polar Pattern]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_Mirrored.svg<br />
|IconR=PartDesign_PolarPattern.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
</translate><br />
{{PartDesign Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=PartDesign_Mirrored&diff=1085906PartDesign Mirrored2021-12-19T16:47:16Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<!--T:39--><br />
{{Docnav<br />
|[[PartDesign_SubtractiveWedge|Subtractive wedge]]<br />
|[[PartDesign_LinearPattern|Linear Pattern]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_SubtractiveWedge.svg<br />
|IconR=PartDesign_LinearPattern.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
<!--T:8--><br />
{{GuiCommand<br />
|Name=PartDesign Mirrored<br />
|MenuLocation=PartDesign → Apply a pattern → Mirrored<br />
|Workbenches=[[PartDesign_Workbench|PartDesign]]<br />
}}<br />
<br />
==Description== <!--T:9--><br />
<br />
<!--T:15--><br />
The '''Mirrored''' tool mirrors features on a plane.<br />
<br />
</translate><br />
[[File:PartDesign Mirrored example.svg]]<br />
<translate><br />
<br />
<!--T:16--><br />
{{Caption|Above: a Pocket feature was created from a sketch containing a circle (A), the Pocket was subsequently used to create a Mirrored feature. The sketch vertical axis (B) was used as axis of symmetry. The result (C) is shown on the right.}} <br />
<br />
==Usage== <!--T:10--><br />
<br />
<!--T:17--><br />
To create a mirroring:<br />
# Select the one or more features to be mirrored.<br />
# Press the {{KEY|[[File:PartDesign_Mirrored.svg|24px]] '''Mirrored'''}} button.<br />
# If you have several features in the mirroring, their order can be important, see for example the image in the [[PartDesign_PolarPattern#Usage|PolarPattern feature]]. You can change the order by dragging the feature in the list and you will see the result immediately as preview.<br />
# Define the mirror '''Plane'''. See [[#Options|Options]].<br />
# Press {{KEY|OK}}.<br />
<br />
<!--T:43--><br />
To add or remove features from an existing mirroring:<br />
# Press {{KEY|Add feature}} to add a feature to be mirrored. The feature must be visible in the [[3D_view|3D view]]: <br />
## Switch to the Model tree;<br />
## Select in the tree the feature to be added and press {{KEY|spacebar}} to make it visible in the [[3D_view|3D view]];<br />
## Switch back to the Tasks panel;<br />
## Select the feature in the 3D view; it will be added to the list.<br />
## Repeat to add other features.<br />
# Press {{KEY|Remove feature}} to remove a feature from the list, or right-click on the feature in the list and select ''Remove''.<br />
<br />
==Options == <!--T:18--><br />
<br />
<!--T:19--><br />
[[File:Mirrored parameters_v017.png|frame|left|Mirrored parameters]]<br />
<br />
===Plane === <!--T:14--><br />
<br />
<!--T:20--><br />
When creating a mirrored feature, the '''Mirrored parameters''' dialog offers different ways of specifying the mirror line or plane .<br />
<br />
====Horizontal sketch axis ==== <!--T:21--><br />
<br />
<!--T:22--><br />
Uses the horizontal axis of the sketch as the axis of symmetry. <br />
<br />
====Vertical sketch axis ==== <!--T:23--> <br />
<br />
<!--T:24--><br />
Uses the vertical axis of the sketch as the axis of symmetry.<br />
<br />
====Select reference... ==== <!--T:25--><br />
<br />
<!--T:26--><br />
Allows you to select a plane (such as a face of an object) to use as a mirror plane .<br />
<br />
====Custom Sketch Axis ==== <!--T:27--><br />
<br />
<!--T:28--><br />
If the sketch which defines the feature to be mirrored also contains a construction line (or lines), then the drop down list will contain one custom sketch axis for each construction line. The first construction line will be labelled 'Sketch axis 0'. The image below is an example with the sketch in edit mode showing that it includes a construction line for use as the Mirrored axis.<br />
<br />
</translate><br />
[[Image:PartDesign_Mirrored_axis_fromconstructionlines.jpg|none]]<br />
<translate><br />
<br />
====Base (XY/XZ/YZ) plane ==== <!--T:29--><br />
<br />
<!--T:30--><br />
Select one of the Body Origin's standard planes (XY, XZ or YZ).<br />
<br />
===Preview === <!--T:31--><br />
<br />
<!--T:32--><br />
The mirror result can be previewed in real time before clicking {{Button|OK}} by checking "Update view" .<br />
</translate><br />
{{clear}}<br />
<translate><br />
<br />
==Limitations== <!--T:11--><br />
<br />
<!--T:37--><br />
* The Mirrored feature cannot mirror a whole solid body. For that, see [[Part_Mirror|Part Mirror]] .<br />
* A Mirrored feature cannot directly be applied to another pattern, be it polar or linear or another mirror. For this you need a [[PartDesign_Multitransform|PartDesign MultiTransform]]<br />
<br />
<br />
<!--T:38--><br />
* The mirrored feature must intersect the solid (also called ''support'') it is based on, or the command will fail .<br />
<br />
<br />
<!--T:40--><br />
{{Docnav<br />
|[[PartDesign_SubtractiveWedge|Subtractive wedge]]<br />
|[[PartDesign_LinearPattern|Linear Pattern]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_SubtractiveWedge.svg<br />
|IconR=PartDesign_LinearPattern.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
</translate><br />
{{PartDesign Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=PartDesign_LinearPattern&diff=1085905PartDesign LinearPattern2021-12-19T16:45:48Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<translate><br />
<!--T:24--><br />
{{Docnav<br />
|[[PartDesign_Mirrored|Mirrored]]<br />
|[[PartDesign_PolarPattern|Polar Pattern]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_Mirrored.svg<br />
|IconR=PartDesign_PolarPattern.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
<!--T:1--><br />
{{GuiCommand<br />
|Name=PartDesign LinearPattern<br />
|MenuLocation=PartDesign → Apply a pattern → LinearPattern<br />
|Workbenches=[[PartDesign_Workbench|PartDesign]]<br />
}}<br />
<br />
==Description== <!--T:2--><br />
<br />
<!--T:4--><br />
The {{KEY|[[File:PartDesign_LinearPattern.svg|24px]] '''LinearPattern'''}} tool creates evenly spaced copies of a feature in a linear direction. As of {{VersionPlus|0.17}} the Linear pattern tool can pattern multiple features.<br />
<br />
</translate><br />
[[File:PartDesign LinearPattern example.svg|none]]<br />
<translate><br />
<br />
<!--T:5--><br />
''Above: An L-shaped pad (B) made on top of a base pad (A, also referred to as ''support'') is used for a linear pattern. The result (C) is shown on the right.''<br />
<br />
==Usage== <!--T:6--><br />
<br />
<!--T:7--><br />
To create a pattern:<br />
# Select the feature ({{Version|0.19}} or several features) to be patterned.<br />
# Press the {{KEY|[[File:PartDesign_LinearPattern.svg|24px]] '''LinearPattern'''}} button.<br />
# Define the '''Direction'''. See [[#Options|Options]].<br />
# Define the '''Length''' (distance) between the last copied occurrence and the original feature.<br />
# Set the number of '''Occurrences'''.<br />
# If you have several features in the pattern, their order can be important, see for example the image in the [[PartDesign_PolarPattern#Usage|PolarPattern feature]]. {{Version|0.19}} You can change the order by dragging the feature in the list and you will see the result immediately as preview.<br />
# Press {{KEY|OK}}.<br />
<br />
<!--T:28--><br />
To add or remove features from an existing pattern:<br />
# Press {{KEY|Add feature}} to add a feature to be patterned. The feature must be visible in the [[3D_view|3D view]]:<br />
## Switch to the Model tree;<br />
## Select in the tree the feature to be added and press {{KEY|Space}} to make it visible in the [[3D_view|3D view]];<br />
## Switch back to the Tasks panel;<br />
## Select the feature in the 3D view; it will be added to the list.<br />
## Repeat to add other features.<br />
# Press {{KEY|Remove feature}} to remove a feature from the list, or right-click on the feature in the list and select {{Button|Remove}}<br />
<br />
==Options == <!--T:8--><br />
<br />
<!--T:9--><br />
[[File:Linearpattern_parameters.png|frame|left|LinearPattern parameters in v0.16 and below.]]<br />
[[File:Linearpattern parameters v017.png|frame|left|LinearPattern parameters in v0.17 and above.]]<br />
<br />
===Direction === <!--T:10--><br />
<br />
<!--T:11--><br />
When creating a linear pattern feature, the '''LinearPattern parameters''' dialogue offers different ways of specifying the pattern direction.<br />
<br />
====Horizontal sketch axis==== <!--T:12--><br />
<br />
<!--T:13--><br />
Uses the horizontal axis of the sketch for direction. <br />
<br />
====Vertical sketch axis==== <!--T:14--><br />
<br />
<!--T:15--><br />
Uses the vertical axis of the sketch for direction.<br />
<br />
====Normal sketch axis==== <!--T:16--><br />
<br />
<!--T:17--><br />
{{VersionPlus|0.17}} Uses the normal axis of the sketch for direction.<br />
<br />
====Select reference...==== <!--T:18--><br />
<br />
<!--T:19--><br />
Allows you to select either a DatumLine or an edge of an object or a line of a sketch to use for direction.<br />
<br />
====Custom Sketch Axis==== <!--T:20--><br />
<br />
<!--T:21--><br />
If the sketch which defines the feature to be patterned also contains a construction line (or lines), then the drop down list will contain one custom sketch axis for each construction line. The first construction line will be labelled ''Sketch axis 0''.<br />
<br />
====Base (X/Y/Z) axis==== <!--T:22--><br />
<br />
<!--T:23--><br />
{{VersionPlus|0.17}} Select one of the Body Origin's standard axis (X, Y or Z) as direction.<br />
{{clear}}<br />
<br />
==Limitations== <!--T:3--><br />
* Pattern shapes may not overlap one another except for the special case of only two occurrences (original plus one copy)<br />
* Any pattern shapes that do not overlap the original's support will be excluded. This ensures that a PartDesign feature always consists of a single, connected solid<br />
* The PartDesign patterns are not yet as optimized as their Draft counterparts. So for a bigger number of instances you should consider using [[Draft_OrthoArray|Draft array]] instead, combined with a Part boolean operation. This may include major changes to your model as you are leaving PartDesign, which means that you cannot simply continue with further PartDesign features in the same body. An example is shown in this [https://forum.freecadweb.org/viewtopic.php?f=3&t=55192 Forum topic]<br />
* A LinearPattern cannot directly be applied to another pattern, be it polar or linear or a mirror. For this you need a [[PartDesign_Multitransform|PartDesign MultiTransform]]<br />
* For further limitations, see the [[PartDesign_Mirrored|PartDesign mirrored]] feature.<br />
<br />
<br />
<!--T:25--><br />
{{Docnav<br />
|[[PartDesign_Mirrored|Mirrored]]<br />
|[[PartDesign_PolarPattern|Polar Pattern]]<br />
|[[PartDesign_Workbench|PartDesign]]<br />
|IconL=PartDesign_Mirrored.svg<br />
|IconR=PartDesign_PolarPattern.svg<br />
|IconC=Workbench_PartDesign.svg<br />
}}<br />
<br />
</translate><br />
{{PartDesign Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=CAM_Postprocessor_Customization&diff=1082419CAM Postprocessor Customization2021-12-03T19:28:04Z<p>Chrisb: Marked this version for translation</p>
<hr />
<div><languages/><br />
{{UnfinishedDocu}}<br />
<translate><br />
<br />
<!--T:29--><br />
{{Docnav<br />
|[[Path_SetupSheet|SetupSheet]]<br />
|[[Path_fourth_axis|Fourth axis]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=<br />
|IconR=<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{TOCright}}<br />
<translate><br />
<br />
==Introduction== <!--T:2--><br />
<br />
<!--T:3--><br />
FreeCAD uses as internal representation for the generated paths, so called G-codes. They can describe such things as: speed and feed rates, stopping the motor etc... But the most important thing is the movements they describe. These movements are rather simple: They can be straight lines or they can be circular arcs. More sophisticated curves such as B-splines are already approximated by FreeCAD's [[Image:Workbench_Path.svg|24px]] [[Path_Workbench|Path Workbench]].<br />
<br />
==What the postprocessor can do for you== <!--T:4--><br />
<br />
<!--T:5--><br />
Many mills use G-codes as well to control the milling process. They may look almost like the internal codes, but there may be some differences:<br />
* the machine can have a special startup sequence<br />
* it can have a special stop sequence<br />
* arcs can be defined with a relative or an absolute center<br />
* it may require line numbers in a certain format<br />
* it can used so called canned cycles for predefined subprocesses such as drilling<br />
* you might prefer your G-code output in either metric or imperial units.<br />
* it might be useful to perform a set of moves prior to calling for a tool change to make the action easier for the operator<br />
* you might wish to include comments for readability or suppress them to keep the program small<br />
* you might wish to include a custom header to identify or document the program for future reference.<br />
* ...<br />
<br />
<!--T:6--><br />
Furthermore there are other languages to control a mill, such as HPGL, DXF, or others.<br />
<br />
<!--T:7--><br />
The postprocessor is a program which translates the internal codes into a complete file, that can be uploaded to your machine.<br />
<br />
==Preparation for writing your own postprocessor== <!--T:8--><br />
<br />
<!--T:9--><br />
You may start with a very simple model showing how your machine reads straight lines and arcs. Prepare it with any program suitable for your machine.<br />
<br />
<!--T:10--><br />
A file for such paths starting at (0,0,0) and going towards Y would be helpful. Make sure it is the tool itself moving along this path, i.e. no tool radius compensation must be applied.<br />
<br />
<!--T:11--><br />
[[File:Path_PostProcessorSketch.png]]<br />
<br />
<!--T:12--><br />
The path in FreeCAD would look like this. Please note the small blue arrow, it indicates the starting direction. For a very first go you may provide only one level in the XY-plane.<br />
<br />
<!--T:13--><br />
[[File:Path PostProcessorModel.png]]<br />
<br />
<!--T:14--><br />
You can then have a look at the file and compare it to the output of existing postprocessors such as {{FileName|linux_cnc_post.py}} or {{FileName|grbl_post.py}} and try yourself to adapt them or you upload your to the [https://forum.freecadweb.org/viewforum.php?f=15 Path forum] to get some help.<br />
<br />
==Naming convention== <!--T:15--><br />
<br />
<!--T:16--><br />
For a file format {{FileName|<filename>}} the postprocessor should get the name {{FileName|<filename>_post.py}}. Please note that the postfix and extension, {{FileName|_post.py}}, have to be lower case.<br />
<br />
<!--T:17--><br />
If you are testing, place it in your macro directory. If it functions well, please consider providing it for others to benefit (post it to the FreeCAD Path forum) so that it can be included in the FreeCAD distribution going forward.<br />
<br />
==Other existing postprocessors== <!--T:18--><br />
<br />
<!--T:19--><br />
For comparison you may look at the postprocessors which come with your FreeCAD installation. They are located under the directory<br />
<path_to_your_FreeCAD_distro>/Mod/Path/PathScripts/post. Widely used are the [http://linuxcnc.org/ linuxcnc] and the [https://github.com/grbl/grbl grbl] postprocessors. Studying their code can give helpful insights.<br />
<br />
==Programming your own postprocessor== <!--T:22--><br />
<br />
<!--T:31--><br />
This post discusses some internals from the linuxcnc postprocessors. The same strucure is used in other postprocessors as well.<br />
<br />
<!--T:23--><br />
Looking at linux_cnc_post.py, you'll see the export function (as of 0.19.20514 its at line 156)<br />
<br />
</translate><br />
{{Code|code=<br />
def export(objectslist, filename, argstring):<br />
# pylint: disable=global-statement<br />
...<br />
gcode = ""<br />
...<br />
...<br />
}}<br />
<translate><br />
<!--T:24--><br />
it collects step by step in the variable "gcode" the processed G-codes and handles the overall exporting of post-processable objects (operations, tools, jobs ,etc).<br />
Export handles the high level stuff like comments and coolant but any objects that have multiple path commands (tool changes and operations) it delegates to the parse function (as of 0.19.20514 its at line 288).<br />
<br />
</translate><br />
{{Code|code=<br />
def parse(pathobj):<br />
...<br />
out = ""<br />
lastcommand = None<br />
...<br />
...<br />
}}<br />
<translate><br />
<!--T:25--><br />
Similarly to the "export" function collects parse the G-codes in the variable "out". In the variable "command" the commands as seen in the Path workbench's "inspect G-code" function are stored and can be investigated for further processing.<br />
<br />
</translate><br />
{{Code|code=<br />
for c in pathobj.Path.Commands:<br />
<br />
command = c.Name<br />
}}<br />
<translate><br />
<!--T:26--><br />
It recognizes the different G, M, F, S, and other G-codes. By remembering the last command in the variable "lastcommand" it can suppress subsequent repetitions of modal commands.<br />
<br />
<!--T:27--><br />
Both parse and export are just formatting strings and concatenating them together into what will be the final output.<br />
<br />
<!--T:28--><br />
You'll see that both functions also call the "linenumber()" function. If the user wants line numbers, the linenumber function returns the string to stick in to the appropriate spot, otherwise it returns an empty string so nothing is added.<br />
<br />
==Related== <!--T:20--><br />
<br />
<!--T:21--><br />
* [[Image:Path_Post.svg|24px]] [[Path_Post|Path PostProcess]]<br />
<br />
<br />
<!--T:30--><br />
{{Docnav<br />
|[[Path_SetupSheet|SetupSheet]]<br />
|[[Path_fourth_axis|Fourth axis]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=<br />
|IconR=<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{Path_Tools_navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=CAM_Postprocessor_Customization&diff=1082418CAM Postprocessor Customization2021-12-03T19:27:55Z<p>Chrisb: Removed the linux path. It seems to be in different places on different distros, see https://forum.freecadweb.org/viewtopic.php?p=550270#p551110</p>
<hr />
<div><languages/><br />
{{UnfinishedDocu}}<br />
<translate><br />
<br />
<!--T:29--><br />
{{Docnav<br />
|[[Path_SetupSheet|SetupSheet]]<br />
|[[Path_fourth_axis|Fourth axis]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=<br />
|IconR=<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{TOCright}}<br />
<translate><br />
<br />
==Introduction== <!--T:2--><br />
<br />
<!--T:3--><br />
FreeCAD uses as internal representation for the generated paths, so called G-codes. They can describe such things as: speed and feed rates, stopping the motor etc... But the most important thing is the movements they describe. These movements are rather simple: They can be straight lines or they can be circular arcs. More sophisticated curves such as B-splines are already approximated by FreeCAD's [[Image:Workbench_Path.svg|24px]] [[Path_Workbench|Path Workbench]].<br />
<br />
==What the postprocessor can do for you== <!--T:4--><br />
<br />
<!--T:5--><br />
Many mills use G-codes as well to control the milling process. They may look almost like the internal codes, but there may be some differences:<br />
* the machine can have a special startup sequence<br />
* it can have a special stop sequence<br />
* arcs can be defined with a relative or an absolute center<br />
* it may require line numbers in a certain format<br />
* it can used so called canned cycles for predefined subprocesses such as drilling<br />
* you might prefer your G-code output in either metric or imperial units.<br />
* it might be useful to perform a set of moves prior to calling for a tool change to make the action easier for the operator<br />
* you might wish to include comments for readability or suppress them to keep the program small<br />
* you might wish to include a custom header to identify or document the program for future reference.<br />
* ...<br />
<br />
<!--T:6--><br />
Furthermore there are other languages to control a mill, such as HPGL, DXF, or others.<br />
<br />
<!--T:7--><br />
The postprocessor is a program which translates the internal codes into a complete file, that can be uploaded to your machine.<br />
<br />
==Preparation for writing your own postprocessor== <!--T:8--><br />
<br />
<!--T:9--><br />
You may start with a very simple model showing how your machine reads straight lines and arcs. Prepare it with any program suitable for your machine.<br />
<br />
<!--T:10--><br />
A file for such paths starting at (0,0,0) and going towards Y would be helpful. Make sure it is the tool itself moving along this path, i.e. no tool radius compensation must be applied.<br />
<br />
<!--T:11--><br />
[[File:Path_PostProcessorSketch.png]]<br />
<br />
<!--T:12--><br />
The path in FreeCAD would look like this. Please note the small blue arrow, it indicates the starting direction. For a very first go you may provide only one level in the XY-plane.<br />
<br />
<!--T:13--><br />
[[File:Path PostProcessorModel.png]]<br />
<br />
<!--T:14--><br />
You can then have a look at the file and compare it to the output of existing postprocessors such as {{FileName|linux_cnc_post.py}} or {{FileName|grbl_post.py}} and try yourself to adapt them or you upload your to the [https://forum.freecadweb.org/viewforum.php?f=15 Path forum] to get some help.<br />
<br />
==Naming convention== <!--T:15--><br />
<br />
<!--T:16--><br />
For a file format {{FileName|<filename>}} the postprocessor should get the name {{FileName|<filename>_post.py}}. Please note that the postfix and extension, {{FileName|_post.py}}, have to be lower case.<br />
<br />
<!--T:17--><br />
If you are testing, place it in your macro directory. If it functions well, please consider providing it for others to benefit (post it to the FreeCAD Path forum) so that it can be included in the FreeCAD distribution going forward.<br />
<br />
==Other existing postprocessors== <!--T:18--><br />
<br />
<!--T:19--><br />
For comparison you may look at the postprocessors which come with your FreeCAD installation. They are located under the directory<br />
<path_to_your_FreeCAD_distro>/Mod/Path/PathScripts/post. Widely used are the [http://linuxcnc.org/ linuxcnc] and the [https://github.com/grbl/grbl grbl] postprocessors. Studying their code can give helpful insights.<br />
<br />
==Programming your own postprocessor== <!--T:22--><br />
<br />
This post discusses some internals from the linuxcnc postprocessors. The same strucure is used in other postprocessors as well.<br />
<br />
<!--T:23--><br />
Looking at linux_cnc_post.py, you'll see the export function (as of 0.19.20514 its at line 156)<br />
<br />
</translate><br />
{{Code|code=<br />
def export(objectslist, filename, argstring):<br />
# pylint: disable=global-statement<br />
...<br />
gcode = ""<br />
...<br />
...<br />
}}<br />
<translate><br />
<!--T:24--><br />
it collects step by step in the variable "gcode" the processed G-codes and handles the overall exporting of post-processable objects (operations, tools, jobs ,etc).<br />
Export handles the high level stuff like comments and coolant but any objects that have multiple path commands (tool changes and operations) it delegates to the parse function (as of 0.19.20514 its at line 288).<br />
<br />
</translate><br />
{{Code|code=<br />
def parse(pathobj):<br />
...<br />
out = ""<br />
lastcommand = None<br />
...<br />
...<br />
}}<br />
<translate><br />
<!--T:25--><br />
Similarly to the "export" function collects parse the G-codes in the variable "out". In the variable "command" the commands as seen in the Path workbench's "inspect G-code" function are stored and can be investigated for further processing.<br />
<br />
</translate><br />
{{Code|code=<br />
for c in pathobj.Path.Commands:<br />
<br />
command = c.Name<br />
}}<br />
<translate><br />
<!--T:26--><br />
It recognizes the different G, M, F, S, and other G-codes. By remembering the last command in the variable "lastcommand" it can suppress subsequent repetitions of modal commands.<br />
<br />
<!--T:27--><br />
Both parse and export are just formatting strings and concatenating them together into what will be the final output.<br />
<br />
<!--T:28--><br />
You'll see that both functions also call the "linenumber()" function. If the user wants line numbers, the linenumber function returns the string to stick in to the appropriate spot, otherwise it returns an empty string so nothing is added.<br />
<br />
==Related== <!--T:20--><br />
<br />
<!--T:21--><br />
* [[Image:Path_Post.svg|24px]] [[Path_Post|Path PostProcess]]<br />
<br />
<br />
<!--T:30--><br />
{{Docnav<br />
|[[Path_SetupSheet|SetupSheet]]<br />
|[[Path_fourth_axis|Fourth axis]]<br />
|[[Path_Workbench|Path]]<br />
|IconL=<br />
|IconR=<br />
|IconC=Workbench_Path.svg<br />
}}<br />
<br />
</translate><br />
{{Path_Tools_navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=Assembly3_Workbench/de&diff=1082411Assembly3 Workbench/de2021-12-02T23:08:09Z<p>Chrisb: Änderung gemäß der Diskussion im Forum: https://forum.freecadweb.org/viewtopic.php?p=550973#p550973</p>
<hr />
<div><languages/><br />
<br />
[[Image:Assembly3_workbench_icon.svg|thumb|128px|Assembly3 workbench icon]]<br />
<br />
{{TOCright}}<br />
<br />
== Einführung ==<br />
<br />
[[Image:Assembly3_workbench_icon.svg|24px]] [[Assembly3_Workbench|Assembly3]] ist ein [[External_workbenches/de|externer Arbeitsbereich]], der verwendet wird, um den Zusammenbau von verschiedenen Körpern in einer einzigen Datei oder in mehreren Dokumenten durchzuführen. Der Arbeitsbereich basiert auf einigen Kernfunktionsänderungen ausgeführt für die Version FreeCAD 0.19 (z.B. [[App_Link/de|App Verweis]]), sodass der Assembly3 Arbeitsbereich nicht mit früheren Versionen verwendet werden kann.<br />
<br />
Die Hauptfunktionen des Assembly3 Arbeitsbereichs sind<br />
* '''dynamischer/interaktiver Löser'''. Das bedeutet, du kannst Teile mit der Maus bewegen, während der Löser die Bewegung beschränkt. Dies erlaubt z.B. ein Rad mit einer Achse zu verbinden und das Rad interaktiv mit der Maus zu drehen. <br />
* '''Verknüpfungen'''. Das bedeutet, dass du ein einzelnes Teil, z. B. eine Schraube, mehrfach in einer Baugruppe (an verschiedenen Stellen) verwenden kannst, ohne die Geometrie zu duplizieren. <br />
* '''externe Verknüpfungen'''. Es ist möglich, ein Freecad Dokument zu besitzen, das nur eine Baugruppe und keine Teile enthält. Alle Teile können in einzelnen Dateien sein. Die Dateien können sich sogar in einer Bibliothek oder irgenwo anders im Dateisystem befinden. Die einzige Voraussetzung ist, dass die Datei geladen sein muss, wenn die Verknüpfung hergestellt wird. Nachdem die Verknüpfung gemacht wurde muss die Datei geöffnet sein, um Aktualisierungen an den Verknüpfungen, die die Datei betreffen, vorzunehmen. Assembly3 löst dieses Problem, indem es die Dateien bei Bedarf im Hintergrund öffnet.<br />
* '''hierarchische Baugruppen'''. Wie im wirklichen Leben kann eine mechanische Baugruppe aus Unterbaugruppen bestehen. Diese können wiederum aus Unterbaugruppen bestehen und so weiter. <br />
* '''Baugruppen einfrieren'''. Da die CPU nur eine bestimmte Anzahl gleichzeitiger Beschränkungen in Echtzeit verarbeiten kann, ermöglicht das Einfrieren einer Baugruppe die Verwendung von Beschränkungen auch für große Baugruppen. Durch das Einfrieren von fertigen Baugruppen oder Beschränkungen, die nicht dynamisch bleiben müssen (z. B. geschweißte, geschraubte oder geklebte Teile), werden diese von Aktualisierungsberechnungen ausgeschlossen und vom Assembly3 Löser als feste Geometrie betrachtet. <br />
*: Beachte, dass andere Ansätze eine andere Lösung für dieses Problem bieten, z. B. der [[File:Assembly4_workbench_icon.svg|24px]] [[Assembly4_Workbench/de|Assembly4 Arbeitsbereich]].<br />
<br />
[[#top|Anfang]]<br />
<br />
=== Werkzeugleisten ===<br />
Ab 2020 verfügt die Assembly3 Arbeitsbereich über die folgenden Werkzeugleisten. <br />
<br />
<br />
==== Hauptwerkzeugleiste ====<br />
:[[File:Assembly3_ToolbarMain.png|700px]]<br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
:Die '''Hauptwerkzeugleiste''' enthält Werkzeuge, die die am häufigsten gebrauchten Eigenschaften des Arbeitsbereiches abdecken. Die zugehörigen Tastenkürzel findet man in den Tooltips.<br />
<div class="mw-collapsible-content toccolours"><br />
<br />
:* [[Image:Assembly_Add Existing Part.svg|32px]] [[Assembly3_CreateAssembly/de|Baugruppe anlegen]]: Einen Baugruppenordner hinzufügen<br />
:* [[Image:Assembly_New Group.svg|32px]] [[Assembly3_GroupObjects/de|Objekte gruppieren]]: Eine Objektgruppe erstellen<br />
:* [[Image:Assembly_New Element.svg|32px]] [[Assembly3_CreateElement/de|Element anlegen]]: Ein Element hinzufügen. Dies ist auch im Kontextmenü verfügbar<br />
:* STEP-Dateien importieren. Hier gibt es zwei Einstellungen<br />
:** [[Image:Assembly_Import.svg|32px]] [[Assembly3_ImportFromSTEP/de|STEP-Dateien importieren]]: STEP-Dateien importieren<br />
:** [[Image:Assembly_ImportMulti.svg|32px]] [[Assembly3_ImportMultiDocument/de|Als Mehrfachdokument einfügen]]: STEP-Baugruppen in separate Dokumente importieren<br />
:* [[Image:Assembly3_workbench_icon.svg|32px]] [[Assembly3_ResolveConstraints/de|Beziehungen anwenden]]: Festgelegte Beziehungen berechnen (auflösen)<br />
:* [[Image:Assembly_QuickSolve.svg|32px]] [[Assembly3_QuickSolve/de|Schnelle Berechnung]]: Beziehungen schnell berechnen (auflösen)<br />
:* [[Image:Assembly_Move.svg|32px]] [[Assembly3_MovePart/de|Teil bewegen]]: Teil in 3D bewegen, dies ist ein spezielles Assembly3-Werkzeug<br />
:* [[Image:Assembly_AxialMove.svg|32px]] [[Assembly3_AxialMove/de|Axial bewegen]]: Teil axial in 3D bewegen, dies ist das übliche Werkzeug, das auch anderen Bereichen von FreeCAD zur Verfügung steht<br />
:* [[Image:Assembly_QuickMove.svg|32px]] [[Assembly3_QuickMove/de|Schnelles Bewegen]]: Schnelles Bewegen. Dies hängt das im Baum ausgewählte Teil an den Mauszeiger. Es verändert die Position des Teils, mit einem Mausklick. <br />
:*: Oft befinden sich hinzugefügte Teile übereinander gestapelt im Ursprung. Diese Funktion kann benutzt werden, um nicht sichtbare Teile zu erreichen.<br />
:* [[Image:Assembly_LockMover.svg|32px]] [[Assembly3_LockMover/de|Bewegung verhindern]]: Bewegung ausschließen für fixierte Teile. Umschaltknopf. Wenn dieser abgewählt ist, können auch Teile bewegt werden, die durch die Fixiereinschränkung festgelegt sind. <br />
:* [[Image:Assembly_TogglePartVisibility.svg|32px]] [[Assembly3_TogglePartVisibility/de|Sichtbarkeit umschalten]]: Dies schaltet die Sichtbarkeit des ausgewählten Teils ein oder aus. <br />
:*: Achtung, dies unterscheidet sich von der Benutzung der Leertaste. Die Benutzung der Leertaste mit ausgewählten Elementen einer Unterbaugruppe in der 3D-Ansicht liefert oft nicht das erwartete Verhalten. In solchen Fällen sollte diese Funktion benutzt werden (oder das Tastenkürzel A, Leertaste)<br />
:* [[Image:Assembly_Trace.svg|32px]] [[Assembly3_TracePartMove/de|Bewegung aufzeichnen]]:Bewegungsbahn aufzeichnen (TBD)<br />
:* [[Image:Assembly_AutoRecompute.svg|32px]] [[Assembly3_AutoRecompute/de|Automatische Berechnung]]:Automatische Berechnung. Standardmäßig aktiviert. <br />
:*: Kann deaktiviert werden für die Reparatur von Einschränkungen oder die Fixierung von Teilen, für die der Löser Die Nachricht ''"do not converge"'' ausgibt (z.B. wenn das Teil um 180° gedreht wird) <br />
:* [[Image:Assembly_SmartRecompute.svg|32px]] [[Assembly3_SmartRecompute/de|Smarte Berechnung]]: Smarte Berechnung. Standardmäßig aktiviert. <br />
:* [[Image:Assembly_AutoFixElement.svg|32px]] [[Assembly3_AutoFixElement/de|Element automatisch fixieren]]: Automatische Elementfixierung. Experimentelle Funktion in 0.19_pre<br />
:* Element Darstellung. Dies hat zwei Einstellmöglichkeiten:<br />
:** [[Image:Assembly_AutoElementVis.svg|32px]] [[Assembly3_AutoElementVisibility/de|Element automatisch anzeigen]]: Element automatisch anzeigen <br />
:** [[Image:Assembly_ShowElementCS.svg|32px]] [[Assembly3_ShowElementCS/de|Element-Koordinatensystem anzeigen]]: Koordinatensystem des Elements anzeigen<br />
:* Arbeitsebene und Ursprung. Fügt eine Arbeitsebene, eine Platzierung oder einen Ursprung hinzu. Es muss ein Teil ausgewählt sein. Hier gibt es fünf Einstellungen.<br />
:** [[Image:Assembly_Add Workplane.svg|32px]] [[Assembly3_AddXYWorkplane/de|XY-Arbeitsebene hinzufügen]]: Arbeitsebene hinzufügen<br />
:** [[Image:Assembly_Add WorkplaneXZ.svg|32px]] [[Assembly3_AddXZWorkplane/de|XZ-Arbeitsebene hinzufügen]]: XZ-Arbeitsebene hinzufügen <br />
:** [[Image:Assembly_Add WorkplaneZY.svg|32px]] [[Assembly3_AddZYWorkplane/de|ZY-Arbeitsebene hinzufügen]]:YZ-Arbeitsebene hinzufügen <br />
:** [[Image:Assembly_Add Placement.svg|32px]] [[Assembly3_AddPlacement/de|Platzierung hinzufügen]]: Platzierung hinzufügen<br />
:** [[Image:Assembly_Add Origin.svg|32px]] [[Assembly3_AddOrigin/de|Ursprung hinzufügen]]: Ursprung hinzufügen<br />
:* [[Image:Assembly_TreeItemUp.svg|32px]] [[Assembly3_MoveItemUp/de|Objekt aufwärts bewegen]]: Ausgewähltes Baumobjekt aufwärts bewegen<br />
:* [[Image:Assembly_TreeItemDown.svg|32px]] [[Assembly3_MoveItemDown/de|Objekt abwärts bewegen]]: Ausgewähltes Baumobjekt abwärts bewegen<br />
:*: Erlaubt es Teile, Elemente oder Einschränkungen im Baum umzusortieren. Mit "Element roll over" (von der ersten zur letzten Position und umgekehrt). Funktioniert nur mit einer einzelnen Auswahl. <br />
:* [[Image:Assembly_ConstraintMultiply.svg|32px]] [[Assembly3_MultiplyConstraint/de|Beziehung vervielfältigen]]: Beziehung vervielfachen. Dies kann ausgewählt werden, wenn Teile und geeignete Elemente mehrfach vorhanden sind. Es kann z.B. benutzt werden um mehrfach vorhandene Befestigungselemente mehrfach vorhandenen Löchern mit nur einer Beziehung zuzuordnen.<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
==== Hauptwerkzeugleiste Beschränkungen ====<br />
<br />
: [[Image:Assembly_ConstraintLock.svg|28px]] [[Image:Assembly_ConstraintAlignment.svg|28px]] [[Image:Assembly_ConstraintCoincidence.svg|28px]] [[Image:Assembly_ConstraintAttachment.svg|28px]] [[Image:Assembly_ConstraintAxial.svg|28px]] [[Image:Assembly_ConstraintSameOrientation.svg|28px]] [[Image:Assembly_ConstraintMultiParallel.svg|28px]] [[Image:Assembly_ConstraintAngle.svg|28px]] [[Image:Assembly_ConstraintPerpendicular.svg|28px]] [[Image:Assembly_ConstraintPointCoincident.svg|28px]] [[Image:Assembly_ConstraintPointInPlane.svg|28px]] [[Image:Assembly_ConstraintPointOnLine.svg|28px]] [[Image:Assembly_ConstraintPointOnCircle.svg|28px]] [[Image:Assembly_ConstraintPointsDistance.svg|28px]] [[Image:Assembly_ConstraintPointPlaneDistance.svg|28px]] [[Image:Assembly_ConstraintPointLineDistance.svg|28px]] [[Image:Assembly_ConstraintSymmetric.svg|28px]] [[Image:Assembly_ConstraintMore.svg|28px]] <br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
: Einige dieser Werkzeuge sind eigentlich Menüs für weitere Werkzeuge. <br />
<div class="mw-collapsible-content toccolours"><br />
<br />
:* [[Image:Assembly ConstraintLock.svg|32px]] [[Assembly3_ConstraintLock/de|Festsetzen]]: Zum Fixieren eines oder mehrerer Teile. <br />
:*: Es muss ein (Geometrie-) Element eines Teiles ausgewählt werden.<br />
:*: Wird ein Knotenpunkt oder eine Kante festgesetzt, lässt sich das Teil immer noch frei um den Knotenpunk oder die Kante drehen.<br />
:*: Das Festsetzen einer Fläche fixiert das Teil vollständig.<br />
:* [[Image:Assembly ConstraintAlignment.svg|32px]] [[Assembly3_ConstraintAlignment/de|Ebenen ausrichten]]: Zum Ausrichten ebener Flächen zweier oder mehrerer Teile.<br />
:*: Die Flächen werden komplanar ausgerichtet oder optional parallel mit Abstand.<br />
:* [[Image:Assembly ConstraintCoincidence.svg|32px]] [[Assembly3_ConstraintCoincidence/de|Deckungsgleiche Ebenen]]: Zum deckungsgleich Festlegen ebener Flächen zweier oder mehrerer Teile.<br />
:*: Die Flächen werden mit deckungsgleichen Ursprüngen komplanar ausgerichtet oder optional parallel mit Abstand. <br />
:* [[Image:Part Attachment.svg|32px]] [[Assembly3_ConstraintAttachment/de|Befestigung]]: Zum Befestigen eines Teils an ein zweites mittels der ausgewählten (Geometrie-) Elemente. <br />
:*: Diese Beziehung verbindet beide Teile starr miteinander.<br />
:* [[Image:Assembly ConstraintAxial.svg|32px]] [[Assembly3_ConstraintAxial/de|Axiale Ausrichtung]]: Zum axialen Ausrichten (Fluchten) von Kanten und Flächen zweier oder mehrerer Teile.<br />
:*: Die Beziehung akzeptiert:<br />
:*:: lineare Kanten; sie werden kollinear ausgerichtet, <br />
:*:: ebene Flächen; sie werden unter Nutzung ihrer Flächennormalen (Z-Achse) ausgerichtet, <br />
:*:: und zylindrische Flächen; sie werden unter Nutzung ihrer (Z-) Achsrichtung ausgerichtet. <br />
:*: Verschiedene Arten von (Geometrie-) Elementen können gemischt werden.<br />
:* [[Image:Assembly ConstraintSameOrientation.svg|32px]] [[Assembly3_ConstraintSameOrientation/de|Richtungen angleichen]]: Zum identischen Ausrichten der (ebenen) Flächen zweier oder mehrerer Teile. <br />
:*: Die Ebenen werden so ausgerichtet, dass ihre (Z-) Achsen in dieselbe Richtung zeigen.<br />
:* [[Image:Assembly ConstraintMultiParallel.svg|32px]] [[Assembly3_ConstraintMultiParallel/de|Mehrfach parallel]]: Zum parallelen Ausrichten von ebenen Flächen oder geraden Kanten zweier oder mehrerer Teile.<br />
:* [[Image:Assembly ConstraintAngle.svg|32px]] [[Assembly3_ConstraintAngle/de|Winkel festlegen]]: Zum Festlegen des Winkels zwischen ebenen Flächen oder geraden Kanten zweier Teile.<br />
:* [[Image:Assembly ConstraintPerpendicular.svg|32px]] [[Assembly3_ConstraintPerpendicular/de|Rechtwinklig festlegen]]: Zum rechtwinkligen Festlegen von ebenen Flächen oder geraden Kanten zweier Teile.<br />
:* [[Image:Assembly ConstraintPointCoincident.svg|32px]] [[Assembly3_ConstraintPointsCoincident/de|Punkt auf Punkt]]: Zum deckungsgleich Festlegen zweier Punkte in 2D oder 3D.<br />
:* [[Image:Assembly ConstraintPointInPlane.svg|32px]] [[Assembly3_ConstraintPointInPlane/de|Punkt auf Ebene]]: Zum Festlegen eines oder mehrerer Punkte auf einer Ebene (Punktberührung).<br />
:* [[Image:Assembly ConstraintPointOnLine.svg|32px]] [[Assembly3_ConstraintPointOnLine/de|Punkt auf Linie]]: Zum Festlegen eines oder mehrerer Punkte auf einer Linie in 2D or 3D.<br />
:* [[Image:Assembly ConstraintPointOnCircle.svg|32px]] [[Assembly3_ConstraintPointOnCircle/de|Punkt auf Kreis]]: Zum Festlegen eines oder mehrerer Punkte auf einer durch einen Kreis definierten zylindrischen Fläche.<br />
:*: Achtung! Es muss ein Punkt (irgendein Geometrieelement, dass einen Punkt definieren kann) ausgewählt werden und dann der Kreis (oder eine zylindrische Fläche), <br />
:*: danach können bei Bedarf weitere Punkte hizugefügt werden.<br />
:* [[Image:Assembly ConstraintPointsDistance.svg|32px]] [[Assembly3_ConstraintPointsDistance/de|Punkt zu Punkt Abstand]]: Zum Festlegen des Abstands zweier oder mehrerer Punkte zueinander.<br />
:* [[Image:Assembly ConstraintPointPlaneDistance.svg|32px]] [[Assembly3_ConstraintPointPlaneDistance/de|Punkt zu Ebene Abstand]]: Zum Festlegen des Abstands eines oder mehrerer Punkte zu einer Ebene.<br />
:* [[Image:Assembly ConstraintPointLineDistance.svg|32px]] [[Assembly3_ConstraintPointLineDistance/de|Punkt zu Linie Abstand]]: Zum Festlegen des Abstands eines Punktes zu einer geraden Kante in 2D oder 3D.<br />
:* [[Image:Assembly ConstraintSymmetric.svg|32px]] [[Assembly3_ConstraintSymmetric/de|Symmetrie festlegen]]: Zum Festlegen der Symmetrie der (Geometrie-) Elemente zweier Teile bezüglich einer Ebene.<br />
:*: Unterstützte Elemente sind gerade Kanten und ebene Flächen.<br />
:* [[Image:Assembly ConstraintMore.svg|32px]] [[Assembly3_ConstraintMore/de|Weitere]]: Werkzeugleisten umschalten für weitere Beschränkungen<br />
:*: Nicht wirklich eine Beschränkung, sondern ein Umschalter zum Anzeigen/Ausblenden der '''Werkzeugleisten für zusätzliche Beschränkungen'''.<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
==== Zusätzliche Beschränkungswerkzeugleisten ====<br />
<br />
: [[Image:Assembly_ConstraintPointDistance.svg|28px]] [[Image:Assembly_ConstraintEqualAngle.svg|28px]] [[Image:Assembly_ConstraintPointsSymmetric.svg|28px]] [[Image:Assembly_ConstraintGeneral.svg|28px]] [[Image:Assembly_ConstraintGeneral.svg|28px]] [[Image:Assembly_ConstraintSymmetricLine.svg|28px]] [[Image:Assembly_ConstraintPointsHorizontal.svg|28px]] [[Image:Assembly_ConstraintPointsVertical.svg|28px]] [[Image:Assembly_ConstraintLineHorizontal.svg|28px]] [[Image:Assembly_ConstraintLineVertical.svg|28px]] [[Image:Assembly_ConstraintArcLineTangent.svg|28px]] (Assembly3 Constraints2)<br />
<br />
:[[Image:Assembly_ConstraintSketchPlane.svg|28px]] [[Image:Assembly_ConstraintLineLength.svg|28px]] [[Image:Assembly_ConstraintEqualLength.svg|28px]] [[Image:Assembly_ConstraintLengthRatio.svg|28px]] [[Image:Assembly_ConstraintLengthDifference.svg|28px]] [[Image:Assembly_ConstraintLengthEqualPointLineDistance.svg|28px]] [[Image:Assembly ConstraintEqualLineArcLength.svg|28px]] [[Image:Assembly_ConstraintMidPoint.svg|28px]] [[Image:Assembly_ConstraintDiameter.svg|28px]] [[Image:Assembly_ConstraintEqualRadius.svg|28px]] [[Image:Assembly_ConstraintPointsProjectDistance.svg|28px]] [[Image:Assembly_ConstraintEqualPointLineDistance.svg|28px]] [[Image:Assembly_ConstraintColinear.svg|28px]] (Assembly3 Sketch Constraints)<br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
:Du kannst diese durch Auswählen der {{Button|[[Image:Assembly_ConstraintMore.svg|16px]] [[Assembly3_ConstraintMore/de|Weitere]]}} Schaltfläche in der Hauptbeschränkungen Werkzeugleiste, aktivieren.<br />
<div class="mw-collapsible-content toccolours"><br />
<br />
:* [[Image:Assembly_ConstraintPointDistance.svg|32px]] [[Assembly3_ConstraintPointDistance/de|Abstand zweier Punkte]]: Zum Festlegen des Abstands zweier Punkte in 2D oder 3D.<br />
:* [[Image:Assembly_ConstraintEqualAngle.svg|32px]] [[Assembly3_ConstraintEqualAngle/de|Gleiche Winkel]]: Zum Festlegen von gleichen Winkeln zwischen (je) zwei Linien oder (Flächen-) Normalen. <br />
:* [[Image:Assembly_ConstraintPointsSymmetric.svg|32px]] [[Assembly3_ConstraintPointsSymmetric/de|Symmetrische Punkte]]: Zum Festlegen der symmetrischen Lage zweier Punkte bezüglich einer Ebene.<br />
:* [[Image:Assembly_ConstraintGeneral.svg|24px]] () [[Assembly3_ConstraintSymmetricHorizontal/de|Horizontale Symmetrie ]]: (noch nicht fertig...)<br />
:* [[Image:Assembly_ConstraintGeneral.svg|24px]] () [[Assembly3_ConstraintSymmetricVertical/de|Vertikale Symmetrie]]: (noch nicht fertig...) <br />
:* [[Image:Assembly_ConstraintSymmetricLine.svg|32px]] [[Assembly3_ConstraintSymmetricLine/de|Achsensymmetrie]]: Zum Festlegen der symmetrischen Lage zweier Punkte bezüglich einer Symmetrieachse.<br />
:* [[Image:Assembly_ConstraintPointsHorizontal.svg|32px]] [[Assembly3_ConstraintPointsHorizontal/de|Horizontale Punkte]]: Zum Festlegen einer horizontalen Ausrichtung zweier Punkte, wenn sie auf eine Ebene projiziert werden.<br />
:* [[Image:Assembly_ConstraintPointsVertical.svg|32px]] [[Assembly3_ConstraintPointsVertical/de|Vertikale Punkte]]: Zum Festlegen einer vertikalen Ausrichtung zweier Punkte, wenn sie auf eine Ebene projiziert werden.<br />
:* [[Image:Assembly_ConstraintLineHorizontal.svg|32px]] [[Assembly3_ConstraintLineHorizontal/de|Horizontale Linie]]: Zum Festlegen einer horizontalen Ausrichtung eines Liniensegments, wenn es auf eine Ebene projiziert wird.<br />
:* [[Image:Assembly_ConstraintLineVertical.svg|32px]] [[Assembly3_ConstraintLineVertical/de|Vertikale Linie]]: Zum Festlegen einer vertikalen Ausrichtung eines Liniensegments, wenn es auf eine Ebene projiziert wird.<br />
:* [[Image:Assembly_ConstraintArcLineTangent.svg|32px]] [[Assembly3_ConstraintArcLineTangent/de|Bogen-Linie-Tangente]]: Zum Festlegen eines tangentiellen Übergangs zwischen einer Linie und dem Start- oder Endpunkt eines Bogens.<br />
<br />
<br />
:* [[Image:Assembly_ConstraintSketchPlane.svg|32px]] [[Assembly3_ConstraintSketchPlane/de|Skizzierebene]]: Zum Festlegen einer Arbeitsebene für alle Draft-WB-Elemente innerhalb dieser Beziehung oder dieser Beziehung folgend. <br />
:*: Eine weitere hinzufügte leere Skizzenebene löst die vorherige als Arbeitsebene ab.<br />
:* [[Image:Assembly ConstraintLineLength.svg|32px]] [[Assembly3_ConstraintLineLength/de|Linienlänge]]: Zum Festlegen der Länge eines nicht unterteilten Draft-Drahtes.<br />
:* [[Image:Assembly ConstraintEqualLength.svg|32px]] [[Assembly3_ConstraintEqualLength/de|Gleiche Länge]]: Zum Festlegen, dass zwei Linien gleich lang sind.<br />
:* [[Image:Assembly ConstraintLengthRatio.svg|32px]] [[Assembly3_ConstraintLengthRatio/de|Längenverhältnis]]: Zum Festlegen des Verhältnisses der Längen zweier Linien.<br />
:* [[Image:Assembly ConstraintLengthDifference.svg|32px]] [[Assembly3_ConstraintLengthDifference/de|Längendifferenz]]: Zum Festlegen der Differenz der Längen zweier Linien.<br />
:* [[Image:Assembly_ConstraintLengthEqualPointLineDistance.svg|32px]] [[Assembly3_ConstraintLengthEqualPointLineDistance/de|Länge gleich Punkt-Linie-Abstand]]: Zum Festlegen, dass der Abstand eines Punktes zu einer Linie gleich der Länge einer weiteren Linie ist.<br />
:* [[Image:Assembly_ConstraintGeneral.svg|24px]] ( [[Image:Assembly_ConstraintEqualLineArcLength.svg|32px]] )[[Assembly3_ConstraintEqualLineArcLength/de|Linien- gleich Bogenlänge]]: Zum Festlegen, dass die Länge einer Linie gleich der Länge enes Bogens ist.<br />
:* [[Image:Assembly_ConstraintMidPoint.svg|32px]] [[Assembly3_ConstraintMidPoint/de|Mittelpunkt]]: Zum Festlegen eines Punktes in der Mitte einer Linie.<br />
:* [[Image:Assembly_ConstraintDiameter.svg|32px]] [[Assembly3_ConstraintDiameter/de|Durchmesser]]: Zum Festlegen des Durchmessers eines Kreises oder Bogens.<br />
:* [[Image:Assembly_ConstraintEqualRadius.svg|32px]] [[Assembly3_ConstraintEqualRadius/de|Gleicher Radius]]: Zum Festlegen, dass die Radien zweier Kreise oder Bögen gleich groß sind.<br />
:* [[Image:Assembly_ConstraintPointsProjectDistance.svg|32px]] [[Assembly3_ConstraintPointsProjectDistance/de|Projizierter Punktabstand]]: Zum Festlegen des Abstands zweier Punkte, die auf eine Linie projiziert werden.<br />
:* [[Image:Assembly_ConstraintEqualPointLineDistance.svg|32px]] [[Assembly3_ConstraintEqualPointLineDistance/de|Gleicher Punkt-Linien-Abstand]]: Zum Festlegen, dass der Abstand eines Punktes zu einer Linie gleich dem Abstand eines weiteren Punktes zu einer anderen Linie ist.<br />
:* [[Image:Assembly_ConstraintColinear.svg|32px]] [[Assembly3_ConstraintColinear/de|Kollinear]]: Hinzufügen einer "kollinearen" Beschränkung um zwei Linien kollinear zu machen.<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
<br />
:Die '''Werkzeugleisten der Beziehungen''' sind die Hauptschnittstelle für den Zusammenzubau von Einzelteilen. <br />
: Sie sind standardmäßig ausgegraut, werden aber aktiviert, sobald mindestens eine Fläche, eine Linie oder ein Punkt eines Teiles ausgewählt wird.<br />
: Normalerweise werden erst die zu verbindenden Elemente ausgewählt und danach die Art der Beziehung.<br />
: Die unterschiedlich gefärbten Rahmen weisen auf unterschiedliche Eigenschaften der Einschränkungen hin:<br />
:: ob 2D / 3D oder ob mehr als 2 Elemente zusammengefügt werden können.<br />
: Eine ausführliche Beschreibung ist im GitHub-Wiki zu finden.<br />
<br />
==== Navigationswerkzeugleiste ====<br />
: [[Image:Assembly_GotoRelation.svg|28px]] [[Image:LinkSelect.svg|28px]] [[Image:LinkSelectFinal.svg|28px]] <br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
Diese Funktionen sind nützlich, wenn eine Baugruppe mit einer Hierarchie von verknüpften externen Dateien bearbeitet wird.<br />
<div class="mw-collapsible-content toccolours"><br />
:* [[Image:Assembly_GotoRelation.svg|32px]] [[Assembly3_GoToRelation/de|Zur Beziehung gehen]]: Zeigt die Beziehungsgruppe an (standardmäßig ausgeblendet) und wählt ein Beziehungsobjekt aus.<br />
:* [[File:Std_LinkSelectLinked.svg|32px]] [[Std_LinkSelectLinked/de|Verknüpftes Objekt auswählen]]: Wählt das verknüpfte Objekt aus und wechselt zu dessen Dokument. {{Version/de|0.19}}<br />
:* [[File:Std_LinkSelectLinkedFinal.svg|32px]] [[Std_LinkSelectLinkedFinal/de|Letztes verknüpftes Objekt auswählen]]: Wählt das Objekt am Ende der Verknüpfungskette aus und wechselt zu dessen Dokument. {{Version/de|0.19}}<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
<br />
==== Messwerkzeugleiste ====<br />
<br />
: [[Image:Assembly_MeasurePointDistance.svg|28px]] [[Image: Assembly_MeasurePointLineDistance.svg |28px]] [[Image: Assembly_MeasurePointPlaneDistance.svg |28px]] [[Image: Assembly_MeasureAngle.svg |28px]]<br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
: Die '''Messwerkzeugleiste''' fügt Funktionen zum Messen des Abstands oder des Winkels zwischen zwei Objekten hinzu<br />
<div class="mw-collapsible-content toccolours"><br />
<br />
:* [[Image:Assembly_MeasurePointDistance.svg|32px]] [[Assembly3_MeasurePoints/de|Punkte messen]]: Füge ein "Punkte messen" hinzu, um den Abstand zwischen zwei Punkten in 2D oder 3D zu messen.<br />
:* [[Image:Assembly_MeasurePointLineDistance.svg|32px]] [[Assembly3_MeasurePointLine/de|Punkt zu Linie messen]]: Füge ein "Punkt zu Linie messen" hinzu, um den Abstand zwischen einem Punkt und einer linearen Kante in 2D oder 3D zu messen.<br />
:* [[Image:Assembly_MeasurePointPlaneDistance.svg|32px]] [[Assembly3_MeasurePointPlane/de|Punkt zu Ebene messen]]: Füge ein "Punkt zu Ebene messen" hinzu, um den Abstand zwischen einem Punkt und einer Ebene zu messen.<br />
:* [[Image:Assembly_MeasureAngle.svg|32px]] [[Assembly3_MeasureAngle/de|Winkel messen]]: Füge ein "Winkel messen" hinzu, um den Winkel von ebenen Flächen oder linearen Kanten zweier Teile zu messen.<br />
<br />
: Es gibt keine Funktion um einen Radius oder Durchmesser zu messen.<br />
: Die Messwerkzeuge überdauern Teiländerungen, z.B. den Abstand zwischen Kanten eines Würfels, wenn die die Größe des Würfels geändert wird. <br />
: Wie die Beschränkungen werden diese Berechnungen in Echtzeit ausgeführt und bei jeder Änderung aktualisiert. Hinter den Kulissen ist die Funktion den [[#Constraints|Beschränkungen]] sehr ähnlich. Der Abstand oder Winkel zwischen [[#Elemente|Elemente]] wird auf die gleiche Weise berechnet wie bei [[#Beschränkungen|Beschränkungen]]. Die Anzeige im Baum funktioniert auf die gleiche Weise.<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
<br />
Wie gewohnt, kann die Werkzeugleiste geändert und einzelne Werkzeuge hinzugefügt oder entfernt werden. Im Assembly3-Menü sind weitere Funktionen vorhanden, die sich nicht in den Werkzeugleisten befinden.<br />
<br />
[[#top|Anfang]]<br />
<br />
<div class="mw-translate-fuzzy"><br />
=== Beschränkungen ===<br />
Der Konstrukteur verwendet Beschränkungen um das gewünschte Ergebnis für die Beziehung zweier Teile zu erreichen. Die Kunst besteht darin, für jedes Problem die richtigen Beschränkungen auszuwählen, die sich am besten dafür eignen. Jeder beseitigte Freiheitsgrad sollte theoretisch nur einmal zwischen zwei Objekten beseitigt werden, aber in der Praxis mit vielen CAD Werkzeugen verursachen gewählte Beschränkungen über-beschränkte Kombinationen, oftmals kompensiert durch komplexe Algorithmen, manchmal aber auch nicht. Assembly3 benutzt Algorithmen, um über-bestimmte Beschränkungen zu entdecken und zu kompensieren, aber sie sind bisher noch nicht sehr ausgereift. <br />
So für Assembly3 Beschränkungen praktisch angewendet vermeide Probleme indem du dir bewusst machst, wie viele Freiheitsgrade genutzt wurden und welche noch durch Beschränkungen gesperrt werden müssen. Kein Teil sollte eine Verbindung durch Beschränkungen haben, die mehr als 6 Freiheitsgrade verwenden.<br />
</div> <br />
<br />
Hinweis: Wenn der Löser auf eine Kombination trifft, die nicht gelöst werden kann, gibt er einen Fehler aus. Es ist sehr schwierig für den Löser herauszufinden, was das Problem verursacht hat, so dass typischerweise aus dieser Fehlermeldung nicht klar hervorgeht, ''wo'' das Problem liegt. Bei größeren Baugruppen kann dies zu einer komplexen Problemsuche führen. Leider gibt es keine einfache Möglichkeit, dies zu vermeiden. Es ist jedoch hilfreich, sich über die Funktionsweise des Systems im Klaren zu sein (siehe z.B. [[#Elemente|Elemente]] unten), eindeutige Namen für alle beteiligten Komponenten zu verwenden und immer nur dann zusätzliche Beschränkungen hinzuzufügen, wenn der Löser die aktuelle Baugruppe gelöst hat. Sehr hilfreich, um ein Problem aufzuspüren, ist die "KontexMenü/Deaktivieren" Funktion jeder Beschränkung. <br />
<br />
Assembly3 Beschränkungen definieren Einschränkungen in der Position oder Orientierung zwischen zwei [[#Elemente|Elementen]]. Einige Beschränkungen arbeiten sogar mit mehr als zwei [[#Elemente|Elementen]]. Ein [[#Elemente|Element]] kann eine Fläche, eine Linie oder Kante oder ein Punkt eines Teils sein. Im Allgemeinen werden Beschränkungen definiert, indem man die gewünschten [[#Elemente|Elemente]] auswählt und dann die Beschränkung aus der Beschränkungen [[#Werkzeugleiste|Werkzeugleiste]] auswählt.<br />
<br />
* Fixiert 6 Freiheitsgrade, 0 bleiben unbestimmt: <br />
** '''Fixierung (Schloss)''': Die Fixiereinschränkung legt alle Freiheitsgrade einer Fläche. Sie sollte in jedem Zusammenbau zur Festlegung eines Basisteils genutzt werden. Es ist sinnvoll auch gleich die "Bewegung ausschließen für fixierte Teile"-Funktion (in der Werkzeugleiste) zu aktivieren, um damit ein unbeabsichtigtes Verschieben zu verhindern. In der Regel ist es egal welche Fläche, Linie oder Punkt benutzt wird um ein Teil zu fixieren. Man beachte, dass die Fixierung nur auf den aktuellen Zusammenbau wirkt, d.h. im Falle einer Unterbaugruppe braucht der übergeordnete Zusammenbau noch ein eigenes fixiertes Teil.<br />
**'''Anhang''': Legt die Koordinatensysteme der ausgewählten Elemente (zweier oder mehrerer Teile) deckungsgleich aufeinander. Dies ist die für die Berechnung günstigste Funktion und sollte, wo immer möglich, benutzt werden. Man beachte, dass man die Eigenschaften der Elemente nutzen kann, um Abstände und Winkel einzustellen, wenn die [[#Elements|Elemente]] nicht optimal zueinander ausgerichtet sind.<br />
* Fixiert 5 Freiheitsgrade, 1 bleibt unbestimmt: <br />
** '''Lagegleiche Ebenen''': fixes Tx,Ty,Tz, Rx,Ry. Only Rz is free. There remains the rotation around the normal passing through the ‘‘center of the plane’’.<br />
* Fixiert 4 Freiheitsgrade, 2 bleiben unbestimmt: <br />
** '''Axial Alignment''': fixes Tx,Ty, Rx,Ry. Only Tz, Rz are free. There remains the rotation around the axis of the shape and the translation along this same axis. Two ''PointOnLine'' constraints (if the two points are different) give the same result. The '‘Colinear'’ constraint too.<br />
** '''PointOnLine''': This eliminates the translation and rotation along the normals to the reference line. Only the translation and rotation along the line axis is allowed. <br />
* Fixiert 3 Freiheitsgrade, 3 bleiben unbestimmt: <br />
** '''Same Orientation''': fixes Rx,Rz,Rz. All T's remain free.<br />
** '''Points Coincident''': fixes Tx,Ty,Tz. All R's remain free.<br />
** '''PointOnPoint''' constraint eliminates the 3 translations.<br />
** '''Plane Alignment''': fixes Tz, Rx,Ry. In plane motion and Rz. This eliminates the translation along the normal to the reference plane and the two rotations around the axes of this plane.<br />
* Fixiert 2 Freiheitsgrade, 4 bleiben unbestimmt: <br />
** '''Multi Parallel''': fixes Rx,Ry. all T's and Rz remain. This eliminates the two rotations around the axes of the reference plane.<br />
* Fixiert 1 Freiheitsgrad, 5 bleiben unbestimmt: <br />
** '''Points in Plane''': Fixes Tz. This eliminates the translation along the normal to the reference plane.<br />
** '''Points Distance''': fixes the distance between the Element origins. <br />
**: This gives you more freedom than ''Points in Plane''<br />
Other<br />
* '''Points on Circle''': fixes Tz and partially Tx,Ty. Freezes the point translation (or several points) on a circle or disk area. You must pick the circle second. This leaves all rotations free and gives limited translation in the circle reference plane. <br />
<br />
'': Hinweis: In der folgenden Liste werden Tx,Ty,Tz und Rx,Ry,Rz benutzt, um Translations- (Verschiebe-) und Rotations- (Dreh-) Bewegungen bezogen auf die Koordinatenachsen des betreffenden Elements zu beschreiben. Dies ist nicht immer exakt oder vollständig beschrieben, wie z.B. wenn es eine Linie betrifft, ist es nicht definiert, ob sie in X-Richtung, Y-Richtung oder einem beliebigen Winkel dazwischen verläuft. Das System sorgt eher für Kürze und einfache Vergleichbarkeit, als für eine korrekte aber komplexere Definition. So ist Z normalerweise die Richtung der Flächennormalen der betroffenen Flächen.<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
=== Elemente ===<br />
Elemente wird in der Assembly3-Arbeitsumgebung als besonderer Begriff benutzt, und Elemente zu verstehen ist wichtig für das Verständnis, wie Assembly3 benutzt werden sollte. <br />
<br />
Es ist hilfreich ein Element als einen generellen Begriff für 'auswählbarer Bestandteil' eines Teiles zu sehen wie z.B. eine Fläche , eine Kante, ein Kreis, eine Ecke oder ein Punkt. Dies sind die Elemente, die ausgewählt werden, um Teile zueinander in Beziehung zu setzen. Im Baum hat ein 'Assembly'-Ordner drei Unterordner. Neben 'Parts' und 'Constraints' gibt es einen Ordner namens 'Elements', der leer bleibt, solange keine Einschränkungen hinzugefügt werden. Wenn eine Einschränkungen hinzugefügt wird, erhält sie selbst zwei (oder mehr) Blätter, dies sind die ausgewählten Elemente. Auch werden diese Elemente dem 'Elements'-Ordner hinzugefügt, der eine Liste aller im Zusammenbau benutzten Elemente darstellt. Es ist eine gute Idee, ihre Namen zu ändern (mit der F2-Taste), besonders in größeren Zusammenbauten.<br />
<br />
Sehen wir uns ein Beispiel an<br />
: Es wird eine neue Datei erstellt und mit der Part-Arbeitsumgebung ein Würfel und ein Zylinder hinzugefügt. Es soll der Zylinder auf den Würfel gestellt werden. Zuerst wird das Basisteil fixiert, in diesem Fall der Würfel. Dazu wird die Unterseite des Würfels und danach die Fixiereinschränkung (das erste Symbol in der [[#Toolbars|Werkzeugleiste]] der Haupteinschränkungen) ausgewählt. Es werden die Oberseite des Würfels und die Oberseite des Zylinders ausgewählt. Danach wird die 'Plane Coincident'-Einschränkung ausgewählt. Nun hat sich der Zylinder in den Würfel hinein bewegt und im Baum wurde ein neues Blatt mit zwei Kindknoten unter 'Constraints' hinzugefügt. Zusätzlich wurden die selben zwei Kindknoten unter 'Elements' hinzugefügt. Falls der Zylinder im Inneren des Würfels liegt, anstatt auf seiner Oberseite wird dies als nächstes korrigiert: Den Kindknoten unter 'Constraints' auswählen, zu dem die Zylinderfläche gehört, und mit einem Rechtsklick im Kontextmenü 'Flip Part' auswählen. Nun wurde der Zylinder auf die Würfeloberseite gestapelt.<br />
<br />
Der wichtigste Gedanke, den es zu verstehen gilt, ist dass die Beschränkung auf Verknüpfungen zu Elementen in der Liste im "Elements"-Baumabschnitt wirkt. Dies erlaubt, die Bindungsstruktur intakt zu halten, während die Teile geändert werden. Dies ist ohne ein Beispiel sehr schwer zu erkennen. <br />
<br />
Zurück zum obigen Beispiel<br />
: Achtung: Es sollte darauf geachtet werden, dass die Fixiereinschränkung zum Würfel hinzugefügt wurde, andernfalls wird es verwirrend aussehen.<br />
: Im CAD-Fenster wird eine weitere Fläche des Würfels ausgewählt. Ab jetzt wird nur noch in der Baumansicht gearbeitet. Im Baum wird die Maus über dem auszuwählenden Würfel platziert. Der Würfel wird per 'Drag&Drop' auf den 'Elements'-Ordner gezogen und abgelegt. Das Ablegen sollte auf dem Namen des 'Elements' erfolgen, nicht anderswo im Ordner - warum, sehen wir später. Es sollte erkennbar sein, das ein weiteres Element zur 'Elements'-Liste hinzugefügt wurde. Nun wird im 'Constraints'-Ordner der Kindknoten der Würfelfläche in der 'Plane Coincident'-Einschränkung ausgewählt und aus der Liste entfernt. Die Einschränkung ist nun mit einem Ausrufezeichen gekennzeichnet, da ihr ein Element fehlt. Hierbei ist zu beachten, dass ein Element, das aus der Einschränkung entfernt wurde, ''nicht'' auch aus der (Element-)Liste gelöscht wurde. Der Grund dafür ist, dass in der Einschränkung nur ein Verweis zum Element in der Liste abgelegt wird. Nun kann das neu zur 'Elements'-Liste hinzugefügte Element per 'drag&drop' auf die 'Plane Coincident'-Einschränkung gezogen und abgelegt. Damit bewegt sich der Zylinder zu der anderen Fläche des Würfels, die vorher ausgewählt wurde. Wenn der Zylinder im Inneren des Würfels liegt, muss nochmals im Kontextmenü 'flip part' ausgewählt werden. <br />
<br />
Das Beispiel zeigt, dass man die zur Einschränkung gehörenden Elemente austauschen kann, ohne die Einschränkung zu Löschen. Auf dieselbe Weise kann der Zylinder auch zu einem ganz anderen Teil bewegt werden. Nachdem man etwas mit diesem Beispiel herumgespielt hat, wird man noch zusätzliche Möglichkeiten entdecken, wie z.B.<br />
* Wenn ein Element in der Liste umbenannt wird, wird es auch in allen Einschränkungen umbenannt<br />
* Ein Element der Liste kann für mehrere Einschränkungen verwendet werden.<br />
* Das Eigenschaftsfenster eines Elements kann verwendet werden, um '''Versatzangaben ''' (Offsets) hinzuzufügen. Z.B. kann hiermit der Zylinder auf unterschiedliche Positionen auf der gewählten Würfelfläche platziert werden.<br />
* Man kann den 'Show Element Coordinate System'-Knopf der Hauptwerkzeugleiste benutzen, um zu sehen, wie sich 'Flip Part' und 'Flip Element' aus dem Kontextmenü auswirken. Nicht vergessen, die Änderungen im Eigenschaftsfenster zu beobachten.<br />
* Eine Einschränkung kann auch in einer ganz anderen Reihenfolge hinzugefügt werden: Zuerst werden Elemente zur 'Elements'-Liste hinzugefügt (Eine Benennung ist hier nützlich, z.B. "Würfel-Oberseite" oder "Würfel-Unterseite"), dann wird eine Einschränkung hinzugefügt, ohne etwas auszuwählen - Das ergibt eine leere Einschränkung. Dann werden Elemente aus der Liste per 'Drag&Drop' hierher gezogen und abgelegt. Das Ergebnis ist das gleiche, wie in dem ersten Beispiel. Nach dieser Übung sollte klar sein, wie Einschränkungen und Elemente zusammenarbeiten.<br />
* Eine bestehende Einschränkung zwischen bestehenden Elementen kann einfach ausgetauscht werden, indem man eine andere Auswahl in der 'ConstraintType'-Eigenschaft im Eigenschaftsfenster trifft. <br />
<br />
[[#top|Zum Anfang]]<br />
<br />
== Kompatibilität ==<br />
<br />
Assembly3 wurde vom [[Assembly2_Workbench|Assembly2]] inspiriert, ist aber nicht mit diesem kompatibel. Wenn du ältere Modelle in Assembly2 erstellt hast, solltest du bei FreeCAD 0.16 bleiben und Assembly2 dort verwenden.<br />
<br />
Neue Modelle, die mit Assembly3 entwickelt wurden, sollten nur mit diesem Arbeitsbereich geöffnet und bearbeitet werden.<br />
<br />
Obwohl sie möglicherweise ähnliche Werkzeuge haben, ist Assembly3 nicht kompatibel mit [[A2plus_Workbench/de|A2plus]] noch mit [[Assembly4_Workbench/de|Assembly4]]. Modelle, die mit diesen Arbeitsbereichen erstellt wurden, sollten nur mit dem jeweiligen Arbeitsbereich geöffnet werden.<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
== Testen == <br />
<br />
Der [[Assembly3_Workbench|Assembly3 Arbeitsbereich]] befindet sich in der Entwicklung und ist noch nicht (April 2020) über den [[Std_AddonMgr|Addon Manager]] verfügbar, aber es ist zu erwarten, dass dies irgendwann geschieht.<br />
<br />
Assembly3 kann auf zwei Arten getest werden:<br />
* Eine spezielle Abspaltung von FreeCAD von realthunder; siehe [https://github.com/realthunder/FreeCAD_assembly3/releases FreeCAD_assembly3 releases]. Dieser Fork basiert auf einem bestimmten Commit des Master-Zweiges von FreeCAD, hat aber auch zusätzliche Funktionen, die derzeit im Master-Zweig nicht vorhanden sind. Da dieser Fork auf einem bestimmten Entwicklungs-Snapshot basiert, verfügt er nicht über die neuesten Funktionen, die täglich in den Master-Zweig eingebunden werden.<br />
* Die Entwicklung [[AppImage|AppImage]]; diese basiert auf dem aktuellen Master-Zweig und beinhaltet die Abhängigkeiten, die für die Arbeit mit Assembly3 benötigt werden, wie z.B. den SolveSpace Solver.<br />
<br />
Da das AppImage nur unter Linux funktioniert, ist für Windows-Benutzer im Moment die erste Option (realthunder's fork) die einzige Möglichkeit, Assembly3 zu testen.<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
== GewusstWie ==<br />
<br />
=== Loslegen ===<br />
Es gibt viele Wege einen Zusammenbau mit Assembly3 zu erstellen. Hier ist der einfachste, den du machen kannst. <br />
<br />
:[[File:Assembly3_Example-GettingStarted.jpg|600px]]<br />
:''Endergebnis des 'Wie man startet'-Beispiels. In dem Bild ist die Assembly3-Arbeitsumgebung ausgewählt, sodass ihre unterschiedlichen Werkzeugleisten sichtbar sind. Beachte, dass die vertikale 'TabBar'-Leiste links neben der Baumansicht eine zusätzliche Arbeitsumgebung ist und nicht Bestandteil von Standard-FreeCAD (aber mit dem Addon-Manager installiert werden kann).''<br />
<br />
<br />
* Schaltfläche {{Button|[[Image:Std_New.svg|16px]] [[Std_New/de|Neu]]}} drücken, um eine neue FreeCAD-Datei zu erstellen<br />
* Zur [[Image:Assembly3_workbench_icon.svg|16px]] [[Assembly3_Workbench/de|Assembly3 Arbeitsumgebung]] wechseln<br />
* Schaltfläche {{Button|[[Image:Assembly_New_Assembly.svg|16px]] [[Assembly3_CreateAssembly/de|Baugruppe anlegen]]}} drücken<br />
* Zur [[Image:Workbench_Part.svg|16px]] [[Part_Workbench/de|Part Arbeitsumgebung]] wechseln und einen [[Image:Part_Cylinder.svg|16px]] [[Part_Cylinder/de|Zylinder]] und einen [[Image:Part_Box.svg|16px]] [[Part_Box/de|Würfel]] hinzufügen<br />
* Die Datei unter einem selbstgewählten Dateinamen [[Image:Std_Save.svg|16px]] [[Std_Save/de|speichern]]. Anschließend die Datei [[Image:Std_CloseActiveWindow.svg|16px]] [[Std_CloseActiveWindow/de|schließen]] und erneut [[Image:Std_Open.svg|16px]] [[Std_Open/de|öffnen]]<br />
<br />
<br />
Die Baumansicht sollte so aussehen (0.20.pre and Link Branch):<br />
<br />
[[Image:Assembly3 Example-Tree-01.png|300px]] [[Image:Assembly3 Example-Tree-02.png|280px]]<br />
<br />
<br />
* Nun mit der Maus per ''Drag&Drop'' '''Zylinder''' und '''Würfel''' auf den '''Parts'''-Ordner ziehen und ablegen. Beide werden in den Ordner verschoben.<br />
*: Das ist der schnellste Weg und geeignet für einfache Fälle wie diesen. Ein besserer Weg geht über die Nutzung von Link-Objekten: <br />
*: '''Würfel''' sowie '''Zylinder''' auswählen und dann den Befehl [[Image:Std LinkMake.svg|16px]] [[Std LinkMake/de|Link erstellen]] entweder aus dem '''Kontextmenü''' (-> LinkActions -> MakeLink) oder aus der '''Struktur'''leiste auswählen<br />
*: Dies fügt zwei Link-Objekte hinzu. Diese werden dann auf den '''Parts'''-Ordner gezogen und abgelegt<br />
* Anklicken der beiden Oberseiten von Zylinder und Würfel (Strg gedrückt halten (Cmd am Mac))<br />
* Zur [[Image:Assembly3_workbench_icon.svg|16px]] [[Assembly3_Workbench/de|Assembly3 Arbeitsumgebung]] wechseln. <br />
* Schaltfläche {{Button|[[Image:Assembly_ConstraintCoincidence.svg|16px]] [[Assembly3_ConstraintCoincidence/de|Deckungsgleiche Ebenen]]}} aus der [[#Main Constraints Toolbar/de|Hauptwerkzeugleiste für Beschränkungen]] auswählen.<br />
<br />
<br />
Jetzt sollten beide Teile miteinander verbunden sein und der Baum sollte so aussehen (0.20.pre and Link Branch): <br />
<br />
[[Image:Assembly3 Example-Tree-03.png|300px]] [[Image:Assembly3 Example-Tree-04.png|280px]]<br />
<br />
<br />
* Rechtsklick auf "_Element" (eins der beiden) und "Flip Part" auswählen. <br />
<br />
Nun sollte sich der Zylinder oben auf dem Würfel befinden. Wenn das Gebilde auf dem Kopf steht, einen Schritt zurückgehen und "Flip Part" auf dem anderen Element auswählen.<br />
: Bisher wurde ein wichtiger Schritt ausgelassen, den man besonders für größere Baugruppen nicht vergessen sollte: Das Fixieren eines Basisteils. <br />
: Das bedeutet ein Teil zu definieren, das nicht durch Einschränkungen bewegt werden sollte. In diesem Fall wird dafür der Würfel benutzt: <br />
:* Auswahl der Unterseite des '''Würfels'''. Nur die Unterseite, nicht der ganze '''Würfel'''<br />
:* Schaltfläche {{Button|[[Image:Assembly ConstraintLock.svg|16px]] [[Assembly3_ConstraintLock/de|Festsetzen]]}} aus der [[#Main Constraints Toolbar/de|Hauptwerkzeugleiste für Beschränkungen]] auswählen.<br />
<br />
Fertig.<br />
<br />
<br />
Der fertige Baugruppenbaum sollte so aussehen (0.20.pre and Link Branch): <br />
<br />
[[Image:Assembly3 Example-Tree-05.png|300px]] [[Image:Assembly3 Example-Tree-06.png|280px]]:<br />
<br />
<br />
Wenn du möchtest, kannst du die '''Gesperrt''' Beschränkung im Baum nach oben verschieben. <br />
Verwende die {{Button|[[Image:Assembly_TreeItemUp.svg|16px]] [[Assembly3_MoveItemUp/de|Objekt aufwärts bewegen]]}} Schaltfläche auf der [[#Hauptwerkzeugleiste|Hauptwerkzeugleiste]] dafür.<br />
<br />
<br />
'''Hinweis:''' Alle neuen externen Dateien müssen mindestens einmal '''gespeichert''', '''geschlossen''' und wieder-'''geöffnet''' werden, damit Assembly3 sie finden kann.<br />
: Andernfalls kann FreeCAD der Assembly3 Arbeitsbereich keine Dateihandhabung geben und diese kann das neue Teil nicht finden.<br />
: Wenn alle Teile in der gleichen Datei sind, solltest du diese Datei auch '''speichern''', '''schließen''' und wieder '''öffnen'''.<br />
<br />
[[#top|Anfang]]<br />
<br />
=== Hinzufügen eines Versatzes ===<br />
Assembly3 bietet keinen Versatz mit den Beschränkungen, wie es der [[A2plus_Workbench/de|A2plus Arbeitsbereich]] oder andere CAD Werkzeuge tun. Stattdessen bietet er ein allgemeineres und flexibleres System um Versätze, Übersetzungen, aber auch von Winkeln hinzuzufügen.<br />
<br />
* Füge einen Versatz in den Eigenschaften eines [[#Elemente|Elemente]] einer [[#Beschränkung|Beschränkung]] hinzu. <br />
*: Du kannst wählen, welche der beiden du nutzen möchtest. <br />
<br />
Beispiel:<br />
* Füge 2 Würfel zu einer Baugruppe hinzu und wähle ihre Seitenflächen aus.<br />
* Wähle "EbenenDeckungsgleich". Die Würfel werden ineinander angebracht. <br />
* Wähle ein Element und ''KontextMenü/Teil kippen''. Die Würfel werden Seite an Seite angebracht.<br />
* Wähle eine Elementeigenschaft Versatz/Position/Zz und setze sie auf 5mm. Die Würfel sind nun 5mm voneinander entfernt. <br />
Teste mit anderen Achsen oder den Feldern Winkel/Achse. Prüfe auch , dass du das gleiche Ergebnis erhältst, wenn du das andere Element verwendest.<br />
Dies ist die gleiche Herangehensweise für alle anderen Beschränkungen.<br />
<br />
[[#top|Anfang]]<br />
<br />
=== Löse einen Löserfehler ===<br />
Dies geschieht häufig, wenn Teile über-beschränkt sind, d.h. mehr als 6 Freiheitsgrade sind gesperrt. <br />
<br />
Der einfachste Weg das Problem zu finden, ist das Anklicken der entsprechenden Einschränkungen, die Auswahl von ''ContextMenu/Disable'' und anschließender Neuberechnung. Es ist hilfreich zu wissen, welche Einschränkungen als letzte hinzugefügt wurden, bevor die Berechnung des Gleichungslösers fehlgeschlagen ist, um diese einfach zurückzunehmen. <br />
<br />
Achtung: Da Assembly3 hinter den Kulissen versucht überbestimmte Teile auszugleichen, kann es vorkommen, dass eine neue Einschränkung scheinbar eine Fehlfunktion auslöst, die tatsächliche Ursache aber an einer anderen Stelle zu finden ist. Bevor man nun alles löscht und von vorne beginnt, sollte man daran denken, dass man Elemente wiederverwenden kann. Wenn sie benannt wurden, können die erforderlichen Elemente leicht ermittelt und die Einschränkungen erneut aufgebaut werden, ohne die 3D-Ansicht zu verwenden. Siehe auch obigen [[#Elements|Elemente]]-Abschnitt.<br />
<br />
[[#top|Anfang]]<br />
<br />
=== Ersetze ein Teil oder benenne einen Dateinamen um ===<br />
Wenn ein Teil entfernt wird oder wenn sich ein Dateiname ändert, bricht die Baugruppe, sie kann nicht mehr gelöst werden und der Löser gibt die Meldung "Widersprüchliche Beschränkungen" aus. Der Löser kennzeichnet ungültige Elemente und Beschränkungen mit einem Fragezeichen im Baum. <br />
<br />
Ein Weg, dieses zu lösen ist, einfach alle ungültigen Beschränkungen und Elemente zu löschen, das neue Teil zu importieren und alles neu zu machen. Aber es gibt einen besseren Weg: <br />
<br />
* Eine Datei umbenennen<br />
*# Einen Dateimanager benutzen, um die Datei zu kopieren, umbenannt werden soll. Anschließend gibt man der Kopie den neuen Namen. <br />
*# Öffnen der Kopie in FreeCAD. Der Zusammenbau und die alte Datei sollten auch geöffnet sein.<br />
*# Das alte Objekt im Baum auswählen und per Klick die Eigenschaft 'Linked object' ändern (sie enthält den alten Dateinamen).<br />
*# Ein Dialogfenster mit einer Auflistung aller geöffneten Teile öffnet sich. Es zeigt die Dateinamen und Objekte aller Teile an. Das alte Teil und das zugehörige Objekt sind ausgewählt. Das umbenannte Teil wird im Baum abgelegt und das gleiche Objekt des neuen Teiles ausgewählt. Danach die Auswahl bestätigen.<br />
*# Die alte Datei aus dem Baum entfernen. Die Datei kann jetzt auch gelöscht werden.<br />
*# Die Einschränkungen und Elemente des alten Teiles sind ungültig geworden. Jetzt wird die Einschränkung oder die 'Elements'-Liste im Baum geöffnet und anschließend nacheinander <br />
*#* Jede Element-Fläche am neuen Teil ausgewählt. Ein Objekt im Baum wird hervorgehoben.<br />
*#* Das Objekt per 'drag&drop' auf das alte Element ziehen und ablegen (entweder in der 'Elements'-Liste oder in einer der Einschränkungen, wo es benutzt wurde). Das Element sollte jetzt gültig werden. <br />
*#* Diesen Ablauf für die übrigen Elemente wiederholen. Oft reicht ein einzelnes Element dafür aus, dass Assembly3 die übrigen Elemente des Teiles automatisch erkennen kann.<br />
*#* Falls ein Element ausversehen einer falschen Fläche zugeordnet wurde, wird die Zuordnung einfach mit der korrekten Fläche wiederholt.<br />
*# Ändern des Objektnamens in FreeCAD, falls gewünscht<br />
<br />
<br />
* Ein Teil durch ein anderes Teil ersetzen<br />
*: ''Welches dem originalen Teil ähnlich genug ist, dass die originalen Einschränkungen noch sinnvoll sind.''<br />
*# Das alteTeil aus dem Baum entfernen. Die Datei kann jetzt auch gelöscht werden.<br />
*# Die Einschränkungen und Elemente des alten Teiles sind ungültig geworden. Jetzt wird die Einschränkung oder die 'Elements'-Liste im Baum geöffnet. <br />
*#* Eine Element-Fläche am neuen Teil auswählen. Ein Objekt im Baum wird hervorgehoben.<br />
*#* Das Objekt per 'drag&drop' auf das alte Element ziehen und ablegen (entweder in der 'Elements'-Liste oder in einer der Einschränkungen, wo es benutzt wurde). Das Element sollte jetzt gültig werden.<br />
*#* Diesen Ablauf für die übrigen Elemente wiederholen. <br />
*#* Falls ein Element ausversehen einer falschen Fläche zugeordnet wurde, wird die Zuordnung einfach mit der korrekten Fläche wiederholt. <br />
*# Ändern des Objektnamens in FreeCAD, falls gewünscht<br />
<br />
<br />
''Hinweise<br><br />
* Es ist nicht so kompliziert, wie es hier auf den ersten Blick aussieht. Nach 2-3 Durchläufen sollten die Abläufe in Fleisch und Blut übergehen und die Ausführung leicht von der Hand gehen.<br />
* Es ist nicht nur viel schneller als das Löschen und erneute Anlegen von Einschränkungen, sondern auch sicherer, da ein Element in einem übergeordneten Zusammenbau eingesetzt sein könnte. Das Original zu löschen, würde den Verweis zerstören, es neu zuzuordnen würde ihn erhalten.<br />
* Ferner beschleunigt und vereinfacht es diesen Ablauf, wenn Einschränkungen und Elemente benannt werden. Es gäbe kein Raten, wo die Flächen hingezogen und abgelegt werden sollten, da es aus den Namen hervorgeht (siehe auch [[#Tips & Tricks|Tipps & Tricks]]).<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
=== Tipps & Tricks ===<br />
* Hierarchisch aufgebaute Zusammenbauten helfen dabei, Probleme des Gleichnungslösers zu vermeiden und das Modell schlank zu halten. Man kann eine Unterbaugruppe mit einem Klick einfrieren und so ohne Aufwand CPU-Resourcen einsparen (Im Kontextmenü des Baumes). Wenn ein Zusammenbau geladen wird, muss Assembly3 die externen Dateien der eingefrorenen Unterbaugruppen nicht öffnen, wodurch der Baum kompakt gehalten wird. <br />
* Es ist sehr hilfreich, sich anzugewöhnen, Einschränkungen und Elemente zu benennen. Im Baum lässt es sich schnell durch Benutzung der {{KEY|F2}}-Taste erledigen. Sehr nützlich ist auch das Werkzeug zum Sortieren des Baumes, das man in der Hauptwerkzeugleiste findet. Ein Zusammenbau mit vollständig benannten Einschränkungen und Elementen ist für andere Leute sehr einfach zu verstehen, oder auch für einen selbst, wenn man sich ältere Modelle ansieht.<br />
*: Beispiele für Namen von Einschränkungen für einen Tisch könnten lauten: "Ausrichtung_Beine_vorne", "Ausrichtung_RahmenUnterseite-BeinOberseite" und Elementnamen könnten sein: "Bein1_Oberseite", "Tischplatte_Vorderseite" oder "Tischplatte_linke_Seite". <br />
* Bitte beachten, dass, sobald externe Dateien durch einen Zusamenbau geöffnet werden, es nicht mehr möglich ist, diese auf einfache Weise zu schließen, ohne auch den Zusammenbau zu schließen. Da der Zusammenbau die Dateien im Hintergrund offen hält, kann der Reiter verschwinden, aber die Dateien bleiben im Baum sichtbar. Wenn man Zusammenbauten über mehrere Ebenen hat, kann es fast unmöglich sein einzelne Dateien zu schließen. Dieses Verhalten kann sich in Zukunft ändern, aber bis dahin bleibt die Möglichkeit, Die Befehle ''File/Save All'' und ''File/Close All'' zu nutzen, um den Baum aufzuräumen, bevor an einer anderen Unterbaugruppe gearbeitet wird.<br />
*: ''Beispiel: Man hat eine große CNC-Maschine mit einem Hauptzusammenbau und Unterbaugruppen für alle Module. Sobald man den Hauptzusammenbau geladen hat, wird er hunderte Dateien bis hin zur kleinsten Schraube öffnen. Bevor man nun die Baugruppe des Elektronikfachs der Maschine bearbeitet, ist es eine gute Idee, alle Dateien zu speichern und zu schließen, um einen leeren Baum zu erhalten. Dann wird nur die Unterbaugruppe des Elektronikfachs geöffnet. Sie öffnet alle benötigten Dateien, aber auch nur diese.<br />
* Externe Dateien zu benutzen, macht es einfacher, Teile wiederzuverwenden oder Bauteilversonierung mit Systemen wie git oder subversion zu ermöglichen. Der Arbeitsablauf in FreeCAD mit Assembly3 fühlt sich fast genauso an, wie der mit Dateien, in denen alle zusammengehörigen Teile in jeweils einer Datei enthalten sind. Letzteres bietet sich an, wenn man häufig Baugruppen mit anderen Beteiligten austauscht. <br />
* Mehrfach verknüpfte Dateien. Wenn man eine Dateiverknüpfung zu einem Zusammenbau hinzufügt, wird eine Eigenschaft "Element Count" angelegt mit Standardwert 0. Wenn man diesen auf 3 setzt, erhält man 3 Instanzen dieses Teils. Sie werden in einem Unterordner hinzugefügt und können wie vollständig unabhängige Teile verwendet werden. Diese Einstellung kann genutzt werden, um den Speicherplatzverbrauch der Datei klein zu halten, da das Teil nur einmal gespeichert wird. Die Instanzen enthalten nur die Unterschiede.<br />
* Einsetzen mehrfacher Teile, wie z.B. Schrauben, mit einem Klick. Siehe [https://github.com/realthunder/FreeCAD_assembly3/wiki/Constraints-and-Solvers Assembly3 Wiki] auf der Github-Seite. Dies ist nicht nur eine erstaunliche Funktion (vielleicht ein bisschen magisch), sondern auch sehr sehr nützlich.<br />
<br />
* Die Benutzung der [https://github.com/triplus/TabBar TabBar-Arbeitsumgebung] beschleunigt die Arbeit mit Zusammenbauten. Es wird eine Werkzeugleiste mit je einem Knopf für jede Arbeitsumgebung hinzugefügt. Man kann die Reihenfolge ändern und man kann die Werkzeugleiste nach belieben platzieren. Veile Leute legen sie vertikal an den linken Rand direkt neben der Baumansicht. Wenn man Assembly3, Part, PartDesign und andere oft genutzte Arbeitsumgebungen am oberen Ende platziert, macht es das Umschalten zwischen den Arbeitsumgebungen extrem einfach.<br />
<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
== Verweise ==<br />
<br />
* [[App_Link|App-Link]]-Objekt macht, dass Assembly3 funktioniert.<br />
* [https://github.com/realthunder/FreeCAD_assembly3 FreeCAD_assembly3] Repository und Dokumentation.<br />
* [https://forum.freecadweb.org/viewtopic.php?f=20&t=25712 Assembly3 preview], große Diskussionsrunde.<br />
* [https://forum.freecadweb.org/viewtopic.php?f=36&t=29562 Test tutorial for Assembly 3 WB] von jpg87.<br />
* [https://forum.freecadweb.org/viewtopic.php?f=20&t=34583 Current Assembly Status]<br />
* [[External_workbenches|Externe Arbeitsbereiche]]<br />
* [[Assembly_project|Altes Assembly Projekt]] Entwicklungsablauf, um sich mit der Geschichte des Themas vertraut zu machen.<br />
<br />
{{Userdocnavi{{#translation:}}}}<br />
[[Category:Addons{{#translation:}}]]<br />
[[Category:External Workbenches{{#translation:}}]]</div>Chrisbhttps://wiki.freecad.org/index.php?title=Translations:Assembly3_Workbench/42/de&diff=1082410Translations:Assembly3 Workbench/42/de2021-12-02T23:08:09Z<p>Chrisb: Änderung gemäß der Diskussion im Forum: https://forum.freecadweb.org/viewtopic.php?p=550973#p550973</p>
<hr />
<div>Der wichtigste Gedanke, den es zu verstehen gilt, ist dass die Beschränkung auf Verknüpfungen zu Elementen in der Liste im "Elements"-Baumabschnitt wirkt. Dies erlaubt, die Bindungsstruktur intakt zu halten, während die Teile geändert werden. Dies ist ohne ein Beispiel sehr schwer zu erkennen.</div>Chrisbhttps://wiki.freecad.org/index.php?title=Assembly3_Workbench/de&diff=1082409Assembly3 Workbench/de2021-12-02T22:45:03Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<br />
[[Image:Assembly3_workbench_icon.svg|thumb|128px|Assembly3 workbench icon]]<br />
<br />
{{TOCright}}<br />
<br />
== Einführung ==<br />
<br />
[[Image:Assembly3_workbench_icon.svg|24px]] [[Assembly3_Workbench|Assembly3]] ist ein [[External_workbenches/de|externer Arbeitsbereich]], der verwendet wird, um den Zusammenbau von verschiedenen Körpern in einer einzigen Datei oder in mehreren Dokumenten durchzuführen. Der Arbeitsbereich basiert auf einigen Kernfunktionsänderungen ausgeführt für die Version FreeCAD 0.19 (z.B. [[App_Link/de|App Verweis]]), sodass der Assembly3 Arbeitsbereich nicht mit früheren Versionen verwendet werden kann.<br />
<br />
Die Hauptfunktionen des Assembly3 Arbeitsbereichs sind<br />
* '''dynamischer/interaktiver Löser'''. Das bedeutet, du kannst Teile mit der Maus bewegen, während der Löser die Bewegung beschränkt. Dies erlaubt z.B. ein Rad mit einer Achse zu verbinden und das Rad interaktiv mit der Maus zu drehen. <br />
* '''Verknüpfungen'''. Das bedeutet, dass du ein einzelnes Teil, z. B. eine Schraube, mehrfach in einer Baugruppe (an verschiedenen Stellen) verwenden kannst, ohne die Geometrie zu duplizieren. <br />
* '''externe Verknüpfungen'''. Es ist möglich, ein Freecad Dokument zu besitzen, das nur eine Baugruppe und keine Teile enthält. Alle Teile können in einzelnen Dateien sein. Die Dateien können sich sogar in einer Bibliothek oder irgenwo anders im Dateisystem befinden. Die einzige Voraussetzung ist, dass die Datei geladen sein muss, wenn die Verknüpfung hergestellt wird. Nachdem die Verknüpfung gemacht wurde muss die Datei geöffnet sein, um Aktualisierungen an den Verknüpfungen, die die Datei betreffen, vorzunehmen. Assembly3 löst dieses Problem, indem es die Dateien bei Bedarf im Hintergrund öffnet.<br />
* '''hierarchische Baugruppen'''. Wie im wirklichen Leben kann eine mechanische Baugruppe aus Unterbaugruppen bestehen. Diese können wiederum aus Unterbaugruppen bestehen und so weiter. <br />
* '''Baugruppen einfrieren'''. Da die CPU nur eine bestimmte Anzahl gleichzeitiger Beschränkungen in Echtzeit verarbeiten kann, ermöglicht das Einfrieren einer Baugruppe die Verwendung von Beschränkungen auch für große Baugruppen. Durch das Einfrieren von fertigen Baugruppen oder Beschränkungen, die nicht dynamisch bleiben müssen (z. B. geschweißte, geschraubte oder geklebte Teile), werden diese von Aktualisierungsberechnungen ausgeschlossen und vom Assembly3 Löser als feste Geometrie betrachtet. <br />
*: Beachte, dass andere Ansätze eine andere Lösung für dieses Problem bieten, z. B. der [[File:Assembly4_workbench_icon.svg|24px]] [[Assembly4_Workbench/de|Assembly4 Arbeitsbereich]].<br />
<br />
[[#top|Anfang]]<br />
<br />
=== Werkzeugleisten ===<br />
Ab 2020 verfügt die Assembly3 Arbeitsbereich über die folgenden Werkzeugleisten. <br />
<br />
<br />
==== Hauptwerkzeugleiste ====<br />
:[[File:Assembly3_ToolbarMain.png|700px]]<br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
:Die '''Hauptwerkzeugleiste''' enthält Werkzeuge, die die am häufigsten gebrauchten Eigenschaften des Arbeitsbereiches abdecken. Die zugehörigen Tastenkürzel findet man in den Tooltips.<br />
<div class="mw-collapsible-content toccolours"><br />
<br />
:* [[Image:Assembly_Add Existing Part.svg|32px]] [[Assembly3_CreateAssembly/de|Baugruppe anlegen]]: Einen Baugruppenordner hinzufügen<br />
:* [[Image:Assembly_New Group.svg|32px]] [[Assembly3_GroupObjects/de|Objekte gruppieren]]: Eine Objektgruppe erstellen<br />
:* [[Image:Assembly_New Element.svg|32px]] [[Assembly3_CreateElement/de|Element anlegen]]: Ein Element hinzufügen. Dies ist auch im Kontextmenü verfügbar<br />
:* STEP-Dateien importieren. Hier gibt es zwei Einstellungen<br />
:** [[Image:Assembly_Import.svg|32px]] [[Assembly3_ImportFromSTEP/de|STEP-Dateien importieren]]: STEP-Dateien importieren<br />
:** [[Image:Assembly_ImportMulti.svg|32px]] [[Assembly3_ImportMultiDocument/de|Als Mehrfachdokument einfügen]]: STEP-Baugruppen in separate Dokumente importieren<br />
:* [[Image:Assembly3_workbench_icon.svg|32px]] [[Assembly3_ResolveConstraints/de|Beziehungen anwenden]]: Festgelegte Beziehungen berechnen (auflösen)<br />
:* [[Image:Assembly_QuickSolve.svg|32px]] [[Assembly3_QuickSolve/de|Schnelle Berechnung]]: Beziehungen schnell berechnen (auflösen)<br />
:* [[Image:Assembly_Move.svg|32px]] [[Assembly3_MovePart/de|Teil bewegen]]: Teil in 3D bewegen, dies ist ein spezielles Assembly3-Werkzeug<br />
:* [[Image:Assembly_AxialMove.svg|32px]] [[Assembly3_AxialMove/de|Axial bewegen]]: Teil axial in 3D bewegen, dies ist das übliche Werkzeug, das auch anderen Bereichen von FreeCAD zur Verfügung steht<br />
:* [[Image:Assembly_QuickMove.svg|32px]] [[Assembly3_QuickMove/de|Schnelles Bewegen]]: Schnelles Bewegen. Dies hängt das im Baum ausgewählte Teil an den Mauszeiger. Es verändert die Position des Teils, mit einem Mausklick. <br />
:*: Oft befinden sich hinzugefügte Teile übereinander gestapelt im Ursprung. Diese Funktion kann benutzt werden, um nicht sichtbare Teile zu erreichen.<br />
:* [[Image:Assembly_LockMover.svg|32px]] [[Assembly3_LockMover/de|Bewegung verhindern]]: Bewegung ausschließen für fixierte Teile. Umschaltknopf. Wenn dieser abgewählt ist, können auch Teile bewegt werden, die durch die Fixiereinschränkung festgelegt sind. <br />
:* [[Image:Assembly_TogglePartVisibility.svg|32px]] [[Assembly3_TogglePartVisibility/de|Sichtbarkeit umschalten]]: Dies schaltet die Sichtbarkeit des ausgewählten Teils ein oder aus. <br />
:*: Achtung, dies unterscheidet sich von der Benutzung der Leertaste. Die Benutzung der Leertaste mit ausgewählten Elementen einer Unterbaugruppe in der 3D-Ansicht liefert oft nicht das erwartete Verhalten. In solchen Fällen sollte diese Funktion benutzt werden (oder das Tastenkürzel A, Leertaste)<br />
:* [[Image:Assembly_Trace.svg|32px]] [[Assembly3_TracePartMove/de|Bewegung aufzeichnen]]:Bewegungsbahn aufzeichnen (TBD)<br />
:* [[Image:Assembly_AutoRecompute.svg|32px]] [[Assembly3_AutoRecompute/de|Automatische Berechnung]]:Automatische Berechnung. Standardmäßig aktiviert. <br />
:*: Kann deaktiviert werden für die Reparatur von Einschränkungen oder die Fixierung von Teilen, für die der Löser Die Nachricht ''"do not converge"'' ausgibt (z.B. wenn das Teil um 180° gedreht wird) <br />
:* [[Image:Assembly_SmartRecompute.svg|32px]] [[Assembly3_SmartRecompute/de|Smarte Berechnung]]: Smarte Berechnung. Standardmäßig aktiviert. <br />
:* [[Image:Assembly_AutoFixElement.svg|32px]] [[Assembly3_AutoFixElement/de|Element automatisch fixieren]]: Automatische Elementfixierung. Experimentelle Funktion in 0.19_pre<br />
:* Element Darstellung. Dies hat zwei Einstellmöglichkeiten:<br />
:** [[Image:Assembly_AutoElementVis.svg|32px]] [[Assembly3_AutoElementVisibility/de|Element automatisch anzeigen]]: Element automatisch anzeigen <br />
:** [[Image:Assembly_ShowElementCS.svg|32px]] [[Assembly3_ShowElementCS/de|Element-Koordinatensystem anzeigen]]: Koordinatensystem des Elements anzeigen<br />
:* Arbeitsebene und Ursprung. Fügt eine Arbeitsebene, eine Platzierung oder einen Ursprung hinzu. Es muss ein Teil ausgewählt sein. Hier gibt es fünf Einstellungen.<br />
:** [[Image:Assembly_Add Workplane.svg|32px]] [[Assembly3_AddXYWorkplane/de|XY-Arbeitsebene hinzufügen]]: Arbeitsebene hinzufügen<br />
:** [[Image:Assembly_Add WorkplaneXZ.svg|32px]] [[Assembly3_AddXZWorkplane/de|XZ-Arbeitsebene hinzufügen]]: XZ-Arbeitsebene hinzufügen <br />
:** [[Image:Assembly_Add WorkplaneZY.svg|32px]] [[Assembly3_AddZYWorkplane/de|ZY-Arbeitsebene hinzufügen]]:YZ-Arbeitsebene hinzufügen <br />
:** [[Image:Assembly_Add Placement.svg|32px]] [[Assembly3_AddPlacement/de|Platzierung hinzufügen]]: Platzierung hinzufügen<br />
:** [[Image:Assembly_Add Origin.svg|32px]] [[Assembly3_AddOrigin/de|Ursprung hinzufügen]]: Ursprung hinzufügen<br />
:* [[Image:Assembly_TreeItemUp.svg|32px]] [[Assembly3_MoveItemUp/de|Objekt aufwärts bewegen]]: Ausgewähltes Baumobjekt aufwärts bewegen<br />
:* [[Image:Assembly_TreeItemDown.svg|32px]] [[Assembly3_MoveItemDown/de|Objekt abwärts bewegen]]: Ausgewähltes Baumobjekt abwärts bewegen<br />
:*: Erlaubt es Teile, Elemente oder Einschränkungen im Baum umzusortieren. Mit "Element roll over" (von der ersten zur letzten Position und umgekehrt). Funktioniert nur mit einer einzelnen Auswahl. <br />
:* [[Image:Assembly_ConstraintMultiply.svg|32px]] [[Assembly3_MultiplyConstraint/de|Beziehung vervielfältigen]]: Beziehung vervielfachen. Dies kann ausgewählt werden, wenn Teile und geeignete Elemente mehrfach vorhanden sind. Es kann z.B. benutzt werden um mehrfach vorhandene Befestigungselemente mehrfach vorhandenen Löchern mit nur einer Beziehung zuzuordnen.<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
==== Hauptwerkzeugleiste Beschränkungen ====<br />
<br />
: [[Image:Assembly_ConstraintLock.svg|28px]] [[Image:Assembly_ConstraintAlignment.svg|28px]] [[Image:Assembly_ConstraintCoincidence.svg|28px]] [[Image:Assembly_ConstraintAttachment.svg|28px]] [[Image:Assembly_ConstraintAxial.svg|28px]] [[Image:Assembly_ConstraintSameOrientation.svg|28px]] [[Image:Assembly_ConstraintMultiParallel.svg|28px]] [[Image:Assembly_ConstraintAngle.svg|28px]] [[Image:Assembly_ConstraintPerpendicular.svg|28px]] [[Image:Assembly_ConstraintPointCoincident.svg|28px]] [[Image:Assembly_ConstraintPointInPlane.svg|28px]] [[Image:Assembly_ConstraintPointOnLine.svg|28px]] [[Image:Assembly_ConstraintPointOnCircle.svg|28px]] [[Image:Assembly_ConstraintPointsDistance.svg|28px]] [[Image:Assembly_ConstraintPointPlaneDistance.svg|28px]] [[Image:Assembly_ConstraintPointLineDistance.svg|28px]] [[Image:Assembly_ConstraintSymmetric.svg|28px]] [[Image:Assembly_ConstraintMore.svg|28px]] <br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
: Einige dieser Werkzeuge sind eigentlich Menüs für weitere Werkzeuge. <br />
<div class="mw-collapsible-content toccolours"><br />
<br />
:* [[Image:Assembly ConstraintLock.svg|32px]] [[Assembly3_ConstraintLock/de|Festsetzen]]: Zum Fixieren eines oder mehrerer Teile. <br />
:*: Es muss ein (Geometrie-) Element eines Teiles ausgewählt werden.<br />
:*: Wird ein Knotenpunkt oder eine Kante festgesetzt, lässt sich das Teil immer noch frei um den Knotenpunk oder die Kante drehen.<br />
:*: Das Festsetzen einer Fläche fixiert das Teil vollständig.<br />
:* [[Image:Assembly ConstraintAlignment.svg|32px]] [[Assembly3_ConstraintAlignment/de|Ebenen ausrichten]]: Zum Ausrichten ebener Flächen zweier oder mehrerer Teile.<br />
:*: Die Flächen werden komplanar ausgerichtet oder optional parallel mit Abstand.<br />
:* [[Image:Assembly ConstraintCoincidence.svg|32px]] [[Assembly3_ConstraintCoincidence/de|Deckungsgleiche Ebenen]]: Zum deckungsgleich Festlegen ebener Flächen zweier oder mehrerer Teile.<br />
:*: Die Flächen werden mit deckungsgleichen Ursprüngen komplanar ausgerichtet oder optional parallel mit Abstand. <br />
:* [[Image:Part Attachment.svg|32px]] [[Assembly3_ConstraintAttachment/de|Befestigung]]: Zum Befestigen eines Teils an ein zweites mittels der ausgewählten (Geometrie-) Elemente. <br />
:*: Diese Beziehung verbindet beide Teile starr miteinander.<br />
:* [[Image:Assembly ConstraintAxial.svg|32px]] [[Assembly3_ConstraintAxial/de|Axiale Ausrichtung]]: Zum axialen Ausrichten (Fluchten) von Kanten und Flächen zweier oder mehrerer Teile.<br />
:*: Die Beziehung akzeptiert:<br />
:*:: lineare Kanten; sie werden kollinear ausgerichtet, <br />
:*:: ebene Flächen; sie werden unter Nutzung ihrer Flächennormalen (Z-Achse) ausgerichtet, <br />
:*:: und zylindrische Flächen; sie werden unter Nutzung ihrer (Z-) Achsrichtung ausgerichtet. <br />
:*: Verschiedene Arten von (Geometrie-) Elementen können gemischt werden.<br />
:* [[Image:Assembly ConstraintSameOrientation.svg|32px]] [[Assembly3_ConstraintSameOrientation/de|Richtungen angleichen]]: Zum identischen Ausrichten der (ebenen) Flächen zweier oder mehrerer Teile. <br />
:*: Die Ebenen werden so ausgerichtet, dass ihre (Z-) Achsen in dieselbe Richtung zeigen.<br />
:* [[Image:Assembly ConstraintMultiParallel.svg|32px]] [[Assembly3_ConstraintMultiParallel/de|Mehrfach parallel]]: Zum parallelen Ausrichten von ebenen Flächen oder geraden Kanten zweier oder mehrerer Teile.<br />
:* [[Image:Assembly ConstraintAngle.svg|32px]] [[Assembly3_ConstraintAngle/de|Winkel festlegen]]: Zum Festlegen des Winkels zwischen ebenen Flächen oder geraden Kanten zweier Teile.<br />
:* [[Image:Assembly ConstraintPerpendicular.svg|32px]] [[Assembly3_ConstraintPerpendicular/de|Rechtwinklig festlegen]]: Zum rechtwinkligen Festlegen von ebenen Flächen oder geraden Kanten zweier Teile.<br />
:* [[Image:Assembly ConstraintPointCoincident.svg|32px]] [[Assembly3_ConstraintPointsCoincident/de|Punkt auf Punkt]]: Zum deckungsgleich Festlegen zweier Punkte in 2D oder 3D.<br />
:* [[Image:Assembly ConstraintPointInPlane.svg|32px]] [[Assembly3_ConstraintPointInPlane/de|Punkt auf Ebene]]: Zum Festlegen eines oder mehrerer Punkte auf einer Ebene (Punktberührung).<br />
:* [[Image:Assembly ConstraintPointOnLine.svg|32px]] [[Assembly3_ConstraintPointOnLine/de|Punkt auf Linie]]: Zum Festlegen eines oder mehrerer Punkte auf einer Linie in 2D or 3D.<br />
:* [[Image:Assembly ConstraintPointOnCircle.svg|32px]] [[Assembly3_ConstraintPointOnCircle/de|Punkt auf Kreis]]: Zum Festlegen eines oder mehrerer Punkte auf einer durch einen Kreis definierten zylindrischen Fläche.<br />
:*: Achtung! Es muss ein Punkt (irgendein Geometrieelement, dass einen Punkt definieren kann) ausgewählt werden und dann der Kreis (oder eine zylindrische Fläche), <br />
:*: danach können bei Bedarf weitere Punkte hizugefügt werden.<br />
:* [[Image:Assembly ConstraintPointsDistance.svg|32px]] [[Assembly3_ConstraintPointsDistance/de|Punkt zu Punkt Abstand]]: Zum Festlegen des Abstands zweier oder mehrerer Punkte zueinander.<br />
:* [[Image:Assembly ConstraintPointPlaneDistance.svg|32px]] [[Assembly3_ConstraintPointPlaneDistance/de|Punkt zu Ebene Abstand]]: Zum Festlegen des Abstands eines oder mehrerer Punkte zu einer Ebene.<br />
:* [[Image:Assembly ConstraintPointLineDistance.svg|32px]] [[Assembly3_ConstraintPointLineDistance/de|Punkt zu Linie Abstand]]: Zum Festlegen des Abstands eines Punktes zu einer geraden Kante in 2D oder 3D.<br />
:* [[Image:Assembly ConstraintSymmetric.svg|32px]] [[Assembly3_ConstraintSymmetric/de|Symmetrie festlegen]]: Zum Festlegen der Symmetrie der (Geometrie-) Elemente zweier Teile bezüglich einer Ebene.<br />
:*: Unterstützte Elemente sind gerade Kanten und ebene Flächen.<br />
:* [[Image:Assembly ConstraintMore.svg|32px]] [[Assembly3_ConstraintMore/de|Weitere]]: Werkzeugleisten umschalten für weitere Beschränkungen<br />
:*: Nicht wirklich eine Beschränkung, sondern ein Umschalter zum Anzeigen/Ausblenden der '''Werkzeugleisten für zusätzliche Beschränkungen'''.<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
==== Zusätzliche Beschränkungswerkzeugleisten ====<br />
<br />
: [[Image:Assembly_ConstraintPointDistance.svg|28px]] [[Image:Assembly_ConstraintEqualAngle.svg|28px]] [[Image:Assembly_ConstraintPointsSymmetric.svg|28px]] [[Image:Assembly_ConstraintGeneral.svg|28px]] [[Image:Assembly_ConstraintGeneral.svg|28px]] [[Image:Assembly_ConstraintSymmetricLine.svg|28px]] [[Image:Assembly_ConstraintPointsHorizontal.svg|28px]] [[Image:Assembly_ConstraintPointsVertical.svg|28px]] [[Image:Assembly_ConstraintLineHorizontal.svg|28px]] [[Image:Assembly_ConstraintLineVertical.svg|28px]] [[Image:Assembly_ConstraintArcLineTangent.svg|28px]] (Assembly3 Constraints2)<br />
<br />
:[[Image:Assembly_ConstraintSketchPlane.svg|28px]] [[Image:Assembly_ConstraintLineLength.svg|28px]] [[Image:Assembly_ConstraintEqualLength.svg|28px]] [[Image:Assembly_ConstraintLengthRatio.svg|28px]] [[Image:Assembly_ConstraintLengthDifference.svg|28px]] [[Image:Assembly_ConstraintLengthEqualPointLineDistance.svg|28px]] [[Image:Assembly ConstraintEqualLineArcLength.svg|28px]] [[Image:Assembly_ConstraintMidPoint.svg|28px]] [[Image:Assembly_ConstraintDiameter.svg|28px]] [[Image:Assembly_ConstraintEqualRadius.svg|28px]] [[Image:Assembly_ConstraintPointsProjectDistance.svg|28px]] [[Image:Assembly_ConstraintEqualPointLineDistance.svg|28px]] [[Image:Assembly_ConstraintColinear.svg|28px]] (Assembly3 Sketch Constraints)<br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
:Du kannst diese durch Auswählen der {{Button|[[Image:Assembly_ConstraintMore.svg|16px]] [[Assembly3_ConstraintMore/de|Weitere]]}} Schaltfläche in der Hauptbeschränkungen Werkzeugleiste, aktivieren.<br />
<div class="mw-collapsible-content toccolours"><br />
<br />
:* [[Image:Assembly_ConstraintPointDistance.svg|32px]] [[Assembly3_ConstraintPointDistance/de|Abstand zweier Punkte]]: Zum Festlegen des Abstands zweier Punkte in 2D oder 3D.<br />
:* [[Image:Assembly_ConstraintEqualAngle.svg|32px]] [[Assembly3_ConstraintEqualAngle/de|Gleiche Winkel]]: Zum Festlegen von gleichen Winkeln zwischen (je) zwei Linien oder (Flächen-) Normalen. <br />
:* [[Image:Assembly_ConstraintPointsSymmetric.svg|32px]] [[Assembly3_ConstraintPointsSymmetric/de|Symmetrische Punkte]]: Zum Festlegen der symmetrischen Lage zweier Punkte bezüglich einer Ebene.<br />
:* [[Image:Assembly_ConstraintGeneral.svg|24px]] () [[Assembly3_ConstraintSymmetricHorizontal/de|Horizontale Symmetrie ]]: (noch nicht fertig...)<br />
:* [[Image:Assembly_ConstraintGeneral.svg|24px]] () [[Assembly3_ConstraintSymmetricVertical/de|Vertikale Symmetrie]]: (noch nicht fertig...) <br />
:* [[Image:Assembly_ConstraintSymmetricLine.svg|32px]] [[Assembly3_ConstraintSymmetricLine/de|Achsensymmetrie]]: Zum Festlegen der symmetrischen Lage zweier Punkte bezüglich einer Symmetrieachse.<br />
:* [[Image:Assembly_ConstraintPointsHorizontal.svg|32px]] [[Assembly3_ConstraintPointsHorizontal/de|Horizontale Punkte]]: Zum Festlegen einer horizontalen Ausrichtung zweier Punkte, wenn sie auf eine Ebene projiziert werden.<br />
:* [[Image:Assembly_ConstraintPointsVertical.svg|32px]] [[Assembly3_ConstraintPointsVertical/de|Vertikale Punkte]]: Zum Festlegen einer vertikalen Ausrichtung zweier Punkte, wenn sie auf eine Ebene projiziert werden.<br />
:* [[Image:Assembly_ConstraintLineHorizontal.svg|32px]] [[Assembly3_ConstraintLineHorizontal/de|Horizontale Linie]]: Zum Festlegen einer horizontalen Ausrichtung eines Liniensegments, wenn es auf eine Ebene projiziert wird.<br />
:* [[Image:Assembly_ConstraintLineVertical.svg|32px]] [[Assembly3_ConstraintLineVertical/de|Vertikale Linie]]: Zum Festlegen einer vertikalen Ausrichtung eines Liniensegments, wenn es auf eine Ebene projiziert wird.<br />
:* [[Image:Assembly_ConstraintArcLineTangent.svg|32px]] [[Assembly3_ConstraintArcLineTangent/de|Bogen-Linie-Tangente]]: Zum Festlegen eines tangentiellen Übergangs zwischen einer Linie und dem Start- oder Endpunkt eines Bogens.<br />
<br />
<br />
:* [[Image:Assembly_ConstraintSketchPlane.svg|32px]] [[Assembly3_ConstraintSketchPlane/de|Skizzierebene]]: Zum Festlegen einer Arbeitsebene für alle Draft-WB-Elemente innerhalb dieser Beziehung oder dieser Beziehung folgend. <br />
:*: Eine weitere hinzufügte leere Skizzenebene löst die vorherige als Arbeitsebene ab.<br />
:* [[Image:Assembly ConstraintLineLength.svg|32px]] [[Assembly3_ConstraintLineLength/de|Linienlänge]]: Zum Festlegen der Länge eines nicht unterteilten Draft-Drahtes.<br />
:* [[Image:Assembly ConstraintEqualLength.svg|32px]] [[Assembly3_ConstraintEqualLength/de|Gleiche Länge]]: Zum Festlegen, dass zwei Linien gleich lang sind.<br />
:* [[Image:Assembly ConstraintLengthRatio.svg|32px]] [[Assembly3_ConstraintLengthRatio/de|Längenverhältnis]]: Zum Festlegen des Verhältnisses der Längen zweier Linien.<br />
:* [[Image:Assembly ConstraintLengthDifference.svg|32px]] [[Assembly3_ConstraintLengthDifference/de|Längendifferenz]]: Zum Festlegen der Differenz der Längen zweier Linien.<br />
:* [[Image:Assembly_ConstraintLengthEqualPointLineDistance.svg|32px]] [[Assembly3_ConstraintLengthEqualPointLineDistance/de|Länge gleich Punkt-Linie-Abstand]]: Zum Festlegen, dass der Abstand eines Punktes zu einer Linie gleich der Länge einer weiteren Linie ist.<br />
:* [[Image:Assembly_ConstraintGeneral.svg|24px]] ( [[Image:Assembly_ConstraintEqualLineArcLength.svg|32px]] )[[Assembly3_ConstraintEqualLineArcLength/de|Linien- gleich Bogenlänge]]: Zum Festlegen, dass die Länge einer Linie gleich der Länge enes Bogens ist.<br />
:* [[Image:Assembly_ConstraintMidPoint.svg|32px]] [[Assembly3_ConstraintMidPoint/de|Mittelpunkt]]: Zum Festlegen eines Punktes in der Mitte einer Linie.<br />
:* [[Image:Assembly_ConstraintDiameter.svg|32px]] [[Assembly3_ConstraintDiameter/de|Durchmesser]]: Zum Festlegen des Durchmessers eines Kreises oder Bogens.<br />
:* [[Image:Assembly_ConstraintEqualRadius.svg|32px]] [[Assembly3_ConstraintEqualRadius/de|Gleicher Radius]]: Zum Festlegen, dass die Radien zweier Kreise oder Bögen gleich groß sind.<br />
:* [[Image:Assembly_ConstraintPointsProjectDistance.svg|32px]] [[Assembly3_ConstraintPointsProjectDistance/de|Projizierter Punktabstand]]: Zum Festlegen des Abstands zweier Punkte, die auf eine Linie projiziert werden.<br />
:* [[Image:Assembly_ConstraintEqualPointLineDistance.svg|32px]] [[Assembly3_ConstraintEqualPointLineDistance/de|Gleicher Punkt-Linien-Abstand]]: Zum Festlegen, dass der Abstand eines Punktes zu einer Linie gleich dem Abstand eines weiteren Punktes zu einer anderen Linie ist.<br />
:* [[Image:Assembly_ConstraintColinear.svg|32px]] [[Assembly3_ConstraintColinear/de|Kollinear]]: Hinzufügen einer "kollinearen" Beschränkung um zwei Linien kollinear zu machen.<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
<br />
:Die '''Werkzeugleisten der Beziehungen''' sind die Hauptschnittstelle für den Zusammenzubau von Einzelteilen. <br />
: Sie sind standardmäßig ausgegraut, werden aber aktiviert, sobald mindestens eine Fläche, eine Linie oder ein Punkt eines Teiles ausgewählt wird.<br />
: Normalerweise werden erst die zu verbindenden Elemente ausgewählt und danach die Art der Beziehung.<br />
: Die unterschiedlich gefärbten Rahmen weisen auf unterschiedliche Eigenschaften der Einschränkungen hin:<br />
:: ob 2D / 3D oder ob mehr als 2 Elemente zusammengefügt werden können.<br />
: Eine ausführliche Beschreibung ist im GitHub-Wiki zu finden.<br />
<br />
==== Navigationswerkzeugleiste ====<br />
: [[Image:Assembly_GotoRelation.svg|28px]] [[Image:LinkSelect.svg|28px]] [[Image:LinkSelectFinal.svg|28px]] <br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
Diese Funktionen sind nützlich, wenn eine Baugruppe mit einer Hierarchie von verknüpften externen Dateien bearbeitet wird.<br />
<div class="mw-collapsible-content toccolours"><br />
:* [[Image:Assembly_GotoRelation.svg|32px]] [[Assembly3_GoToRelation/de|Zur Beziehung gehen]]: Zeigt die Beziehungsgruppe an (standardmäßig ausgeblendet) und wählt ein Beziehungsobjekt aus.<br />
:* [[File:Std_LinkSelectLinked.svg|32px]] [[Std_LinkSelectLinked/de|Verknüpftes Objekt auswählen]]: Wählt das verknüpfte Objekt aus und wechselt zu dessen Dokument. {{Version/de|0.19}}<br />
:* [[File:Std_LinkSelectLinkedFinal.svg|32px]] [[Std_LinkSelectLinkedFinal/de|Letztes verknüpftes Objekt auswählen]]: Wählt das Objekt am Ende der Verknüpfungskette aus und wechselt zu dessen Dokument. {{Version/de|0.19}}<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
<br />
==== Messwerkzeugleiste ====<br />
<br />
: [[Image:Assembly_MeasurePointDistance.svg|28px]] [[Image: Assembly_MeasurePointLineDistance.svg |28px]] [[Image: Assembly_MeasurePointPlaneDistance.svg |28px]] [[Image: Assembly_MeasureAngle.svg |28px]]<br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
: Die '''Messwerkzeugleiste''' fügt Funktionen zum Messen des Abstands oder des Winkels zwischen zwei Objekten hinzu<br />
<div class="mw-collapsible-content toccolours"><br />
<br />
:* [[Image:Assembly_MeasurePointDistance.svg|32px]] [[Assembly3_MeasurePoints/de|Punkte messen]]: Füge ein "Punkte messen" hinzu, um den Abstand zwischen zwei Punkten in 2D oder 3D zu messen.<br />
:* [[Image:Assembly_MeasurePointLineDistance.svg|32px]] [[Assembly3_MeasurePointLine/de|Punkt zu Linie messen]]: Füge ein "Punkt zu Linie messen" hinzu, um den Abstand zwischen einem Punkt und einer linearen Kante in 2D oder 3D zu messen.<br />
:* [[Image:Assembly_MeasurePointPlaneDistance.svg|32px]] [[Assembly3_MeasurePointPlane/de|Punkt zu Ebene messen]]: Füge ein "Punkt zu Ebene messen" hinzu, um den Abstand zwischen einem Punkt und einer Ebene zu messen.<br />
:* [[Image:Assembly_MeasureAngle.svg|32px]] [[Assembly3_MeasureAngle/de|Winkel messen]]: Füge ein "Winkel messen" hinzu, um den Winkel von ebenen Flächen oder linearen Kanten zweier Teile zu messen.<br />
<br />
: Es gibt keine Funktion um einen Radius oder Durchmesser zu messen.<br />
: Die Messwerkzeuge überdauern Teiländerungen, z.B. den Abstand zwischen Kanten eines Würfels, wenn die die Größe des Würfels geändert wird. <br />
: Wie die Beschränkungen werden diese Berechnungen in Echtzeit ausgeführt und bei jeder Änderung aktualisiert. Hinter den Kulissen ist die Funktion den [[#Constraints|Beschränkungen]] sehr ähnlich. Der Abstand oder Winkel zwischen [[#Elemente|Elemente]] wird auf die gleiche Weise berechnet wie bei [[#Beschränkungen|Beschränkungen]]. Die Anzeige im Baum funktioniert auf die gleiche Weise.<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
<br />
Wie gewohnt, kann die Werkzeugleiste geändert und einzelne Werkzeuge hinzugefügt oder entfernt werden. Im Assembly3-Menü sind weitere Funktionen vorhanden, die sich nicht in den Werkzeugleisten befinden.<br />
<br />
[[#top|Anfang]]<br />
<br />
<div class="mw-translate-fuzzy"><br />
=== Beschränkungen ===<br />
Der Konstrukteur verwendet Beschränkungen um das gewünschte Ergebnis für die Beziehung zweier Teile zu erreichen. Die Kunst besteht darin, für jedes Problem die richtigen Beschränkungen auszuwählen, die sich am besten dafür eignen. Jeder beseitigte Freiheitsgrad sollte theoretisch nur einmal zwischen zwei Objekten beseitigt werden, aber in der Praxis mit vielen CAD Werkzeugen verursachen gewählte Beschränkungen über-beschränkte Kombinationen, oftmals kompensiert durch komplexe Algorithmen, manchmal aber auch nicht. Assembly3 benutzt Algorithmen, um über-bestimmte Beschränkungen zu entdecken und zu kompensieren, aber sie sind bisher noch nicht sehr ausgereift. <br />
So für Assembly3 Beschränkungen praktisch angewendet vermeide Probleme indem du dir bewusst machst, wie viele Freiheitsgrade genutzt wurden und welche noch durch Beschränkungen gesperrt werden müssen. Kein Teil sollte eine Verbindung durch Beschränkungen haben, die mehr als 6 Freiheitsgrade verwenden.<br />
</div> <br />
<br />
Hinweis: Wenn der Löser auf eine Kombination trifft, die nicht gelöst werden kann, gibt er einen Fehler aus. Es ist sehr schwierig für den Löser herauszufinden, was das Problem verursacht hat, so dass typischerweise aus dieser Fehlermeldung nicht klar hervorgeht, ''wo'' das Problem liegt. Bei größeren Baugruppen kann dies zu einer komplexen Problemsuche führen. Leider gibt es keine einfache Möglichkeit, dies zu vermeiden. Es ist jedoch hilfreich, sich über die Funktionsweise des Systems im Klaren zu sein (siehe z.B. [[#Elemente|Elemente]] unten), eindeutige Namen für alle beteiligten Komponenten zu verwenden und immer nur dann zusätzliche Beschränkungen hinzuzufügen, wenn der Löser die aktuelle Baugruppe gelöst hat. Sehr hilfreich, um ein Problem aufzuspüren, ist die "KontexMenü/Deaktivieren" Funktion jeder Beschränkung. <br />
<br />
Assembly3 Beschränkungen definieren Einschränkungen in der Position oder Orientierung zwischen zwei [[#Elemente|Elementen]]. Einige Beschränkungen arbeiten sogar mit mehr als zwei [[#Elemente|Elementen]]. Ein [[#Elemente|Element]] kann eine Fläche, eine Linie oder Kante oder ein Punkt eines Teils sein. Im Allgemeinen werden Beschränkungen definiert, indem man die gewünschten [[#Elemente|Elemente]] auswählt und dann die Beschränkung aus der Beschränkungen [[#Werkzeugleiste|Werkzeugleiste]] auswählt.<br />
<br />
* Fixiert 6 Freiheitsgrade, 0 bleiben unbestimmt: <br />
** '''Fixierung (Schloss)''': Die Fixiereinschränkung legt alle Freiheitsgrade einer Fläche. Sie sollte in jedem Zusammenbau zur Festlegung eines Basisteils genutzt werden. Es ist sinnvoll auch gleich die "Bewegung ausschließen für fixierte Teile"-Funktion (in der Werkzeugleiste) zu aktivieren, um damit ein unbeabsichtigtes Verschieben zu verhindern. In der Regel ist es egal welche Fläche, Linie oder Punkt benutzt wird um ein Teil zu fixieren. Man beachte, dass die Fixierung nur auf den aktuellen Zusammenbau wirkt, d.h. im Falle einer Unterbaugruppe braucht der übergeordnete Zusammenbau noch ein eigenes fixiertes Teil.<br />
**'''Anhang''': Legt die Koordinatensysteme der ausgewählten Elemente (zweier oder mehrerer Teile) deckungsgleich aufeinander. Dies ist die für die Berechnung günstigste Funktion und sollte, wo immer möglich, benutzt werden. Man beachte, dass man die Eigenschaften der Elemente nutzen kann, um Abstände und Winkel einzustellen, wenn die [[#Elements|Elemente]] nicht optimal zueinander ausgerichtet sind.<br />
* Fixiert 5 Freiheitsgrade, 1 bleibt unbestimmt: <br />
** '''Lagegleiche Ebenen''': fixes Tx,Ty,Tz, Rx,Ry. Only Rz is free. There remains the rotation around the normal passing through the ‘‘center of the plane’’.<br />
* Fixiert 4 Freiheitsgrade, 2 bleiben unbestimmt: <br />
** '''Axial Alignment''': fixes Tx,Ty, Rx,Ry. Only Tz, Rz are free. There remains the rotation around the axis of the shape and the translation along this same axis. Two ''PointOnLine'' constraints (if the two points are different) give the same result. The '‘Colinear'’ constraint too.<br />
** '''PointOnLine''': This eliminates the translation and rotation along the normals to the reference line. Only the translation and rotation along the line axis is allowed. <br />
* Fixiert 3 Freiheitsgrade, 3 bleiben unbestimmt: <br />
** '''Same Orientation''': fixes Rx,Rz,Rz. All T's remain free.<br />
** '''Points Coincident''': fixes Tx,Ty,Tz. All R's remain free.<br />
** '''PointOnPoint''' constraint eliminates the 3 translations.<br />
** '''Plane Alignment''': fixes Tz, Rx,Ry. In plane motion and Rz. This eliminates the translation along the normal to the reference plane and the two rotations around the axes of this plane.<br />
* Fixiert 2 Freiheitsgrade, 4 bleiben unbestimmt: <br />
** '''Multi Parallel''': fixes Rx,Ry. all T's and Rz remain. This eliminates the two rotations around the axes of the reference plane.<br />
* Fixiert 1 Freiheitsgrad, 5 bleiben unbestimmt: <br />
** '''Points in Plane''': Fixes Tz. This eliminates the translation along the normal to the reference plane.<br />
** '''Points Distance''': fixes the distance between the Element origins. <br />
**: This gives you more freedom than ''Points in Plane''<br />
Other<br />
* '''Points on Circle''': fixes Tz and partially Tx,Ty. Freezes the point translation (or several points) on a circle or disk area. You must pick the circle second. This leaves all rotations free and gives limited translation in the circle reference plane. <br />
<br />
'': Hinweis: In der folgenden Liste werden Tx,Ty,Tz und Rx,Ry,Rz benutzt, um Translations- (Verschiebe-) und Rotations- (Dreh-) Bewegungen bezogen auf die Koordinatenachsen des betreffenden Elements zu beschreiben. Dies ist nicht immer exakt oder vollständig beschrieben, wie z.B. wenn es eine Linie betrifft, ist es nicht definiert, ob sie in X-Richtung, Y-Richtung oder einem beliebigen Winkel dazwischen verläuft. Das System sorgt eher für Kürze und einfache Vergleichbarkeit, als für eine korrekte aber komplexere Definition. So ist Z normalerweise die Richtung der Flächennormalen der betroffenen Flächen.<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
=== Elemente ===<br />
Elemente wird in der Assembly3-Arbeitsumgebung als besonderer Begriff benutzt, und Elemente zu verstehen ist wichtig für das Verständnis, wie Assembly3 benutzt werden sollte. <br />
<br />
Es ist hilfreich ein Element als einen generellen Begriff für 'auswählbarer Bestandteil' eines Teiles zu sehen wie z.B. eine Fläche , eine Kante, ein Kreis, eine Ecke oder ein Punkt. Dies sind die Elemente, die ausgewählt werden, um Teile zueinander in Beziehung zu setzen. Im Baum hat ein 'Assembly'-Ordner drei Unterordner. Neben 'Parts' und 'Constraints' gibt es einen Ordner namens 'Elements', der leer bleibt, solange keine Einschränkungen hinzugefügt werden. Wenn eine Einschränkungen hinzugefügt wird, erhält sie selbst zwei (oder mehr) Blätter, dies sind die ausgewählten Elemente. Auch werden diese Elemente dem 'Elements'-Ordner hinzugefügt, der eine Liste aller im Zusammenbau benutzten Elemente darstellt. Es ist eine gute Idee, ihre Namen zu ändern (mit der F2-Taste), besonders in größeren Zusammenbauten.<br />
<br />
Sehen wir uns ein Beispiel an<br />
: Es wird eine neue Datei erstellt und mit der Part-Arbeitsumgebung ein Würfel und ein Zylinder hinzugefügt. Es soll der Zylinder auf den Würfel gestellt werden. Zuerst wird das Basisteil fixiert, in diesem Fall der Würfel. Dazu wird die Unterseite des Würfels und danach die Fixiereinschränkung (das erste Symbol in der [[#Toolbars|Werkzeugleiste]] der Haupteinschränkungen) ausgewählt. Es werden die Oberseite des Würfels und die Oberseite des Zylinders ausgewählt. Danach wird die 'Plane Coincident'-Einschränkung ausgewählt. Nun hat sich der Zylinder in den Würfel hinein bewegt und im Baum wurde ein neues Blatt mit zwei Kindknoten unter 'Constraints' hinzugefügt. Zusätzlich wurden die selben zwei Kindknoten unter 'Elements' hinzugefügt. Falls der Zylinder im Inneren des Würfels liegt, anstatt auf seiner Oberseite wird dies als nächstes korrigiert: Den Kindknoten unter 'Constraints' auswählen, zu dem die Zylinderfläche gehört, und mit einem Rechtsklick im Kontextmenü 'Flip Part' auswählen. Nun wurde der Zylinder auf die Würfeloberseite gestapelt.<br />
<br />
Der wichtigste Gedanke, den es zu verstehen gilt, ist dass die Beschränkung auf Verknüpfungen zu Elementen in der Liste im "Elemente"-Baumordner wirkt. Dies erlaubt, die Bindungsstruktur intakt zu halten, während die Teile geändert werden. Dies ist ohne ein Beispiel sehr schwer zu erkennen. <br />
<br />
Zurück zum obigen Beispiel<br />
: Achtung: Es sollte darauf geachtet werden, dass die Fixiereinschränkung zum Würfel hinzugefügt wurde, andernfalls wird es verwirrend aussehen.<br />
: Im CAD-Fenster wird eine weitere Fläche des Würfels ausgewählt. Ab jetzt wird nur noch in der Baumansicht gearbeitet. Im Baum wird die Maus über dem auszuwählenden Würfel platziert. Der Würfel wird per 'Drag&Drop' auf den 'Elements'-Ordner gezogen und abgelegt. Das Ablegen sollte auf dem Namen des 'Elements' erfolgen, nicht anderswo im Ordner - warum, sehen wir später. Es sollte erkennbar sein, das ein weiteres Element zur 'Elements'-Liste hinzugefügt wurde. Nun wird im 'Constraints'-Ordner der Kindknoten der Würfelfläche in der 'Plane Coincident'-Einschränkung ausgewählt und aus der Liste entfernt. Die Einschränkung ist nun mit einem Ausrufezeichen gekennzeichnet, da ihr ein Element fehlt. Hierbei ist zu beachten, dass ein Element, das aus der Einschränkung entfernt wurde, ''nicht'' auch aus der (Element-)Liste gelöscht wurde. Der Grund dafür ist, dass in der Einschränkung nur ein Verweis zum Element in der Liste abgelegt wird. Nun kann das neu zur 'Elements'-Liste hinzugefügte Element per 'drag&drop' auf die 'Plane Coincident'-Einschränkung gezogen und abgelegt. Damit bewegt sich der Zylinder zu der anderen Fläche des Würfels, die vorher ausgewählt wurde. Wenn der Zylinder im Inneren des Würfels liegt, muss nochmals im Kontextmenü 'flip part' ausgewählt werden. <br />
<br />
Das Beispiel zeigt, dass man die zur Einschränkung gehörenden Elemente austauschen kann, ohne die Einschränkung zu Löschen. Auf dieselbe Weise kann der Zylinder auch zu einem ganz anderen Teil bewegt werden. Nachdem man etwas mit diesem Beispiel herumgespielt hat, wird man noch zusätzliche Möglichkeiten entdecken, wie z.B.<br />
* Wenn ein Element in der Liste umbenannt wird, wird es auch in allen Einschränkungen umbenannt<br />
* Ein Element der Liste kann für mehrere Einschränkungen verwendet werden.<br />
* Das Eigenschaftsfenster eines Elements kann verwendet werden, um '''Versatzangaben ''' (Offsets) hinzuzufügen. Z.B. kann hiermit der Zylinder auf unterschiedliche Positionen auf der gewählten Würfelfläche platziert werden.<br />
* Man kann den 'Show Element Coordinate System'-Knopf der Hauptwerkzeugleiste benutzen, um zu sehen, wie sich 'Flip Part' und 'Flip Element' aus dem Kontextmenü auswirken. Nicht vergessen, die Änderungen im Eigenschaftsfenster zu beobachten.<br />
* Eine Einschränkung kann auch in einer ganz anderen Reihenfolge hinzugefügt werden: Zuerst werden Elemente zur 'Elements'-Liste hinzugefügt (Eine Benennung ist hier nützlich, z.B. "Würfel-Oberseite" oder "Würfel-Unterseite"), dann wird eine Einschränkung hinzugefügt, ohne etwas auszuwählen - Das ergibt eine leere Einschränkung. Dann werden Elemente aus der Liste per 'Drag&Drop' hierher gezogen und abgelegt. Das Ergebnis ist das gleiche, wie in dem ersten Beispiel. Nach dieser Übung sollte klar sein, wie Einschränkungen und Elemente zusammenarbeiten.<br />
* Eine bestehende Einschränkung zwischen bestehenden Elementen kann einfach ausgetauscht werden, indem man eine andere Auswahl in der 'ConstraintType'-Eigenschaft im Eigenschaftsfenster trifft. <br />
<br />
[[#top|Zum Anfang]]<br />
<br />
== Kompatibilität ==<br />
<br />
Assembly3 wurde vom [[Assembly2_Workbench|Assembly2]] inspiriert, ist aber nicht mit diesem kompatibel. Wenn du ältere Modelle in Assembly2 erstellt hast, solltest du bei FreeCAD 0.16 bleiben und Assembly2 dort verwenden.<br />
<br />
Neue Modelle, die mit Assembly3 entwickelt wurden, sollten nur mit diesem Arbeitsbereich geöffnet und bearbeitet werden.<br />
<br />
Obwohl sie möglicherweise ähnliche Werkzeuge haben, ist Assembly3 nicht kompatibel mit [[A2plus_Workbench/de|A2plus]] noch mit [[Assembly4_Workbench/de|Assembly4]]. Modelle, die mit diesen Arbeitsbereichen erstellt wurden, sollten nur mit dem jeweiligen Arbeitsbereich geöffnet werden.<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
== Testen == <br />
<br />
Der [[Assembly3_Workbench|Assembly3 Arbeitsbereich]] befindet sich in der Entwicklung und ist noch nicht (April 2020) über den [[Std_AddonMgr|Addon Manager]] verfügbar, aber es ist zu erwarten, dass dies irgendwann geschieht.<br />
<br />
Assembly3 kann auf zwei Arten getest werden:<br />
* Eine spezielle Abspaltung von FreeCAD von realthunder; siehe [https://github.com/realthunder/FreeCAD_assembly3/releases FreeCAD_assembly3 releases]. Dieser Fork basiert auf einem bestimmten Commit des Master-Zweiges von FreeCAD, hat aber auch zusätzliche Funktionen, die derzeit im Master-Zweig nicht vorhanden sind. Da dieser Fork auf einem bestimmten Entwicklungs-Snapshot basiert, verfügt er nicht über die neuesten Funktionen, die täglich in den Master-Zweig eingebunden werden.<br />
* Die Entwicklung [[AppImage|AppImage]]; diese basiert auf dem aktuellen Master-Zweig und beinhaltet die Abhängigkeiten, die für die Arbeit mit Assembly3 benötigt werden, wie z.B. den SolveSpace Solver.<br />
<br />
Da das AppImage nur unter Linux funktioniert, ist für Windows-Benutzer im Moment die erste Option (realthunder's fork) die einzige Möglichkeit, Assembly3 zu testen.<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
== GewusstWie ==<br />
<br />
=== Loslegen ===<br />
Es gibt viele Wege einen Zusammenbau mit Assembly3 zu erstellen. Hier ist der einfachste, den du machen kannst. <br />
<br />
:[[File:Assembly3_Example-GettingStarted.jpg|600px]]<br />
:''Endergebnis des 'Wie man startet'-Beispiels. In dem Bild ist die Assembly3-Arbeitsumgebung ausgewählt, sodass ihre unterschiedlichen Werkzeugleisten sichtbar sind. Beachte, dass die vertikale 'TabBar'-Leiste links neben der Baumansicht eine zusätzliche Arbeitsumgebung ist und nicht Bestandteil von Standard-FreeCAD (aber mit dem Addon-Manager installiert werden kann).''<br />
<br />
<br />
* Schaltfläche {{Button|[[Image:Std_New.svg|16px]] [[Std_New/de|Neu]]}} drücken, um eine neue FreeCAD-Datei zu erstellen<br />
* Zur [[Image:Assembly3_workbench_icon.svg|16px]] [[Assembly3_Workbench/de|Assembly3 Arbeitsumgebung]] wechseln<br />
* Schaltfläche {{Button|[[Image:Assembly_New_Assembly.svg|16px]] [[Assembly3_CreateAssembly/de|Baugruppe anlegen]]}} drücken<br />
* Zur [[Image:Workbench_Part.svg|16px]] [[Part_Workbench/de|Part Arbeitsumgebung]] wechseln und einen [[Image:Part_Cylinder.svg|16px]] [[Part_Cylinder/de|Zylinder]] und einen [[Image:Part_Box.svg|16px]] [[Part_Box/de|Würfel]] hinzufügen<br />
* Die Datei unter einem selbstgewählten Dateinamen [[Image:Std_Save.svg|16px]] [[Std_Save/de|speichern]]. Anschließend die Datei [[Image:Std_CloseActiveWindow.svg|16px]] [[Std_CloseActiveWindow/de|schließen]] und erneut [[Image:Std_Open.svg|16px]] [[Std_Open/de|öffnen]]<br />
<br />
<br />
Die Baumansicht sollte so aussehen (0.20.pre and Link Branch):<br />
<br />
[[Image:Assembly3 Example-Tree-01.png|300px]] [[Image:Assembly3 Example-Tree-02.png|280px]]<br />
<br />
<br />
* Nun mit der Maus per ''Drag&Drop'' '''Zylinder''' und '''Würfel''' auf den '''Parts'''-Ordner ziehen und ablegen. Beide werden in den Ordner verschoben.<br />
*: Das ist der schnellste Weg und geeignet für einfache Fälle wie diesen. Ein besserer Weg geht über die Nutzung von Link-Objekten: <br />
*: '''Würfel''' sowie '''Zylinder''' auswählen und dann den Befehl [[Image:Std LinkMake.svg|16px]] [[Std LinkMake/de|Link erstellen]] entweder aus dem '''Kontextmenü''' (-> LinkActions -> MakeLink) oder aus der '''Struktur'''leiste auswählen<br />
*: Dies fügt zwei Link-Objekte hinzu. Diese werden dann auf den '''Parts'''-Ordner gezogen und abgelegt<br />
* Anklicken der beiden Oberseiten von Zylinder und Würfel (Strg gedrückt halten (Cmd am Mac))<br />
* Zur [[Image:Assembly3_workbench_icon.svg|16px]] [[Assembly3_Workbench/de|Assembly3 Arbeitsumgebung]] wechseln. <br />
* Schaltfläche {{Button|[[Image:Assembly_ConstraintCoincidence.svg|16px]] [[Assembly3_ConstraintCoincidence/de|Deckungsgleiche Ebenen]]}} aus der [[#Main Constraints Toolbar/de|Hauptwerkzeugleiste für Beschränkungen]] auswählen.<br />
<br />
<br />
Jetzt sollten beide Teile miteinander verbunden sein und der Baum sollte so aussehen (0.20.pre and Link Branch): <br />
<br />
[[Image:Assembly3 Example-Tree-03.png|300px]] [[Image:Assembly3 Example-Tree-04.png|280px]]<br />
<br />
<br />
* Rechtsklick auf "_Element" (eins der beiden) und "Flip Part" auswählen. <br />
<br />
Nun sollte sich der Zylinder oben auf dem Würfel befinden. Wenn das Gebilde auf dem Kopf steht, einen Schritt zurückgehen und "Flip Part" auf dem anderen Element auswählen.<br />
: Bisher wurde ein wichtiger Schritt ausgelassen, den man besonders für größere Baugruppen nicht vergessen sollte: Das Fixieren eines Basisteils. <br />
: Das bedeutet ein Teil zu definieren, das nicht durch Einschränkungen bewegt werden sollte. In diesem Fall wird dafür der Würfel benutzt: <br />
:* Auswahl der Unterseite des '''Würfels'''. Nur die Unterseite, nicht der ganze '''Würfel'''<br />
:* Schaltfläche {{Button|[[Image:Assembly ConstraintLock.svg|16px]] [[Assembly3_ConstraintLock/de|Festsetzen]]}} aus der [[#Main Constraints Toolbar/de|Hauptwerkzeugleiste für Beschränkungen]] auswählen.<br />
<br />
Fertig.<br />
<br />
<br />
Der fertige Baugruppenbaum sollte so aussehen (0.20.pre and Link Branch): <br />
<br />
[[Image:Assembly3 Example-Tree-05.png|300px]] [[Image:Assembly3 Example-Tree-06.png|280px]]:<br />
<br />
<br />
Wenn du möchtest, kannst du die '''Gesperrt''' Beschränkung im Baum nach oben verschieben. <br />
Verwende die {{Button|[[Image:Assembly_TreeItemUp.svg|16px]] [[Assembly3_MoveItemUp/de|Objekt aufwärts bewegen]]}} Schaltfläche auf der [[#Hauptwerkzeugleiste|Hauptwerkzeugleiste]] dafür.<br />
<br />
<br />
'''Hinweis:''' Alle neuen externen Dateien müssen mindestens einmal '''gespeichert''', '''geschlossen''' und wieder-'''geöffnet''' werden, damit Assembly3 sie finden kann.<br />
: Andernfalls kann FreeCAD der Assembly3 Arbeitsbereich keine Dateihandhabung geben und diese kann das neue Teil nicht finden.<br />
: Wenn alle Teile in der gleichen Datei sind, solltest du diese Datei auch '''speichern''', '''schließen''' und wieder '''öffnen'''.<br />
<br />
[[#top|Anfang]]<br />
<br />
=== Hinzufügen eines Versatzes ===<br />
Assembly3 bietet keinen Versatz mit den Beschränkungen, wie es der [[A2plus_Workbench/de|A2plus Arbeitsbereich]] oder andere CAD Werkzeuge tun. Stattdessen bietet er ein allgemeineres und flexibleres System um Versätze, Übersetzungen, aber auch von Winkeln hinzuzufügen.<br />
<br />
* Füge einen Versatz in den Eigenschaften eines [[#Elemente|Elemente]] einer [[#Beschränkung|Beschränkung]] hinzu. <br />
*: Du kannst wählen, welche der beiden du nutzen möchtest. <br />
<br />
Beispiel:<br />
* Füge 2 Würfel zu einer Baugruppe hinzu und wähle ihre Seitenflächen aus.<br />
* Wähle "EbenenDeckungsgleich". Die Würfel werden ineinander angebracht. <br />
* Wähle ein Element und ''KontextMenü/Teil kippen''. Die Würfel werden Seite an Seite angebracht.<br />
* Wähle eine Elementeigenschaft Versatz/Position/Zz und setze sie auf 5mm. Die Würfel sind nun 5mm voneinander entfernt. <br />
Teste mit anderen Achsen oder den Feldern Winkel/Achse. Prüfe auch , dass du das gleiche Ergebnis erhältst, wenn du das andere Element verwendest.<br />
Dies ist die gleiche Herangehensweise für alle anderen Beschränkungen.<br />
<br />
[[#top|Anfang]]<br />
<br />
=== Löse einen Löserfehler ===<br />
Dies geschieht häufig, wenn Teile über-beschränkt sind, d.h. mehr als 6 Freiheitsgrade sind gesperrt. <br />
<br />
Der einfachste Weg das Problem zu finden, ist das Anklicken der entsprechenden Einschränkungen, die Auswahl von ''ContextMenu/Disable'' und anschließender Neuberechnung. Es ist hilfreich zu wissen, welche Einschränkungen als letzte hinzugefügt wurden, bevor die Berechnung des Gleichungslösers fehlgeschlagen ist, um diese einfach zurückzunehmen. <br />
<br />
Achtung: Da Assembly3 hinter den Kulissen versucht überbestimmte Teile auszugleichen, kann es vorkommen, dass eine neue Einschränkung scheinbar eine Fehlfunktion auslöst, die tatsächliche Ursache aber an einer anderen Stelle zu finden ist. Bevor man nun alles löscht und von vorne beginnt, sollte man daran denken, dass man Elemente wiederverwenden kann. Wenn sie benannt wurden, können die erforderlichen Elemente leicht ermittelt und die Einschränkungen erneut aufgebaut werden, ohne die 3D-Ansicht zu verwenden. Siehe auch obigen [[#Elements|Elemente]]-Abschnitt.<br />
<br />
[[#top|Anfang]]<br />
<br />
=== Ersetze ein Teil oder benenne einen Dateinamen um ===<br />
Wenn ein Teil entfernt wird oder wenn sich ein Dateiname ändert, bricht die Baugruppe, sie kann nicht mehr gelöst werden und der Löser gibt die Meldung "Widersprüchliche Beschränkungen" aus. Der Löser kennzeichnet ungültige Elemente und Beschränkungen mit einem Fragezeichen im Baum. <br />
<br />
Ein Weg, dieses zu lösen ist, einfach alle ungültigen Beschränkungen und Elemente zu löschen, das neue Teil zu importieren und alles neu zu machen. Aber es gibt einen besseren Weg: <br />
<br />
* Eine Datei umbenennen<br />
*# Einen Dateimanager benutzen, um die Datei zu kopieren, umbenannt werden soll. Anschließend gibt man der Kopie den neuen Namen. <br />
*# Öffnen der Kopie in FreeCAD. Der Zusammenbau und die alte Datei sollten auch geöffnet sein.<br />
*# Das alte Objekt im Baum auswählen und per Klick die Eigenschaft 'Linked object' ändern (sie enthält den alten Dateinamen).<br />
*# Ein Dialogfenster mit einer Auflistung aller geöffneten Teile öffnet sich. Es zeigt die Dateinamen und Objekte aller Teile an. Das alte Teil und das zugehörige Objekt sind ausgewählt. Das umbenannte Teil wird im Baum abgelegt und das gleiche Objekt des neuen Teiles ausgewählt. Danach die Auswahl bestätigen.<br />
*# Die alte Datei aus dem Baum entfernen. Die Datei kann jetzt auch gelöscht werden.<br />
*# Die Einschränkungen und Elemente des alten Teiles sind ungültig geworden. Jetzt wird die Einschränkung oder die 'Elements'-Liste im Baum geöffnet und anschließend nacheinander <br />
*#* Jede Element-Fläche am neuen Teil ausgewählt. Ein Objekt im Baum wird hervorgehoben.<br />
*#* Das Objekt per 'drag&drop' auf das alte Element ziehen und ablegen (entweder in der 'Elements'-Liste oder in einer der Einschränkungen, wo es benutzt wurde). Das Element sollte jetzt gültig werden. <br />
*#* Diesen Ablauf für die übrigen Elemente wiederholen. Oft reicht ein einzelnes Element dafür aus, dass Assembly3 die übrigen Elemente des Teiles automatisch erkennen kann.<br />
*#* Falls ein Element ausversehen einer falschen Fläche zugeordnet wurde, wird die Zuordnung einfach mit der korrekten Fläche wiederholt.<br />
*# Ändern des Objektnamens in FreeCAD, falls gewünscht<br />
<br />
<br />
* Ein Teil durch ein anderes Teil ersetzen<br />
*: ''Welches dem originalen Teil ähnlich genug ist, dass die originalen Einschränkungen noch sinnvoll sind.''<br />
*# Das alteTeil aus dem Baum entfernen. Die Datei kann jetzt auch gelöscht werden.<br />
*# Die Einschränkungen und Elemente des alten Teiles sind ungültig geworden. Jetzt wird die Einschränkung oder die 'Elements'-Liste im Baum geöffnet. <br />
*#* Eine Element-Fläche am neuen Teil auswählen. Ein Objekt im Baum wird hervorgehoben.<br />
*#* Das Objekt per 'drag&drop' auf das alte Element ziehen und ablegen (entweder in der 'Elements'-Liste oder in einer der Einschränkungen, wo es benutzt wurde). Das Element sollte jetzt gültig werden.<br />
*#* Diesen Ablauf für die übrigen Elemente wiederholen. <br />
*#* Falls ein Element ausversehen einer falschen Fläche zugeordnet wurde, wird die Zuordnung einfach mit der korrekten Fläche wiederholt. <br />
*# Ändern des Objektnamens in FreeCAD, falls gewünscht<br />
<br />
<br />
''Hinweise<br><br />
* Es ist nicht so kompliziert, wie es hier auf den ersten Blick aussieht. Nach 2-3 Durchläufen sollten die Abläufe in Fleisch und Blut übergehen und die Ausführung leicht von der Hand gehen.<br />
* Es ist nicht nur viel schneller als das Löschen und erneute Anlegen von Einschränkungen, sondern auch sicherer, da ein Element in einem übergeordneten Zusammenbau eingesetzt sein könnte. Das Original zu löschen, würde den Verweis zerstören, es neu zuzuordnen würde ihn erhalten.<br />
* Ferner beschleunigt und vereinfacht es diesen Ablauf, wenn Einschränkungen und Elemente benannt werden. Es gäbe kein Raten, wo die Flächen hingezogen und abgelegt werden sollten, da es aus den Namen hervorgeht (siehe auch [[#Tips & Tricks|Tipps & Tricks]]).<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
=== Tipps & Tricks ===<br />
* Hierarchisch aufgebaute Zusammenbauten helfen dabei, Probleme des Gleichnungslösers zu vermeiden und das Modell schlank zu halten. Man kann eine Unterbaugruppe mit einem Klick einfrieren und so ohne Aufwand CPU-Resourcen einsparen (Im Kontextmenü des Baumes). Wenn ein Zusammenbau geladen wird, muss Assembly3 die externen Dateien der eingefrorenen Unterbaugruppen nicht öffnen, wodurch der Baum kompakt gehalten wird. <br />
* Es ist sehr hilfreich, sich anzugewöhnen, Einschränkungen und Elemente zu benennen. Im Baum lässt es sich schnell durch Benutzung der {{KEY|F2}}-Taste erledigen. Sehr nützlich ist auch das Werkzeug zum Sortieren des Baumes, das man in der Hauptwerkzeugleiste findet. Ein Zusammenbau mit vollständig benannten Einschränkungen und Elementen ist für andere Leute sehr einfach zu verstehen, oder auch für einen selbst, wenn man sich ältere Modelle ansieht.<br />
*: Beispiele für Namen von Einschränkungen für einen Tisch könnten lauten: "Ausrichtung_Beine_vorne", "Ausrichtung_RahmenUnterseite-BeinOberseite" und Elementnamen könnten sein: "Bein1_Oberseite", "Tischplatte_Vorderseite" oder "Tischplatte_linke_Seite". <br />
* Bitte beachten, dass, sobald externe Dateien durch einen Zusamenbau geöffnet werden, es nicht mehr möglich ist, diese auf einfache Weise zu schließen, ohne auch den Zusammenbau zu schließen. Da der Zusammenbau die Dateien im Hintergrund offen hält, kann der Reiter verschwinden, aber die Dateien bleiben im Baum sichtbar. Wenn man Zusammenbauten über mehrere Ebenen hat, kann es fast unmöglich sein einzelne Dateien zu schließen. Dieses Verhalten kann sich in Zukunft ändern, aber bis dahin bleibt die Möglichkeit, Die Befehle ''File/Save All'' und ''File/Close All'' zu nutzen, um den Baum aufzuräumen, bevor an einer anderen Unterbaugruppe gearbeitet wird.<br />
*: ''Beispiel: Man hat eine große CNC-Maschine mit einem Hauptzusammenbau und Unterbaugruppen für alle Module. Sobald man den Hauptzusammenbau geladen hat, wird er hunderte Dateien bis hin zur kleinsten Schraube öffnen. Bevor man nun die Baugruppe des Elektronikfachs der Maschine bearbeitet, ist es eine gute Idee, alle Dateien zu speichern und zu schließen, um einen leeren Baum zu erhalten. Dann wird nur die Unterbaugruppe des Elektronikfachs geöffnet. Sie öffnet alle benötigten Dateien, aber auch nur diese.<br />
* Externe Dateien zu benutzen, macht es einfacher, Teile wiederzuverwenden oder Bauteilversonierung mit Systemen wie git oder subversion zu ermöglichen. Der Arbeitsablauf in FreeCAD mit Assembly3 fühlt sich fast genauso an, wie der mit Dateien, in denen alle zusammengehörigen Teile in jeweils einer Datei enthalten sind. Letzteres bietet sich an, wenn man häufig Baugruppen mit anderen Beteiligten austauscht. <br />
* Mehrfach verknüpfte Dateien. Wenn man eine Dateiverknüpfung zu einem Zusammenbau hinzufügt, wird eine Eigenschaft "Element Count" angelegt mit Standardwert 0. Wenn man diesen auf 3 setzt, erhält man 3 Instanzen dieses Teils. Sie werden in einem Unterordner hinzugefügt und können wie vollständig unabhängige Teile verwendet werden. Diese Einstellung kann genutzt werden, um den Speicherplatzverbrauch der Datei klein zu halten, da das Teil nur einmal gespeichert wird. Die Instanzen enthalten nur die Unterschiede.<br />
* Einsetzen mehrfacher Teile, wie z.B. Schrauben, mit einem Klick. Siehe [https://github.com/realthunder/FreeCAD_assembly3/wiki/Constraints-and-Solvers Assembly3 Wiki] auf der Github-Seite. Dies ist nicht nur eine erstaunliche Funktion (vielleicht ein bisschen magisch), sondern auch sehr sehr nützlich.<br />
<br />
* Die Benutzung der [https://github.com/triplus/TabBar TabBar-Arbeitsumgebung] beschleunigt die Arbeit mit Zusammenbauten. Es wird eine Werkzeugleiste mit je einem Knopf für jede Arbeitsumgebung hinzugefügt. Man kann die Reihenfolge ändern und man kann die Werkzeugleiste nach belieben platzieren. Veile Leute legen sie vertikal an den linken Rand direkt neben der Baumansicht. Wenn man Assembly3, Part, PartDesign und andere oft genutzte Arbeitsumgebungen am oberen Ende platziert, macht es das Umschalten zwischen den Arbeitsumgebungen extrem einfach.<br />
<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
== Verweise ==<br />
<br />
* [[App_Link|App-Link]]-Objekt macht, dass Assembly3 funktioniert.<br />
* [https://github.com/realthunder/FreeCAD_assembly3 FreeCAD_assembly3] Repository und Dokumentation.<br />
* [https://forum.freecadweb.org/viewtopic.php?f=20&t=25712 Assembly3 preview], große Diskussionsrunde.<br />
* [https://forum.freecadweb.org/viewtopic.php?f=36&t=29562 Test tutorial for Assembly 3 WB] von jpg87.<br />
* [https://forum.freecadweb.org/viewtopic.php?f=20&t=34583 Current Assembly Status]<br />
* [[External_workbenches|Externe Arbeitsbereiche]]<br />
* [[Assembly_project|Altes Assembly Projekt]] Entwicklungsablauf, um sich mit der Geschichte des Themas vertraut zu machen.<br />
<br />
{{Userdocnavi{{#translation:}}}}<br />
[[Category:Addons{{#translation:}}]]<br />
[[Category:External Workbenches{{#translation:}}]]</div>Chrisbhttps://wiki.freecad.org/index.php?title=Translations:Assembly3_Workbench/42/de&diff=1082408Translations:Assembly3 Workbench/42/de2021-12-02T22:45:03Z<p>Chrisb: </p>
<hr />
<div>Der wichtigste Gedanke, den es zu verstehen gilt, ist dass die Beschränkung auf Verknüpfungen zu Elementen in der Liste im "Elemente"-Baumordner wirkt. Dies erlaubt, die Bindungsstruktur intakt zu halten, während die Teile geändert werden. Dies ist ohne ein Beispiel sehr schwer zu erkennen.</div>Chrisbhttps://wiki.freecad.org/index.php?title=Assembly3_Workbench/de&diff=1082407Assembly3 Workbench/de2021-12-02T22:43:15Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<br />
[[Image:Assembly3_workbench_icon.svg|thumb|128px|Assembly3 workbench icon]]<br />
<br />
{{TOCright}}<br />
<br />
== Einführung ==<br />
<br />
[[Image:Assembly3_workbench_icon.svg|24px]] [[Assembly3_Workbench|Assembly3]] ist ein [[External_workbenches/de|externer Arbeitsbereich]], der verwendet wird, um den Zusammenbau von verschiedenen Körpern in einer einzigen Datei oder in mehreren Dokumenten durchzuführen. Der Arbeitsbereich basiert auf einigen Kernfunktionsänderungen ausgeführt für die Version FreeCAD 0.19 (z.B. [[App_Link/de|App Verweis]]), sodass der Assembly3 Arbeitsbereich nicht mit früheren Versionen verwendet werden kann.<br />
<br />
Die Hauptfunktionen des Assembly3 Arbeitsbereichs sind<br />
* '''dynamischer/interaktiver Löser'''. Das bedeutet, du kannst Teile mit der Maus bewegen, während der Löser die Bewegung beschränkt. Dies erlaubt z.B. ein Rad mit einer Achse zu verbinden und das Rad interaktiv mit der Maus zu drehen. <br />
* '''Verknüpfungen'''. Das bedeutet, dass du ein einzelnes Teil, z. B. eine Schraube, mehrfach in einer Baugruppe (an verschiedenen Stellen) verwenden kannst, ohne die Geometrie zu duplizieren. <br />
* '''externe Verknüpfungen'''. Es ist möglich, ein Freecad Dokument zu besitzen, das nur eine Baugruppe und keine Teile enthält. Alle Teile können in einzelnen Dateien sein. Die Dateien können sich sogar in einer Bibliothek oder irgenwo anders im Dateisystem befinden. Die einzige Voraussetzung ist, dass die Datei geladen sein muss, wenn die Verknüpfung hergestellt wird. Nachdem die Verknüpfung gemacht wurde muss die Datei geöffnet sein, um Aktualisierungen an den Verknüpfungen, die die Datei betreffen, vorzunehmen. Assembly3 löst dieses Problem, indem es die Dateien bei Bedarf im Hintergrund öffnet.<br />
* '''hierarchische Baugruppen'''. Wie im wirklichen Leben kann eine mechanische Baugruppe aus Unterbaugruppen bestehen. Diese können wiederum aus Unterbaugruppen bestehen und so weiter. <br />
* '''Baugruppen einfrieren'''. Da die CPU nur eine bestimmte Anzahl gleichzeitiger Beschränkungen in Echtzeit verarbeiten kann, ermöglicht das Einfrieren einer Baugruppe die Verwendung von Beschränkungen auch für große Baugruppen. Durch das Einfrieren von fertigen Baugruppen oder Beschränkungen, die nicht dynamisch bleiben müssen (z. B. geschweißte, geschraubte oder geklebte Teile), werden diese von Aktualisierungsberechnungen ausgeschlossen und vom Assembly3 Löser als feste Geometrie betrachtet. <br />
*: Beachte, dass andere Ansätze eine andere Lösung für dieses Problem bieten, z. B. der [[File:Assembly4_workbench_icon.svg|24px]] [[Assembly4_Workbench/de|Assembly4 Arbeitsbereich]].<br />
<br />
[[#top|Anfang]]<br />
<br />
=== Werkzeugleisten ===<br />
Ab 2020 verfügt die Assembly3 Arbeitsbereich über die folgenden Werkzeugleisten. <br />
<br />
<br />
==== Hauptwerkzeugleiste ====<br />
:[[File:Assembly3_ToolbarMain.png|700px]]<br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
:Die '''Hauptwerkzeugleiste''' enthält Werkzeuge, die die am häufigsten gebrauchten Eigenschaften des Arbeitsbereiches abdecken. Die zugehörigen Tastenkürzel findet man in den Tooltips.<br />
<div class="mw-collapsible-content toccolours"><br />
<br />
:* [[Image:Assembly_Add Existing Part.svg|32px]] [[Assembly3_CreateAssembly/de|Baugruppe anlegen]]: Einen Baugruppenordner hinzufügen<br />
:* [[Image:Assembly_New Group.svg|32px]] [[Assembly3_GroupObjects/de|Objekte gruppieren]]: Eine Objektgruppe erstellen<br />
:* [[Image:Assembly_New Element.svg|32px]] [[Assembly3_CreateElement/de|Element anlegen]]: Ein Element hinzufügen. Dies ist auch im Kontextmenü verfügbar<br />
:* STEP-Dateien importieren. Hier gibt es zwei Einstellungen<br />
:** [[Image:Assembly_Import.svg|32px]] [[Assembly3_ImportFromSTEP/de|STEP-Dateien importieren]]: STEP-Dateien importieren<br />
:** [[Image:Assembly_ImportMulti.svg|32px]] [[Assembly3_ImportMultiDocument/de|Als Mehrfachdokument einfügen]]: STEP-Baugruppen in separate Dokumente importieren<br />
:* [[Image:Assembly3_workbench_icon.svg|32px]] [[Assembly3_ResolveConstraints/de|Beziehungen anwenden]]: Festgelegte Beziehungen berechnen (auflösen)<br />
:* [[Image:Assembly_QuickSolve.svg|32px]] [[Assembly3_QuickSolve/de|Schnelle Berechnung]]: Beziehungen schnell berechnen (auflösen)<br />
:* [[Image:Assembly_Move.svg|32px]] [[Assembly3_MovePart/de|Teil bewegen]]: Teil in 3D bewegen, dies ist ein spezielles Assembly3-Werkzeug<br />
:* [[Image:Assembly_AxialMove.svg|32px]] [[Assembly3_AxialMove/de|Axial bewegen]]: Teil axial in 3D bewegen, dies ist das übliche Werkzeug, das auch anderen Bereichen von FreeCAD zur Verfügung steht<br />
:* [[Image:Assembly_QuickMove.svg|32px]] [[Assembly3_QuickMove/de|Schnelles Bewegen]]: Schnelles Bewegen. Dies hängt das im Baum ausgewählte Teil an den Mauszeiger. Es verändert die Position des Teils, mit einem Mausklick. <br />
:*: Oft befinden sich hinzugefügte Teile übereinander gestapelt im Ursprung. Diese Funktion kann benutzt werden, um nicht sichtbare Teile zu erreichen.<br />
:* [[Image:Assembly_LockMover.svg|32px]] [[Assembly3_LockMover/de|Bewegung verhindern]]: Bewegung ausschließen für fixierte Teile. Umschaltknopf. Wenn dieser abgewählt ist, können auch Teile bewegt werden, die durch die Fixiereinschränkung festgelegt sind. <br />
:* [[Image:Assembly_TogglePartVisibility.svg|32px]] [[Assembly3_TogglePartVisibility/de|Sichtbarkeit umschalten]]: Dies schaltet die Sichtbarkeit des ausgewählten Teils ein oder aus. <br />
:*: Achtung, dies unterscheidet sich von der Benutzung der Leertaste. Die Benutzung der Leertaste mit ausgewählten Elementen einer Unterbaugruppe in der 3D-Ansicht liefert oft nicht das erwartete Verhalten. In solchen Fällen sollte diese Funktion benutzt werden (oder das Tastenkürzel A, Leertaste)<br />
:* [[Image:Assembly_Trace.svg|32px]] [[Assembly3_TracePartMove/de|Bewegung aufzeichnen]]:Bewegungsbahn aufzeichnen (TBD)<br />
:* [[Image:Assembly_AutoRecompute.svg|32px]] [[Assembly3_AutoRecompute/de|Automatische Berechnung]]:Automatische Berechnung. Standardmäßig aktiviert. <br />
:*: Kann deaktiviert werden für die Reparatur von Einschränkungen oder die Fixierung von Teilen, für die der Löser Die Nachricht ''"do not converge"'' ausgibt (z.B. wenn das Teil um 180° gedreht wird) <br />
:* [[Image:Assembly_SmartRecompute.svg|32px]] [[Assembly3_SmartRecompute/de|Smarte Berechnung]]: Smarte Berechnung. Standardmäßig aktiviert. <br />
:* [[Image:Assembly_AutoFixElement.svg|32px]] [[Assembly3_AutoFixElement/de|Element automatisch fixieren]]: Automatische Elementfixierung. Experimentelle Funktion in 0.19_pre<br />
:* Element Darstellung. Dies hat zwei Einstellmöglichkeiten:<br />
:** [[Image:Assembly_AutoElementVis.svg|32px]] [[Assembly3_AutoElementVisibility/de|Element automatisch anzeigen]]: Element automatisch anzeigen <br />
:** [[Image:Assembly_ShowElementCS.svg|32px]] [[Assembly3_ShowElementCS/de|Element-Koordinatensystem anzeigen]]: Koordinatensystem des Elements anzeigen<br />
:* Arbeitsebene und Ursprung. Fügt eine Arbeitsebene, eine Platzierung oder einen Ursprung hinzu. Es muss ein Teil ausgewählt sein. Hier gibt es fünf Einstellungen.<br />
:** [[Image:Assembly_Add Workplane.svg|32px]] [[Assembly3_AddXYWorkplane/de|XY-Arbeitsebene hinzufügen]]: Arbeitsebene hinzufügen<br />
:** [[Image:Assembly_Add WorkplaneXZ.svg|32px]] [[Assembly3_AddXZWorkplane/de|XZ-Arbeitsebene hinzufügen]]: XZ-Arbeitsebene hinzufügen <br />
:** [[Image:Assembly_Add WorkplaneZY.svg|32px]] [[Assembly3_AddZYWorkplane/de|ZY-Arbeitsebene hinzufügen]]:YZ-Arbeitsebene hinzufügen <br />
:** [[Image:Assembly_Add Placement.svg|32px]] [[Assembly3_AddPlacement/de|Platzierung hinzufügen]]: Platzierung hinzufügen<br />
:** [[Image:Assembly_Add Origin.svg|32px]] [[Assembly3_AddOrigin/de|Ursprung hinzufügen]]: Ursprung hinzufügen<br />
:* [[Image:Assembly_TreeItemUp.svg|32px]] [[Assembly3_MoveItemUp/de|Objekt aufwärts bewegen]]: Ausgewähltes Baumobjekt aufwärts bewegen<br />
:* [[Image:Assembly_TreeItemDown.svg|32px]] [[Assembly3_MoveItemDown/de|Objekt abwärts bewegen]]: Ausgewähltes Baumobjekt abwärts bewegen<br />
:*: Erlaubt es Teile, Elemente oder Einschränkungen im Baum umzusortieren. Mit "Element roll over" (von der ersten zur letzten Position und umgekehrt). Funktioniert nur mit einer einzelnen Auswahl. <br />
:* [[Image:Assembly_ConstraintMultiply.svg|32px]] [[Assembly3_MultiplyConstraint/de|Beziehung vervielfältigen]]: Beziehung vervielfachen. Dies kann ausgewählt werden, wenn Teile und geeignete Elemente mehrfach vorhanden sind. Es kann z.B. benutzt werden um mehrfach vorhandene Befestigungselemente mehrfach vorhandenen Löchern mit nur einer Beziehung zuzuordnen.<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
==== Hauptwerkzeugleiste Beschränkungen ====<br />
<br />
: [[Image:Assembly_ConstraintLock.svg|28px]] [[Image:Assembly_ConstraintAlignment.svg|28px]] [[Image:Assembly_ConstraintCoincidence.svg|28px]] [[Image:Assembly_ConstraintAttachment.svg|28px]] [[Image:Assembly_ConstraintAxial.svg|28px]] [[Image:Assembly_ConstraintSameOrientation.svg|28px]] [[Image:Assembly_ConstraintMultiParallel.svg|28px]] [[Image:Assembly_ConstraintAngle.svg|28px]] [[Image:Assembly_ConstraintPerpendicular.svg|28px]] [[Image:Assembly_ConstraintPointCoincident.svg|28px]] [[Image:Assembly_ConstraintPointInPlane.svg|28px]] [[Image:Assembly_ConstraintPointOnLine.svg|28px]] [[Image:Assembly_ConstraintPointOnCircle.svg|28px]] [[Image:Assembly_ConstraintPointsDistance.svg|28px]] [[Image:Assembly_ConstraintPointPlaneDistance.svg|28px]] [[Image:Assembly_ConstraintPointLineDistance.svg|28px]] [[Image:Assembly_ConstraintSymmetric.svg|28px]] [[Image:Assembly_ConstraintMore.svg|28px]] <br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
: Einige dieser Werkzeuge sind eigentlich Menüs für weitere Werkzeuge. <br />
<div class="mw-collapsible-content toccolours"><br />
<br />
:* [[Image:Assembly ConstraintLock.svg|32px]] [[Assembly3_ConstraintLock/de|Festsetzen]]: Zum Fixieren eines oder mehrerer Teile. <br />
:*: Es muss ein (Geometrie-) Element eines Teiles ausgewählt werden.<br />
:*: Wird ein Knotenpunkt oder eine Kante festgesetzt, lässt sich das Teil immer noch frei um den Knotenpunk oder die Kante drehen.<br />
:*: Das Festsetzen einer Fläche fixiert das Teil vollständig.<br />
:* [[Image:Assembly ConstraintAlignment.svg|32px]] [[Assembly3_ConstraintAlignment/de|Ebenen ausrichten]]: Zum Ausrichten ebener Flächen zweier oder mehrerer Teile.<br />
:*: Die Flächen werden komplanar ausgerichtet oder optional parallel mit Abstand.<br />
:* [[Image:Assembly ConstraintCoincidence.svg|32px]] [[Assembly3_ConstraintCoincidence/de|Deckungsgleiche Ebenen]]: Zum deckungsgleich Festlegen ebener Flächen zweier oder mehrerer Teile.<br />
:*: Die Flächen werden mit deckungsgleichen Ursprüngen komplanar ausgerichtet oder optional parallel mit Abstand. <br />
:* [[Image:Part Attachment.svg|32px]] [[Assembly3_ConstraintAttachment/de|Befestigung]]: Zum Befestigen eines Teils an ein zweites mittels der ausgewählten (Geometrie-) Elemente. <br />
:*: Diese Beziehung verbindet beide Teile starr miteinander.<br />
:* [[Image:Assembly ConstraintAxial.svg|32px]] [[Assembly3_ConstraintAxial/de|Axiale Ausrichtung]]: Zum axialen Ausrichten (Fluchten) von Kanten und Flächen zweier oder mehrerer Teile.<br />
:*: Die Beziehung akzeptiert:<br />
:*:: lineare Kanten; sie werden kollinear ausgerichtet, <br />
:*:: ebene Flächen; sie werden unter Nutzung ihrer Flächennormalen (Z-Achse) ausgerichtet, <br />
:*:: und zylindrische Flächen; sie werden unter Nutzung ihrer (Z-) Achsrichtung ausgerichtet. <br />
:*: Verschiedene Arten von (Geometrie-) Elementen können gemischt werden.<br />
:* [[Image:Assembly ConstraintSameOrientation.svg|32px]] [[Assembly3_ConstraintSameOrientation/de|Richtungen angleichen]]: Zum identischen Ausrichten der (ebenen) Flächen zweier oder mehrerer Teile. <br />
:*: Die Ebenen werden so ausgerichtet, dass ihre (Z-) Achsen in dieselbe Richtung zeigen.<br />
:* [[Image:Assembly ConstraintMultiParallel.svg|32px]] [[Assembly3_ConstraintMultiParallel/de|Mehrfach parallel]]: Zum parallelen Ausrichten von ebenen Flächen oder geraden Kanten zweier oder mehrerer Teile.<br />
:* [[Image:Assembly ConstraintAngle.svg|32px]] [[Assembly3_ConstraintAngle/de|Winkel festlegen]]: Zum Festlegen des Winkels zwischen ebenen Flächen oder geraden Kanten zweier Teile.<br />
:* [[Image:Assembly ConstraintPerpendicular.svg|32px]] [[Assembly3_ConstraintPerpendicular/de|Rechtwinklig festlegen]]: Zum rechtwinkligen Festlegen von ebenen Flächen oder geraden Kanten zweier Teile.<br />
:* [[Image:Assembly ConstraintPointCoincident.svg|32px]] [[Assembly3_ConstraintPointsCoincident/de|Punkt auf Punkt]]: Zum deckungsgleich Festlegen zweier Punkte in 2D oder 3D.<br />
:* [[Image:Assembly ConstraintPointInPlane.svg|32px]] [[Assembly3_ConstraintPointInPlane/de|Punkt auf Ebene]]: Zum Festlegen eines oder mehrerer Punkte auf einer Ebene (Punktberührung).<br />
:* [[Image:Assembly ConstraintPointOnLine.svg|32px]] [[Assembly3_ConstraintPointOnLine/de|Punkt auf Linie]]: Zum Festlegen eines oder mehrerer Punkte auf einer Linie in 2D or 3D.<br />
:* [[Image:Assembly ConstraintPointOnCircle.svg|32px]] [[Assembly3_ConstraintPointOnCircle/de|Punkt auf Kreis]]: Zum Festlegen eines oder mehrerer Punkte auf einer durch einen Kreis definierten zylindrischen Fläche.<br />
:*: Achtung! Es muss ein Punkt (irgendein Geometrieelement, dass einen Punkt definieren kann) ausgewählt werden und dann der Kreis (oder eine zylindrische Fläche), <br />
:*: danach können bei Bedarf weitere Punkte hizugefügt werden.<br />
:* [[Image:Assembly ConstraintPointsDistance.svg|32px]] [[Assembly3_ConstraintPointsDistance/de|Punkt zu Punkt Abstand]]: Zum Festlegen des Abstands zweier oder mehrerer Punkte zueinander.<br />
:* [[Image:Assembly ConstraintPointPlaneDistance.svg|32px]] [[Assembly3_ConstraintPointPlaneDistance/de|Punkt zu Ebene Abstand]]: Zum Festlegen des Abstands eines oder mehrerer Punkte zu einer Ebene.<br />
:* [[Image:Assembly ConstraintPointLineDistance.svg|32px]] [[Assembly3_ConstraintPointLineDistance/de|Punkt zu Linie Abstand]]: Zum Festlegen des Abstands eines Punktes zu einer geraden Kante in 2D oder 3D.<br />
:* [[Image:Assembly ConstraintSymmetric.svg|32px]] [[Assembly3_ConstraintSymmetric/de|Symmetrie festlegen]]: Zum Festlegen der Symmetrie der (Geometrie-) Elemente zweier Teile bezüglich einer Ebene.<br />
:*: Unterstützte Elemente sind gerade Kanten und ebene Flächen.<br />
:* [[Image:Assembly ConstraintMore.svg|32px]] [[Assembly3_ConstraintMore/de|Weitere]]: Werkzeugleisten umschalten für weitere Beschränkungen<br />
:*: Nicht wirklich eine Beschränkung, sondern ein Umschalter zum Anzeigen/Ausblenden der '''Werkzeugleisten für zusätzliche Beschränkungen'''.<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
==== Zusätzliche Beschränkungswerkzeugleisten ====<br />
<br />
: [[Image:Assembly_ConstraintPointDistance.svg|28px]] [[Image:Assembly_ConstraintEqualAngle.svg|28px]] [[Image:Assembly_ConstraintPointsSymmetric.svg|28px]] [[Image:Assembly_ConstraintGeneral.svg|28px]] [[Image:Assembly_ConstraintGeneral.svg|28px]] [[Image:Assembly_ConstraintSymmetricLine.svg|28px]] [[Image:Assembly_ConstraintPointsHorizontal.svg|28px]] [[Image:Assembly_ConstraintPointsVertical.svg|28px]] [[Image:Assembly_ConstraintLineHorizontal.svg|28px]] [[Image:Assembly_ConstraintLineVertical.svg|28px]] [[Image:Assembly_ConstraintArcLineTangent.svg|28px]] (Assembly3 Constraints2)<br />
<br />
:[[Image:Assembly_ConstraintSketchPlane.svg|28px]] [[Image:Assembly_ConstraintLineLength.svg|28px]] [[Image:Assembly_ConstraintEqualLength.svg|28px]] [[Image:Assembly_ConstraintLengthRatio.svg|28px]] [[Image:Assembly_ConstraintLengthDifference.svg|28px]] [[Image:Assembly_ConstraintLengthEqualPointLineDistance.svg|28px]] [[Image:Assembly ConstraintEqualLineArcLength.svg|28px]] [[Image:Assembly_ConstraintMidPoint.svg|28px]] [[Image:Assembly_ConstraintDiameter.svg|28px]] [[Image:Assembly_ConstraintEqualRadius.svg|28px]] [[Image:Assembly_ConstraintPointsProjectDistance.svg|28px]] [[Image:Assembly_ConstraintEqualPointLineDistance.svg|28px]] [[Image:Assembly_ConstraintColinear.svg|28px]] (Assembly3 Sketch Constraints)<br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
:Du kannst diese durch Auswählen der {{Button|[[Image:Assembly_ConstraintMore.svg|16px]] [[Assembly3_ConstraintMore/de|Weitere]]}} Schaltfläche in der Hauptbeschränkungen Werkzeugleiste, aktivieren.<br />
<div class="mw-collapsible-content toccolours"><br />
<br />
:* [[Image:Assembly_ConstraintPointDistance.svg|32px]] [[Assembly3_ConstraintPointDistance/de|Abstand zweier Punkte]]: Zum Festlegen des Abstands zweier Punkte in 2D oder 3D.<br />
:* [[Image:Assembly_ConstraintEqualAngle.svg|32px]] [[Assembly3_ConstraintEqualAngle/de|Gleiche Winkel]]: Zum Festlegen von gleichen Winkeln zwischen (je) zwei Linien oder (Flächen-) Normalen. <br />
:* [[Image:Assembly_ConstraintPointsSymmetric.svg|32px]] [[Assembly3_ConstraintPointsSymmetric/de|Symmetrische Punkte]]: Zum Festlegen der symmetrischen Lage zweier Punkte bezüglich einer Ebene.<br />
:* [[Image:Assembly_ConstraintGeneral.svg|24px]] () [[Assembly3_ConstraintSymmetricHorizontal/de|Horizontale Symmetrie ]]: (noch nicht fertig...)<br />
:* [[Image:Assembly_ConstraintGeneral.svg|24px]] () [[Assembly3_ConstraintSymmetricVertical/de|Vertikale Symmetrie]]: (noch nicht fertig...) <br />
:* [[Image:Assembly_ConstraintSymmetricLine.svg|32px]] [[Assembly3_ConstraintSymmetricLine/de|Achsensymmetrie]]: Zum Festlegen der symmetrischen Lage zweier Punkte bezüglich einer Symmetrieachse.<br />
:* [[Image:Assembly_ConstraintPointsHorizontal.svg|32px]] [[Assembly3_ConstraintPointsHorizontal/de|Horizontale Punkte]]: Zum Festlegen einer horizontalen Ausrichtung zweier Punkte, wenn sie auf eine Ebene projiziert werden.<br />
:* [[Image:Assembly_ConstraintPointsVertical.svg|32px]] [[Assembly3_ConstraintPointsVertical/de|Vertikale Punkte]]: Zum Festlegen einer vertikalen Ausrichtung zweier Punkte, wenn sie auf eine Ebene projiziert werden.<br />
:* [[Image:Assembly_ConstraintLineHorizontal.svg|32px]] [[Assembly3_ConstraintLineHorizontal/de|Horizontale Linie]]: Zum Festlegen einer horizontalen Ausrichtung eines Liniensegments, wenn es auf eine Ebene projiziert wird.<br />
:* [[Image:Assembly_ConstraintLineVertical.svg|32px]] [[Assembly3_ConstraintLineVertical/de|Vertikale Linie]]: Zum Festlegen einer vertikalen Ausrichtung eines Liniensegments, wenn es auf eine Ebene projiziert wird.<br />
:* [[Image:Assembly_ConstraintArcLineTangent.svg|32px]] [[Assembly3_ConstraintArcLineTangent/de|Bogen-Linie-Tangente]]: Zum Festlegen eines tangentiellen Übergangs zwischen einer Linie und dem Start- oder Endpunkt eines Bogens.<br />
<br />
<br />
:* [[Image:Assembly_ConstraintSketchPlane.svg|32px]] [[Assembly3_ConstraintSketchPlane/de|Skizzierebene]]: Zum Festlegen einer Arbeitsebene für alle Draft-WB-Elemente innerhalb dieser Beziehung oder dieser Beziehung folgend. <br />
:*: Eine weitere hinzufügte leere Skizzenebene löst die vorherige als Arbeitsebene ab.<br />
:* [[Image:Assembly ConstraintLineLength.svg|32px]] [[Assembly3_ConstraintLineLength/de|Linienlänge]]: Zum Festlegen der Länge eines nicht unterteilten Draft-Drahtes.<br />
:* [[Image:Assembly ConstraintEqualLength.svg|32px]] [[Assembly3_ConstraintEqualLength/de|Gleiche Länge]]: Zum Festlegen, dass zwei Linien gleich lang sind.<br />
:* [[Image:Assembly ConstraintLengthRatio.svg|32px]] [[Assembly3_ConstraintLengthRatio/de|Längenverhältnis]]: Zum Festlegen des Verhältnisses der Längen zweier Linien.<br />
:* [[Image:Assembly ConstraintLengthDifference.svg|32px]] [[Assembly3_ConstraintLengthDifference/de|Längendifferenz]]: Zum Festlegen der Differenz der Längen zweier Linien.<br />
:* [[Image:Assembly_ConstraintLengthEqualPointLineDistance.svg|32px]] [[Assembly3_ConstraintLengthEqualPointLineDistance/de|Länge gleich Punkt-Linie-Abstand]]: Zum Festlegen, dass der Abstand eines Punktes zu einer Linie gleich der Länge einer weiteren Linie ist.<br />
:* [[Image:Assembly_ConstraintGeneral.svg|24px]] ( [[Image:Assembly_ConstraintEqualLineArcLength.svg|32px]] )[[Assembly3_ConstraintEqualLineArcLength/de|Linien- gleich Bogenlänge]]: Zum Festlegen, dass die Länge einer Linie gleich der Länge enes Bogens ist.<br />
:* [[Image:Assembly_ConstraintMidPoint.svg|32px]] [[Assembly3_ConstraintMidPoint/de|Mittelpunkt]]: Zum Festlegen eines Punktes in der Mitte einer Linie.<br />
:* [[Image:Assembly_ConstraintDiameter.svg|32px]] [[Assembly3_ConstraintDiameter/de|Durchmesser]]: Zum Festlegen des Durchmessers eines Kreises oder Bogens.<br />
:* [[Image:Assembly_ConstraintEqualRadius.svg|32px]] [[Assembly3_ConstraintEqualRadius/de|Gleicher Radius]]: Zum Festlegen, dass die Radien zweier Kreise oder Bögen gleich groß sind.<br />
:* [[Image:Assembly_ConstraintPointsProjectDistance.svg|32px]] [[Assembly3_ConstraintPointsProjectDistance/de|Projizierter Punktabstand]]: Zum Festlegen des Abstands zweier Punkte, die auf eine Linie projiziert werden.<br />
:* [[Image:Assembly_ConstraintEqualPointLineDistance.svg|32px]] [[Assembly3_ConstraintEqualPointLineDistance/de|Gleicher Punkt-Linien-Abstand]]: Zum Festlegen, dass der Abstand eines Punktes zu einer Linie gleich dem Abstand eines weiteren Punktes zu einer anderen Linie ist.<br />
:* [[Image:Assembly_ConstraintColinear.svg|32px]] [[Assembly3_ConstraintColinear/de|Kollinear]]: Hinzufügen einer "kollinearen" Beschränkung um zwei Linien kollinear zu machen.<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
<br />
:Die '''Werkzeugleisten der Beziehungen''' sind die Hauptschnittstelle für den Zusammenzubau von Einzelteilen. <br />
: Sie sind standardmäßig ausgegraut, werden aber aktiviert, sobald mindestens eine Fläche, eine Linie oder ein Punkt eines Teiles ausgewählt wird.<br />
: Normalerweise werden erst die zu verbindenden Elemente ausgewählt und danach die Art der Beziehung.<br />
: Die unterschiedlich gefärbten Rahmen weisen auf unterschiedliche Eigenschaften der Einschränkungen hin:<br />
:: ob 2D / 3D oder ob mehr als 2 Elemente zusammengefügt werden können.<br />
: Eine ausführliche Beschreibung ist im GitHub-Wiki zu finden.<br />
<br />
==== Navigationswerkzeugleiste ====<br />
: [[Image:Assembly_GotoRelation.svg|28px]] [[Image:LinkSelect.svg|28px]] [[Image:LinkSelectFinal.svg|28px]] <br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
Diese Funktionen sind nützlich, wenn eine Baugruppe mit einer Hierarchie von verknüpften externen Dateien bearbeitet wird.<br />
<div class="mw-collapsible-content toccolours"><br />
:* [[Image:Assembly_GotoRelation.svg|32px]] [[Assembly3_GoToRelation/de|Zur Beziehung gehen]]: Zeigt die Beziehungsgruppe an (standardmäßig ausgeblendet) und wählt ein Beziehungsobjekt aus.<br />
:* [[File:Std_LinkSelectLinked.svg|32px]] [[Std_LinkSelectLinked/de|Verknüpftes Objekt auswählen]]: Wählt das verknüpfte Objekt aus und wechselt zu dessen Dokument. {{Version/de|0.19}}<br />
:* [[File:Std_LinkSelectLinkedFinal.svg|32px]] [[Std_LinkSelectLinkedFinal/de|Letztes verknüpftes Objekt auswählen]]: Wählt das Objekt am Ende der Verknüpfungskette aus und wechselt zu dessen Dokument. {{Version/de|0.19}}<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
<br />
==== Messwerkzeugleiste ====<br />
<br />
: [[Image:Assembly_MeasurePointDistance.svg|28px]] [[Image: Assembly_MeasurePointLineDistance.svg |28px]] [[Image: Assembly_MeasurePointPlaneDistance.svg |28px]] [[Image: Assembly_MeasureAngle.svg |28px]]<br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
: Die '''Messwerkzeugleiste''' fügt Funktionen zum Messen des Abstands oder des Winkels zwischen zwei Objekten hinzu<br />
<div class="mw-collapsible-content toccolours"><br />
<br />
:* [[Image:Assembly_MeasurePointDistance.svg|32px]] [[Assembly3_MeasurePoints/de|Punkte messen]]: Füge ein "Punkte messen" hinzu, um den Abstand zwischen zwei Punkten in 2D oder 3D zu messen.<br />
:* [[Image:Assembly_MeasurePointLineDistance.svg|32px]] [[Assembly3_MeasurePointLine/de|Punkt zu Linie messen]]: Füge ein "Punkt zu Linie messen" hinzu, um den Abstand zwischen einem Punkt und einer linearen Kante in 2D oder 3D zu messen.<br />
:* [[Image:Assembly_MeasurePointPlaneDistance.svg|32px]] [[Assembly3_MeasurePointPlane/de|Punkt zu Ebene messen]]: Füge ein "Punkt zu Ebene messen" hinzu, um den Abstand zwischen einem Punkt und einer Ebene zu messen.<br />
:* [[Image:Assembly_MeasureAngle.svg|32px]] [[Assembly3_MeasureAngle/de|Winkel messen]]: Füge ein "Winkel messen" hinzu, um den Winkel von ebenen Flächen oder linearen Kanten zweier Teile zu messen.<br />
<br />
: Es gibt keine Funktion um einen Radius oder Durchmesser zu messen.<br />
: Die Messwerkzeuge überdauern Teiländerungen, z.B. den Abstand zwischen Kanten eines Würfels, wenn die die Größe des Würfels geändert wird. <br />
: Wie die Beschränkungen werden diese Berechnungen in Echtzeit ausgeführt und bei jeder Änderung aktualisiert. Hinter den Kulissen ist die Funktion den [[#Constraints|Beschränkungen]] sehr ähnlich. Der Abstand oder Winkel zwischen [[#Elemente|Elemente]] wird auf die gleiche Weise berechnet wie bei [[#Beschränkungen|Beschränkungen]]. Die Anzeige im Baum funktioniert auf die gleiche Weise.<br />
<br />
</div> <!-- End of collapsible element for content section. Do not remove! --><br />
</div> <!-- End of collapsible element for ... section. Do not remove! --><br />
<br />
<br />
Wie gewohnt, kann die Werkzeugleiste geändert und einzelne Werkzeuge hinzugefügt oder entfernt werden. Im Assembly3-Menü sind weitere Funktionen vorhanden, die sich nicht in den Werkzeugleisten befinden.<br />
<br />
[[#top|Anfang]]<br />
<br />
<div class="mw-translate-fuzzy"><br />
=== Beschränkungen ===<br />
Der Konstrukteur verwendet Beschränkungen um das gewünschte Ergebnis für die Beziehung zweier Teile zu erreichen. Die Kunst besteht darin, für jedes Problem die richtigen Beschränkungen auszuwählen, die sich am besten dafür eignen. Jeder beseitigte Freiheitsgrad sollte theoretisch nur einmal zwischen zwei Objekten beseitigt werden, aber in der Praxis mit vielen CAD Werkzeugen verursachen gewählte Beschränkungen über-beschränkte Kombinationen, oftmals kompensiert durch komplexe Algorithmen, manchmal aber auch nicht. Assembly3 benutzt Algorithmen, um über-bestimmte Beschränkungen zu entdecken und zu kompensieren, aber sie sind bisher noch nicht sehr ausgereift. <br />
So für Assembly3 Beschränkungen praktisch angewendet vermeide Probleme indem du dir bewusst machst, wie viele Freiheitsgrade genutzt wurden und welche noch durch Beschränkungen gesperrt werden müssen. Kein Teil sollte eine Verbindung durch Beschränkungen haben, die mehr als 6 Freiheitsgrade verwenden.<br />
</div> <br />
<br />
Hinweis: Wenn der Löser auf eine Kombination trifft, die nicht gelöst werden kann, gibt er einen Fehler aus. Es ist sehr schwierig für den Löser herauszufinden, was das Problem verursacht hat, so dass typischerweise aus dieser Fehlermeldung nicht klar hervorgeht, ''wo'' das Problem liegt. Bei größeren Baugruppen kann dies zu einer komplexen Problemsuche führen. Leider gibt es keine einfache Möglichkeit, dies zu vermeiden. Es ist jedoch hilfreich, sich über die Funktionsweise des Systems im Klaren zu sein (siehe z.B. [[#Elemente|Elemente]] unten), eindeutige Namen für alle beteiligten Komponenten zu verwenden und immer nur dann zusätzliche Beschränkungen hinzuzufügen, wenn der Löser die aktuelle Baugruppe gelöst hat. Sehr hilfreich, um ein Problem aufzuspüren, ist die "KontexMenü/Deaktivieren" Funktion jeder Beschränkung. <br />
<br />
Assembly3 Beschränkungen definieren Einschränkungen in der Position oder Orientierung zwischen zwei [[#Elemente|Elementen]]. Einige Beschränkungen arbeiten sogar mit mehr als zwei [[#Elemente|Elementen]]. Ein [[#Elemente|Element]] kann eine Fläche, eine Linie oder Kante oder ein Punkt eines Teils sein. Im Allgemeinen werden Beschränkungen definiert, indem man die gewünschten [[#Elemente|Elemente]] auswählt und dann die Beschränkung aus der Beschränkungen [[#Werkzeugleiste|Werkzeugleiste]] auswählt.<br />
<br />
* Fixiert 6 Freiheitsgrade, 0 bleiben unbestimmt: <br />
** '''Fixierung (Schloss)''': Die Fixiereinschränkung legt alle Freiheitsgrade einer Fläche. Sie sollte in jedem Zusammenbau zur Festlegung eines Basisteils genutzt werden. Es ist sinnvoll auch gleich die "Bewegung ausschließen für fixierte Teile"-Funktion (in der Werkzeugleiste) zu aktivieren, um damit ein unbeabsichtigtes Verschieben zu verhindern. In der Regel ist es egal welche Fläche, Linie oder Punkt benutzt wird um ein Teil zu fixieren. Man beachte, dass die Fixierung nur auf den aktuellen Zusammenbau wirkt, d.h. im Falle einer Unterbaugruppe braucht der übergeordnete Zusammenbau noch ein eigenes fixiertes Teil.<br />
**'''Anhang''': Legt die Koordinatensysteme der ausgewählten Elemente (zweier oder mehrerer Teile) deckungsgleich aufeinander. Dies ist die für die Berechnung günstigste Funktion und sollte, wo immer möglich, benutzt werden. Man beachte, dass man die Eigenschaften der Elemente nutzen kann, um Abstände und Winkel einzustellen, wenn die [[#Elements|Elemente]] nicht optimal zueinander ausgerichtet sind.<br />
* Fixiert 5 Freiheitsgrade, 1 bleibt unbestimmt: <br />
** '''Lagegleiche Ebenen''': fixes Tx,Ty,Tz, Rx,Ry. Only Rz is free. There remains the rotation around the normal passing through the ‘‘center of the plane’’.<br />
* Fixiert 4 Freiheitsgrade, 2 bleiben unbestimmt: <br />
** '''Axial Alignment''': fixes Tx,Ty, Rx,Ry. Only Tz, Rz are free. There remains the rotation around the axis of the shape and the translation along this same axis. Two ''PointOnLine'' constraints (if the two points are different) give the same result. The '‘Colinear'’ constraint too.<br />
** '''PointOnLine''': This eliminates the translation and rotation along the normals to the reference line. Only the translation and rotation along the line axis is allowed. <br />
* Fixiert 3 Freiheitsgrade, 3 bleiben unbestimmt: <br />
** '''Same Orientation''': fixes Rx,Rz,Rz. All T's remain free.<br />
** '''Points Coincident''': fixes Tx,Ty,Tz. All R's remain free.<br />
** '''PointOnPoint''' constraint eliminates the 3 translations.<br />
** '''Plane Alignment''': fixes Tz, Rx,Ry. In plane motion and Rz. This eliminates the translation along the normal to the reference plane and the two rotations around the axes of this plane.<br />
* Fixiert 2 Freiheitsgrade, 4 bleiben unbestimmt: <br />
** '''Multi Parallel''': fixes Rx,Ry. all T's and Rz remain. This eliminates the two rotations around the axes of the reference plane.<br />
* Fixiert 1 Freiheitsgrad, 5 bleiben unbestimmt: <br />
** '''Points in Plane''': Fixes Tz. This eliminates the translation along the normal to the reference plane.<br />
** '''Points Distance''': fixes the distance between the Element origins. <br />
**: This gives you more freedom than ''Points in Plane''<br />
Other<br />
* '''Points on Circle''': fixes Tz and partially Tx,Ty. Freezes the point translation (or several points) on a circle or disk area. You must pick the circle second. This leaves all rotations free and gives limited translation in the circle reference plane. <br />
<br />
'': Hinweis: In der folgenden Liste werden Tx,Ty,Tz und Rx,Ry,Rz benutzt, um Translations- (Verschiebe-) und Rotations- (Dreh-) Bewegungen bezogen auf die Koordinatenachsen des betreffenden Elements zu beschreiben. Dies ist nicht immer exakt oder vollständig beschrieben, wie z.B. wenn es eine Linie betrifft, ist es nicht definiert, ob sie in X-Richtung, Y-Richtung oder einem beliebigen Winkel dazwischen verläuft. Das System sorgt eher für Kürze und einfache Vergleichbarkeit, als für eine korrekte aber komplexere Definition. So ist Z normalerweise die Richtung der Flächennormalen der betroffenen Flächen.<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
=== Elemente ===<br />
Elemente wird in der Assembly3-Arbeitsumgebung als besonderer Begriff benutzt, und Elemente zu verstehen ist wichtig für das Verständnis, wie Assembly3 benutzt werden sollte. <br />
<br />
Es ist hilfreich ein Element als einen generellen Begriff für 'auswählbarer Bestandteil' eines Teiles zu sehen wie z.B. eine Fläche , eine Kante, ein Kreis, eine Ecke oder ein Punkt. Dies sind die Elemente, die ausgewählt werden, um Teile zueinander in Beziehung zu setzen. Im Baum hat ein 'Assembly'-Ordner drei Unterordner. Neben 'Parts' und 'Constraints' gibt es einen Ordner namens 'Elements', der leer bleibt, solange keine Einschränkungen hinzugefügt werden. Wenn eine Einschränkungen hinzugefügt wird, erhält sie selbst zwei (oder mehr) Blätter, dies sind die ausgewählten Elemente. Auch werden diese Elemente dem 'Elements'-Ordner hinzugefügt, der eine Liste aller im Zusammenbau benutzten Elemente darstellt. Es ist eine gute Idee, ihre Namen zu ändern (mit der F2-Taste), besonders in größeren Zusammenbauten.<br />
<br />
Sehen wir uns ein Beispiel an<br />
: Es wird eine neue Datei erstellt und mit der Part-Arbeitsumgebung ein Würfel und ein Zylinder hinzugefügt. Es soll der Zylinder auf den Würfel gestellt werden. Zuerst wird das Basisteil fixiert, in diesem Fall der Würfel. Dazu wird die Unterseite des Würfels und danach die Fixiereinschränkung (das erste Symbol in der [[#Toolbars|Werkzeugleiste]] der Haupteinschränkungen) ausgewählt. Es werden die Oberseite des Würfels und die Oberseite des Zylinders ausgewählt. Danach wird die 'Plane Coincident'-Einschränkung ausgewählt. Nun hat sich der Zylinder in den Würfel hinein bewegt und im Baum wurde ein neues Blatt mit zwei Kindknoten unter 'Constraints' hinzugefügt. Zusätzlich wurden die selben zwei Kindknoten unter 'Elements' hinzugefügt. Falls der Zylinder im Inneren des Würfels liegt, anstatt auf seiner Oberseite wird dies als nächstes korrigiert: Den Kindknoten unter 'Constraints' auswählen, zu dem die Zylinderfläche gehört, und mit einem Rechtsklick im Kontextmenü 'Flip Part' auswählen. Nun wurde der Zylinder auf die Würfeloberseite gestapelt.<br />
<br />
Der wichtigste Gedanke, den es zu verstehen gilt, ist dass die Beschränkung auf Verknüpfungen zu Elementen in der Liste im "Elemente" Baumordner wirkt. Dies erlaubt, die Bindungsstruktur intakt zu halten, während die Teile geändert werden. Dies ist ohne ein Beispiel sehr schwer zu erkennen. <br />
<br />
Zurück zum obigen Beispiel<br />
: Achtung: Es sollte darauf geachtet werden, dass die Fixiereinschränkung zum Würfel hinzugefügt wurde, andernfalls wird es verwirrend aussehen.<br />
: Im CAD-Fenster wird eine weitere Fläche des Würfels ausgewählt. Ab jetzt wird nur noch in der Baumansicht gearbeitet. Im Baum wird die Maus über dem auszuwählenden Würfel platziert. Der Würfel wird per 'Drag&Drop' auf den 'Elements'-Ordner gezogen und abgelegt. Das Ablegen sollte auf dem Namen des 'Elements' erfolgen, nicht anderswo im Ordner - warum, sehen wir später. Es sollte erkennbar sein, das ein weiteres Element zur 'Elements'-Liste hinzugefügt wurde. Nun wird im 'Constraints'-Ordner der Kindknoten der Würfelfläche in der 'Plane Coincident'-Einschränkung ausgewählt und aus der Liste entfernt. Die Einschränkung ist nun mit einem Ausrufezeichen gekennzeichnet, da ihr ein Element fehlt. Hierbei ist zu beachten, dass ein Element, das aus der Einschränkung entfernt wurde, ''nicht'' auch aus der (Element-)Liste gelöscht wurde. Der Grund dafür ist, dass in der Einschränkung nur ein Verweis zum Element in der Liste abgelegt wird. Nun kann das neu zur 'Elements'-Liste hinzugefügte Element per 'drag&drop' auf die 'Plane Coincident'-Einschränkung gezogen und abgelegt. Damit bewegt sich der Zylinder zu der anderen Fläche des Würfels, die vorher ausgewählt wurde. Wenn der Zylinder im Inneren des Würfels liegt, muss nochmals im Kontextmenü 'flip part' ausgewählt werden. <br />
<br />
Das Beispiel zeigt, dass man die zur Einschränkung gehörenden Elemente austauschen kann, ohne die Einschränkung zu Löschen. Auf dieselbe Weise kann der Zylinder auch zu einem ganz anderen Teil bewegt werden. Nachdem man etwas mit diesem Beispiel herumgespielt hat, wird man noch zusätzliche Möglichkeiten entdecken, wie z.B.<br />
* Wenn ein Element in der Liste umbenannt wird, wird es auch in allen Einschränkungen umbenannt<br />
* Ein Element der Liste kann für mehrere Einschränkungen verwendet werden.<br />
* Das Eigenschaftsfenster eines Elements kann verwendet werden, um '''Versatzangaben ''' (Offsets) hinzuzufügen. Z.B. kann hiermit der Zylinder auf unterschiedliche Positionen auf der gewählten Würfelfläche platziert werden.<br />
* Man kann den 'Show Element Coordinate System'-Knopf der Hauptwerkzeugleiste benutzen, um zu sehen, wie sich 'Flip Part' und 'Flip Element' aus dem Kontextmenü auswirken. Nicht vergessen, die Änderungen im Eigenschaftsfenster zu beobachten.<br />
* Eine Einschränkung kann auch in einer ganz anderen Reihenfolge hinzugefügt werden: Zuerst werden Elemente zur 'Elements'-Liste hinzugefügt (Eine Benennung ist hier nützlich, z.B. "Würfel-Oberseite" oder "Würfel-Unterseite"), dann wird eine Einschränkung hinzugefügt, ohne etwas auszuwählen - Das ergibt eine leere Einschränkung. Dann werden Elemente aus der Liste per 'Drag&Drop' hierher gezogen und abgelegt. Das Ergebnis ist das gleiche, wie in dem ersten Beispiel. Nach dieser Übung sollte klar sein, wie Einschränkungen und Elemente zusammenarbeiten.<br />
* Eine bestehende Einschränkung zwischen bestehenden Elementen kann einfach ausgetauscht werden, indem man eine andere Auswahl in der 'ConstraintType'-Eigenschaft im Eigenschaftsfenster trifft. <br />
<br />
[[#top|Zum Anfang]]<br />
<br />
== Kompatibilität ==<br />
<br />
Assembly3 wurde vom [[Assembly2_Workbench|Assembly2]] inspiriert, ist aber nicht mit diesem kompatibel. Wenn du ältere Modelle in Assembly2 erstellt hast, solltest du bei FreeCAD 0.16 bleiben und Assembly2 dort verwenden.<br />
<br />
Neue Modelle, die mit Assembly3 entwickelt wurden, sollten nur mit diesem Arbeitsbereich geöffnet und bearbeitet werden.<br />
<br />
Obwohl sie möglicherweise ähnliche Werkzeuge haben, ist Assembly3 nicht kompatibel mit [[A2plus_Workbench/de|A2plus]] noch mit [[Assembly4_Workbench/de|Assembly4]]. Modelle, die mit diesen Arbeitsbereichen erstellt wurden, sollten nur mit dem jeweiligen Arbeitsbereich geöffnet werden.<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
== Testen == <br />
<br />
Der [[Assembly3_Workbench|Assembly3 Arbeitsbereich]] befindet sich in der Entwicklung und ist noch nicht (April 2020) über den [[Std_AddonMgr|Addon Manager]] verfügbar, aber es ist zu erwarten, dass dies irgendwann geschieht.<br />
<br />
Assembly3 kann auf zwei Arten getest werden:<br />
* Eine spezielle Abspaltung von FreeCAD von realthunder; siehe [https://github.com/realthunder/FreeCAD_assembly3/releases FreeCAD_assembly3 releases]. Dieser Fork basiert auf einem bestimmten Commit des Master-Zweiges von FreeCAD, hat aber auch zusätzliche Funktionen, die derzeit im Master-Zweig nicht vorhanden sind. Da dieser Fork auf einem bestimmten Entwicklungs-Snapshot basiert, verfügt er nicht über die neuesten Funktionen, die täglich in den Master-Zweig eingebunden werden.<br />
* Die Entwicklung [[AppImage|AppImage]]; diese basiert auf dem aktuellen Master-Zweig und beinhaltet die Abhängigkeiten, die für die Arbeit mit Assembly3 benötigt werden, wie z.B. den SolveSpace Solver.<br />
<br />
Da das AppImage nur unter Linux funktioniert, ist für Windows-Benutzer im Moment die erste Option (realthunder's fork) die einzige Möglichkeit, Assembly3 zu testen.<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
== GewusstWie ==<br />
<br />
=== Loslegen ===<br />
Es gibt viele Wege einen Zusammenbau mit Assembly3 zu erstellen. Hier ist der einfachste, den du machen kannst. <br />
<br />
:[[File:Assembly3_Example-GettingStarted.jpg|600px]]<br />
:''Endergebnis des 'Wie man startet'-Beispiels. In dem Bild ist die Assembly3-Arbeitsumgebung ausgewählt, sodass ihre unterschiedlichen Werkzeugleisten sichtbar sind. Beachte, dass die vertikale 'TabBar'-Leiste links neben der Baumansicht eine zusätzliche Arbeitsumgebung ist und nicht Bestandteil von Standard-FreeCAD (aber mit dem Addon-Manager installiert werden kann).''<br />
<br />
<br />
* Schaltfläche {{Button|[[Image:Std_New.svg|16px]] [[Std_New/de|Neu]]}} drücken, um eine neue FreeCAD-Datei zu erstellen<br />
* Zur [[Image:Assembly3_workbench_icon.svg|16px]] [[Assembly3_Workbench/de|Assembly3 Arbeitsumgebung]] wechseln<br />
* Schaltfläche {{Button|[[Image:Assembly_New_Assembly.svg|16px]] [[Assembly3_CreateAssembly/de|Baugruppe anlegen]]}} drücken<br />
* Zur [[Image:Workbench_Part.svg|16px]] [[Part_Workbench/de|Part Arbeitsumgebung]] wechseln und einen [[Image:Part_Cylinder.svg|16px]] [[Part_Cylinder/de|Zylinder]] und einen [[Image:Part_Box.svg|16px]] [[Part_Box/de|Würfel]] hinzufügen<br />
* Die Datei unter einem selbstgewählten Dateinamen [[Image:Std_Save.svg|16px]] [[Std_Save/de|speichern]]. Anschließend die Datei [[Image:Std_CloseActiveWindow.svg|16px]] [[Std_CloseActiveWindow/de|schließen]] und erneut [[Image:Std_Open.svg|16px]] [[Std_Open/de|öffnen]]<br />
<br />
<br />
Die Baumansicht sollte so aussehen (0.20.pre and Link Branch):<br />
<br />
[[Image:Assembly3 Example-Tree-01.png|300px]] [[Image:Assembly3 Example-Tree-02.png|280px]]<br />
<br />
<br />
* Nun mit der Maus per ''Drag&Drop'' '''Zylinder''' und '''Würfel''' auf den '''Parts'''-Ordner ziehen und ablegen. Beide werden in den Ordner verschoben.<br />
*: Das ist der schnellste Weg und geeignet für einfache Fälle wie diesen. Ein besserer Weg geht über die Nutzung von Link-Objekten: <br />
*: '''Würfel''' sowie '''Zylinder''' auswählen und dann den Befehl [[Image:Std LinkMake.svg|16px]] [[Std LinkMake/de|Link erstellen]] entweder aus dem '''Kontextmenü''' (-> LinkActions -> MakeLink) oder aus der '''Struktur'''leiste auswählen<br />
*: Dies fügt zwei Link-Objekte hinzu. Diese werden dann auf den '''Parts'''-Ordner gezogen und abgelegt<br />
* Anklicken der beiden Oberseiten von Zylinder und Würfel (Strg gedrückt halten (Cmd am Mac))<br />
* Zur [[Image:Assembly3_workbench_icon.svg|16px]] [[Assembly3_Workbench/de|Assembly3 Arbeitsumgebung]] wechseln. <br />
* Schaltfläche {{Button|[[Image:Assembly_ConstraintCoincidence.svg|16px]] [[Assembly3_ConstraintCoincidence/de|Deckungsgleiche Ebenen]]}} aus der [[#Main Constraints Toolbar/de|Hauptwerkzeugleiste für Beschränkungen]] auswählen.<br />
<br />
<br />
Jetzt sollten beide Teile miteinander verbunden sein und der Baum sollte so aussehen (0.20.pre and Link Branch): <br />
<br />
[[Image:Assembly3 Example-Tree-03.png|300px]] [[Image:Assembly3 Example-Tree-04.png|280px]]<br />
<br />
<br />
* Rechtsklick auf "_Element" (eins der beiden) und "Flip Part" auswählen. <br />
<br />
Nun sollte sich der Zylinder oben auf dem Würfel befinden. Wenn das Gebilde auf dem Kopf steht, einen Schritt zurückgehen und "Flip Part" auf dem anderen Element auswählen.<br />
: Bisher wurde ein wichtiger Schritt ausgelassen, den man besonders für größere Baugruppen nicht vergessen sollte: Das Fixieren eines Basisteils. <br />
: Das bedeutet ein Teil zu definieren, das nicht durch Einschränkungen bewegt werden sollte. In diesem Fall wird dafür der Würfel benutzt: <br />
:* Auswahl der Unterseite des '''Würfels'''. Nur die Unterseite, nicht der ganze '''Würfel'''<br />
:* Schaltfläche {{Button|[[Image:Assembly ConstraintLock.svg|16px]] [[Assembly3_ConstraintLock/de|Festsetzen]]}} aus der [[#Main Constraints Toolbar/de|Hauptwerkzeugleiste für Beschränkungen]] auswählen.<br />
<br />
Fertig.<br />
<br />
<br />
Der fertige Baugruppenbaum sollte so aussehen (0.20.pre and Link Branch): <br />
<br />
[[Image:Assembly3 Example-Tree-05.png|300px]] [[Image:Assembly3 Example-Tree-06.png|280px]]:<br />
<br />
<br />
Wenn du möchtest, kannst du die '''Gesperrt''' Beschränkung im Baum nach oben verschieben. <br />
Verwende die {{Button|[[Image:Assembly_TreeItemUp.svg|16px]] [[Assembly3_MoveItemUp/de|Objekt aufwärts bewegen]]}} Schaltfläche auf der [[#Hauptwerkzeugleiste|Hauptwerkzeugleiste]] dafür.<br />
<br />
<br />
'''Hinweis:''' Alle neuen externen Dateien müssen mindestens einmal '''gespeichert''', '''geschlossen''' und wieder-'''geöffnet''' werden, damit Assembly3 sie finden kann.<br />
: Andernfalls kann FreeCAD der Assembly3 Arbeitsbereich keine Dateihandhabung geben und diese kann das neue Teil nicht finden.<br />
: Wenn alle Teile in der gleichen Datei sind, solltest du diese Datei auch '''speichern''', '''schließen''' und wieder '''öffnen'''.<br />
<br />
[[#top|Anfang]]<br />
<br />
=== Hinzufügen eines Versatzes ===<br />
Assembly3 bietet keinen Versatz mit den Beschränkungen, wie es der [[A2plus_Workbench/de|A2plus Arbeitsbereich]] oder andere CAD Werkzeuge tun. Stattdessen bietet er ein allgemeineres und flexibleres System um Versätze, Übersetzungen, aber auch von Winkeln hinzuzufügen.<br />
<br />
* Füge einen Versatz in den Eigenschaften eines [[#Elemente|Elemente]] einer [[#Beschränkung|Beschränkung]] hinzu. <br />
*: Du kannst wählen, welche der beiden du nutzen möchtest. <br />
<br />
Beispiel:<br />
* Füge 2 Würfel zu einer Baugruppe hinzu und wähle ihre Seitenflächen aus.<br />
* Wähle "EbenenDeckungsgleich". Die Würfel werden ineinander angebracht. <br />
* Wähle ein Element und ''KontextMenü/Teil kippen''. Die Würfel werden Seite an Seite angebracht.<br />
* Wähle eine Elementeigenschaft Versatz/Position/Zz und setze sie auf 5mm. Die Würfel sind nun 5mm voneinander entfernt. <br />
Teste mit anderen Achsen oder den Feldern Winkel/Achse. Prüfe auch , dass du das gleiche Ergebnis erhältst, wenn du das andere Element verwendest.<br />
Dies ist die gleiche Herangehensweise für alle anderen Beschränkungen.<br />
<br />
[[#top|Anfang]]<br />
<br />
=== Löse einen Löserfehler ===<br />
Dies geschieht häufig, wenn Teile über-beschränkt sind, d.h. mehr als 6 Freiheitsgrade sind gesperrt. <br />
<br />
Der einfachste Weg das Problem zu finden, ist das Anklicken der entsprechenden Einschränkungen, die Auswahl von ''ContextMenu/Disable'' und anschließender Neuberechnung. Es ist hilfreich zu wissen, welche Einschränkungen als letzte hinzugefügt wurden, bevor die Berechnung des Gleichungslösers fehlgeschlagen ist, um diese einfach zurückzunehmen. <br />
<br />
Achtung: Da Assembly3 hinter den Kulissen versucht überbestimmte Teile auszugleichen, kann es vorkommen, dass eine neue Einschränkung scheinbar eine Fehlfunktion auslöst, die tatsächliche Ursache aber an einer anderen Stelle zu finden ist. Bevor man nun alles löscht und von vorne beginnt, sollte man daran denken, dass man Elemente wiederverwenden kann. Wenn sie benannt wurden, können die erforderlichen Elemente leicht ermittelt und die Einschränkungen erneut aufgebaut werden, ohne die 3D-Ansicht zu verwenden. Siehe auch obigen [[#Elements|Elemente]]-Abschnitt.<br />
<br />
[[#top|Anfang]]<br />
<br />
=== Ersetze ein Teil oder benenne einen Dateinamen um ===<br />
Wenn ein Teil entfernt wird oder wenn sich ein Dateiname ändert, bricht die Baugruppe, sie kann nicht mehr gelöst werden und der Löser gibt die Meldung "Widersprüchliche Beschränkungen" aus. Der Löser kennzeichnet ungültige Elemente und Beschränkungen mit einem Fragezeichen im Baum. <br />
<br />
Ein Weg, dieses zu lösen ist, einfach alle ungültigen Beschränkungen und Elemente zu löschen, das neue Teil zu importieren und alles neu zu machen. Aber es gibt einen besseren Weg: <br />
<br />
* Eine Datei umbenennen<br />
*# Einen Dateimanager benutzen, um die Datei zu kopieren, umbenannt werden soll. Anschließend gibt man der Kopie den neuen Namen. <br />
*# Öffnen der Kopie in FreeCAD. Der Zusammenbau und die alte Datei sollten auch geöffnet sein.<br />
*# Das alte Objekt im Baum auswählen und per Klick die Eigenschaft 'Linked object' ändern (sie enthält den alten Dateinamen).<br />
*# Ein Dialogfenster mit einer Auflistung aller geöffneten Teile öffnet sich. Es zeigt die Dateinamen und Objekte aller Teile an. Das alte Teil und das zugehörige Objekt sind ausgewählt. Das umbenannte Teil wird im Baum abgelegt und das gleiche Objekt des neuen Teiles ausgewählt. Danach die Auswahl bestätigen.<br />
*# Die alte Datei aus dem Baum entfernen. Die Datei kann jetzt auch gelöscht werden.<br />
*# Die Einschränkungen und Elemente des alten Teiles sind ungültig geworden. Jetzt wird die Einschränkung oder die 'Elements'-Liste im Baum geöffnet und anschließend nacheinander <br />
*#* Jede Element-Fläche am neuen Teil ausgewählt. Ein Objekt im Baum wird hervorgehoben.<br />
*#* Das Objekt per 'drag&drop' auf das alte Element ziehen und ablegen (entweder in der 'Elements'-Liste oder in einer der Einschränkungen, wo es benutzt wurde). Das Element sollte jetzt gültig werden. <br />
*#* Diesen Ablauf für die übrigen Elemente wiederholen. Oft reicht ein einzelnes Element dafür aus, dass Assembly3 die übrigen Elemente des Teiles automatisch erkennen kann.<br />
*#* Falls ein Element ausversehen einer falschen Fläche zugeordnet wurde, wird die Zuordnung einfach mit der korrekten Fläche wiederholt.<br />
*# Ändern des Objektnamens in FreeCAD, falls gewünscht<br />
<br />
<br />
* Ein Teil durch ein anderes Teil ersetzen<br />
*: ''Welches dem originalen Teil ähnlich genug ist, dass die originalen Einschränkungen noch sinnvoll sind.''<br />
*# Das alteTeil aus dem Baum entfernen. Die Datei kann jetzt auch gelöscht werden.<br />
*# Die Einschränkungen und Elemente des alten Teiles sind ungültig geworden. Jetzt wird die Einschränkung oder die 'Elements'-Liste im Baum geöffnet. <br />
*#* Eine Element-Fläche am neuen Teil auswählen. Ein Objekt im Baum wird hervorgehoben.<br />
*#* Das Objekt per 'drag&drop' auf das alte Element ziehen und ablegen (entweder in der 'Elements'-Liste oder in einer der Einschränkungen, wo es benutzt wurde). Das Element sollte jetzt gültig werden.<br />
*#* Diesen Ablauf für die übrigen Elemente wiederholen. <br />
*#* Falls ein Element ausversehen einer falschen Fläche zugeordnet wurde, wird die Zuordnung einfach mit der korrekten Fläche wiederholt. <br />
*# Ändern des Objektnamens in FreeCAD, falls gewünscht<br />
<br />
<br />
''Hinweise<br><br />
* Es ist nicht so kompliziert, wie es hier auf den ersten Blick aussieht. Nach 2-3 Durchläufen sollten die Abläufe in Fleisch und Blut übergehen und die Ausführung leicht von der Hand gehen.<br />
* Es ist nicht nur viel schneller als das Löschen und erneute Anlegen von Einschränkungen, sondern auch sicherer, da ein Element in einem übergeordneten Zusammenbau eingesetzt sein könnte. Das Original zu löschen, würde den Verweis zerstören, es neu zuzuordnen würde ihn erhalten.<br />
* Ferner beschleunigt und vereinfacht es diesen Ablauf, wenn Einschränkungen und Elemente benannt werden. Es gäbe kein Raten, wo die Flächen hingezogen und abgelegt werden sollten, da es aus den Namen hervorgeht (siehe auch [[#Tips & Tricks|Tipps & Tricks]]).<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
=== Tipps & Tricks ===<br />
* Hierarchisch aufgebaute Zusammenbauten helfen dabei, Probleme des Gleichnungslösers zu vermeiden und das Modell schlank zu halten. Man kann eine Unterbaugruppe mit einem Klick einfrieren und so ohne Aufwand CPU-Resourcen einsparen (Im Kontextmenü des Baumes). Wenn ein Zusammenbau geladen wird, muss Assembly3 die externen Dateien der eingefrorenen Unterbaugruppen nicht öffnen, wodurch der Baum kompakt gehalten wird. <br />
* Es ist sehr hilfreich, sich anzugewöhnen, Einschränkungen und Elemente zu benennen. Im Baum lässt es sich schnell durch Benutzung der {{KEY|F2}}-Taste erledigen. Sehr nützlich ist auch das Werkzeug zum Sortieren des Baumes, das man in der Hauptwerkzeugleiste findet. Ein Zusammenbau mit vollständig benannten Einschränkungen und Elementen ist für andere Leute sehr einfach zu verstehen, oder auch für einen selbst, wenn man sich ältere Modelle ansieht.<br />
*: Beispiele für Namen von Einschränkungen für einen Tisch könnten lauten: "Ausrichtung_Beine_vorne", "Ausrichtung_RahmenUnterseite-BeinOberseite" und Elementnamen könnten sein: "Bein1_Oberseite", "Tischplatte_Vorderseite" oder "Tischplatte_linke_Seite". <br />
* Bitte beachten, dass, sobald externe Dateien durch einen Zusamenbau geöffnet werden, es nicht mehr möglich ist, diese auf einfache Weise zu schließen, ohne auch den Zusammenbau zu schließen. Da der Zusammenbau die Dateien im Hintergrund offen hält, kann der Reiter verschwinden, aber die Dateien bleiben im Baum sichtbar. Wenn man Zusammenbauten über mehrere Ebenen hat, kann es fast unmöglich sein einzelne Dateien zu schließen. Dieses Verhalten kann sich in Zukunft ändern, aber bis dahin bleibt die Möglichkeit, Die Befehle ''File/Save All'' und ''File/Close All'' zu nutzen, um den Baum aufzuräumen, bevor an einer anderen Unterbaugruppe gearbeitet wird.<br />
*: ''Beispiel: Man hat eine große CNC-Maschine mit einem Hauptzusammenbau und Unterbaugruppen für alle Module. Sobald man den Hauptzusammenbau geladen hat, wird er hunderte Dateien bis hin zur kleinsten Schraube öffnen. Bevor man nun die Baugruppe des Elektronikfachs der Maschine bearbeitet, ist es eine gute Idee, alle Dateien zu speichern und zu schließen, um einen leeren Baum zu erhalten. Dann wird nur die Unterbaugruppe des Elektronikfachs geöffnet. Sie öffnet alle benötigten Dateien, aber auch nur diese.<br />
* Externe Dateien zu benutzen, macht es einfacher, Teile wiederzuverwenden oder Bauteilversonierung mit Systemen wie git oder subversion zu ermöglichen. Der Arbeitsablauf in FreeCAD mit Assembly3 fühlt sich fast genauso an, wie der mit Dateien, in denen alle zusammengehörigen Teile in jeweils einer Datei enthalten sind. Letzteres bietet sich an, wenn man häufig Baugruppen mit anderen Beteiligten austauscht. <br />
* Mehrfach verknüpfte Dateien. Wenn man eine Dateiverknüpfung zu einem Zusammenbau hinzufügt, wird eine Eigenschaft "Element Count" angelegt mit Standardwert 0. Wenn man diesen auf 3 setzt, erhält man 3 Instanzen dieses Teils. Sie werden in einem Unterordner hinzugefügt und können wie vollständig unabhängige Teile verwendet werden. Diese Einstellung kann genutzt werden, um den Speicherplatzverbrauch der Datei klein zu halten, da das Teil nur einmal gespeichert wird. Die Instanzen enthalten nur die Unterschiede.<br />
* Einsetzen mehrfacher Teile, wie z.B. Schrauben, mit einem Klick. Siehe [https://github.com/realthunder/FreeCAD_assembly3/wiki/Constraints-and-Solvers Assembly3 Wiki] auf der Github-Seite. Dies ist nicht nur eine erstaunliche Funktion (vielleicht ein bisschen magisch), sondern auch sehr sehr nützlich.<br />
<br />
* Die Benutzung der [https://github.com/triplus/TabBar TabBar-Arbeitsumgebung] beschleunigt die Arbeit mit Zusammenbauten. Es wird eine Werkzeugleiste mit je einem Knopf für jede Arbeitsumgebung hinzugefügt. Man kann die Reihenfolge ändern und man kann die Werkzeugleiste nach belieben platzieren. Veile Leute legen sie vertikal an den linken Rand direkt neben der Baumansicht. Wenn man Assembly3, Part, PartDesign und andere oft genutzte Arbeitsumgebungen am oberen Ende platziert, macht es das Umschalten zwischen den Arbeitsumgebungen extrem einfach.<br />
<br />
<br />
[[#top|Zum Anfang]]<br />
<br />
== Verweise ==<br />
<br />
* [[App_Link|App-Link]]-Objekt macht, dass Assembly3 funktioniert.<br />
* [https://github.com/realthunder/FreeCAD_assembly3 FreeCAD_assembly3] Repository und Dokumentation.<br />
* [https://forum.freecadweb.org/viewtopic.php?f=20&t=25712 Assembly3 preview], große Diskussionsrunde.<br />
* [https://forum.freecadweb.org/viewtopic.php?f=36&t=29562 Test tutorial for Assembly 3 WB] von jpg87.<br />
* [https://forum.freecadweb.org/viewtopic.php?f=20&t=34583 Current Assembly Status]<br />
* [[External_workbenches|Externe Arbeitsbereiche]]<br />
* [[Assembly_project|Altes Assembly Projekt]] Entwicklungsablauf, um sich mit der Geschichte des Themas vertraut zu machen.<br />
<br />
{{Userdocnavi{{#translation:}}}}<br />
[[Category:Addons{{#translation:}}]]<br />
[[Category:External Workbenches{{#translation:}}]]</div>Chrisbhttps://wiki.freecad.org/index.php?title=Translations:Assembly3_Workbench/76/de&diff=1082406Translations:Assembly3 Workbench/76/de2021-12-02T22:43:14Z<p>Chrisb: </p>
<hr />
<div>:* [[Image:Assembly ConstraintLock.svg|32px]] [[Assembly3_ConstraintLock/de|Festsetzen]]: Zum Fixieren eines oder mehrerer Teile. <br />
:*: Es muss ein (Geometrie-) Element eines Teiles ausgewählt werden.<br />
:*: Wird ein Knotenpunkt oder eine Kante festgesetzt, lässt sich das Teil immer noch frei um den Knotenpunk oder die Kante drehen.<br />
:*: Das Festsetzen einer Fläche fixiert das Teil vollständig.<br />
:* [[Image:Assembly ConstraintAlignment.svg|32px]] [[Assembly3_ConstraintAlignment/de|Ebenen ausrichten]]: Zum Ausrichten ebener Flächen zweier oder mehrerer Teile.<br />
:*: Die Flächen werden komplanar ausgerichtet oder optional parallel mit Abstand.<br />
:* [[Image:Assembly ConstraintCoincidence.svg|32px]] [[Assembly3_ConstraintCoincidence/de|Deckungsgleiche Ebenen]]: Zum deckungsgleich Festlegen ebener Flächen zweier oder mehrerer Teile.<br />
:*: Die Flächen werden mit deckungsgleichen Ursprüngen komplanar ausgerichtet oder optional parallel mit Abstand. <br />
:* [[Image:Part Attachment.svg|32px]] [[Assembly3_ConstraintAttachment/de|Befestigung]]: Zum Befestigen eines Teils an ein zweites mittels der ausgewählten (Geometrie-) Elemente. <br />
:*: Diese Beziehung verbindet beide Teile starr miteinander.<br />
:* [[Image:Assembly ConstraintAxial.svg|32px]] [[Assembly3_ConstraintAxial/de|Axiale Ausrichtung]]: Zum axialen Ausrichten (Fluchten) von Kanten und Flächen zweier oder mehrerer Teile.<br />
:*: Die Beziehung akzeptiert:<br />
:*:: lineare Kanten; sie werden kollinear ausgerichtet, <br />
:*:: ebene Flächen; sie werden unter Nutzung ihrer Flächennormalen (Z-Achse) ausgerichtet, <br />
:*:: und zylindrische Flächen; sie werden unter Nutzung ihrer (Z-) Achsrichtung ausgerichtet. <br />
:*: Verschiedene Arten von (Geometrie-) Elementen können gemischt werden.<br />
:* [[Image:Assembly ConstraintSameOrientation.svg|32px]] [[Assembly3_ConstraintSameOrientation/de|Richtungen angleichen]]: Zum identischen Ausrichten der (ebenen) Flächen zweier oder mehrerer Teile. <br />
:*: Die Ebenen werden so ausgerichtet, dass ihre (Z-) Achsen in dieselbe Richtung zeigen.<br />
:* [[Image:Assembly ConstraintMultiParallel.svg|32px]] [[Assembly3_ConstraintMultiParallel/de|Mehrfach parallel]]: Zum parallelen Ausrichten von ebenen Flächen oder geraden Kanten zweier oder mehrerer Teile.<br />
:* [[Image:Assembly ConstraintAngle.svg|32px]] [[Assembly3_ConstraintAngle/de|Winkel festlegen]]: Zum Festlegen des Winkels zwischen ebenen Flächen oder geraden Kanten zweier Teile.<br />
:* [[Image:Assembly ConstraintPerpendicular.svg|32px]] [[Assembly3_ConstraintPerpendicular/de|Rechtwinklig festlegen]]: Zum rechtwinkligen Festlegen von ebenen Flächen oder geraden Kanten zweier Teile.<br />
:* [[Image:Assembly ConstraintPointCoincident.svg|32px]] [[Assembly3_ConstraintPointsCoincident/de|Punkt auf Punkt]]: Zum deckungsgleich Festlegen zweier Punkte in 2D oder 3D.<br />
:* [[Image:Assembly ConstraintPointInPlane.svg|32px]] [[Assembly3_ConstraintPointInPlane/de|Punkt auf Ebene]]: Zum Festlegen eines oder mehrerer Punkte auf einer Ebene (Punktberührung).<br />
:* [[Image:Assembly ConstraintPointOnLine.svg|32px]] [[Assembly3_ConstraintPointOnLine/de|Punkt auf Linie]]: Zum Festlegen eines oder mehrerer Punkte auf einer Linie in 2D or 3D.<br />
:* [[Image:Assembly ConstraintPointOnCircle.svg|32px]] [[Assembly3_ConstraintPointOnCircle/de|Punkt auf Kreis]]: Zum Festlegen eines oder mehrerer Punkte auf einer durch einen Kreis definierten zylindrischen Fläche.<br />
:*: Achtung! Es muss ein Punkt (irgendein Geometrieelement, dass einen Punkt definieren kann) ausgewählt werden und dann der Kreis (oder eine zylindrische Fläche), <br />
:*: danach können bei Bedarf weitere Punkte hizugefügt werden.<br />
:* [[Image:Assembly ConstraintPointsDistance.svg|32px]] [[Assembly3_ConstraintPointsDistance/de|Punkt zu Punkt Abstand]]: Zum Festlegen des Abstands zweier oder mehrerer Punkte zueinander.<br />
:* [[Image:Assembly ConstraintPointPlaneDistance.svg|32px]] [[Assembly3_ConstraintPointPlaneDistance/de|Punkt zu Ebene Abstand]]: Zum Festlegen des Abstands eines oder mehrerer Punkte zu einer Ebene.<br />
:* [[Image:Assembly ConstraintPointLineDistance.svg|32px]] [[Assembly3_ConstraintPointLineDistance/de|Punkt zu Linie Abstand]]: Zum Festlegen des Abstands eines Punktes zu einer geraden Kante in 2D oder 3D.<br />
:* [[Image:Assembly ConstraintSymmetric.svg|32px]] [[Assembly3_ConstraintSymmetric/de|Symmetrie festlegen]]: Zum Festlegen der Symmetrie der (Geometrie-) Elemente zweier Teile bezüglich einer Ebene.<br />
:*: Unterstützte Elemente sind gerade Kanten und ebene Flächen.<br />
:* [[Image:Assembly ConstraintMore.svg|32px]] [[Assembly3_ConstraintMore/de|Weitere]]: Werkzeugleisten umschalten für weitere Beschränkungen<br />
:*: Nicht wirklich eine Beschränkung, sondern ein Umschalter zum Anzeigen/Ausblenden der '''Werkzeugleisten für zusätzliche Beschränkungen'''.</div>Chrisbhttps://wiki.freecad.org/index.php?title=Robot_Workbench/de&diff=1081687Robot Workbench/de2021-11-29T13:43:02Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<br />
{{Docnav/de<br />
|[[Reverse Engineering Workbench/de|Arbeitsbereich Reverse Engineering]]<br />
|[[Sketcher_Workbench/de|Sketcher Arbeitsbereich]]<br />
|IconL=Workbench_Reverse_Engineering.svg<br />
|IconR=Workbench_Sketcher.svg<br />
}}<br />
<br />
{{VeryImportantMessage|Der Roboter Arbeitsbereich ist nicht gewartet. Wenn du Erfahrung mit dem Thema hast und daran interessiert bist, es zu pflegen, gib bitte deine Absicht im Entwicklerbereich des [https://forum.freecadweb.org/index.php FreeCAD Forums] an.<br />
<br />
Der Grund dafür, dass sich dieser Arbeitsbereich noch im Master Quellcode befindet, liegt darin, dass dieser Arbeitsbereich in C++ programmiert ist. Wenn dieser Arbeitsbereich in Python programmiert werden könnte, dann könnte sie zu einem[[external_workbenches/de|externen Arbeitsbereich]] gemacht und in ein separates Repositorium verschoben werden.<br />
}}<br />
<br />
== Einführung ==<br />
<br />
[[Image:Workbench_Robot.svg|thumb|128px|Roboter Arbeitsbereichssymbol]]<br />
<br />
Die [[Image:Workbench_Robot.svg|24px]] [[Robot_Workbench/de|Roboter Arbeitsbereich]] ist ein Werkzeug zur Simulation eines Standard [[Robot_6-Axis/de|6-Achsen Industrieroboters]], wie [http://kuka.com/ Kuka].<br />
<br />
Du kannst die folgenden Aufgaben erledigen:<br />
* Richten eine Simulationsumgebung mit einem Roboter und Werkstücken ein.<br />
* Erstellen und Auffüllen von Bewegungstrajektorien.<br />
* Zerlege die Merkmale eines CAD-Bauteils in eine Trajektorie.<br />
* Simuliere die Roboterbewegung und das Erreichen der Distanz.<br />
* Exportiere die Trajektorie in eine Roboterprogrammdatei.<br />
<br />
Um loszulegen, versuche es mit dem [[Robot_tutorial/de|Roboter Tutorium]], und sieh Dir die Programmierschnittstelle in der Beispieldatei [https://github.com/FreeCAD/FreeCAD_sf_master/blob/master/src/Mod/Robot/RobotExample.py RobotExample.py] an.<br />
<br />
{{TOCright}}<br />
[[Image:Robot_Workbench_example.jpg|500px]]<br />
<br />
== Werkzeuge ==<br />
Hier die wichtigsten Befehle, mit denen eine Roboteranordnung erstellt werden kann. <br />
<br />
=== Roboter ===<br />
Die Werkzeuge zur Erstellung und Verwaltung der 6-Achsen-Roboter<br />
<br />
* [[Image:Robot_CreateRobot.svg|30px]] [[Robot_CreateRobot/de|Einen Roboter erstellen]]: Einen neuen Roboter in die Szene einfügen<br />
* [[Image:Robot_Simulate.svg|30px]] [[Robot_Simulate/de|Eine Bewegungsbahn simulieren]]: Öffnet den Simulationsdialog und lässt dich Folgendes simulieren <br />
* [[Image:Robot_Export.svg|30px]] [[Robot_Export/de|Eine Bewegungsbahn exportieren]]: Exportieren einer Roboterprogrammdatei<br />
* [[Image:Robot_SetHomePos.svg|30px]] [[Robot_SetHomePos/de|Ausgangsposition festlegen]]: Festlegen der Ausgangsposition eines Roboters<br />
* [[Image:Robot_RestoreHomePos.svg|30px]] [[Robot_RestoreHomePos/de|Ausgangsposition wiederherstellen]]: Bewege den Roboter in seine Ausgangsposition<br />
<br />
=== Trajektorien ===<br />
Werkzeuge zum Erstellen und Bearbeiten von Trajektorien. Es gibt zwei Arten, die parametrische und die nicht parametrische.<br />
<br />
==== Nicht parametrische Trajektorien ====<br />
* [[Image:Robot_CreateTrajectory.svg|30px]] [[Robot_CreateTrajectory/de|Eine Trajektorie erstellen]]: Fügt ein neues leeres Trajektorienobjekt in die Szene ein<br />
* [[Image:Robot_SetDefaultOrientation.svg|30px]] [[Robot_SetDefaultOrientation/de|Lege die Standardausrichtung fest]]: Lege die Orientierung fest - Wegpunkte werden standardmäßig erstellt<br />
* [[Image:Robot_SetDefaultValues.svg|30px]] [[Robot_SetDefaultValues/de|Setze den Standard Geschwindigkeitsparameter]]: Lege die Standardwerte für die Weg-punkt Erstellung fest<br />
* [[Image:Robot_InsertWaypoint.svg|30px]] [[Robot_InsertWaypoint/de|Einen Wegpunkt einfügen]]: Einfügen eines Wegpunktes von der aktuellen Roboterposition in eine Trajektorie<br />
* [[Image:Robot_InsertWaypointPre.svg|30px]] [[Robot_InsertWaypointPre/de|Einen vorgewählten Wegpunkt einfügen]]: Einfügen eines Wegpunktes von der aktuellen Mausposition in eine Trajektorie<br />
<br />
==== Parametrische Trajektorien ====<br />
* [[Image:Robot_Edge2Trac.svg|30px]] [[Robot_Edge2Trac/de|Erstellen einer Trajektorie aus Kanten]]: Einfügen eines neuen Objekts, das Kanten zu einer Trajektorie zerlegt<br />
* [[Image:Robot_TrajectoryDressUp.svg|30px]] [[Robot_TrajectoryDressUp/de|Ankleiden einer Trajektorie]]: Erlaubt dir, eine oder mehrere Eigenschaften einer Trajektorie außer Kraft zu setzen<br />
* [[Image:Robot_TrajectoryCompound.svg|30px]] [[Robot_TrajectoryCompound/de|Trajektorienverbund]]: Erzeugen eines Verbunds aus einigen Einzeltrajektorien<br />
<br />
== Skripten ==<br />
<br />
Siehe das [[Robot_API_example/de|Roboter API Beispiel]] für eine Beschreibung der Funktionen, die zur Modellierung der Roboterverschiebungen verwendet werden.<br />
<br />
== Tutorien ==<br />
* [[Robot 6-Axis/de|6-Achsen Roboter]]<br />
* [[VRML Preparation for Robot Simulation/de|VRML Vorbereitung für Robotersimulation]]<br />
<br />
<br />
{{Docnav/de<br />
|[[Reverse Engineering Workbench/de|Arbeitsbereich Reverse Engineering]]<br />
|[[Sketcher_Workbench/de|Skizzierer Arbeitsbereich]]<br />
|IconL=Workbench_Reverse_Engineering.svg<br />
|IconR=Workbench_Sketcher.svg<br />
}}<br />
<br />
{{Robot Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}<br />
[[Category:Workbenches{{#translation:}}]]</div>Chrisbhttps://wiki.freecad.org/index.php?title=Translations:Robot_Workbench/35/de&diff=1081686Translations:Robot Workbench/35/de2021-11-29T13:43:02Z<p>Chrisb: </p>
<hr />
<div>{{Docnav/de<br />
|[[Reverse Engineering Workbench/de|Arbeitsbereich Reverse Engineering]]<br />
|[[Sketcher_Workbench/de|Skizzierer Arbeitsbereich]]<br />
|IconL=Workbench_Reverse_Engineering.svg<br />
|IconR=Workbench_Sketcher.svg<br />
}}</div>Chrisbhttps://wiki.freecad.org/index.php?title=Robot_Workbench/de&diff=1081685Robot Workbench/de2021-11-29T13:42:49Z<p>Chrisb: </p>
<hr />
<div><languages/><br />
<br />
{{Docnav/de<br />
|[[Reverse Engineering Workbench/de|Arbeitsbereich Reverse Engineering]]<br />
|[[Sketcher_Workbench/de|Sketcher Arbeitsbereich]]<br />
|IconL=Workbench_Reverse_Engineering.svg<br />
|IconR=Workbench_Sketcher.svg<br />
}}<br />
<br />
{{VeryImportantMessage|Der Roboter Arbeitsbereich ist nicht gewartet. Wenn du Erfahrung mit dem Thema hast und daran interessiert bist, es zu pflegen, gib bitte deine Absicht im Entwicklerbereich des [https://forum.freecadweb.org/index.php FreeCAD Forums] an.<br />
<br />
Der Grund dafür, dass sich dieser Arbeitsbereich noch im Master Quellcode befindet, liegt darin, dass dieser Arbeitsbereich in C++ programmiert ist. Wenn dieser Arbeitsbereich in Python programmiert werden könnte, dann könnte sie zu einem[[external_workbenches/de|externen Arbeitsbereich]] gemacht und in ein separates Repositorium verschoben werden.<br />
}}<br />
<br />
== Einführung ==<br />
<br />
[[Image:Workbench_Robot.svg|thumb|128px|Roboter Arbeitsbereichssymbol]]<br />
<br />
Die [[Image:Workbench_Robot.svg|24px]] [[Robot_Workbench/de|Roboter Arbeitsbereich]] ist ein Werkzeug zur Simulation eines Standard [[Robot_6-Axis/de|6-Achsen Industrieroboters]], wie [http://kuka.com/ Kuka].<br />
<br />
Du kannst die folgenden Aufgaben erledigen:<br />
* Richten eine Simulationsumgebung mit einem Roboter und Werkstücken ein.<br />
* Erstellen und Auffüllen von Bewegungstrajektorien.<br />
* Zerlege die Merkmale eines CAD-Bauteils in eine Trajektorie.<br />
* Simuliere die Roboterbewegung und das Erreichen der Distanz.<br />
* Exportiere die Trajektorie in eine Roboterprogrammdatei.<br />
<br />
Um loszulegen, versuche es mit dem [[Robot_tutorial/de|Roboter Tutorium]], und sieh Dir die Programmierschnittstelle in der Beispieldatei [https://github.com/FreeCAD/FreeCAD_sf_master/blob/master/src/Mod/Robot/RobotExample.py RobotExample.py] an.<br />
<br />
{{TOCright}}<br />
[[Image:Robot_Workbench_example.jpg|500px]]<br />
<br />
== Werkzeuge ==<br />
Hier die wichtigsten Befehle, mit denen eine Roboteranordnung erstellt werden kann. <br />
<br />
=== Roboter ===<br />
Die Werkzeuge zur Erstellung und Verwaltung der 6-Achsen-Roboter<br />
<br />
* [[Image:Robot_CreateRobot.svg|30px]] [[Robot_CreateRobot/de|Einen Roboter erstellen]]: Einen neuen Roboter in die Szene einfügen<br />
* [[Image:Robot_Simulate.svg|30px]] [[Robot_Simulate/de|Eine Bewegungsbahn simulieren]]: Öffnet den Simulationsdialog und lässt dich Folgendes simulieren <br />
* [[Image:Robot_Export.svg|30px]] [[Robot_Export/de|Eine Bewegungsbahn exportieren]]: Exportieren einer Roboterprogrammdatei<br />
* [[Image:Robot_SetHomePos.svg|30px]] [[Robot_SetHomePos/de|Ausgangsposition festlegen]]: Festlegen der Ausgangsposition eines Roboters<br />
* [[Image:Robot_RestoreHomePos.svg|30px]] [[Robot_RestoreHomePos/de|Ausgangsposition wiederherstellen]]: Bewege den Roboter in seine Ausgangsposition<br />
<br />
=== Trajektorien ===<br />
Werkzeuge zum Erstellen und Bearbeiten von Trajektorien. Es gibt zwei Arten, die parametrische und die nicht parametrische.<br />
<br />
==== Nicht parametrische Trajektorien ====<br />
* [[Image:Robot_CreateTrajectory.svg|30px]] [[Robot_CreateTrajectory/de|Eine Trajektorie erstellen]]: Fügt ein neues leeres Trajektorienobjekt in die Szene ein<br />
* [[Image:Robot_SetDefaultOrientation.svg|30px]] [[Robot_SetDefaultOrientation/de|Lege die Standardausrichtung fest]]: Lege die Orientierung fest - Wegpunkte werden standardmäßig erstellt<br />
* [[Image:Robot_SetDefaultValues.svg|30px]] [[Robot_SetDefaultValues/de|Setze den Standard Geschwindigkeitsparameter]]: Lege die Standardwerte für die Weg-punkt Erstellung fest<br />
* [[Image:Robot_InsertWaypoint.svg|30px]] [[Robot_InsertWaypoint/de|Einen Wegpunkt einfügen]]: Einfügen eines Wegpunktes von der aktuellen Roboterposition in eine Trajektorie<br />
* [[Image:Robot_InsertWaypointPre.svg|30px]] [[Robot_InsertWaypointPre/de|Einen vorgewählten Wegpunkt einfügen]]: Einfügen eines Wegpunktes von der aktuellen Mausposition in eine Trajektorie<br />
<br />
==== Parametrische Trajektorien ====<br />
* [[Image:Robot_Edge2Trac.svg|30px]] [[Robot_Edge2Trac/de|Erstellen einer Trajektorie aus Kanten]]: Einfügen eines neuen Objekts, das Kanten zu einer Trajektorie zerlegt<br />
* [[Image:Robot_TrajectoryDressUp.svg|30px]] [[Robot_TrajectoryDressUp/de|Ankleiden einer Trajektorie]]: Erlaubt dir, eine oder mehrere Eigenschaften einer Trajektorie außer Kraft zu setzen<br />
* [[Image:Robot_TrajectoryCompound.svg|30px]] [[Robot_TrajectoryCompound/de|Trajektorienverbund]]: Erzeugen eines Verbunds aus einigen Einzeltrajektorien<br />
<br />
== Skripten ==<br />
<br />
Siehe das [[Robot_API_example/de|Roboter API Beispiel]] für eine Beschreibung der Funktionen, die zur Modellierung der Roboterverschiebungen verwendet werden.<br />
<br />
== Tutorien ==<br />
* [[Robot 6-Axis/de|6-Achsen Roboter]]<br />
* [[VRML Preparation for Robot Simulation/de|VRML Vorbereitung für Robotersimulation]]<br />
<br />
<br />
{{Docnav/de<br />
|[[Reverse Engineering Workbench/de|Arbeitsbereich Rekonstruktionsingenieurwissenschaften]]<br />
|[[Sketcher_Workbench/de|Skizzierer Arbeitsbereich]]<br />
|IconL=Workbench_Reverse_Engineering.svg<br />
|IconR=Workbench_Sketcher.svg<br />
}}<br />
<br />
{{Robot Tools navi{{#translation:}}}}<br />
{{Userdocnavi{{#translation:}}}}<br />
[[Category:Workbenches{{#translation:}}]]</div>Chrisbhttps://wiki.freecad.org/index.php?title=Translations:Robot_Workbench/40/de&diff=1081684Translations:Robot Workbench/40/de2021-11-29T13:42:48Z<p>Chrisb: </p>
<hr />
<div>{{Docnav/de<br />
|[[Reverse Engineering Workbench/de|Arbeitsbereich Reverse Engineering]]<br />
|[[Sketcher_Workbench/de|Sketcher Arbeitsbereich]]<br />
|IconL=Workbench_Reverse_Engineering.svg<br />
|IconR=Workbench_Sketcher.svg<br />
}}</div>Chrisb