Macro Automatic drawing/cs: Difference between revisions

From FreeCAD Documentation
(Created page with "Tento kód generuje stránku Výkresu se třemi ortografickými vzájemně zarovnanými pohledy (zepředu, shora a zprava) a izometrický pohled umístěný...")
 
(Created page with "==== Použití ==== Před spuštěním makra musí být vybrán objekt.")
Line 4: Line 4:
Používá [http://en.wikipedia.org/wiki/Multiview_orthographic_projection#First-angle_projection pravoúhlé promítání].
Používá [http://en.wikipedia.org/wiki/Multiview_orthographic_projection#First-angle_projection pravoúhlé promítání].


==== How to use ====
==== Použití ====
Před spuštěním makra musí být vybrán objekt.
An object needs to be selected before launching the macro.


==== Limitations ====
==== Limitations ====

Revision as of 16:14, 4 February 2014

File:Text-x-python Automatic drawing

Description
This code allow the user to get the view of his object in a drawing with 4 different position(front,top,iso,right). Needs some modification to be perfectly effective.

Author: unknown
Author
unknown
Download
None
Links
Macro Version
1.0
Date last modified
None
FreeCAD Version(s)
None
Default shortcut
None
See also
None

Tento kód generuje stránku Výkresu se třemi ortografickými vzájemně zarovnanými pohledy (zepředu, shora a zprava) a izometrický pohled umístěný vpravo nahoře stránky. Vypočítá měřítko založené na velikosti modelu a rozměru a dostupnému místu na stránce. Izo pohled je v poměru 2/3 k orto pohledům.
Používá pravoúhlé promítání.

Použití

Před spuštěním makra musí být vybrán objekt.

Limitations

  • Scale is not standard. You may need to change the views manually to a standard scale.
  • It only works with a single object (this is a limitation from the Drawing Workbench)
  • Needs to be modified to work for third-angle projection used in the US and Canada.

The script

import FreeCAD, Part, Drawing
if len(Gui.Selection.getSelectionEx())>1:
   App.Console.PrintError("Warning: Only the first item is generate")
if len(Gui.Selection.getSelectionEx())==0:
   App.Console.PrintError("Warning: Need to select one item")
Piece=Gui.Selection.getSelectionEx()[0]
App.activeDocument().addObject('Drawing::FeaturePage','AutoDrawing')
App.activeDocument().AutoDrawing.Template = App.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg'
DH=20
DL=30
L=Piece.Object.Shape.BoundBox.XMax
H=Piece.Object.Shape.BoundBox.ZMax
P=Piece.Object.Shape.BoundBox.YMax
Sc=(400-3*DL)/(L+H)
Sc2=(250-3*DH)/(P+H)
if Sc>Sc2 : 
   Sc=Sc2
TopX=DL+Sc*L
FrontX=DL+Sc*L
RightX=2*DL+Sc*L
IsoX=2*DL+Sc*(L)
TopY=DH+Sc*P
RightY=DH+P*Sc
FrontY=2*DH+Sc*(P+H)
IsoY=2*DH+Sc*P

print TopX,RightX,TopY,FrontY

#Create topView
App.activeDocument().addObject('Drawing::FeatureViewPart','topView')
App.activeDocument().topView.Source =Piece.Object
App.activeDocument().topView.Direction = (0,0,1)
App.activeDocument().topView.Rotation=180
App.activeDocument().topView.X = TopX
App.activeDocument().topView.Y = TopY
App.activeDocument().topView.ShowHiddenLines=True
App.activeDocument().AutoDrawing.addObject(App.activeDocument().topView)
App.activeDocument().topView.Scale = Sc
#Create FrontView
App.activeDocument().addObject('Drawing::FeatureViewPart','FrontView')
App.activeDocument().FrontView.Source =Piece.Object
App.activeDocument().FrontView.Direction = (0,-1,0)
App.activeDocument().FrontView.Rotation=90
App.activeDocument().FrontView.Scale = Sc
App.activeDocument().FrontView.X = FrontX
App.activeDocument().FrontView.Y = FrontY
App.activeDocument().FrontView.ShowHiddenLines=True
App.activeDocument().AutoDrawing.addObject(App.activeDocument().FrontView)
#Create RightView
App.activeDocument().addObject('Drawing::FeatureViewPart','RightView')
App.activeDocument().RightView.Source =Piece.Object
App.activeDocument().RightView.Direction = (1,0,0)
App.activeDocument().RightView.Scale = Sc
App.activeDocument().RightView.X = RightX
App.activeDocument().RightView.Y = RightY
App.activeDocument().RightView.ShowHiddenLines=True
App.activeDocument().AutoDrawing.addObject(App.activeDocument().RightView)
#Create IsotView
App.activeDocument().addObject('Drawing::FeatureViewPart','IsoView')
App.activeDocument().IsoView.Source =Piece.Object
App.activeDocument().IsoView.Direction = (1,1,1)
App.activeDocument().IsoView.Rotation=60
App.activeDocument().IsoView.Scale = Sc*.6
App.activeDocument().IsoView.X = IsoX
App.activeDocument().IsoView.Y = IsoY
App.activeDocument().IsoView.ShowHiddenLines=True
App.activeDocument().AutoDrawing.addObject(App.activeDocument().IsoView)