正確なサイズの任意の図形、例えば十センチ四方の正方形をプリンターに印刷させるにはどのような方法をとればいいのでしょうか。
できれば、ビジュアルベーシックでできると助かるのですが、不可でしたら他の言語でもかまいません。
プログラミングの初心者ですので困っています。
参考になるWebページや書籍のアドバイスでも結構です。
詳しい方、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

Sub Macro1()


ActiveSheet.Shapes.AddShape(msoShapeRectangle, _
171.75, 83.25, _
182.25, 167.25). _
Select
End Sub

いろいろありますが一応四角は描けます。
171.75, 83.25
は、たぶん開始点の座標(左上)
182.25, 167.25(右下)

色を無くしたり
線幅を変えたり
線、丸もありますが

やったことないのでこの程度です。

イラスト、ゲーム関係の本なら詳しく
出ているかもしれません。
あやふやですいません。

CADの方が
手順になれれば簡単かもしれません。
データの取り込みなども可能なので。
    • good
    • 0
この回答へのお礼

早速のご回答、助かります。
後は、先に教えていただいた換算を考えればいいわけですね。
工夫してみます。
本当にありがとうございました。

お礼日時:2002/03/08 06:29

Excel VBAでの話になります。


10cmの線ですが指定時はポイント単位でした。

換算は

1ポイント = 1/72インチ
1cm = 0.3937インチ

のため

10cm = 283.464ポイント
になります。

小数点1位で四捨五入のようなので
283.5ポイントという指定になります。
逆算すると、10.00127cmになります。

誤差はでてしまうと思いますが
この計算でポイント指定をすると近いものは
描けると思います。

プリンタの関係もあるので
試行錯誤でということになると思います。

また線種にもよりますが
線の外側で10cmですか、内側、中心?
設定方法が違うと思います。

製図か何かですか?
具体的には何を?
精度はどの程度ですか。


283.5
72
0.3937
10.00127
10
283.464
    • good
    • 0
この回答へのお礼

回答いただき、ありがとうございました。

なるほど、エクセルでできるんですね。
目的は簡単な製図なんですが、希望精度として10センチで誤差0.1ミリ以内もとれれば御の字です。
具体的にはどんなプログラムになるのでしょうか?
もしできましたら、簡単なサンプルを教えていただけるとうれしいのですが・・・。

お礼日時:2002/03/05 22:35

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q初歩の十進ベーシック

こんばんは

ボケ防止のために十進ベーシックを勉強しています。
初心者のためのプログラム問題集のサイトとか本がありましたら
教えて下さい。

Aベストアンサー

キーワード「十進ベーシック」でGoogle検索して,3番目にヒットするのがこちら。
http://homepage3.nifty.com/toitoi/basic/basicfm1.htm

Qおもしろいプログラム 十進ベーシックで作成します。

おもしろいプログラム 十進ベーシックで作成します。

学校の課題で、なんでもいいので、おもしろいプログラムを作ってこいと言われました。
まだ初心者なので、使えるのは、
LET FOR PRINT SQR くらいなのですが、
どんなプログラムを作ればいいでしょう?

プログラムではなく、なにかカンタンにできそうな課題を考えているのですが・・・。

Aベストアンサー

十進ベーシックに関する問題がいろいろありますから、そこから選ばれたらいかがでしょうね。

Qベーシック言語について

昔、日本で8ビットのパソコンが普及しだした頃のことですが、それらには必ずと言っていいほど
ベーシックが添付されていました。このベーシックですが、コンピューターに詳しい人たちには
かなり評判が悪かったように記憶しています。ベーシックのコマンドの少なさといった浅薄なことではなく、コンピューターについての思想に基づいているように思われたのですが、私には理解できませんでした。する必要と時間がなかったからですが、最近、どうにも気になりだしました。どなたか、
当時のことをご存知のかたがいらっしゃいましたら、ベーシックの悪評の理由をわかりやすく
解説していただけたらと思います。よろしくお願いします。

Aベストアンサー

パソコン用のBASICは本来のベーシック(ダートマス大でケメニーとカーツにわって作られたBASIC)から見たら大幅に機能を削ったサブセット(ともいえないくらい)だったからと言うのもあります。極論すれば、文法だけ似ているが全く別の言語だったのです。
ですから、これは似非BASICであり、VASICの範疇には入らないということです。

しかし、パソコン普及とともにこの似非BASIC、中でもゲイツの作ったBASICが普及してしまい。元々、ゲイツに好意を持たない者の多い「コンピューターに詳しい人たち」には不愉快な状況になりました。本家側は1980年代にTrue BASIC/Full BASICのような本来の仕様を踏まえた上で構造化拡張を行った言語処理系を出しましたが、パソコンにただでくっついている似非BASICとは勝負になりませんでした。

まあ、すでにいくつか投稿がありますが、当時の「コンピューターに詳しい人たち」にとってツッコミどころが多すぎる欠陥言語処理系が広がってしまうことへの器具もあると思います。

Q十進BASICのプログラムについて

十進BASICのプログラムについて

小町算のプログラムですが、

100 DIM s(9)
110 FOR i=1 TO 9
120 LET s(i)=-1
130 NEXT i
140 DO
150 LET sum=0
160 LET num=0
170 LET sign=1
180 FOR i=1 TO 9
190 IF s(i)<>0 THEN
200 LET sum=sum+sign*num
210 LET sign=s(i)
220 LET num=i
230 ELSE
240 LET num=10*num+i
250 END IF
260 NEXT i
270 LET sum=sum+sign*num
280 IF sum=100 THEN
290 FOR i=1 TO 9
300 IF s(i)= +1 THEN PRINT " + ";
310 IF s(i)= -1 THEN PRINT " - ";
320 PRINT i;
330 NEXT i
340 PRINT " = 100"
350 END IF
360 LET i=9
370 LET sign=s(i)+1
380 DO WHILE ( sign > 1 )
390 LET s(i)=-1
400 LET i=i-1
410 LET sign=s(i)+1
420 LOOP
430 LET s(i)=sign
440 LOOP WHILE ( s(1) < 1)
450 END

というものですが、このプログラム中にあるsum、num、signとはどういう意味があるのでしょうか?

十進BASICのプログラムについて

小町算のプログラムですが、

100 DIM s(9)
110 FOR i=1 TO 9
120 LET s(i)=-1
130 NEXT i
140 DO
150 LET sum=0
160 LET num=0
170 LET sign=1
180 FOR i=1 TO 9
190 IF s(i)<>0 THEN
200 LET sum=sum+sign*num
210 LET sign=s(i)
220 LET num=i
230 ELSE
240 LET num=10*num+i
250 END IF
260 NEXT i
270 LET sum=sum+sign*num
280 IF sum=100 THEN
290 FOR i=1 TO 9
300 IF s(i)= +1 THEN PRINT " + ";
310 IF s(i)= -1 THEN PRINT " - ";
320 PRINT i;
330 NEXT i
340 PRINT "...続きを読む

Aベストアンサー

説明が難しいなあ…伝わる気がしない

配列sに数値が入った状態をイメージする

+が1で
何も無い時が0
-が-1だ。

例として
1 2 - 3 - 4 + 5 - 6 + 7 + 8 9
の時、どんな値が入っているかというと
12
s(1) = 0
s(2) = 0
-3
s(3) = -1
-4
s(4) = -1
+5
s(5) = 1
- 6
s(6) = -1
+7
s(7) = 1
+89
s(8) = 1
s(9) = 0

でs(1)からs(9)までチェックする

180 FOR i=1 TO 9
190 IF s(i)<>0 THEN
200 LET sum=sum+sign*num
210 LET sign=s(i)
220 LET num=i
230 ELSE
240 LET num=10*num+i
250 END IF
260 NEXT i
===========結局のところ、i = 3まではこういう道筋を通ったと言って良い。
LET sign=1
FOR i=1 TO 2
LET num=10*num+i
NEXT i
REM numは12,signは1 sum は 0
REM numは次の符号が出てくるまでの数の絶対値を作るために貯めておく場所で
REM signはその数値の符号。
REM sumは今までの計算結果。以下、これまでの数値に、signとnumの積を足している。その時、次の数値の符号をsignに代入している
FOR i=3 TO 3
LET sum=sum+sign*num
LET sign=s(i)
LET num=i
NEXT i

360-420行目は次のsの組み合わせを求めるためにくり上がりをやっているんだけど、
3進数の代わりに、-1 0 1でやっているから余計に分かりにくくなっている気がする

説明が難しいなあ…伝わる気がしない

配列sに数値が入った状態をイメージする

+が1で
何も無い時が0
-が-1だ。

例として
1 2 - 3 - 4 + 5 - 6 + 7 + 8 9
の時、どんな値が入っているかというと
12
s(1) = 0
s(2) = 0
-3
s(3) = -1
-4
s(4) = -1
+5
s(5) = 1
- 6
s(6) = -1
+7
s(7) = 1
+89
s(8) = 1
s(9) = 0

でs(1)からs(9)までチェックする

180 FOR i=1 TO 9
190 IF s(i)<>0 THEN
200 LET sum=sum+sign*num
210 LET sign=s(i)
220 LET num=i
230 ELSE
240 LET num=10*num+i
250 END IF
260 NEXT...続きを読む

Q互換ベーシックN88について

互換ベーシックのプログラミングで、「正方形の容器の中に円形の分子が飛び回っている。分子一個が容器の中を飛び回ってい様子を作れ。」という課題が出たのですが、このプログラミングを何方か教えてください。分子の半径は3で、容器の左上の座標を(150、40)右下の座標を(480、360)とするとLINE(150、40)-(480,360),4,Bという命令で箱が作れるそうです。

Aベストアンサー

基本的にはNo.1のかたのご指摘通りでよいのではないでしょうか?
 少し補足しますと、

1.容器の表示
質問文にあるようにline命令でboxを描画します。

2.分子をボックス内の適当な位置に表示する
分子の中心座標をx、yであらわすとすると、分子の半径は3ですから xは150+3 から480-3 の間の適当な値を取ります。yは40+3から360-3の間の適当な値を取ります。
(x、yの初期値は乱数で決めればよいと思います)


3.現在の分子位置にある分子の表示を消してください。
circle命令を用いて、バックグランド色で描画すれば消えます。

4.分子の移動方向を決めてください。
分子の変化分を dx、dyとしたとき次のポイントは x+dx、y+dyで決定されます。
dx、dyの初期値も適当に決めればよいと思います。

新しいxが 150+3より小さいか480-3より大きくなれば衝突です。
また新しいyが40+3より小さいか360-3より大きくなっても衝突です。
衝突した場合はx、yそれぞれ枠からはみ出さないようにx、yの値を調整し表示してください。
circle命令で表示します。
xの衝突検知したとき、dxの符号を反転すれば、次回反対方向に動きます。
yの衝突検知したとき、dyの符号を反転すれば次回からyも反対方向に動きます。

衝突検知時に、dx、dyの値も乱数で少し変化を付けるとおもしろい方向に反射するかもしれません。

5.表示を目視するため少し時間をおく
描画後にすぐに絵を消したら見苦しい絵になるかもしれないので、感覚的な時間でかまいませんが、時間待ちを入れた方がよいでしょう。

6.3番にもどります。

だいたいこんな感じでしょうか?
参考になれば幸いです。

基本的にはNo.1のかたのご指摘通りでよいのではないでしょうか?
 少し補足しますと、

1.容器の表示
質問文にあるようにline命令でboxを描画します。

2.分子をボックス内の適当な位置に表示する
分子の中心座標をx、yであらわすとすると、分子の半径は3ですから xは150+3 から480-3 の間の適当な値を取ります。yは40+3から360-3の間の適当な値を取ります。
(x、yの初期値は乱数で決めればよいと思います)


3.現在の分子位置にある分子の表示を消してください。
circle命令を用い...続きを読む


人気Q&Aランキング

おすすめ情報