[[20110309095643]] 『正五角形・正六角形の描き方』(韋駄天一) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『正五角形・正六角形の描き方』(韋駄天一)
「Excel2010」「Windows 7」です。
Excel2010の図形にある五角形・六角形は「正」ではなく歪な形になります。どうすれば正五角形・正六角形を描けるのでしょうか?

 こちらは Excel2002ですが、図形線画なら Shiftキーを押しながら
 ドラックすると正多角形になります。

 2010で違ってたらごめんなさいです。
 
(純丸)(o^-')b

純丸さん ありがとうございます。
ところが、元からある図形自体が歪なのです。


[20110309104102] 『(続)正五角形・正六角形の描き方』(韋駄天一)
 「Excel2010」「Windows 7」です。 Excel2010の図形線画にある五角形・六角形自体が「正」ではなく歪な形です。どうすれば正五角形・正六角形を描けるのでしょうか?


 なんで新スレ立ててんの?


 なぜ何度も同じ質問を繰り返されるのでしょうか。

 統合しました。
 (川野鮎太郎)3/10 10:48


やり方がよくわかりませんでした。
すみません。ありがとうございました。
元からある図形自体が歪であることを伝えたかったのです。
(韋駄天一)

 >ところが、元からある図形自体が歪なのです。
 これを、「正○角形にしたい」と言う事ですか?
 「今から図形を描くときに、正○角形の図形を描きたい」
 と言う事ではなく。。。?

 タブン、図の書式設定か何かにサイズを入力出来る所があると思うので
 高さと幅に同じ値を設定してみてはどうでしょう。

 これまた出来なかったら済みませんが。。。

 (HANA)


 元からある図形を選択し、書式>オートシェープ>サイズで倍率の縦横比を固定にチェックが入ってれば外し、高さと幅を合わせる。

 おっと、、、2010だと操作方法は違うか・・・。

 ただし、印刷したときに正多角形になるとは限りません。

 (川野鮎太郎)

 高さと幅では正多角形にならないような・・・
 確かに、元のShapeはびみょ〜に歪んでいるようにも見えますね。

 逆にExcelでそこまでの精度の図形が必要なのかなぁ?とも思えますが。

 自身で作ってしまうのはどうでしょう?

  Sub MakePolygon()
  Dim shp As Object
  Dim i As Long, n As Long
  Dim r As Double, s As Double, Pi As Double
  Dim cx As Double, cy As Double, x As Double, y As Double
  r = Application.InputBox("半径?", Type:=1)
  n = Application.InputBox("正?角形", Type:=1)
  Pi = Atn(1) * 4
  s = Pi / 2 - 2 * Pi / n
  With ActiveCell
    cx = .Left
    cy = .Top
  End With
  For i = 1 To n + 1
    x = Cos(2 * Pi * i / n - s) * r + cx
    y = Sin(2 * Pi * i / n - s) * r + cy
    If i = 1 Then
      Set shp = ActiveSheet.Shapes.BuildFreeform(msoEditingCorner, x, y)
    Else
      shp.AddNodes msoSegmentLine, msoEditingCorner, x, y
    End If
  Next i
  shp.ConvertToShape
  End Sub

 (momo)


 >元からある図形自体が歪なのです。
 これはもうどうしようも無いですね。
 微妙にいびつなのでぱっと見じゃ解りませんけど。
 前に○で泣いたことがあります。
 (Jaka)

 >高さと幅では正多角形にならないような・・・
 あっっ、本当ですね。。。!!^^;

 (HANA)


 こんにちは。
五角形、六角形のサイズを↓と同比率にすると、ほぼ正多角形に見えますよ。

  ※「_」セルは未入力または""
  [R/C]         [A]       [B]        [C]        [D]    [E]
   [1]            _     正5縦      正5横      正6縦  正6横
   [2]        半径1  1.809017   1.902113  1.7320508      2
   [3]        半径2  3.618034  3.8042261  3.4641016      4
   [4]   入力サイズ      3.62       3.81       3.47      4

  B2 =1+COS(PI()/5)
  C2 =2*SIN(PI()*2/5)
  D2 =SQRT(3)
  E2 : 入力
 
(コタ)


皆さん ありがとうございます。

momoさんの内容は初心者の私にはわかりません。
コタさんの数値を入力してみましたがダメでした。

実はこの図形を型紙にしてサッカーボールを作りたいのです。
元の図形が少しでも歪だと最終的に球形になりません。

あきらめて、定規・分度器・コンパスで作製しようかなと思っています。
皆さん ありがとうございました。

(韋駄天一)


 もう見ておられないかもしれませんが、
 そういうことでしたら、CADで書いたほうが良いですね。
 無料のCADがダウンロードできますよ。

 (川野鮎太郎)


 結局、データ上だけですので印刷したらまた歪んだりしますから・・・
 その用途なら川野鮎太郎さんの仰るようにCADが正解だと思いますね。
 (momo)


確かにCADだと簡単ですね。
CADは以前工場で使っていました。
だからPCでも簡単にできると思ったのですが…….

取り急ぎ前述の文房具で作成してみます。
無料のCADは、後日調べてみます。

ありがとうございました。

(韋駄天一)


 >実はこの図形を型紙にしてサッカーボールを作りたいのです。
 そしたら、こんな感じで探すと
http://www.google.co.jp/search?hl=ja&source=hp&q=%E3%82%B5%E3%83%83%E3%82%AB%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%AB+%E5%9E%8B%E7%B4%99&lr=&aq=0&aqi=g1g-m1&aql=&oq=%E3%82%B5%E3%83%83%E3%82%AB%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%AB%E3%80%80%E5%9E%8B%E7%B4%99
 こんなページが見つかったりします。
http://www.clover.co.jp/hand/hand51a.htm

 他にも有ると思いますので、探してみられては。。。?
   大きさが有るから、既製のじゃだめなのかな?
   でも「倍率かえて印刷」とか出来そうだよね。
   ・・・そんな事言ってたら サッカーボールにこだわらないのかな。

 (HANA)

HANAさん ありがとうございます。
ぴったしカンカンです。

最初から用途を説明しておけばよかったんですね。
皆さんにもご迷惑をおかけしたようで、すみませんでした。

重ねて ありがとうございました。

(韋駄天一)


 横槍失礼します。
 momoさんのコードの
 >shp.AddNodes msoSegmentLine, msoEditingCorner, x, y

 を
 shp.AddNodes msoSegmentLine, msoEditingAuto, x, y
 にしたらうまくいきました。

 momoさんのコードを改造して遊んでみました。

  Sub MakePolygon_2()
  Dim shp As Object, newshp As Object
  Dim i As Long, n As Long
  Dim r As Double, s As Double, Pi As Double
  Dim iro As Integer
  Dim cx As Double, cy As Double, xa As Double, ya As Double, xb As Double, yb As Double
  ActiveSheet.DrawingObjects.Delete
  r = Application.InputBox("半径?", Type:=1)
  n = Application.InputBox("正?角形", Type:=1)
  Pi = Atn(1) * 4
  s = Pi / 2 - 2 * Pi / n
  With ActiveCell
    cx = .Left
    cy = .Top
  End With
  iro = 2
  For i = 1 To n + 1
    iro = iro + 1
    If iro = 57 Then iro = 3
    xb = Cos(2 * Pi * i / n - s) * r + cx
    yb = Sin(2 * Pi * i / n - s) * r + cy
    If i <> 1 Then
       Set shp = ActiveSheet.Shapes.BuildFreeform(msoEditingCorner, cx, cy)
       shp.AddNodes msoSegmentLine, msoEditingAuto, xa, ya
       shp.AddNodes msoSegmentLine, msoEditingAuto, xb, yb
       shp.AddNodes msoSegmentLine, msoEditingAuto, cx, cy
       Set newshp = shp.ConvertToShape
       With newshp
        .Fill.Visible = msoTrue
        .Fill.ForeColor.RGB = ThisWorkbook.Colors(iro)
        .Line.Visible = msoFalse
       End With
       Set shp = Nothing
       Set newshp = Nothing
    End If
    xa = xb
    ya = yb
  Next i
  End Sub

 (カリーニン)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.