このコードで線が引けました、しかし線を回転させたいのですが、座標ではなく、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
この回答への補足
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マインクラフト(pc版)で座標...
-
グラフの交点の求め方(Excel)
-
VB.netでSTLファイルの分離
-
任意の座標が、閉図形の内側か...
-
(VC++2010)画像をドラッグした...
-
ピクセルの座標を取得するには
-
ワード上Shapeの位置情報を統一...
-
∠ABCに内接する円の中心・接点...
-
C言語で制作するピラミッドアー...
-
Tiny Basicでのグラフィック。。
-
3次元空間上の2つの座標から...
-
VB.net フォームをなめらかに移...
-
多角形の内部かどうか判定する方法
-
添削お願いします(C言語)
-
Pythonの質問です。 input関数...
-
以下のプログラムは重心を求め...
-
エクセルで回転する座標の出し方
-
円弧の描画について
-
ガウシアンフィルタのCプログラム
-
求積表の計算方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
以下のプログラムは重心を求め...
-
ダイアログ内コントロールの位...
-
3次元空間上の2つの座標から...
-
エクセルである点からの距離で...
-
エクセルで回転する座標の出し方
-
シーケンサー(PLC?)で制...
-
C言語 配列で座標
-
始点、終点の二つの座標と半径...
-
閉図形の座標の配列が右回りか...
-
一番近い点を見つけたい。
-
ワード上Shapeの位置情報を統一...
-
最小二乗平面
-
多角形の内部かどうか判定する方法
-
タッチパッドのタッチ座標取得
-
Excel VBA で自在に図形を変化...
-
座標を持った平面範囲に座標を...
-
ピクチャボックスの座標取得
-
DirectInputでの現在のマウス座...
おすすめ情報