0

以下のc#およびVb.netのコードを使用して、曲線を段階的に回転させようとしています(エディターはすでに必要なライブラリをインポートしています)。私の3Dモデリングプログラムでは、角度の異なる線ではなく、重なり合う線が表示されます。私は何が間違っているのですか?

C#の場合:

private void RunScript(Curve ln, int x, double angle, ref object A)
{
List<Curve> lines = new List<Curve>();
Int16 i = default(Int16);
for(i = 0; i <= x; i++){
ln.Rotate(angle * i, Vector3d.ZAxis, ln.PointAtEnd);
lines.Insert(i, ln);
}
A = lines;

VB.netの場合:

Private Sub RunScript(ByVal ln As Curve, ByVal x As Integer, ByVal angle As Double,          
ByRef A As Object)

Dim lns As New List(Of Curve)()
Dim i As Int16
For i = 0 To x
ln.Transform(transform.Rotation(angle * i, vector3d.ZAxis, ln.PointAtEnd))
lns.Insert(i, ln)
Next
A = lns
4

1 に答える 1

0

ループ内の次の行を回転させる前に行を複製する必要があります。そうしないと、行の痕跡がありません。

C#の場合:

private void RunScript(Curve ln, int x, double angle, ref object A)
{
 List<Curve> lns = new List<Curve>;
 for (int = 0; i<= x; i++)
  {
   Curve copy = ln.DuplicateCurve();
   copy.Rotate(angle * i, Vector3d.ZAxis, ln.PointAtEnd);
   lns.Add(copy);
  }
}
A = lns;

VB.netの場合:

Private Sub RunScript(By Val ln As Curve, ByVal x As Integer, ByVal angle As Double, By Ref A as Object)
  Dim lns As New List(Of Curve) ()
  For i As Integer = 0 To x
     Dim nl As Curve = ln.DuplicateCurve()
     nl.Transform(transform.Rotation(angle*i, vector3D.ZAxis, ln.PointAtEnd))
     lns.Add(nl)
  Next
  A = lns
End Sub
于 2012-04-14T12:23:24.033 に答える