04-13-2023 03:42 AM
1×0.25×0.25の長方形が、歪み印加によってX軸上左右に5mmずつ伸びる3D pictureを作ろうと考えています。
しかし、印加前のpictureがそのまま印加後のpictureに追加されてしまいます。
私としては、軸が無く、長方形だけを引き伸ばしたく、ブロックダイアグラムもscale.viにかけるのは長方形のオブジェクトだけにするように配線しました。
しかし、軸もscaleされてしまい、印加後のpictureではscaleされた軸とされていない元の軸が重なり合う形になってしまいました。
軸がscaleされないためにはどうVIを修正したらいいかご教授いただきたいと思います。(私の予想としてはScale.VIのタイプ選択をいじればいいのかなと予想しています。)
何卒よろしくお願いいたします。
解決済! 解決策の投稿を見る。
04-14-2023 03:13 AM
これは、リファレンスを使うときのLabVIEWあるあるですね。
LabVIEWから始めた人は、ワイヤを分岐して処理した後も分岐前のワイヤは元の値を保持していると考えます。しかしワイヤがリファレンス(他の言語で言うポインタやハンドルのようなものでデータの所在地を示す整数)の場合は違います。
3Dシーンのオブジェクトワイヤはリファレンスなので、ボックスだけを含むワイヤに軸を追加すると、元のワイヤが指し示す先も軸を含んだデータとなります。つまりForループに入るワイヤはボックスと軸が含まれたデータを指しているので、両方がスケールされた絵が描画されます。
解決するには「ひずみ印加前」のためのコードを無くしてしまう(改.vi)か、別のオブジェクトを作って操作(改2.vi)してやればいいと思います。
なお、リファレンスを作成したら最後にクローズしておかないとメモリリークの原因になるので注意して下さい。
04-14-2023 03:23 AM
ご返信ありがとうございます。リファレンスと値だと保持されるものが全然違うと理解させていただきました。
ご丁寧に解説ありがとうございます。
別のオブジェを作る案は思いつかなかったので、良い勉強になりました。
クローズについても承知いたしました。