HOMEへ   CADを使おう
TOPB B SPCHTMLMY−LOG
Click Here!

CADを使おう

カスタマイズ

CAD雑記

<<前へ  |1234567|  次へ>>

★今すぐ仕事に結びつく稼げる資格!スキルアップガイド無料進呈中 Click Here![PR]

● メニューづくり

AutoCADのページでCGIの解説があるのもおかしな話しですが、 CGIはParl言語を元にしたスクリプトであり、Parl言語はテキストを編集するために創られたプログラムらしいです(良く知らないけど・・・)。
でまぁ、ブロック挿入用のメニューファイルを創るのために元となる図形データ(dwgファイル)を集めたのは良いけど、 それらをメニューとした組立てていくのにファイルパスをちょこちょこ編集するのが面倒だー!って考えた時にふとCGIが使えなるじゃないか!と考えたわけです。 ブロックとして使用する図形データを1つのフォルダにまとめて、CGIでそのフォルダ内のファイルをリストアップし、マクロのファイルパス等に当てはめてテキストとして出力すれば良いわけです。
CGIについてはこちら

例えば配布している配管挿入ボタンでは『SGP10A.dwg』、『SGP15A.dwg』、『SGP20A.dwg』・・・と大量のDWGファイルがありますが、 利用するマクロは

ID_PIPE_101 [_Button("SGP10A", "S10A.bmp", "ICON_16_BLANK")] ^C^C_-insert;"buzai/配管/SGP10A.dwg";\;;\_explode;l;change;p;;P;LA;$M=$(getvar,CLAYER);;

でファイルパスや利用するbmpファイルが異なるだけです。 そこでCGIスクリプトを利用して、ファイルをパスを自動で置換えてやるわけです。

$path="XXX";
#ディレクトリーを開きディレクトリを読込む
opendir(DIR,"$path");
@DWG_DIR=map{-d"$path/$_"?$_:''}readdir DIR;
closedir(DIR);

図形データを保管しているフォルダのあるフォルダ『XXX』を読込みます。

foreach(@DWG_DIR){
if($_ eq '.' || $_ eq '..'){next;}
opendir(DIR,"$path/$_");
#DWGファイルを読込み配列する
while($filename=readdir(DIR)){
if($filename=~/\.dwg$/i){push(@DWG,"$path,$_,$filename");}
}
}
closedir(DIR);

リストアップしたフォルダの中にある図形データをそれぞれのパスごとリストアップしています。

# 配列を名前順にソート
@DWG=sort{$a cmp $b}@DWG;

foreach(@DWG){
($path,$subpath,$filename)=split(/,/,$_);
push(@DATA,qq|ID_$path\_$subpath [_Button("$path", "$path$subpath\A.bmp", "ICON_16_BLANK")]^C^C_-insert;"buzai/$path/$subpath/$filename";\\;;\\_explode;l;change;p;;P;LA;\$M=\$(getvar,CLAYER);;\n|);
}

リストアップした図形データをマクロに埋め込みます。

$header=<<_TXT_;
***MENUGROUP=$path
***TOOLBARS
**$path
ID_$path [_Toolbar("$path", _Floating, _Hide,0,0,0)]
_TXT_

open(FILE,">$path.mns");
print FILE $header;
print FILE @DATA;
close(FILE);

全てのマクロをファイルに書き出します。
あとは結果をHTMLに出力するおまけです。

print "Content-type: text/html\n\n";
print <<"_HTML_";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Script-Type" content="text/javascript">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE>page_title</TITLE>
</HEAD>
<BODY>
@DWG
</BODY>
</HTNL>
_HTML_
exit;

このCGIファイル
もっと細かい分岐等をしていけば大量のデータも一発で実用的なメニューに仕上がるのではないでしょうか。

今回はたまたまAutoCADLTのメニューファイルへの利用ですが、他にもこういう使い方があるんじゃないかなというお話でした。
ほんとならWindowsアプリケーションを創れれば良いのでしょうが・・・(^^;A。

<<前へ  |上へ|  次へ>>
1234567

探し物はなんですか?サービス検索、お店を検索、探し物を希望にあわせて検索。
カタログギフトのリンベル 内祝い 香典返しに

TOP] [HOME

更新日時:2014/08/09