NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

Scale.viの使い方

解決済み
解決策を見る

1×0.25×0.25の長方形が、歪み印加によってX軸上左右に5mmずつ伸びる3D pictureを作ろうと考えています。
しかし、印加前のpictureがそのまま印加後のpictureに追加されてしまいます。

私としては、軸が無く、長方形だけを引き伸ばしたく、ブロックダイアグラムもscale.viにかけるのは長方形のオブジェクトだけにするように配線しました。

しかし、軸もscaleされてしまい、印加後のpictureではscaleされた軸とされていない元の軸が重なり合う形になってしまいました。

軸がscaleされないためにはどうVIを修正したらいいかご教授いただきたいと思います。(私の予想としてはScale.VIのタイプ選択をいじればいいのかなと予想しています。)

何卒よろしくお願いいたします。

0 件の賞賛
メッセージ1/3
1,492件の閲覧回数

これは、リファレンスを使うときのLabVIEWあるあるですね。

LabVIEWから始めた人は、ワイヤを分岐して処理した後も分岐前のワイヤは元の値を保持していると考えます。しかしワイヤがリファレンス(他の言語で言うポインタやハンドルのようなものでデータの所在地を示す整数)の場合は違います。


3Dシーンのオブジェクトワイヤはリファレンスなので、ボックスだけを含むワイヤに軸を追加すると、元のワイヤが指し示す先も軸を含んだデータとなります。つまりForループに入るワイヤはボックスと軸が含まれたデータを指しているので、両方がスケールされた絵が描画されます。

 

解決するには「ひずみ印加前」のためのコードを無くしてしまう(改.vi)か、別のオブジェクトを作って操作(改2.vi)してやればいいと思います。
なお、リファレンスを作成したら最後にクローズしておかないとメモリリークの原因になるので注意して下さい。

すべてをダウンロード
メッセージ2/3
1,447件の閲覧回数
解決策
トピック作成者csti22042が受理

ご返信ありがとうございます。リファレンスと値だと保持されるものが全然違うと理解させていただきました。

ご丁寧に解説ありがとうございます。

 

別のオブジェを作る案は思いつかなかったので、良い勉強になりました。

 

クローズについても承知いたしました。

0 件の賞賛
メッセージ3/3
1,444件の閲覧回数