Home > 機能 > Drawing

ベクトルドロー・レベルゼロ

Drawingワークベンチ

最終更新日

概要

名前からは、ベクトル系のグラフィックソフトのような、お絵かきのための機能を期待してしまいますが、Drawingワークベンチは、3Dモデルから、図面を作成するためのツールセットです。3Dモデルから、図面を作成することで、3Dモデルで破たんの無い図面が作成されます。修正漏れの軽減が期待できるので、変更の多い形状で威力を発揮します。

内容は、公式ドキュメントの和訳です。

GUIツール

SVGファイルを開く

SVGファイルを開く

以前にSVGファイルとして保存された図面シートを開きます。

A3の横長書式の図面を新規作成

A3図面の新規作成

FreeCADの既定のA3テンプレートから新しい図面シートを作成します

Viewの挿入

ビューの挿入

アクティブな図面で選択したオブジェクトのViewを挿入します。

注釈

アノテーション

現在の図面に、注釈を追加します。

クリップ

Clip

現在の図面に、切り抜きグループを追加します。

ブラウザを開く

ブラウザを開く

ブラウザで現在の図面のプレビューを開きます。

正投影図

Ortho Views

自動的に、現在の図面でオブジェクトの正投影図を作成します

記号

シンボル

現在の図面の記号として、SVGファイルの内容を追加します

図面表示

図面表示

現在の図面で選択したオブジェクトの特別なDraftビューを挿入します。

表計算表示

表計算表示

現在の図面で選択した表計算のビューを挿入します。

図面を保存

図面の保存

SVGファイルとして現在のシートを保存します

形状を投影

選択したオブジェクト(ソース)の投影を3Dビューに作成します。

表題欄の内容を変更する

表題欄の内容を変更するには、「Page」フォルダを選択し、Dataタブの「Editable Text」を選択し、「...」をクリックして表示されるリストダイアログボックスを修正します。

備考

Draft Viewツールは、主に、Draftオブジェクトを紙の上に配置するために使用されます。それは、標準のDrawingツールに加えて、2つの追加の機能を持っています。 そして、図面寸法のような特別なオブジェクトをサポートしています。

Drawing extraction.png

図の中では、あなたは、Drawingモジュールの主要な概念を見ることになります。文書には、私たちが図面に抽出したい、形状オブジェクト(Schenkel)が含まれています。 その結果、「ページ」が作成されます。ページは、テンプレートを通して、インスタンス化されます。この場合、「A3_Landscape」テンプレートです。テンプレートは、あなたのロゴを表示したり、あるいは、プレゼンテーション基準に従って、あなたの普通のページフレームを格納することができるSVG文書です。

このページでは、私たちは、1つ以上のViewを挿入することができます。それぞれのビューは、ページ上の位置(プロパティX、Y)、スケールファクタ(プロパティスケール)、そして、追加プロパティを持っています。ページ、ビューや参照されるオブジェクトが変更されるたびに、ページが再生成され、ページ表示が更新されます。

スクリプト

Scripting

現在、エンド・ユーザー(GUI)の作業の流れは極めて限られているので、スクリプト用のAPIはより面白いです。ここでは、どのように、図面モジュールのスクリプトAPIを使用するかの例を示しています。

ここでは、スクリプトは、簡単に、FreeCAD A3_Landscapeに、Macro_CartoucheFCリーフを記入できます。

簡単な例

Simple example

まず、あなたは、PartとDrawingモジュールが必要です。:

import FreeCAD, Part, Drawing

小さな見本部品を作成します。

Part.show(Part.makeBox(100,100,100).cut(Part.makeCylinder(80,100)).cut(Part.makeBox(90,40,100)).cut(Part.makeBox(20,85,100))) 

直接投影します。G0は、ハード・エッジ、G1は、連続接線を示します。

Shape = App.ActiveDocument.Shape.Shape
[visibleG0,visibleG1,hiddenG0,hiddenG1] = Drawing.project(Shape)
print "visible edges:", len(visibleG0.Edges)
print "hidden edges:", len(hiddenG0.Edges) 

すべては、Z-平面に投影されました:

print "Bnd Box shape: X=",Shape.BoundBox.XLength," Y=",Shape.BoundBox.YLength," Z=",Shape.BoundBox.ZLength
print "Bnd Box project: X=",visibleG0.BoundBox.XLength," Y=",visibleG0.BoundBox.YLength," Z=",visibleG0.BoundBox.ZLength 

異なる投影ベクトル

[visibleG0,visibleG1,hiddenG0,hiddenG1] = Drawing.project(Shape,App.Vector(1,1,1)) 

SVGに投影

resultSVG = Drawing.projectToSVG(Shape,App.Vector(1,1,1))
print resultSVG 

パラメトリックな方法

The parametric way

ボディを作成します。

import FreeCAD
import Part
import Drawing

# Create three boxes and a cylinder
# 3つの直方体と円柱を作成します。

App.ActiveDocument.addObject("Part::Box","Box")
App.ActiveDocument.Box.Length=100.00
App.ActiveDocument.Box.Width=100.00
App.ActiveDocument.Box.Height=100.00

App.ActiveDocument.addObject("Part::Box","Box1")
App.ActiveDocument.Box1.Length=90.00
App.ActiveDocument.Box1.Width=40.00
App.ActiveDocument.Box1.Height=100.00

App.ActiveDocument.addObject("Part::Box","Box2")
App.ActiveDocument.Box2.Length=20.00
App.ActiveDocument.Box2.Width=85.00
App.ActiveDocument.Box2.Height=100.00

App.ActiveDocument.addObject("Part::Cylinder","Cylinder")
App.ActiveDocument.Cylinder.Radius=80.00
App.ActiveDocument.Cylinder.Height=100.00
App.ActiveDocument.Cylinder.Angle=360.00

# Fuse two boxes and the cylinder
# 2つの直方体と円柱の和集合を作成します

App.ActiveDocument.addObject("Part::Fuse","Fusion")
App.ActiveDocument.Fusion.Base = App.ActiveDocument.Cylinder
App.ActiveDocument.Fusion.Tool = App.ActiveDocument.Box1

App.ActiveDocument.addObject("Part::Fuse","Fusion1")
App.ActiveDocument.Fusion1.Base = App.ActiveDocument.Box2
App.ActiveDocument.Fusion1.Tool = App.ActiveDocument.Fusion

# Cut the fused shapes from the first box
# 最初の直方体の和集合から、形状の差集合を作成します

App.ActiveDocument.addObject("Part::Cut","Shape")
App.ActiveDocument.Shape.Base = App.ActiveDocument.Box 
App.ActiveDocument.Shape.Tool = App.ActiveDocument.Fusion1

# Hide all the intermediate shapes
# すべての中間形状を非表示にします

Gui.ActiveDocument.Box.Visibility=False
Gui.ActiveDocument.Box1.Visibility=False
Gui.ActiveDocument.Box2.Visibility=False
Gui.ActiveDocument.Cylinder.Visibility=False
Gui.ActiveDocument.Fusion.Visibility=False
Gui.ActiveDocument.Fusion1.Visibility=False 

Pageオブジェクトを挿入して、テンプレートを割り当てます。

App.ActiveDocument.addObject('Drawing::FeaturePage','Page')
App.ActiveDocument.Page.Template = App.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg' 

"Shape"オブジェクトの上に、Viewを作成します。位置と大きさを定義し、そして、それをPageに割り当てます

App.ActiveDocument.addObject('Drawing::FeatureViewPart','View')
App.ActiveDocument.View.Source = App.ActiveDocument.Shape
App.ActiveDocument.View.Direction = (0.0,0.0,1.0)
App.ActiveDocument.View.X = 10.0
App.ActiveDocument.View.Y = 10.0
App.ActiveDocument.Page.addObject(App.ActiveDocument.View) 

同じオブジェクト上に2つ目のViewを作成しますが、今回のViewは、90°回転します。

App.ActiveDocument.addObject('Drawing::FeatureViewPart','ViewRot')
App.ActiveDocument.ViewRot.Source = App.ActiveDocument.Shape
App.ActiveDocument.ViewRot.Direction = (0.0,0.0,1.0)
App.ActiveDocument.ViewRot.X = 290.0
App.ActiveDocument.ViewRot.Y = 30.0
App.ActiveDocument.ViewRot.Scale = 1.0
App.ActiveDocument.ViewRot.Rotation = 90.0
App.ActiveDocument.Page.addObject(App.ActiveDocument.ViewRot) 

同じオブジェクトの3つ目の図面を、等角投影図の方向に作成します。隠れ線もアクティブにされました。

App.ActiveDocument.addObject('Drawing::FeatureViewPart','ViewIso')
App.ActiveDocument.ViewIso.Source = App.ActiveDocument.Shape
App.ActiveDocument.ViewIso.Direction = (1.0,1.0,1.0)
App.ActiveDocument.ViewIso.X = 335.0
App.ActiveDocument.ViewIso.Y = 140.0
App.ActiveDocument.ViewIso.ShowHiddenLines = True
App.ActiveDocument.Page.addObject(App.ActiveDocument.ViewIso) 

何を変更し更新します。更新工程は、Viewとページを変更します。

App.ActiveDocument.View.X = 30.0
App.ActiveDocument.View.Y = 30.0
App.ActiveDocument.View.Scale = 1.5
App.ActiveDocument.recompute() 

細々とした物にアクセスする

Accessing the bits and pieces

1つのビューのSVGの断片を取得します。

ViewSVG = App.ActiveDocument.View.ViewResult
print ViewSVG 

全部の結果のページを取得します(それは、読み取り専用の文書の一時ディレクトリのファイルです)

print "Resulting SVG document: ",App.ActiveDocument.Page.PageResult
file = open(App.ActiveDocument.Page.PageResult,"r")
print "Result page is ",len(file.readlines())," lines long" 

重要:ファイルを解放してください!

del file 

あなた独自の内容を含むViewを挿入します:

App.ActiveDocument.addObject('Drawing::FeatureView','ViewSelf')
App.ActiveDocument.ViewSelf.ViewResult = """

  
  """
App.ActiveDocument.Page.addObject(App.ActiveDocument.ViewSelf)
App.ActiveDocument.recompute()

del ViewSVG 

これは、次の結果につながります:

DrawingScriptResult.jpg

一般的な寸法と公差

General Dimensioning and Tolerancing

公差寸法の描画は、まだ開発中ですが、あなたは、少しの作業では、いくつかの基本的な機能を手に入れることができます。

まず、あなたは、ここからgdtsvgのPythonモジュールを取得する必要があります。(警告:これは、いつでも壊れる可能性があります!)

フューチャー・コントロール・フレームを取得するために、以下を試してください:

import gdtsvg as g # Import the module, I like to give it an easy handle
                 # モジュールをインポートします。私は、それに簡単な操作機能を与えたいです
ourFrame = g.ControlFrame("0","0", g.Perpendicularity(), ".5", g.Diameter(), g.ModifyingSymbols("M"), "A",  
           g.ModifyingSymbols("F"), "B", g.ModifyingSymbols("L"), "C", g.ModifyingSymbols("I")) 

ここに、フューチャー・コントロール・フレームの詳細があります。

  1. SVG-座標(文字列型)のX-座標
  2. SVG-座標(文字列型)のY-座標
  3. 適当と思われる幾何特性記号(まず、タプル、svg文字列、2つ目に、記号の幅、3つ目に、記号の高さ)
  4. 公差(文字列型)
  5. (オプション)直径記号(まず、タプル、svg文字列、2つ目に、記号の幅、3つ目に、記号の高さ)
  6. (オプション)マテリアルの変更条件(まず、タプル、svg文字列、2つ目に、記号の幅、3つ目に、記号の高さ)
  7. (オプション)最初のデータム(文字列型)
  8. (オプション)最初のデータムの変更条件(まず、タプル、svg文字列、2つ目に、記号の幅、3つ目に、記号の高さ)
  9. (オプション)2つ目のデータム(文字列型)
  10. (オプション)2つ目のデータムの変更条件(まず、タプル、svg文字列、2つ目に、記号の幅、3つ目に、記号の高さ)
  11. (オプション)3つ目のデータム(文字列型)
  12. (オプション)3つ目のデータムの材料条件(まず、タプル、svg文字列、2つ目に、記号の幅、3つ目に、記号の高さ)

ControlFrame関数は、以下を含む型を返します。(svg文字列、コントロール・フレームの全体の幅、コントロール・フレームの全体の高さ)

寸法を取得して、以下を試します:

import gdtsvg
ourDimension = linearDimension(point1, point2, textpoint, dimensiontext, linestyle=getStyle("visible"), 
               arrowstyle=getStyle("filled"), textstyle=getStyle("text")

長さ寸法のための入力は、以下の通りです:

  • point1、svg-座標による(x,y)の組、これは、あなたが望む寸法の間の点の1つです。
  • point2、svg-座標による(x,y)の組、これは、あなたが望む寸法の間の2番目の点です
  • textpoint、これは、あなたの寸法テキストがある場所のsvg-座標の(x,y)の組です。
  • dimensiontext、あなたが望む寸法が書かれているテキストが含まれる文字列
  • linestyle、含まれている文字列プリセット文字列を取得するgetStyle関数を使用して、どのように線が見えるかのスタイルための、svg(すなわちcss)スタイル
  • arrowstyle、含まれている文字列プリセット文字列を取得するgetStyle関数を使用して、矢印がどのように見えるかのsvg(すなわちcss)スタイル
  • textstyle、含まれている文字列プリセット文字列を取得するgetStyle関数を使用して、テキストが、どのように見えるかのスタイルのためのsvg(すなわちcss)スタイル

それらの二つで、あなたは、上記のように図面ページに表示することができます。このモジュールは、極めてバグが多く、いつでも破損する可能性があります。今のところ、バグ・レポートは、githubページ上で歓迎しています。あるいは、あなたが、他の場所にバグを投稿した場合、フォーラム上で、jcc242にお問い合せ下さい。

Template

FreeCADには、一連の既定のテンプレートが付属しています。しかし、詳細については、図面テンプレート・ページにあります。

Drawingモジュールを拡張する

Extending the Drawing Module

図面モジュールのプログラミング側の上のいくつかのメモは、Drawing Documentationページに追加されます。これは、図面モジュールが、どのように動作するかを素早く理解するのに役立ち、プログラマが、素早くプログラミングを開始することができます。

チュートリアル

外部リンク

公式ドキュメント

このエントリーをはてなブックマークに追加

Home GetStart Function Tutorial

Copyright (C) 2011-2015 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」