![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
このコードで線が引けました、しかし線を回転させたいのですが、座標ではなく、FORMにTEXTBOXがありそこに角度を入力すれば直線が斜めになるとゆうコードにしたいのです。
どうかよろしくお願いします。(CAD系のコードになります)
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
' LineData用の変数です。
Dim cadLineData As New zwDrawCAD.LineData
' 線分の始点と終点を参照します。
Dim cadStartPoint As zwDrawCAD.DPoint = cadLineData.Start
Dim cadEndPoint As zwDrawCAD.DPoint = cadLineData.End
' 線分の座標を設定します。
cadStartPoint.x = 100
cadStartPoint.y = 100
cadEndPoint.x = CDbl(TextBox1.Text)
cadEndPoint.y = 100
'線分の角度を設定します。
Dim d As Double = 45 / (180 / Math.dI)
' 参照したオブ ジェクトを解放します。
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("始点座標(0,0) 終点座標((textbox.text),0) の線分")
' 追加した要素の参照用変数です。
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)
End Sub
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
![「VB2010 直線の回転」の回答画像3](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/3/1466276_5497e9ed8043a/M.jpg)
この回答への補足
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)
エラーは出ませんでしたが、作図できませんでした
どこかがおかしいコードになってるのかと思います、教えていただけないでしょうか。
本当にありがとうございました、補足については解決いたしました。
説明不足の説明でしたが、親身な回答をいただきまして助かりました。
No.2
- 回答日時:
回転させるためには、回転の中心座標が必要ですが、どこを中心に回転させるのでしょうか?
この回答への補足
回答ありがとうございます。分かりずらい説明ですいません。
’線分の座標を設定します。
cadStartPoint.x = 100
cadStartPoint.y = 100
を中心に回転させたいです。
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Excel(エクセル) 列の最終行に新たに入力されたらその値を自動参照 1 2023/01/21 09:59
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
3次元空間上の2つの座標から...
-
ダイアログ内コントロールの位...
-
VB6で2点間の直線の長さを求め...
-
Excel VBA で自在に図形を変化...
-
住所から経緯経度を出したい
-
空間上の二点を結ぶ直線上に任...
-
位置座標からx軸となす角度(ラ...
-
エクセルである点からの距離で...
-
直線を描画するプログラム
-
VB2010 直線の回転
-
多角形の内部かどうか判定する方法
-
座標など - イラストレータ CS2
-
エクセルシート上のマウスポイ...
-
演算子と座標変換
-
3D→2Dの座標変換で、スクリーン...
-
サーボモータの制御
-
OpenCvSharp4による画像判定解...
-
一番近い点を見つけたい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
エクセルである点からの距離で...
-
エクセルで回転する座標の出し方
-
3次元空間上の2つの座標から...
-
始点、終点の二つの座標と半径...
-
c言語でキーボードから2点の座...
-
閉図形の座標の配列が右回りか...
-
以下のプログラムは重心を求め...
-
交差する2線分の交点座標の求め方
-
y=x^2の座標をプロットするプロ...
-
ダイアログ内コントロールの位...
-
シーケンサー(PLC?)で制...
-
ガウシアンフィルタのCプログラム
-
多角形の内部かどうか判定する方法
-
直線上にある点の座標の求め方
-
エクセルシート上のマウスポイ...
-
OpenCvSharp4による画像判定解...
-
C言語 配列で座標
-
ピクチャボックスの座標取得
おすすめ情報