Vue での bimface の使用に関する詳細

Vue での bimface の使用に関する詳細

全体のプロセスは次のステップに分かれています。

  • 1. vueスキャフォールディングをインストールする
  • 2. プロジェクトを作成する
  • 3. bimfaceレスポンスファイルをインポートする
  • 4. App.vueファイルを修正してページレンダリングを実現する

1. Vue スキャフォールディングをインストールする

ここではVue CLIがまだ使用されています

次のコマンドを使用して、vue scaffoldingツールをグローバルにインストールします。

npm インストール -g @vue/cli


インストール後、 nrmをインストールしてミラーソースを切り替えるか、次のステップに直接進むことができます。

2. プロジェクトを作成する

適切なディレクトリを見つけて、cmdまたはpowshellを開き、次のコマンドを入力してbimface-demoという名前のプロジェクトを作成します。

 vue 作成 bimface デモ


次に、スクリーンショットで示される一連の選択肢があります

上矢印と下矢印を使用してManually select featuresを選択します。これは、デフォルトの構成が適用できないことを意味します。代わりに、Vue プロジェクトを自分で構成し、Enter キーを押す必要があります。

次に、上記の選択内容をテンプレートとして保存するかどうかを尋ねられます。次回 Vue プロジェクトを作成するときに、このテンプレートを直接使用できます。ここで n と入力して Enter キーを押すと、プロジェクトが作成されるまで待機できます。

3.1 プロジェクトを実行する

まずプロジェクトを実行して、プロジェクトが正常に作成されたかどうかを確認します。

vs cde (webstormなどではなくvs codeが推奨)を使用して、新しく作成されたプロジェクトbimface-demoを開きます。

これを開くには、vs cde のメニュー バーで [ファイル] -> [フォルダーを開く] を選択し、 bimface-demoフォルダーを選択して [フォルダーの選択] をクリックします。

開いたら、エディターの左側にある「エクスプローラー」で、空白部分を右クリックして「継承されたターミナルで開く」を選択するか、ショートカットキー ctrl+` (TAB キーの上にあるキー) を使用してエディターでターミナルを開きます。これは、cmd に似たコマンドラインツールです。cmd や Powshell を特に開かなくても、ここでいくつかのコマンドを入力できます。

ターミナルに次のコマンドを入力し、Enterキーを押してサービスを開始します。

npm 実行サーブ
 

次のインターフェースが表示されたら、起動は成功したことを意味します。

3.2 bimfaceファイルのインポート

以上が準備です。それではコードを書き始めましょう。

Glodon はBimfaceSDKLoaderなどのbimfaceの関連パッケージを提供していないため、npm 経由で Vue プロジェクトにBimfaceSDKLoaderインストールすることは不可能であり、従来の方法でのみ導入できます。

プロジェクト ディレクトリで、public ディレクトリ内のindex.html見つけて開きます。

ここでdemoで紹介されているいくつかのCSSとJSファイルをインポートし、ファイルを保存することを忘れないでください。

4. ページレンダリングを実装する

まず、プロジェクトのルートディレクトリにある.eslintrc.jsファイルを見つけて開き、赤でマークされたファイルをコメントアウトして、 ESLintのコードチェックをキャンセルし、多くのトラブルを回避します。

次に、プロジェクトのルートディレクトリのsrcディレクトリにあるApp.vueファイルを見つけて開き、このページにコードを記述して、 bimfaceモデルをレンダリングします。

4.1 HTMLの変更

デモのプロジェクトコードをvueファイルのtemplateにコピーします。

<テンプレート>
  <div id="アプリ">
    <セクションクラス="wrap">
      <セクション class="ビューアボックス">
        <div class="viewer-2d" id="viewer2d"></div>
        <div class="viewer-3d" id="viewer3d"></div>
      </セクション>
    </セクション>
  </div>
</テンプレート>


4.2 CSSの変更

ファイル内のスタイルタグ内のすべてのコードを削除します

4.3 JSの変更

demoのjsコードを変更し、スクリプトタグにコピーします。

コンポーネントに必要なデータを格納するためのデータ関数を追加する

mountedメソッドを追加し、次のコードを追加します。

現在のコンポーネントを示すために、 this キーワードが適切な場所に追加されることに注意してください。

 マウント() {
    オプションを新しいBimfaceSDKLoaderConfig()に追加します。
    オプションのviewToken = this.viewToken;
    BimfaceSDKLoader.load(オプション、this.successCallback、this.failureCallback);
  },


methodsに2つのカスタムメソッドsuccessCallbackfailureCallback追加します。

注:メソッドの先頭で、that 変数は this を参照するように宣言されています。これは、この関数では、場合によっては this が現在の vue コンポーネントを参照しなくなるためです。

方法:{
     成功コールバック(viewMetaData) {
       それを=これとする
      // DOM要素を取得します。let dom3d = document.getElementById('viewer3d');
      // 構成パラメータ let config = new Glodon.Bimface.Application.WebApplication3DConfig();
      DOM要素をDOM3Dに設定します。
      config.enableViewhouse = false;
      //ツールバーをキャンセルします config.Toolbars = [];
      // viewer3D オブジェクトを作成します。let app = new Glodon.Bimface.Application.WebApplication3D(config);
      // モデルを追加します app.addView(that.viewToken);
      viewer3D を app.getViewer() に設定します。
 
      //モデルクリックリスナーイベント app.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.MouseClicked, function (objectData) {
        コンポーネントID = オブジェクトデータ.オブジェクトID;
        //モデルコンポーネントIDに従って対応する図面のコンポーネントIDを取得します
        that.viewerDrawing.toDrawingId(that.componentId、getElementId);
        // 描画関数に対応する要素IDを取得するためのコールバック関数を定義します。getElementId(elementId) {
          if (要素ID) {
            //現在の図面に対応するモデル コンポーネント ID がある場合は、対応する位置にズームします that.viewerDrawing.zoomToObject(elementId);
            that.viewerDrawing.update();
          } それ以外 {
            //現在の図面に対応するモデル コンポーネント ID がない場合は、コンポーネントを含む図面があるかどうかをさらに判断する必要があります。viewer3D.getDrawingListbyId(that.fileId, that.componentId, getDrawing);
            関数 getDrawing(データ) {
              if (データの長さ) {
                // 2D と 3D のリンクの最初の図面を取得します。let drawingId = data[0].viewInfo.id;
                that.viewerDrawing.destroy();
                that.viewerDrawing.load(ビュートークン、描画ID)
              }
            }
          }
        }
      }
      )
 
      // ビューの追加が完了したイベントをリッスンします。app.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.ViewAdded, function () {
        // 3D モデルをレンダリングします app.render();
        //適応型画面サイズ window.onresize = function () {
          viewer3D.resize(document.documentElement.clientWidth、document.documentElement.clientHeight - 40) をリサイズします。
        }
        //右上隅のビューハウスを非表示にする
        //viewer3D.hideViewHouse();
        options2d = new BimfaceSDKLoaderConfig();
        options2d.viewToken = that.viewToken;
        options2d.viewType = BimfaceViewTypeOption.DrawingView;
        BimfaceSDKLoader.load(options2d、successCallback2d、failureCallback2d);
        関数 successCallback2d(viewMetaData) {
          dom2d = document.getElementById('viewer2d'); とします。
          config2d = new Glodon.Bimface.Viewer.ViewerDrawingConfig() を追加します。
          config2d.domElement = dom2d;
          // 図面を追加します that.viewerDrawing = new Glodon.Bimface.Viewer.ViewerDrawing(config2d);
          drawingUrl を viewMetaData.drawingUrl とします。
          //単一のモデルの場合は、図面IDを渡すだけです
          _id = 582803 とします。
          that.viewerDrawing.load(that.viewToken, _id);
 
          //統合モデルの場合は、図面IDと単一モデルのファイルIDを渡す必要があります
          // _id =1287057 とします。
          // _fileid =1628186476905664 とします。
          // viewerDrawing.load(viewToken,_id,_fileid);
 
          // 図面の読み込み完了イベントをリッスンします。that.viewerDrawing.addEventListener(Glodon.Bimface.Viewer.ViewerDrawingEvent.Loaded, zoomToElement);
 
          関数 zoomToElement() {
            if (その.componentId) {
              that.viewerDrawing.toDrawingId(that.componentId, 関数(要素Id) {
                //対応する位置にズームします that.viewerDrawing.zoomToObject(elementId);
                that.viewerDrawing.update();
                console.log(要素ID);
              })
            } それ以外 {
              console.log("!コンポーネントID");
            }
          }
 
          that.viewerDrawing.addEventListener(Glodon.Bimface.Viewer.ViewerDrawingEvent.SelectionChanged、関数(objectData) {
            オブジェクトデータの長さが0より大きい場合
              //図面上でクリックされたコンポーネントIDに応じて対応するモデルコンポーネントIDを取得します
              componentId_2 を that.viewerDrawing.toModelId(objectData[0]) とします。
              ビューア3D.clearIsolation();
              //componentviewer3D.setSelectedComponentsById([componentId_2]); を見つけます。
              //コンポーネントがあるかどうか let isExist = viewer3D.getViewer().getComponentInfoByUserId(componentId_2);
              存在する場合
                ビューア3D.選択されたコンポーネントにズームします();
              } それ以外 {
                ビューア3D.レンダリング();
              }
            }
          })
        }
        関数 failureCallback2d(エラー) {
          コンソール.log(エラー);
        }
      })
    },
    失敗コールバック(エラー) {
      コンソール.log(エラー);
    }
  }

これで、 vueでのbimfaceの使用に関する詳細についての記事は終了です。vue での bimface の使用に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  MySQLで最大接続数を達成する方法

>>:  Element-UI の Select と Cascader にポップアップ下部アクション ボタンを追加する方法

推薦する

Ubuntu16.04にCUDA9.0をインストールするための詳細なチュートリアル

序文:この記事は、CUDA 9.0 をインストールした経験に基づいています。CUDA 9.0 は現在...

MySQL 8.0 の新しいリレーショナル データベース機能の詳細な説明

序文MySQL 8.0 の最新バージョンは 8.0.4 rc であり、正式版は近日中にリリースされる...

CSS3 フィルター (フィルタ) ウェブページのグレーまたは黒モードのサンプルコードを実現

フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...

MySQL データベース インデックスが B+ ツリーの使用を選択するのはなぜですか?

MySQL データベース インデックスが B+ ツリーを使用する理由をさらに分析する前に、データ構...

CentOS7でFTPサーバーを設定する方法

FTP は主にファイル転送に使用され、Linux では vsftpd で実装されるのが一般的です。F...

Docker Consul の概要とクラスター環境構築手順(グラフィカルな説明)

目次1. Dockerコンサルの概要2. nginxとconsulをベースにした自動検出と高可用性の...

JavaScript で右クリック メニューを統合する layim のサンプル コード

目次1. 効果の実証2. 実装チュートリアル3. 最後に、完全なコードを添付します4. その他の右ク...

フレックスレイアウトが子要素によって引き伸ばされたときに、コンテンツをコンテナ内に保持する方法

モバイル デバイスでは、フレックス レイアウトが非常に便利です。デバイスの幅に応じてコンテナーの幅を...

MySQL マルチバージョン同時実行制御 MVCC の実装

トランザクション分離レベルの設定 グローバルトランザクション分離レベルを読み取りコミット済みに設定;...

WeChatアプレットは日付と時刻に基づいた並べ替え機能を実装

最近、小さなプログラム プロジェクトを引き継いだのですが、リストを日付と時刻で並べ替えるという要件が...

Vueはダイアログのカプセル化を実装します

目次Vue2 ライティングVue3プラグインのバージョンの記述Vue3 動的コンポーネントの記述書き...

最も単純な ErrorBoundary コンポーネントをカプセル化して、React 例外を処理する

序文React 16から、子コンポーネントで発生したエラーを捕捉し、エラーログを記録し、ダウングレー...

MySQLトリガーの簡単な使用例

この記事では、例を使用して MySQL トリガーの簡単な使用方法を説明します。ご参考までに、詳細は以...

要素タイムラインの実装

目次コンポーネント - タイムラインカスタムノードスタイルカスタムタイムスタンプコンポーネント - ...

数千万のMySQLデータ量を素早くページ分割する方法

序文バックエンド開発では、一度に大量のデータがロードされ、メモリやディスク IO のオーバーヘッドが...