• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB2010 直線の回転)

VB2010 直線の回転

このQ&Aのポイント
  • VB2010で直線を引いた後、角度を入力することで直線を回転させる方法を知りたい。
  • CAD系のコードであるVB2010で、直線の座標を指定して引くことはできるが、角度を入力して直線を斜めにする方法がわからない。
  • VB2010のコードで、直線を引いた後に角度を指定し、直線を回転させる方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こんにちは コピペして、どのようなコードなのか調べようと思いましたが、残念ながら、クラスのコードがありませんでしたので、調べることができませんでした。 なにやら、とても難しいコードのようなので、そう簡単な質問ではないですね。 私もCADのアプリは毎日使用してますが、3Dだの動画シュミレーションだの、とても自力で開発できるレベルではないので、高額な金額を払って購入しました。 というわけで、回答はできませんが、他の方が回答するヒントになるかもしれませんので、みんなが知ってる超簡単なサンプルを掲載します。 なんでも結構ですので、megane-enagem さんが思ったことを、補足情報で返信して頂けるとうれしいです。 例  「そんなことは、知ってるよ」とか「TextBoxは1個です」とか、なんでも結構です、他の方の回答の参考になると思います 。 Public Class Form1 'cadStartPointがわかりませんので、とりあえず線のスタート点は(100,100)にしてます。 Const X As Integer = 100 'cadStartPoint.x = 100 Const Y As Integer = 100 'cadStartPoint.y = 100 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim len As Integer 'TextBox1に入力された線の長さ Dim angle As Double 'TextBox2に入力された角度 単位は度 Dim ansx As Integer '計算された、xの座標 Dim ansy As Integer '計算された、yの座標 len = TextBox1.Text angle = TextBox2.Text ansx = X + len * (Math.Cos(angle / 180 * Math.PI)) '終点のx座標 ansy = Y - len * (Math.Sin(angle / 180 * Math.PI)) '終点のy座標 Dim g As Graphics g = Me.CreateGraphics '線の終点は、ansx、ansy にしてます。 g.DrawLine(Pens.Black, 100, 100, ansx, ansy) 'スタート点は(100,100)にしてます。 End Sub End Class

megane-enagem
質問者

お礼

本当にありがとうございました、補足については解決いたしました。 説明不足の説明でしたが、親身な回答をいただきまして助かりました。

megane-enagem
質問者

補足

FORMにこのコードで作図できましたが、図面の方には作図できませんでした。 Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click ' LineData用の変数です。 Dim cadLineData As New zwDrawCAD.LineData 'とりあえず線のスタート点は(100,100)にしてます。 Dim cadStartPoint As zwDrawCAD.DPoint = cadLineData.Start Dim cadEndPoint As zwDrawCAD.DPoint = cadLineData.End cadStartPoint.x = 100 cadStartPoint.y = 100 Const X As Integer = 100 'cadStartPoint.x = 100 Const Y As Integer = 100 'cadStartPoint.y = 100 Dim len As Integer 'TextBox1に入力された線の長さ Dim angle As Double 'TextBox2に入力された角度 単位は度 Dim ansx As Integer '計算された、xの座標 Dim ansy As Integer '計算された、yの座標 len = CDbl(TextBox1.Text) angle = CDbl(TextBox2.Text) ansx = X + len * (Math.Cos(angle / 180 * Math.PI)) '終点のx座標 ansy = Y - len * (Math.Sin(angle / 180 * Math.PI)) '終点のy座標 ' 参照したオブ ジェクトを解放します。 System.Runtime.InteropServices.Marshal.ReleaseComObject(cadStartPoint) System.Runtime.InteropServices.Marshal.ReleaseComObject(cadEndPoint) ' アクティブなDocumentを参照します。 Dim cadDocument As zwDrawCAD.Document = cadApplication.ActiveDocument ' 現在の作図属性を参照します。 Dim cadCurrentDraw As zwDrawCAD.DrawData = cadDocument.CurrentDraw ' 現在のレイヤ、線種、線幅、線色を設定します。 cadLineData.LayerNo = cadCurrentDraw.LayerNo cadLineData.PenStyle = cadCurrentDraw.PenStyle cadLineData.PenWidth = cadCurrentDraw.PenWidth cadLineData.PenColor = cadCurrentDraw.PenColor ' 参照したオブジェクトを解放します。 System.Runtime.InteropServices.Marshal.ReleaseComObject(cadCurrentDraw) ' データベースを参照します。 Dim cadDataBase As zwDrawCAD.CADDB = cadDocument.DataBase ' Undo情報を設定します。 cadDataBase.SetDelimitter("始点座標(100,100) 終点座標((ansx,ansy) の線分") ' 追加した要素の参照用変数です。 Dim cadAddPrimitive As zwDrawCAD.Primitive ' 要素を追加します。 cadAddPrimitive = cadDataBase.Add(cadLineData) ' 参照したオブジェクトを解放します。 System.Runtime.InteropServices.Marshal.ReleaseComObject(cadAddPrimitive) System.Runtime.InteropServices.Marshal.ReleaseComObject(cadLineData) System.Runtime.InteropServices.Marshal.ReleaseComObject(cadDataBase) System.Runtime.InteropServices.Marshal.ReleaseComObject(cadDocument) エラーは出ませんでしたが、作図できませんでした どこかがおかしいコードになってるのかと思います、教えていただけないでしょうか。

その他の回答 (2)

回答No.2

回転させるためには、回転の中心座標が必要ですが、どこを中心に回転させるのでしょうか?

megane-enagem
質問者

補足

回答ありがとうございます。分かりずらい説明ですいません。 ’線分の座標を設定します。 cadStartPoint.x = 100 cadStartPoint.y = 100 を中心に回転させたいです。 宜しくお願いします。

  • LHS07
  • ベストアンサー率22% (510/2221)
回答No.1

回転はマトリックスを使います。 行列のことです。

関連するQ&A