WikiPages

This page gives common guidelines on the best practices to be followed when writing or updating FreeCAD documentation.

It also has the goal to bring together the threads that are dispersed in the forum and try to make order, being a single point of reference for FreeCAD documentation discussion and brainstorming, to better organize the wiki.

Before Starting
This wiki documentation is based on MediaWiki, the same software that powers Wikipedia. If you have contributed to Wikipedia before, editing FreeCAD wiki pages should be easy.

If you have never used wiki software before, head to Help:Editing to become familiar with the markup used to edit pages.

For advance usage of the wiki software, see MediaWiki Help:Contents. Not all features of MediaWiki are available in this FreeCAD wiki, but many of them are. We like to keep the documentation simple to read, so avoid using complex features. Keep it simple.

Use a sandbox to test your code, for example, FreeCADDocu:Sandbox or a particular page with your name Sandbox:Yourname.

Concise descriptions
When describing FreeCAD functionality try to be concise and to the point. Describe what FreeCAD does, not what FreeCAD does not do. There might be exceptions for justifying why FreeCAD does not support a certain functionality, for instance, to explain how FreeCAD is different from other CAD systems.

Centralized information
Avoid duplicating the same information in different places. Insert the information in a new page, and link to this page from other pages that require this information.

Do not use transclusion of pages (Help:Editing), as this makes the wiki difficult to translate. Use only the templates described below in.

Styling
Templates are used for styling the text used in the help pages.

There is a template for styling menu commands, like, another template to style keys to be pressed, like , another template to show a Boolean value , etc. This allows the documentation to have a consistent look and feel, as well as being able to be translated without much effort. Please get familiar with the section before writing help pages.

Examples
You can quickly get familiar with the structure and style of the FreeCAD wiki by looking at the following pages, which can be considered reference pages for the rest of the FreeCAD documentation.
 * Draft ShapeString
 * Draft Line

General
You should normally not use a =header= section for a page, since the page title is automatically added.

The User hub provides a Table of Contents; this is used as the main reference for automatically building the offline help you can reach from FreeCAD, as well as the offline PDF documentation.

The Template:Docnav is used to link to the page before and the page after, according to the structure of the Table of Contents. See for a list of all templates.

Page names
Page names should be short, and they should use "sentence case", as opposed to "title case". This is the style used by Wikipedia for their articles.

Essentially, all words except the first one and proper names, should be in lowercase.


 * Tutorial on the construction of AeroCompany airplanes
 * Tutorial On The Construction Of AeroCompany Airplanes

a previous convention was to use title case; every word should begin with a capital letter, unless they are articles, prepositions, conjunctions, or other grammatical particles, that is, "of, on, in, a, an, and", etc. There are many pages using this style, but this is discouraged for new pages. This is discussed in the forum thread (Lowercase links) Use a lower case title for a wiki page.

Page names for tools
The top level workbench page must have the format XYZ Workbench, where XYZ is the name of the workbench.

Pages describing the tools (Gui Commands) of the workbench must have the format XYZ Tool, where Tool is the name of the specific tool.

Bad name

 * Working with architectural objects
 * Working with architectural walls
 * Drafting 2D objects
 * Tool: building a line between two points

Good name

 * Arch Workbench
 * Arch Wall


 * Draft Workbench
 * Draft Line

Links
You should use the original link name for the links whenever possible. This clarifies the referenced page in printed or offline documentation. You must avoid the usage of non-meaningful words for the link.

Bad link

 * For more information on this topic, click here.

So-so link

 * For more information on this topic, refer to drafting 2D objects.

Good link

 * For more information on this topic, see how to draft 2D objects in the Draft Workbench.

Workbench pages
Every page of a workbench should start with:
 * the name of the workbench,
 * an image of the look of the workbench (menu and toolbar in their default position), and
 * a description of what the workbench is used for

See for conventions on including images.

Command (tool) pages
The command pages describing workbench tools should not be too long, they should only explain what a command can do and what it can't, and how to use it. You should keep pictures and examples to a minimum; tutorials can expand on how to use the tool and provide step-by-step details.

Limitations and shortcomings should be documented right in the command page, possibly under a "restrictions" or "limitations" section.

Please refer to the Gui Command page for specific indications on how these commands should be presented, and use the GuiCommand model to start filling the information where appropriate. Use Boiler NonCommand to fill in information that is not related to a command.

Tutorials
A well written tutorial should teach the user how to achieve certain practical results quickly. It shouldn't be extremely long, but it should include a sufficient amount of step-by-step instructions and pictures to guide the user on using different tools.

A series of tutorials in which each increases in complexity could be helpful to explore basic, intermediate, and expert tools in one or more workbenches.

See the tutorial guidelines for a basic idea on how to set up a tutorial.

See some examples
 * Tutorials, already written and accessible from the sidebar
 * FreeCAD tutorial - Unofficial tutorial blog, for other example tutorials

As FreeCAD evolves, some tutorials may become too old for modern versions of the program, so it is important to mention the version or limitations of the tools used in that specific version of the tutorial.

Expressions
You should avoid colloquial generic expressions as "a couple". Please re-phrase as "some" if an indeterminate number, or use the correct quantity.

Conciseness
Try to avoid repetitions to keep descriptions short.

Bad description
PartDesign Workbench: the PartDesign Workbench is a workbench for part design that aims to provide tools for modelling complex solid parts.

Good description
PartDesign Workbench: aims to provide tools for modelling complex solid parts.

Templates
Styling of FreeCAD wiki pages is achieved through the usage of templates (Help:Editing). Please only use the templates listed in the tables below; doing this will allow re-styling the entire wiki by updating the template, and help achieve a standardized look and feel across all pages. Only for special cases should you use HTML tags directly.

You can see the complete list of defined templates by accessing Special:PrefixIndex/Template:. However, not all templates listed there are used for styling the text, and others are deprecated; please use only the ones in the tables below.

Click on the template link to see the usage instructions for the template, and to see its implementation. Templates are a powerful feature of the MediaWiki software; you should be an experienced wiki user if you wish to propose additions and modifications to existing templates. If implemented incorrectly, templates make it difficult to translate pages into other languages, so their use should be limited to text formatting, and page transclusion should be avoided. See MediaWiki Help:Templates to learn more.

Simple styling templates
These templates accept a simple text parameter, and format it with a particular style.

More complex templates
These templates require more input parameters, or produce a block of text with a particular format.

Deprecated templates
To have a global view on the chromatic aspect, see Basic Graphic Template.

Code
Code must be styled using the Code template. The description of such code should follow afterwards. Accentuation should be strictly used only on the word or lines that must be accentuated.

Python code should adhere to the general recommendations established by PEP8: Style Guide for Python Code. In particular, parentheses should immediately follow the function name, and a space should follow a comma. This makes the code more readable.

Example of good code description

 * Creates an angular dimension from the given point, the  containing  and, and passing through point.
 * Returns the newly created object.

Graphics
Images and screenshots are necessary to produce a complete documentation of FreeCAD. Images are particularly useful to illustrate examples and tutorials.

General
Avoid thumbnails and resizing bitmap pictures (downsizing or upscaling). Pictures should be shown in their original size, so they present sufficient detail and are readable if they include text. The exception to this are SVG images, which can be scaled to any desired size without losing detail.

Avoid animated pictures (GIF) in the general Gui Command help pages. Animations and videos should be reserved for tutorials not intended to be used as offline PDF documentation.

Pictures must be uploaded through the Special:Upload page.

Screen capture
Recommended sizes for screen captures are:
 * Native 400x200 (or width=400 and height<=200), for Gui Command pages, to allow the picture to fit in the left part of the page, and for other standard snapshots.
 * Native 600x400 (or width=600 and height<=400), for Gui Command pages, when you really need a bigger picture, and still allow the picture to fit in the left part of the page, and for other standard snapshots.
 * Native 1024x768 (or width=1024 and height<=768), only for full screen images.
 * Smaller sizes are possible when showing details, however use native resolution, not resizing or thumbnails, unless you have a very good reason to do so.
 * Avoid larger resolutions, as they won't be very portable to other kinds of display or in the printed PDF documentation.

You shouldn't depend on any particular configuration of your desktop or operating system when you show screenshots. You should use visual defaults of the FreeCAD interface whenever possible.

Text
To ease documentation translations, take separate pictures of the interface and the 3D model viewport. The picture of the 3D model can be reused in every translation, while a translator can take a picture of the localized interface if necessary.

If your screen capture contains text use the same resolution of the original interface in FreeCAD so that text is readable.

Bad sizing for reading text


In the second picture the text is less clear and there are visual artifacts due to rescaling the original width from 307px to 190px.

Icons and graphics
Refer to the Artwork page for all artwork and icons that have been created for FreeCAD, which can be immediately reused in documentation pages. If you would like to contribute with icons, please read the Artwork Guidelines.

Translations
As per general consensus, the reference page in the wiki is the English page, which should be created first. If you want to change or add content to a page, you should do it to the English page first, and only once the update is completed, port the modification to the translated page.

The FreeCAD wiki supports a translation extension that allows managing translations between pages easier; for details, see Localisation.

Other useful resources are:
 * ISO language codes to identify the two-letter code for a particular language that you want to translate to
 * Country flags to identify a country's flag for use in relevant localized pages
 * Google Translate for help with translating languages

Setting Docnav
To localize the Template:Docnav navigation bar, see this thread in the forum Docnav previous/next.

Essentially, a new translated template needs to be created, Template:Docnav/it.

The translated template should include the appropriate localized links as the "previous" and "next" parameters, together with the translated text:

Also include the appropriate language category

If the localized category is not included in the translated template, the translated template will remain in the default English category.

Using special pages

 * Orphaned pages list those pages that are not linked from or transcluded into other pages in the FreeCAD Documentation. These pages are not accessible via links (no one sees them). If you find any in your native language, try to create the connection that exists in the English page, otherwise no one can read them.
 * Uncategorized pages pages without category. They do not appear when you browse the categories. Assign a category.
 * Wanted pages pages that are called, but that do not exist. Red link in the text. Deprecated and very annoying.
 * Others Wanted (files and templates)
 * Wanted categories they exist always, not only has been edited text. Skip.
 * Categories allow you to compare the number of pages of a given type of the original version with those translated into the specified language.
 * List of redirects allows you to control the correct redirection pages. If there are any red links, something does not work well. Investigate. Light blue links lead to pages outside the site, no problem.
 * Recent changes track the most recent changes to the wiki.
 * Language statistics shows translation statistics for all message groups for a language. Shows the parts not translated in a given language, only for those pages marked for translation. To see what has not been translated, set the language code and press Show statistic. It also contains the link to see what has been recently translated into that language. Note: If entering code en pages appear, it is likely that the original page contains markup errors (Sidebar apart).
 * Page translation allows you to see all the pages marked for translation, but also the updated and unmarked pages. Only administrators can mark pages for translation.
 * Category:Pages to delete: list of pages to be deleted, created by mistake or unnecessary.

Robots
At the page WikiRobots you can find instructions on how to set-up and use robots to automate repetitive tasks on the FreeCAD Wiki.

Discussion
The Development/Wiki subforum in the FreeCAD forum provides a dedicated space for discussing improvements on the wiki topics and appearance. Direct your questions and suggestions there.

Workflow, Roadmap
Organize pages in the wiki

Content and Appearance:

 * Renato: width of the page, now much space is unused (only for monitor 16:10)
 * Renato: white background, text more readable
 * Renato:  links to similar commands, similar tools, scripts, examples, discussions, insights, forum, other... On all pages or only on some pages?

Templates
I think the things like this are also templates? This template contains headlines, icons, short textual description, long textual description, list elements. May be easier to handle when splitted in pieces (at least: icon list, description list, "full featured": array of someWorkbenchTools[icon|description,{2-4}]...) ?


 * Basic Template that would be useful

* PartDesignTools * _______________
 * Other Template

Forum
Some useful examples taken from the forum
 * Reflect on requests for help made ​​in the forum and use the given examples (if aid is required, it often means that the manual is not exhaustive, in the forum there are good examples, but hard to find)
 * Renato: Insert a link on the document page or insert the example or insert nothing?
 * Ralf: insert link(s) always in a field/area which is always there on every page. If there is nothing to link, there should be a text in this area as "There is currently no link to forum examples."
 * Ralf #2 examples: no examples at pages which are describing more than exactly the use of (probably mostly) a tool. If there would be examples (at different pages) which differ in various ways and are not comparable are confusing.
 * Ralf #3 examples: But beside of existing examples: defining a "standard model" (or some of them if needed for fairly different tasks as p.e. Part-Design vs. Arch) for really every example would promise a lot of advantages. The first one: if one like to try an example the related model file is available right there with the next click. Whatever the "standard model" could be - the most important condition it have to be usable for all examples/task from to simplest up to the most complex (FEM,assembly?!)
 * May be such an standard model and his incarnations could be also a kind of a "figurehead" for FC.
 * Ediloren (talk) 18:01, 3 September 2013 (CEST) : looks like a good idea but not too practical; I expect that the burden of adding examples for everything would be very high. I would prefer to resort on tutorials, videos, and forum unless somebody has really the time and commitment to follow this part (me not, sorry :) )

Documentation structure:

 * Links between pages (tree and hierarchy linear, orderly, full)
 * Renato: If there is an index the docnav does not serves.
 * Page titles descriptive
 * Renato: Translated or not translated? With the new translator seems outdated
 * Structure of the documentation (depending on the type of user and the type of documentation). Group some things? - If possible in any way: group everything to maximal seven (7) entrys (per group)(Ralf).:
 * Reference (needs indicate precise criteria) (Ralf: for me for advanced users/using, #3)
 * How to (Ralf: additional, #4)
 * Tutorial (Ralf: additional, #5)
 * External links
 * Themed (Ralf: 1st thing / start point while using the documentation? - for me #1)
 * examples - in relevant cases - the most basic example for using the tool / workbench /feature (is that possible with complex tools?) ; may be one "standard" example case for the most examples, if possible (so the fcstd file can be supplied and re-used for a lot of uses) for me #2 or to #1
 * linear (all, as now)
 * structured with sub-structures (very clear if there are no more than 5..7 entrys per structure layer)
 * task - specific (features is other than transform than handle mouse etc.)
 * FAQ
 * Books
 * Plugins
 * Macro

Documentation schemes
See Documentation schemes

Repository

 * fcstd file
 * pics, images
 * icons (there are almost all)
 * "Show your FreeCAD projects here!" archives

Who are the users:

 * New users FreeCAD:
 * Users without CAD experience -> not the job of the FreeCAD doc to teach them CAD - the job to teach them how to use FreeCAD? Renato: I think that FreeCAD is currently the only free CAD program with a professional approach. Many people exactly look for this to begin.
 * Users with CAD experience (2D/3D/parametric); users with 3D experience - no CAD
 * Users who know how to program (version?)


 * Users who know FreeCAD:
 * Users
 * Advanced users
 * Developers

What the users needs:

 * According to the category of the previous point they need different things (to be determined).
 * Renato: In my opinion the beginners to FreeCAD (or to CAD?) needs:
 * find the information immediately + Ralf: in the expected, consistent way
 * know what are the workbenches, when and how to use them, + Ralf: is this one workbench all I need or do I need more than one?
 * the commands that are available, + Ralf: in the workbench - for the task - all
 * the workflow to use, - Ralf: workflow sounds specific - may be the most basic way to use this - may be especially for tools there could be more than page per tool (as above: basic for beginners, extended use for advanced users)

Translations
''- The wiki, is the best way to create documentation FreeCAD? Would not it be better to reserve it for some issues and create a comprehensive manual for each version?'' ''- About updates, this is a crucial point, I've seen that you do not like docboock, and I do not intend to return to this theme, but docboock allows translators to easily work on documents. Allows you to download the entire document and compare it with the previous one. With this way changes are made always and only in the original document. Then the translators periodically (even daily if they want) downloading the document and compares with an earlier version and update it indicating the upgrade version. I've experienced that this procedure is very good. Can I do a similar thing with the wiki? In this way there is no need to continuously monitor Recent Changes and updates are easier to control.''
 * Consistent (the reference page is the English page, see the various discussions regarding the rules in the forum)
 * Updated (how?) + Ralf: 1st: Version, 2nd: frozen state of doc page - "this is the actual version of the documentation of ... for FC version xxx"; 3rd linked archiv pages of other versions (and maybe other frozen states), all with corresponding "tags" / marks
 * Use a document type that including at least one complete section of the manual (not just one page at a time). Comparable off line with an previous version. With "Recent changes" is difficult to follow all the changes, when they are frequent.
 * FCSTD files for Documentation (wandererfan wrote: It would be nice to have a repository for the fcstd files +Ralf and it would be very helpful - used to generate screenshots, etc. Then the 2nd author/translator could just open the fcstd with a different locale to generate the new screenshot. This would also for standardization of background colours, font sizes, etc. )
 * Renato. My personal:

Some notes taken from the forum
yorikvanhavre wrote: Actually we could do a little brainstorming, see things that should be changed on the wiki... I already thought of a couple of things: - a new wiki homepage with a clear view of the contents - better formatting of the 3 principal sections, for user (basically the command pages), for power users (everything about python) and the higher-level stuff (compiling, etc) - more professional aspect of the wiki pages - build a better and more strict model for command pages - find a good system to handle translations

gdo wrote: But maybe a survey to freecad users could help to understand precisely what is the beginners needs.

Ralf wrote: Even for the ones who are trying FreeCAD the first times, it's essential to find a consistent documentation otherwise they weren't motivated to give even some first tries.

And many more ... dispersed and mixed in:
 * SF hosted app retairement & call for help
 * doc - some detail questions about changing, display, structure: Misalignment of ToC (left menu vs. ToC and page titles), links should be called as the pages
 * wiki pages: Best pages examples (long) discussion, propose to establish clear rules, minimize screenshots, don't use thumbnails, English pages are master, Navigation bar at the bottom like in Sketcher_Point (my view: no; use ToC), image dimensions, misalignment of ToC (Each information is linked to an index directly from the main page. The main menu expands into sub-menu. You can clearly see the hierarchy of the entire document. The documentation must be so.), how to manage docs for different FC versions, (OT: is there a timeout for editing a post? On-again some of my posts are lost in space)
 * Online Help (Wiki) TODO List: Misalignment and importance of ToC (it is what gets in FreeCAD Help), grouping of workbenches (alphabetically says normandc) topic left in April 10
 * Wiki for New Functions?: How to mark versions in the Wiki
 * Règles a suivre pour le nouveau wiki
 * Tutorials auf Deutsch für FreeCAD

Examples of CAD documentation
http://help.solidworks.com/2013/English/SolidWorks/sldworks/c_Sketch_Fillets.htm?id=cb1f4dfbe23245aeb58d17af808ee10c#Pg0

Ralf: good: you can see where you are ; bad: a huge lot of entrys in the navigation / summary at left - the opposite of structured; sorry: pieces of the forum at the documentation page: what is the documentation page good for than? (but the link to the forum / forum search - ok.) http://www.gcad3d.org/ Ralf: thumbs up. clear, well structured. sometimes long but I don't know how to avoid that at some themes. Maybe the tree structure layers could be separated in two directions at the page for more place for the content. They have "last updates" I prefer "this version of the documentation is xxx and depend the program version xxy"

Reported by wandererfan guidelines for wiki authors: http://wiki.blender.org/index.php/Meta:Guides/Writer_Guide http://wiki.blender.org/index.php/Meta:Guides/Style_Guide Manual TOC: http://docs.gimp.org/2.8/en/ http://wiki.blender.org/index.php/Doc:2.6/Manual

Reported by Ralf: http://opensourceecology.org/wiki/FreeCAD

For the Italian translation also: http://tp.linux.it/

Next actions

 * 1) gather ideas
 * 2) build Table of Contents
 * 3) build good models (in the template created by Wandererfan)
 * 4) edit the master page in English (updated until a new FreeCAD version is released then freeze the document in pdf or doc or other)
 * 5) translate (updated until a new FreeCAD version is released then freeze)
 * 6) continue to develop the documentation for the new version of FreeCAD (repeats 4)
 * 7) continue to develop the translation for the new version of FreeCAD (repeats 5)

English
See Glossary

Other languages

 * Italiano

proposal to create the page:

Start Center
When you start FreeCAD for the first time, you are presented with the start center:



The Start Center allows you to quickly jump to one of the most common workbenches, open one of the recent files, or see the latest news from the FreeCAD world. You can change the default workbench in the preferences.

Use this part of Getting started then add more information

= Sandbox for Macro Dimensions =

Description
Macro for easy add dimension to Draft ... objects ...



How to install

 * Copy and paste the code into a macro (see Ho to install macro)
 * Save with a meaningful name (for me "dm")

Start

 * In FreeCAD Python Console digit "import dm" -> Return
 * In FreeCAD Python Console digit "dm.showup" -> Return
 * set path for .ttf
 * in its latest tested version, the path must be defined on line 1112, replacing path = "/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-B.ttf" 
 * set other options

Use

 * Auto: Vertical + parallel. Point1 and point2 you click decide the string, and the point3 decide direction and the position.
 * 2Point: The string is the distance of the point1 and point2. Point3 decide the position of the string.
 * Vertical: Just like auto, but the direction must be vertical.
 * Parallel: Just like auto, but the direction must be parallel.
 * Orthogonal:
 * Angle: To click line1 and line2. They will decide a angle. And last point decide the position of the string.
 * Custom: Mmake a String what you enter. Point1 is the start. point2 is the end.
 * Del obj: It can delete the dimension you make. Just click it and what you clicked will be deleted.

Limitations and things to improve

 * When lines are moved, the dimensions do not follow the design
 * parallel functions as "orthogonal" (to me) solved, parallel has been removed
 * path for .ttf is lost when exit, or Freecad is closed solved, now the path is set in the code
 * It can not be paused, but it is always active, or exit
 * It works only in the xy plane, or planes parallel to the xy
 * When you break a dimension, disappear all properties

Script

 * download from the forum, here it is not accepted
 * if it is present, remove the line 9 "import GSDraftGeomUtils"

Links

 * Discussion in the forum

Other similar instruments
= Sandbox for PartDesign Fillet =

Some considerations about Part Design Fillet.

Fillet is a useful tool, very agile for certain operations, but subject to certain limitations.

The examples are based on a cube 10x10x20.

'''First case. Fillet on an edge.'''



In appearance this tool acts on an edge, but in reality creates a curved surface that joins two other surfaces. Therefore it uses two faces as references, for example the side face and the upper face of a cube. At the edge that separates them can be applied a rounding with a radius equal to the limit dimension of the smaller face less a "residual safety value" of 0.0001 (according to the value of decimal set). The "security value" serves to maintain existing a small surface, in this case large 0.0001.



When one of the two surfaces that are connected disappears completing the operation fails because it lacks one of the references used by the function, and the result is unpredictable.

'''Second case. Fillet applied on two opposite edges of the same face.'''



In this case, there is not a limit radius, but the limit is (R1 + R2 <thickness-0.0001). The limit is valid if R1 or R2 are not superior to others thicknesses involved in the operation (eg. The height of the cube). The "residual safety value" is positioned at the junction of the fillets.



It is recommended to use this function only when modeling is ended, to eliminate "sharp corners", and instead use alternative tools to produce the model.

Alternative methods of rounding.

A simple method to create the rounded surfaces in a continuous manner, without the "surface residue" is, for example, to create a "cleaner" sketch on the front face as in this figure



and then apply a Pocket -> Through all. It returns a completely clean solid, without any interruption of the rounding surface. Adequately shaping the sketch you can create any profile, even eccentric.



Even the Boolean operations allow to obtain the same result, but the dependence of the elements is different.

Since version 0.16_pre 6692 FreeCAD has been equipped with an extra check if fillet and chamfer operation returns valid shape.

Links
http://forum.freecadweb.org/viewtopic.php?f=21&t=15141

Others
PartDesign

Lines created by a PartDesign Fillet can not be selected for an additional fillet or a chamfer.

PartDesign Chamfer has the same behavior.

Lines created by a Chamfer can be selected for an additional chamfer or fillet.

PartDesign fillet and chamfer on tangent edges..........

Part .......... many things are similar.