0

目的

こんにちは。新しいシートに単一のビューポートを追加し、ビューポートを空または単なる線ではなく、viewTitle を表示するように変更するボタンを Revit で作成する作業を行っています。

エラー

ボタンを初めて実行すると、ビュー タイトルの「線」が表示されているにもかかわらず、ビュー タイトルがロードされたファミリに設定されていないことを除いて、すべてが機能します。ボタンを 2 回目に実行すると、エラーが発生します。

ボタンをもう一度実行しようとすると、次のエラーが表示されます。

Exception thrown: 'Autodesk.Revit.Exceptions.InternalException' in RevitAPI.dll
A managed exception was thrown by Revit or by one of its external applications.

エラーは次の行で発生します。

Viewport newViewPort = Viewport.Create(doc, viewSheet.Id, duplicatedPlan2Copy, new XYZ(location.U, location.V, 0));

探検

私が調査したところ、ボタンは既にアクセスされている要素にアクセスしようとしていますが、スケールを変更している場合は、ViewTitle を変更できるはずです。この質問の下部にある参照を参照してください

ここにトランザクションにある私のコードの一部があります

FamilySymbol firstSheet = colTitleBlocks.FirstElement() as FamilySymbol;
ViewSheet viewSheet = ViewSheet.Create(doc, firstSheet.Id);
UV location = new UV((viewSheet.Outline.Max.U - viewSheet.Outline.Min.U) / 2,
                                            (viewSheet.Outline.Max.V - viewSheet.Outline.Min.V) / 2);

ElementId duplicatedPlan2Copy = duplicatedPlan.Duplicate(ViewDuplicateOption.WithDetailing);
Viewport newViewPort = Viewport.Create(doc, viewSheet.Id, duplicatedPlan2Copy, new XYZ(location.U, location.V, 0));

コードからこの行を削除すると、次のことがわかりました bool elementType = doc.GetElement(newViewPort.GetTypeId()).get_Parameter(BuiltInParameter.VIEWPORT_ATTR_LABEL_TAG).Set(viewTitleIdCommand);

それは機能し、新しいシートを作成し、ビューのタイトル行だけでビューポートを配置することができます。

ありとあらゆる助けをいただければ幸いです。 このリンクはこちらで、2 つの個別のトランザクション コミットで問題が解決したことを示していますが、試してみましたがうまくいきませんでした。これは似たようなものを示しています

これは、ボタンに関する他の関連する質問への参照です

4

2 に答える 2