Tekla Structure (
off.siteを参照 )-建築設計のプロセスを自動化するシステム。 大企業で使用する場合、Teklを既存のエンタープライズ管理システムに統合したいのは自然なことです。
したがって、最初のタスクは、モデルオブジェクトのツリーを取得することです。 ツリーは、モデル->アセンブリ(
Assembly )の形式である必要があります。モデルの構成->アセンブリ(
Part )の詳細。 オブジェクトツリーは、既存の図面から取得する必要があります。 図面リストのプリズムを使用してモデルを分解します(不明瞭に聞こえますが、記事の過程ですべてが明らかになります)。
使用されている開発システムVisual Studio 2013コミュニティ、c#言語。
Tekla Structureには独自のapiがあり、特別な
スタートアップパッケージ (サイトに登録した後にダウンロードできます)がインストールされています。
新しいプロジェクトを作成したら、まず、必要な* .dllをReferencesに追加します。 現在のタスクには、次のものが必要です。
- Tekla.Structures.dll(一般的な機能)
- Tekla.Structures.Model.dll(モデル自体の操作用)
- Tekla.Structures.Drawing.dll(図面の操作用)
Tekla Structureに接続接続するには、Tekla Structureが起動され、目的のモデルが開かれている必要があります。
... using Tekla.Structures; using Tekla.Structures.Drawing; using Tekla.Structures.Model; ... Model model; DrawingHandler CurrentDrawingHandler; public MainForm() { model = new Model();
図面のリストを取得する
リストを取得するために2つのオプションが開発されました。
... DrawingEnumerator drawingsEnum; if (rbSelectedDrawings.Checked) drawingsEnum = CurrentDrawingHandler.GetDrawingSelector().GetSelected();
木を造る
ここでは、モデル(
Model )のオブジェクトとして描画オブジェクト(
Drawing )を取得する方法に特に注目する価値があります。 すべての情報(組成、重量、長さ、ブランド、素材など)はモデルのオブジェクト内にあります。
ビルドするには:
Assembly assembly = model.SelectModelObject(((drawingsEnum.Current as AssemblyDrawing)).AssemblyIdentifier) as Assembly;
詳細について:
Tekla.Structures.Model.Part part = model.SelectModelObject((drawingsEnum.Current as SinglePartDrawing).PartIdentifier) as Tekla.Structures.Model.Part;
レポートからパラメーターを取得するには、次の方法を使用します:(
描画テンプレートを検討する場合、利用可能なすべてのパラメーターをTeklで表示できます )
int number = 0; assembly.GetReportProperty("MODEL_TOTAL", ref number);
ツリー自体の構築:
... NameElement = ""; ProjectInfo projectInfo = model.GetProjectInfo();
アセンブリの詳細を取得する
アセンブリには、1つのメインパーツassembly.GetMainPart()と多くのセカンダリアセンブリ.GetSecondaries()があることに注意してください。 両方を手に入れる必要があります。
private void AddChildDrawingObjectsToTreeNode(TreeNode parentNode, AssemblyDrawing parentDrawing) { Assembly assembly = model.SelectModelObject(parentDrawing.AssemblyIdentifier) as Assembly; Tekla.Structures.Model.Part part = assembly.GetMainPart() as Tekla.Structures.Model.Part; string part_pos = ""; part.GetReportProperty("PART_POS", ref part_pos); TreeNode objectNode = new TreeNode(); objectNode.Tag = part; objectNode.Text = part_pos; parentNode.Nodes.Add(objectNode); ArrayList secondaries = assembly.GetSecondaries(); for (int i = 0; i < secondaries.Count; i++) { Tekla.Structures.Model.ModelObject modelObject = secondaries[i] as Tekla.Structures.Model.ModelObject; part_pos = ""; modelObject.GetReportProperty("PART_POS", ref part_pos); objectNode = new TreeNode(); objectNode.Tag = modelObject; objectNode.Text = part_pos; parentNode.Nodes.Add(objectNode); } }
すべての詳細(
パート )から、メソッドを使用して子を取得することもできます。
ModelObjectEnumerator modelObjectEnum = part.GetChildren();
最初の問題は解決されました。
コードを記述するときに使用されるソース
- cadsupport.ru
- software-solutions-online.com
- topengineer.ru
- そしてもちろん、API、例、およびTekl自体が提供するその他のデータに関するヘルプ