<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CAD Shelf</title>
	<atom:link href="http://cad-shelf.com/feed" rel="self" type="application/rss+xml" />
	<link>http://cad-shelf.com</link>
	<description>CADシステムやソフトの技術や使い方、CADトレースを習得するための情報サイトです。</description>
	<lastBuildDate>Sun, 17 Apr 2011 15:53:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>外部変形の基本的な仕組み</title>
		<link>http://cad-shelf.com/jw_cad/gaihen.html</link>
		<comments>http://cad-shelf.com/jw_cad/gaihen.html#comments</comments>
		<pubDate>Tue, 30 Nov 2010 13:16:38 +0000</pubDate>
		<dc:creator>heko</dc:creator>
				<category><![CDATA[Jw_cad]]></category>
		<category><![CDATA[CAD]]></category>
		<category><![CDATA[JWW]]></category>
		<category><![CDATA[外部変形]]></category>

		<guid isPermaLink="false">http://cad-shelf.com/?p=612</guid>
		<description><![CDATA[外部変形の流れ


  







処理の流れ

　どんな外部変形も、基本的な処理の流れは変わりません。

ol.nagare li{padding-left:0 !important;}

  [...]]]></description>
			<content:encoded><![CDATA[<h3>外部変形の流れ</h3>
<div class="section">
<div style="float:right;">
  <div class="adsense">
<script type="text/javascript"><!--
google_ad_client = "pub-1112500852749146";
/* 336x280, 作成済み 09/05/29 */
google_ad_slot = "0988350545";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>

</div>
<h4>処理の流れ</h4>
<p>
　どんな外部変形も、基本的な処理の流れは変わりません。
</p>
<style>ol.nagare li{padding-left:0 !important;}</style>
<ol class="nagare">
  <li>Jw_cadから外部変形(BATファイル)を起動する</li>
  <li>BATファイルで指定されたデータを、Jw_cad上で選択する</li>
  <li>上記データがテキストに変換され、<strong>jwc_temp.txt</strong>に書き出される</li>
  <li>実行ファイルを起動し、<strong>jwc_temp.txt</strong>を読み込み、処理する</li>
  <li>実行ファイルが処理したデータを<strong>jwc_temp.txt</strong>へ書き出す</li>
  <li>Jw_cadが<strong>jwc_temp.txt</strong>を読み込み、作図する</li>
</ol>
<br class="clear" />

<h4>メインとなる外部変形プログラム</h4>
<p>
　外部変形のメインプログラム(工程4〜5)には、実行ファイルや任意のスクリプトファイルを使うことができます。ファイル入出力を備えたプログラミング言語なら何でも使うことができます。また、簡単なものなら4〜5の工程をBATファイルだけ済ませることも可能です。
</p>
<h4>複雑なプログラム</h4>
<p>
　外部変形プログラム実行中(工程4〜5)に、選択フォームやダイアログを出してプログラムを分岐させることも可能です。例えば<a href="/ruby/simple_dialog.html">SimpleDialog</a>を使えば、分岐やコンフィギュレーションが簡単にできるようになります。
</p>
</div>

<h3>実行ファイルとスクリプト</h3>
<div class="section">
<p>　以下は、Windows環境の一般的な話です。Jw_cadに限ったことではないですが、改めて理解しておくと外部変形の理解も深くなると思います。</p>
<h4>実行ファイル (EXEファイル)</h4>
<p>
　実行ファイルとは、単体で実行することができて拡張子が<strong>exe</strong>のファイルです。たとえば、メモ帳(notepad.exe)は実行ファイルですがテキストファイル(xxx.txt)は実行ファイルではなく、Jw_cad.exeは実行ファイルですが図面ファイル(xxx.jww)は実行ファイルではありません。
</p>
<h4>関連付け</h4>
<p>
　テキストファイル(xxx.txt)は実行ファイルでは無いですが、Windows上から単体で実行しているかのように開くことができます。これは、拡張子が<strong>txt</strong>のファイルを表示しようとするとメモ帳(notepad.exe)が開くように<strong>関連付けされている</strong>からです。同様に、「<strong>JWWファイルをJw_cadで開く</strong>」、「<strong>JWFファイルをメモ帳で開く</strong>」など、Windows上で関連付けを設定することができます。
</p>
<h4>スクリプトと言語処理系</h4>
<p>
　<strong>言語処理系</strong>には主に、「<strong>スクリプトを解釈する実行ファイル</strong>」と、「プログラムの記述されたファイルを実行形式に変換する実行ファイル」の2つがあります。一般的に前者を<strong>インタプリタ</strong>、後者を<strong>コンパイラ</strong>と呼びます。
</p>
<p>
　<strong>スクリプト(スクリプトファイル)</strong>は一般的に、任意のプログラミング言語の文法で処理を記述した<strong>ただのテキストファイル</strong>で、上述のインタプリタを通すことでプログラムを実行できます。例えば、Rubyインタプリタをインストールすれば、Rubyの文法で記述されたテキストファイルを解釈して実行することができるようになります。
</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://cad-shelf.com/jw_cad/gaihen.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jw_cadの図面に画像(BMP/JPG/GIF/PNGなど)を貼り付ける</title>
		<link>http://cad-shelf.com/jw_cad/paste-image.html</link>
		<comments>http://cad-shelf.com/jw_cad/paste-image.html#comments</comments>
		<pubDate>Sat, 12 Sep 2009 19:31:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Jw_cad]]></category>
		<category><![CDATA[Susieプラグイン]]></category>

		<guid isPermaLink="false">http://cad-shelf.com/?p=591</guid>
		<description><![CDATA[

  









　Jw_cadで編集する図面には、理論上あらゆる種類の画像を貼り付けることができます。デフォルトの(インストールしただけの)状態ではビットマップファイル(*.bmp)しか対応してい [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<div style="float:right;">
  <div class="adsense">
<script type="text/javascript"><!--
google_ad_client = "pub-1112500852749146";
/* 336x280, 作成済み 09/05/29 */
google_ad_slot = "0988350545";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>

</div>

<p>
　Jw_cadで編集する図面には、理論上あらゆる種類の画像を貼り付けることができます。デフォルトの(インストールしただけの)状態ではビットマップファイル(*.bmp)しか対応していませんが、プラグインを導入することで対応する画像形式を増やすことができ、JPGやGIF、PNGなどを貼り付けることができるようになります。
</p>
</div>

<h3 id="order">図面に画像を貼り付ける手順</h3>
<div class="section">
<p>
　以下の手順で、セットアップ済みの形式の画像ファイルを読み込むことができます。
</p>
<ul>
  <li>【ツールバー &gt; [作図(D)] &gt; 文字(A)】 または[文字]ボタンを押す(またはクロックメニューで文字入力を呼び出す)</li>
  <li>コントロールバーの[文読]を押す</li>
  <li>[ファイルの種類]から画像形式を選び、画像ファイルを選択する</li>
</ul>
</div>

<h3>対応する画像形式を増やす</h3>
<div class="section">
<h4>Susieプラグイン</h4>
<p>
　Jw_cadは<strong>Susieプラグイン</strong>に対応しています。<a href="http://ja.wikipedia.org/wiki/Susie" target="_blank">Susie</a>とは<u>プラグイン形式で様々なフォーマットに対応できる画像ビューア</u>で、そのプラグインが<strong>Susieプラグイン</strong>と呼ばれます。Susieプラグインは仕様が公開されているため、いろんな場所でいろんな種類のプラグインが作られるようになり、さらに(Jw_cadを含む)たくさんのアプリケーションがその仕様をサポートしてきました。つまり、どこかの誰かが作ったSusieプラグインを拾ってくることで、アプリケーション(Jw_cad)を拡張できる仕組みになっています。
</p>

<h4>実際にSusieプラグインを入手する</h4>
<p>
　メジャーな形式(jpg, gifなど)は、Susie作者のページで無償で配布されています。以下はそれを手に入れてJw_cadにセットアップする方法です。
</p>
<ul>
  <li><a href="http://www.digitalpad.co.jp/~takechin/" target="_blank">Susieの部屋</a>のダウンロードページを開く</li>
  <li><b>Plug-ins</b>以下のリンクからプラグインをダウンロードする</li>
  <li>解凍したプラグインファイル(SPIファイル)のうち必要なものを、Jw_cadをインストールしたフォルダにコピーする</li>
  <li>Jw_cadを再起動し、<a href="#order">図面に画像を貼り付ける手順</a>の通りにすると、プラグインに対応した拡張子が選べる</li>
</ul>

<h4>プラグインを探す</h4>
<p>
　上述した通り、ネット上にはたくさんの形式に対応したSusieプラグインが存在しています。基本的に1つのプラグインが1つの画像フォーマットに対応しており(jpg→ifjpeg.spi)、&#8221;susie [ファイル形式名]&#8220;のように検索すれば出てくるものも多いようです。それらのプラグインは、Jw_cadのフォルダにコピーすることで、そのままJw_cadに利用することができます。
</p>
</div>

<h3>貼り付けた画像の回転</h3>
<div class="section">
<p>
　古いバージョンでは専用の外部変形があったり、他の画像編集ソフトを使って画像そのものを編集する必要がありましたが、<strong>Jw_cadの6.20a以降のバージョン</strong>では、以下のように図形と同じ方法で図面上の画像も回転できるようになりました。
</p>

<h4>図形・画像の回転</h4>
<p>
　まず、回転したい図形・画像(複数可)を範囲選択し、移動/複写モードにします。この際の基準点が回転の中心点となり、コントロールバーの回転角に角度を入力すれば、移動/複写時に自動的に回転されます。また、コントロールバー右端の角をクリックすれば、位置選択後に自由な角度で回転できます。
</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://cad-shelf.com/jw_cad/paste-image.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jw_cad バックアップファイルと自動保存</title>
		<link>http://cad-shelf.com/jw_cad/auto-save.html</link>
		<comments>http://cad-shelf.com/jw_cad/auto-save.html#comments</comments>
		<pubDate>Sat, 12 Sep 2009 04:14:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Jw_cad]]></category>
		<category><![CDATA[バックアップ]]></category>
		<category><![CDATA[拡張子]]></category>
		<category><![CDATA[環境設定]]></category>
		<category><![CDATA[自動保存]]></category>

		<guid isPermaLink="false">http://cad-shelf.com/?p=573</guid>
		<description><![CDATA[

  









　Jw_cadには、図面ファイルを保護する機能が二つ備わっています。この機能だけに頼って作業をするのは危険ですが、覚えておくと図面消失のリスクはかなり減ります。



バッ [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<div style="float:right;">
  <div class="adsense">
<script type="text/javascript"><!--
google_ad_client = "pub-1112500852749146";
/* 336x280, 作成済み 09/05/29 */
google_ad_slot = "0988350545";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>

</div>

<p>
　Jw_cadには、図面ファイルを保護する機能が二つ備わっています。この機能だけに頼って作業をするのは危険ですが、覚えておくと図面消失のリスクはかなり減ります。
</p>
</div>

<h3>バックアップされたファイルのファイル形式</h3>
<div class="section">
<p>
　以下で説明する2種類のファイルは、拡張子が異なるだけでファイル形式自体は通常のjwwファイルと同じです。よって、<span style="color:blue;">拡張子(BAK, BK2, jw$)をjwwに変更する</span>、<span style="color:blue;">Windowsの設定で拡張子を関連付けする</span>、または<span style="color:blue;">ファイルをJw_cad.exeのアイコンやウインドウにドロップする</span>ことで開くことができます。
</p>
</div>

<h3>バックアップファイル (*.BAK)</h3>
<div class="section">
<p>
　図面を通常通り<u>上書き保存</u>すると、自動でバックアップファイルが作成されます。前回保存した状態の図面が、拡張子<strong>BAK</strong>の名前で同フォルダに保存されるので、上記の通り開くことができます。
</p>
<h4>設定</h4>
<p>
　【ツールバー &gt; 設定(S) &gt; 基本設定(S) &gt;一般(1)】の、バックアップファイル数を0にすることで、バックアップファイルを作成しなくなります。また、2以上にすると<strong>BAK</strong>、<strong>BK2</strong>、<strong>BK3</strong>．．．という名前で保存されていきます。
</p>
</div>

<h3>自動保存ファイル (*.jw$)</h3>
<div class="section">
<p>
　予期せぬ終了やエラーに備えるため、一定時間(デフォルトは30分)毎に編集中のファイルが自動で保存されます。Jw_cadがアクティブな時(編集中)のみ行われ、<strong>【自動保存】filename.jw$</strong>という名前で保存されます。最小化や非アクティブ時には時間はカウントされず、読み取り専用ファイルや自動保存ファイルを開いている時にも自動保存は行われません。
</p>
<h4>自動保存の間隔</h4>
<p>
　【ツールバー &gt; 設定(S) &gt; 基本設定(S) &gt; 一般(1)】から、分単位で設定できます。
</p>
<h4>保存場所</h4>
<p>
　<a href="/jw_cad/jwf.html">環境設定ファイル(jwfファイル)</a>の[<strong>AutoSaveDir</strong>]に、存在するフォルダをフルパスで記述することで変更できます。デフォルトの設定では、編集中の図面の保存されている場所かJw_cadインストールフォルダに保存されます。<br />
例： AutoSaveDir=C:\jww\backup
</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://cad-shelf.com/jw_cad/auto-save.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JwRuby(外部変形ライブラリ)を使ったサンプル</title>
		<link>http://cad-shelf.com/jw_cad/jwruby-sample.html</link>
		<comments>http://cad-shelf.com/jw_cad/jwruby-sample.html#comments</comments>
		<pubDate>Sat, 18 Jul 2009 17:37:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Jw_cad]]></category>
		<category><![CDATA[jwc_temp.txt]]></category>
		<category><![CDATA[JwRuby]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[外部変形]]></category>

		<guid isPermaLink="false">http://cad-shelf.com/?p=545</guid>
		<description><![CDATA[

  









　Jw_cad外部変形で利用できるライブラリ「JwRuby」を公開しています。JwRubyはjwc_temp.txtを解析・変換し、簡単にコマンドを書けるようにするライブラリで、こ [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<div style="float:right;">
  <div class="adsense">
<script type="text/javascript"><!--
google_ad_client = "pub-1112500852749146";
/* 336x280, 作成済み 09/05/29 */
google_ad_slot = "0988350545";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>

</div>

<p>
　Jw_cad外部変形で利用できるライブラリ「<a href="/jw_cad/jwruby.html">JwRuby</a>」を公開しています。JwRubyはjwc_temp.txtを解析・変換し、簡単にコマンドを書けるようにするライブラリで、これ一つで具体的な処理を行うわけではありません。以下にJwRubyを使った簡単なサンプルを示します。<br />　※このライブラリは、Ruby1.8を前提としています。
</p>
<ol>
  <li><a href="#sample1">ある点を中心に、半径の異なる円を年輪状に描く</a></li>
  <li><a href="#sample2">レイヤ番号とレイヤ名のペアをcsvに保存する</a></li>
  <li><a href="#sample3">六芒星を描く</a></li>
  <li><a href="#sample4">図面上の文字列を全て集めて保存する</a></li>
  <li><a href="#sample5">選択範囲の図形の種類ごとに色を変える</a></li>
  <li><a href="#sample6">選択範囲を1つのレイヤにまとめる</a></li>
  <li><a href="#sample7">デバッグ・確認しながら作業する</a></li>
</ol>
</div>

<h3 id="sample1">1. ある点を中心に、半径の異なる円を年輪状に描く</h3>
<div class="section">
<p>
　BATファイルで指定できる基準点は、<strong>jw[key]</strong>で得ることができます。1つ目の基準点を円の中心点、2つ目を円周上の点とします。
</p>
<h4>BAT</h4>
<pre><code>@REM test
@echo off
REM #jww
REM #cd
REM #1
REM #2
REM #e

ruby test.rb
</code></pre>

<h4>Ruby</h4>
<pre><code>#!ruby -Ks
require "jwr"

Jwr.start{|jw|
  # 基準点(円の中心点と円周上の点)
  cx, cy = jw[1]
  vx, vy = jw[2]
  
  # 円の半径
  r = Line.new(cx, cy, vx, vy).length
  
  1.upto(20){|i|
    jw.circle(cx, cy, (r * i / 20))
  }
}
</code></pre>
</div>

<h3 id="sample2">2. レイヤ番号とレイヤ名のペアをcsvに保存する</h3>
<div class="section">
<h4>BAT</h4>
<pre><code>@REM test
@echo off
REM #jww
REM #cd
REM #gn
REM #e

ruby test.rb
</code></pre>
<h4>Ruby</h4>
<pre><code>#!ruby -Ks
require "jwr"

Jwr.start{|jw|
  File.open("layer.csv", "w"){|f|
    jw.layers.each{|layer|
      f.write "#{layer.number.to_s(16)},#{layer.name}\n"
    }
  }
}
</code></pre>
</div>

<h3 id="sample3">3. 六芒星を描く</h3>
<div class="section">
<p>
　シンプルで正確性の必要な図形も簡単に描くことができます。
</p>
<h4>BAT</h4>
<pre><code>@REM test
@echo off
REM #jww
REM #cd
REM #1
REM #2
REM #e

ruby test.rb
</code></pre>

<h4>Ruby</h4>
<pre><code>#!ruby -Ks
require "jwr"

Jwr.start{|jw|
  # 基準点(円の中心点と円周上の点)
  cx, cy = jw[1]
  vx, vy = jw[2]
  
  # 半径
  r = Line.new(cx, cy, vx, vy).length
  
  # 各点を計算し、正三角形を2つ作る
  rcos30 = r * Math.cos(30.degrees)
  rsin30 = r * Math.sin(30.degrees)
  
  p1 = [cx, cy + r]
  p2 = [cx + rcos30, cy - rsin30]
  p3 = [cx - rcos30, cy - rsin30]
  p4 = [cx, cy - r]
  p5 = [cx + rcos30, cy + rsin30]
  p6 = [cx - rcos30, cy + rsin30]
  
  tri1 = Triangle.new(p1, p2, p3)
  tri2 = Triangle.new(p4, p5, p6)
  
  # 描画
  jw.draw(tri1)
  jw.draw(tri2)
  jw.circle(cx, cy, r)
}
</code></pre>
</div>

<h3 id="sample4">4. 図面上の文字列を全て集めて保存する</h3>
<div class="section">
<p>
　スクリプトのあるフォルダに、図面上のテキストを保存します。
</p>
<h4>BAT</h4>
<pre><code>@REM test
@echo off
REM #jww
REM #cd
REM #h4
REM #e

ruby test.rb
</code></pre>
<h4>Ruby</h4>
<pre><code>#!ruby -Ks
require "jwr"

Jwr.start{|jw|
  # Textオブジェクトのみの配列を作り、Stringに変換する
  texts = jw.shapes.find_all{|shape| shape.text? }
  texts = texts.map{|text| text.string }
  
  File.open("foo.txt", "w"){|f|
    f.write texts.join("\n")
  }
}
</code></pre>
</div>

<h3 id="sample5">5. 選択範囲の図形の種類ごとに色を変える</h3>
<div class="section">
<p>
　線・円・点の色を指定して、選択された図形全ての色を変更します。
</p>
<h4>BAT</h4>
<pre><code>@REM test
@echo off
REM #jww
REM #cd
REM #h1
REM #e

ruby test.rb
</code></pre>
<h4>Ruby</h4>
<pre><code>#!ruby -Ks
require "jwr"

Jwr.start{|jw|
  # 図形を種類ごとに分ける
  hash = Hash.new{|h, k| h[k] = [] }
  jw.shapes.each{|shape|
    case shape
    when Line
      hash[:line] << shape
    when Circle
      hash[:circle] << shape
    when Point
      hash[:point] << shape
    end
  }
  
  jw.set_color 4
  hash[:line].each{|line| jw.draw line }
  
  jw.set_color 5
  hash[:circle].each{|circle| jw.draw circle }
  
  jw.set_point_color 6
  hash[:point].each{|point| jw.draw point }
}
</code></pre>
</div>

<h3 id="sample6">6. 選択範囲を1つのレイヤにまとめる</h3>
<div class="section">
<p>
　選択された図形全てをレイヤ0に移動してまとめる処理です。
</p>
<h4>BAT</h4>
<pre><code>@REM test
@echo off
REM #jww
REM #cd
REM #h1
REM #e

ruby test.rb
</code></pre>
<h4>Ruby</h4>
<pre><code>#!ruby -Ks
require "jwr"

Jwr.start{|jw|
  jw.delete_selected
  jw.set_layer 0
  jw.shapes.each{|shape|
    jw.draw shape
  }
}
</code></pre>
</div>

<h3 id="sample7">7. デバッグ・確認しながら作業する</h3>
<div class="section">
<p>
　デフォルトではjwc_temp.txtを上書きしますが、Jwr.startに:outputキーワードを与えることで別名で出力することができます。それを利用し、(Jw_cadからではなく)コマンドプロンプトからRubyを実行することで、確認しながらスクリプトを作り上げていくことができます。またコマンドプロンプトから実行することで、Rubyスクリプト内で起こるエラーを確認することができます。
</p>
<h4>Ruby</h4>
<pre><code>#!ruby -Ks
require "jwr"

Jwr.start(:output=>"output.txt"){|jw|
  # レイヤ名一覧を確認
  jw.layers.each_with_index{|layer, i|
    puts "#{i.to_s(16)}: #{layer.name}"
  }
  
  # 図形の種類一覧を確認
  puts jw.shapes.map{|shape|shape.class}
}
</code></pre>
</div>]]></content:encoded>
			<wfw:commentRss>http://cad-shelf.com/jw_cad/jwruby-sample.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LiteCADの日本語化</title>
		<link>http://cad-shelf.com/litecad/language.html</link>
		<comments>http://cad-shelf.com/litecad/language.html#comments</comments>
		<pubDate>Thu, 28 May 2009 13:53:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[LiteCAD]]></category>
		<category><![CDATA[CAD]]></category>
		<category><![CDATA[日本語化]]></category>

		<guid isPermaLink="false">http://cad-shelf.com/?p=520</guid>
		<description><![CDATA[

  








  
    　以下は、LiteCADのインターフェイス(メニューやメッセージ)の日本語化の方法です。図面内の日本語文字列を表示させる方法ではありません。ヘルプファイル内を｢lang [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<div style="float:right;">
  <div class="adsense">
<script type="text/javascript"><!--
google_ad_client = "pub-1112500852749146";
/* 336x280, 作成済み 09/05/29 */
google_ad_slot = "0988350545";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>

</div>

  <p>
    　以下は、LiteCADのインターフェイス(メニューやメッセージ)の日本語化の方法です。図面内の日本語文字列を表示させる方法ではありません。ヘルプファイル内を｢language｣で検索すると出てくる情報と一緒です。
  </p>
</div>

<h3>LiteCAD日本語化の方法</h3>
<div class="section">
  <h4>言語定義ファイル</h4>
  <p>
    　LiteCADコマンドライン上で<strong>SAVESTR</strong>と入力・確定し、その後ファイル名を入力(もしくはそのまま確定)すると、現在(又はデフォルト)の言語定義ファイルが書き出されます。ただのテキストファイルなので、それをテキストエディタで編集します。注意点という程ではないですが、定義ファイル内にマルチバイト文字(日本語など)を含める場合はShift_jisで保存する必要があります。<br />
    　自分で言語定義ファイルを編集しない方は、この作業は必要ありません。
  </p>
  
  <h4>LiteCAD.ini</h4>
  <p>
    　実行ファイルと同じ場所にある<strong>LiteCAD.ini</strong>をメモ帳などで開き、上記の言語定義ファイルの名前を<strong>LANGUAGE</strong>パラメータに記述して、LiteCADを再起動するだけで表示が変更されます。元に戻したい場合は<strong>default</strong>と記述するか、定義ファイルを削除してください。
  </p>

  <h4>言語定義ファイルの読み方</h4>
  <p>
    　これもそれ程難しいものではないですが、非常に数が多いので大変です。1行に1定義で、各項目は単純明快という訳では無いですが、ある程度は接頭語と実際に表示されている文字列を見て判断できます。
  </p>
</div>

<h3>日本語定義ファイル</h3>
<div class="section">
  <h4>download: <a href="http://cad-shelf.com/?download=ja_v1.lng">ja_v1.lng</a></h4>
  <p>
    　試しに定義ファイルを作ってみました。LiteCAD.exeと同じフォルダに保存し、上述の通りLiteCAD.iniを書き換えてください。サンプルですので表面的な部分のみ変更してあり、誤訳・間違いもあるかもしれませんので注意してください。
  </p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://cad-shelf.com/litecad/language.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rubyスクリプトを実行ファイルに変換する</title>
		<link>http://cad-shelf.com/ruby/exerb.html</link>
		<comments>http://cad-shelf.com/ruby/exerb.html#comments</comments>
		<pubDate>Wed, 27 May 2009 11:42:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Exerb]]></category>
		<category><![CDATA[Jw_cad]]></category>
		<category><![CDATA[外部変形]]></category>

		<guid isPermaLink="false">http://cad-shelf.com/?p=513</guid>
		<description><![CDATA[

  








  
    　外部変形でRubyスクリプトを利用している場合、それを実行するPCにはRuby実行環境がインストールされている必要があります。Rubyには、スクリプト(テキストファイ [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<div style="float:right;">
  <div class="adsense">
<script type="text/javascript"><!--
google_ad_client = "pub-1112500852749146";
/* 336x280, 作成済み 09/05/29 */
google_ad_slot = "0988350545";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>

</div>

  <p>
    　外部変形でRubyスクリプトを利用している場合、それを実行するPCにはRuby実行環境がインストールされている必要があります。Rubyには、スクリプト(テキストファイル)を単独で実行できるファイルに変換する方法があり、それを利用すれば配布・やり取りが楽になります。<br />　以下では、Ruby1.8を前提に解説します。
  </p>

  <ul>
    <li><a href="#exerb">Exerb</a></li>
    <li><a href="#tutorial">簡単なチュートリアル</a></li>
    <li><a href="#more">もっと活用してみる</a></li>
    <li><a href="#jw_cad">Jw_cadで使う場合</a></li>
  </ul>

  <h4>実行形式化の手段</h4>
  <p>
    　Rubyスクリプトを実行ファイルにするためのソフトウェアは複数あり、(たぶん)そのどれもがコンパイルを行うものではなく、スクリプト・処理系ごと全て1ファイルに詰め込むものです。そのため特徴として、｢ファイルサイズが若干大きくなる｣ことと、｢&#8221;コードの隠蔽&#8221;目的では利用できない｣ことが挙げられます。<br />　上記のソフトウェアとしてメジャーなものに、<strong>Exerb</strong>というものがあります。これを使うと、<strong>Rubyスクリプト・requireしたRubyスクリプト・コンパイルされた拡張モジュール</strong>全てを1ファイルにまとめることができます。(動的リンクされたリソースやDLLファイルは含まれません。)
  </p>
</div>

<h3 id="exerb">Exerb</h3>
<div class="section">
  <h4>インストールする</h4>
  <p>・<a href="http://exerb.sourceforge.jp/#download" target="_blank">Exerb Project</a></p>
  <p>
    　ActiveScriptRubyなどでRubyをインストールした場合は、最初から入っていると思います。インストールされていれば、コマンドプロンプトから<strong>exerb</strong>と入力すれば確認できます。<br />　インストールされていなければ上記サイトからダウンロードし、解凍したフォルダ内で<strong>ruby setup.rb</strong>と入力します。詳しくは同梱のREADMEを参照ください。
  </p>

  <h4>利用する流れ</h4>
  <p>
    　Exerbはスクリプトを固めるだけのものなので、スクリプト開発はいつも通り普通に行うことができます。スクリプトを書いた後、設定や利用するスクリプト・ライブラリ(requireしたファイル)などを記述した<strong>レシピファイル</strong>と呼ばれるものを記述し、それをExerbに渡すことで実行ファイルが生成されます。
  </p>

  <h4>レシピファイル</h4>
  <p>・<a href="http://exerb.sourceforge.jp/man/doc/recipe.ja.html" target="_blank">Exerb &#8211; レシピファイル</a></p>
  <p>
    　レシピファイルは、ファイルの一般情報・利用するRubyスクリプト全て・exeに含まれるリソース(アイコンなど)などを記述するファイルです。書式や詳細は、同梱されているHTMLファイルか上記のリンクを参照ください。
  </p>
</div>

<h3 id="tutorial">簡単なチュートリアル</h3>
<div class="section">
  <p>
    　上述の通り、普通に書いたスクリプトを利用することができます。以下は、DOS窓に｢Hello, Exerb!｣と表示した後、Enterキーの入力を待って終了するプログラムです。
  </p>
  <pre><code>#!ruby -Ks
puts "Hello, Exerb!"
gets</code></pre>
  
  <p>
    　上記ファイル<strong>test.rb</strong>が置いてあるフォルダでコマンドプロンプトを開き、<strong>mkexy test.rb</strong>と入力すると、自動でレシピファイル(<strong>test.exy</strong>)が作成されます。このファイルを編集・追記することで実行ファイルの情報を付加することができます。次にコマンドプロンプト上で、<strong>exerb test.exy</strong>と入力すると、レシピファイルを基に実行ファイルが作成されます。<br />　また、この例のようにスクリプトが単体で完結していれば、レシピファイルを使わず単に<strong>exerb test.rb</strong>でも作成できます。
  </p>

  <h4>Simple Dialogを使ってみる</h4>
  <p>
    　Visualu Rubyを使ったスクリプトも1ファイルにまとめることが出来るので、GUIアプリケーションの配布・やり取りが容易になります。例として、当サイトの<a href="/ruby/simple_dialog.html">Simple Dialog</a>を使った例を示します。<br />　以下は、キャンセルされるまで名前を取得し続け、その一覧をファイルに書き込むスクリプトです。
  </p>
  <pre><code>#!ruby -Ks
require "simple_dialog"
include SimpleDialog

names = []

while true
  name = input_box("Exerb test", "名前#{names.size+1}を入力してください")
  if name
    names << name
  else
    break
  end
end

File.open("names.txt", "w"){|f|
  f.puts names
}</code></pre>
  <p>
    　同様にコマンドプロンプト上で<strong>mkexy test.rb</strong>とし、レシピファイルを作成します。このレシピファイルのまま作ってしまうと、DOS窓が表示されて格好の悪いプログラムになってしまうので、レシピファイルの<strong>core: cui</strong>の部分を<strong>core: gui</strong>に編集、保存します。ちなみにレシピファイル内の<strong>file</strong>ブロックに羅列されているものが、requireされたファイル群です。
  </p>
</div>

<h3 id="more">もっと活用してみる</h3>
<div class="section">
  <p>
    　もっと詳しいことは同梱のHTMLか<a href="http://exerb.sourceforge.jp/man/README.ja.html" target="_blank">公式サイト</a>を参照してください。
  </p>

  <h4>アイコン・バージョン等を変更する</h4>
  <p>
    　レシピファイル内の<a href="http://exerb.sourceforge.jp/man/doc/recipe.ja.html#0303" target="_blank">resourceブロック</a>内には、バージョンや製品情報などの著作者情報・アイコンファイルなどを記述することができます。
  </p>

  <h4>実行ファイルを圧縮する</h4>
  <p>
    　昨今では気になるレベルではないですが、出来上がった実行ファイルのサイズは若干大きくなります。ZIPなどの圧縮ではなく、実行可能形式のまま圧縮できるソフトがあるので、それを利用することができます。(Rubyとの直接の関係はありません。)<br />　<a href="http://www.vector.co.jp/soft/win95/util/se139612.html" target="_blank">UPX(と、そのフロントエンド)</a>を使えば、簡単に圧縮でき、Rubyで作った簡単なプログラムなら大体半分以下のサイズになります。
  </p>
</div>

<h3 id="jw_cad">Jw_cadの外部変形で使う場合</h3>
<div class="section">
  <p>
    　当たり前ですが、外部変形でも上記の方法で実行ファイルを利用することができます。その場合は当然、<strong>batファイルの｢Rubyを起動する行｣</strong>のみ変更する必要があります。
  </p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://cad-shelf.com/ruby/exerb.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vrubyを使ったシンプルなダイアログライブラリ</title>
		<link>http://cad-shelf.com/ruby/simple_dialog.html</link>
		<comments>http://cad-shelf.com/ruby/simple_dialog.html#comments</comments>
		<pubDate>Sun, 05 Apr 2009 01:18:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Jw_cad]]></category>
		<category><![CDATA[simple_dialog]]></category>

		<guid isPermaLink="false">http://cad-shelf.com/?p=480</guid>
		<description><![CDATA[Simple Dialogとは


  








VisualuRuby

　VisualuRuby(以下vruby)とは、Ruby+Windows環境で使えるGUIライブラリです。Win32AP [...]]]></description>
			<content:encoded><![CDATA[<h3>Simple Dialogとは</h3>
<div class="section">
<div style="float:right;">
  <div class="adsense">
<script type="text/javascript"><!--
google_ad_client = "pub-1112500852749146";
/* 336x280, 作成済み 09/05/29 */
google_ad_slot = "0988350545";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>

</div>

<h4>VisualuRuby</h4>
<p>
　<a href="http://www.osk.3web.ne.jp/~nyasu/software/vrproject.html" target="_blank">VisualuRuby</a>(以下vruby)とは、Ruby+Windows環境で使えるGUIライブラリです。Win32APIを直接扱ったライブラリのため、特殊なウィジェットやツールキットを必要としません。<a href="http://arton.hp.infoseek.co.jp/indexj.html" target="_blank">ActiveScriptRuby</a>なんかでRubyをインストールした場合は最初から入ってると思います。
</p>
<br style="clear:both;" />
<h4>Simple Dialog</h4>
<p>
・ダウンロード： <a href="http://cad-shelf.com/?download=simple_dialog.zip">simple_dialog.zip</a><br /><br />
　<strong>Simple Dialog</strong>は、vrubyで扱えるWindowsのダイアログ+αをラップしたライブラリです。(ライブラリと呼べる程大層なものではないかもしれません。)メッセージボックス/ファイル・フォルダ・etc選択ダイアログ/勝手に定義したダイアログを手軽に扱えるようにしただけのもので、拡張性もありません。Jw_cad外部変形のような、Rubyと何かアプリケーションを連携させた際の簡単なインターフェイスに使えると思い作成しました。<br />　vrubyに合わせてShift_jisに対応させています。
</p>
</div>

<h3>リファレンス</h3>
<div class="section">
<p>
　ダイアログを出して戻り値を得るメソッド群をモジュールで固めたライブラリで、全てmodule_functionとして定義してあります。
</p>
<pre><code>require "simple_dialog"
puts SimpleDialog.msgbox("OKボタンのみのメッセージボックス")
#=> :ok
</code></pre>
<p>
　<strong>include SimpleDialog</strong>とすると、それ以下はレシーバなしでメソッドを呼べます。
</p>
<pre><code>require "simple_dialog"
include SimpleDialog

puts msgbox("[はい]、[いいえ]を選択するメッセージボックス", "title", :yesno)
#=> :yes

puts select_file
#=> C:\jww\Sample.jwf
</code></pre>

<h4>メソッド一覧</h4>
<ul>
  <li><a href="#msgbox">msgbox, message_box</a></li>
  <li><a href="#select_file">select_file</a></li>
  <li><a href="#save_file">save_file</a></li>
  <li><a href="#select_directory">select_directory</a></li>
  <li><a href="#select_color">select_color</a></li>
  <li><a href="#select_rgb">select_rgb</a></li>
  <li><a href="#select_font">select_font</a></li>
  <li><a href="#input_box">input_box</a></li>
  <li><a href="#check_list">check_list</a></li>
  <li><a href="#radio_btns">radio_btns</a></li>
  <li><a href="#combo_boxes">combo_boxes</a></li>
  <li><a href="#set_dialog_parent">set_dialog_parent</a></li>
</ul>

<h4 id="msgbox">msgbox(text, title = &quot;&quot;, type = :ok, icon = nil)</h4>
<img src="http://cad-shelf.com/wp-content/uploads/2009/04/msgbox.jpg" alt="msgbox" title="msgbox" width="213" height="94" class="alignnone size-full wp-image-497" />
<p>
　メッセージボックスを表示させ、選択されたボタン毎にマッピングされたシンボルを返します。message_boxのエイリアスです。
</p>
<h5>text (引数1)</h5>
<p>
　メッセージ欄に表示させる文字列です。
</p>
<h5>title (引数2)</h5>
<p>
　メッセージボックスのタイトルバーに表示させる文字列です。
</p>
<h5>type (引数3)</h5>
<p>
　メッセージボックスのタイプを表すシンボルを指定します。以下の括弧はWindowsAPIで扱う定数です。
</p>
<ul>
  <li><span style="color:red;">:ok</span> (MB_OK)
    <ul><li>デフォルト値です。OKボタンのみ表示されます。</li></ul>
  </li>
  <li><span style="color:red;">:okcancel</span> (MB_OKCANCEL)
    <ul><li>OKボタン、キャンセルボタンが表示されます。</li></ul>
  </li>
  <li><span style="color:red;">:abortretryignore</span> (MB_ABORTRETRYIGNORE)
    <ul><li>中止・再試行・無視ボタンが表示されます</li></ul>
  </li>
  <li><span style="color:red;">:yesnocancel</span> (MB_YESNOCANCEL)
    <ul><li>はい・いいえ・キャンセルボタンが表示されます。</li></ul>
  </li>
  <li><span style="color:red;">:yesno</span> (MB_YESNO)
    <ul><li>はい・いいえボタンが表示されます。</li></ul>
  </li>
  <li><span style="color:red;">:retrycancel</span> (MB_RETRYCANCEL)
    <ul><li>再試行・キャンセルボタンが表示されます。</li></ul>
  </li>
  <li><span style="color:red;">:canceltrycontinue</span> (MB_CANCELTRYCONTINUE)
    <ul><li>キャンセル・再実行・続行ボタンが表示されます。</li></ul>
  </li>
</ul>

<h5>icon (引数4)</h5>
<p>
　アイコンを表示させたい場合に、各アイコンを表すシンボルを指定します。
</p>
<ul>
  <li><span style="color:red;">:stop, :error, :hand</span> (MB_ICONSTOP)
    <ul><li>停止アイコン(×マーク)を表示させます。</li></ul>
  </li>
  <li><span style="color:red;">:question</span> (MB_ICONQUESTION)
    <ul><li>疑問符アイコン(？マーク)を表示させます。</li></ul>
  </li>
  <li><span style="color:red;">:exclamation, :warning</span> (MB_ICONEXCLAMATION)
    <ul><li>感嘆符アイコン(！マーク)を表示させます。</li></ul>
  </li>
  <li><span style="color:red;">:information, :asterisk</span> (MB_ICONINFORMATION)
    <ul><li>吹き出しに｢i｣のアイコンを表示させます。</li></ul>
  </li>
</ul>

<h5>戻り値</h5>
<p>
　ボタンごとにシンボルを割り当てています。
</p>
<ul>
  <li><span style="color:red;">:ok</span></li>
  <li><span style="color:red;">:cancel</span></li>
  <li><span style="color:red;">:abort</span></li>
  <li><span style="color:red;">:retry</span></li>
  <li><span style="color:red;">:ignore</span></li>
  <li><span style="color:red;">:yes</span></li>
  <li><span style="color:red;">:no</span></li>
  <li><span style="color:red;">:tryagain</span></li>
  <li><span style="color:red;">:continue</span></li>
</ul>

<h4 id="select_file">select_file(title = &quot;ファイル選択&quot;, filter = [])</h4>
<p>
　ファイル選択ダイアログを開き、選択されたファイルのパスを返します。キャンセルされた場合はnilを返します。
</p>
<h5>filter</h5>
<p>
　フィルタの説明とフィルタパターンの組(配列)の配列を渡します。説明は単なる文字列、フィルタパターンはワイルドカードと拡張子からなる文字列を指定します。<br />例：[[&quot;ビットマップファイル(*.bmp)&quot;, &quot;*.bmp&quot;], [&quot;テキストファイル(*.txt)&quot;, &quot;*.txt&quot;]]
</p>

<h4 id="save_file">save_file(title = &quot;ファイルに保存する&quot;, filter = [])</h4>
<p>
　select_fileと同様に使えます。
</p>

<h4 id="select_directory">select_directory(title = &quot;ディレクトリ選択&quot;, initdir = nil)</h4>
<p>
　ディレクトリ選択ダイアログを表示し、選択されたディレクトリのパスを返します。<strong>initdir</strong>でルートディレクトリを指定できます。
</p>

<h4 id="select_color">select_color</h4>
<p>
　パレットを表示し、選択した色を表す数値を返します。
</p>

<h4 id="select_rgb">select_rgb</h4>
<p>
　select_colorを実行し、結果をRGBの配列にして返します。
</p>

<h4 id="select_font">select_font</h4>
<p>
　フォント選択ダイアログを表示し、フォントを表す配列を返します。
</p>

<h4 id="input_box">input_box(title, text, width = 300)</h4>
<img src="http://cad-shelf.com/wp-content/uploads/2009/04/input_box.jpg" alt="input_box" title="input_box" width="300" height="115" class="alignnone size-full wp-image-496" />
<p>
　文字列の入力欄があるダイアログを表示します。OKなら入力した文字列、CANCELならfalseを返します。タイトルと説明文の他に、横幅を指定できます。
</p>

<h4 id="check_list">check_list(title, text, list, width = 300)</h4>
<img src="http://cad-shelf.com/wp-content/uploads/2009/04/check_list.jpg" alt="check_list" title="check_list" width="300" height="145" class="alignnone size-full wp-image-494" />
<p>
　listに文字列の配列を渡し、その分だけチェックボックスを配置したダイアログを表示します。OKならチェックされた項目のインデックスの配列を返し、CANCELならfalseを返します。
</p>
<pre><code>require "simple_dialog"
include SimpleDialog

list = ["項目1： foo", "項目2： bar", "項目3： baz"]
a = check_list("test", "チェックリストダイアログのテスト", list)
#=> [0, 2]

puts list.values_at(*a) if a
#=> 項目1： foo
#=> 項目3： baz
</code></pre>

<h4 id="radio_btns">radio_btns(title, text, list, width = 300)</h4>
<img src="http://cad-shelf.com/wp-content/uploads/2009/04/radio_btns.jpg" alt="check_list" title="check_list" width="300" height="145" class="alignnone size-full wp-image-494" />
<p>
　check_listと同様の操作で、ラジオボタンを並べたダイアログを表示します。OKなら選択された項目のインデックス、CANCELならfalseを返します。
</p>

<h4 id="combo_boxes">combo_boxes(title, text, list, width = 300)</h4>
<img src="http://cad-shelf.com/wp-content/uploads/2009/04/combo_boxes.jpg" alt="check_list" title="check_list" width="300" height="164" class="alignnone size-full wp-image-494" />
<p>
　コンボボックスを複数並べたダイアログを表示します。listには「文字列の配列」の配列を渡します。OKならそれぞれのコンボボックスの選択された項目のインデックスを配列にしたもの、CANCELならfalseを返します。
</p>
<pre><code>require "simple_dialog"
include SimpleDialog

list = [
  ["項目1-1", "項目1-2", "項目1-3"],
  ["項目2-1", "項目2-2", "項目2-3"]
]
a = combo_boxes("test", "コンボボックスのテスト", list)
#=> [1, 2]

a.each_with_index{|n, i|
  puts list[i][n]
} if a
#=> 項目1-2
#=> 項目2-3
</code></pre>

<h4 id="set_dialog_parent">set_dialog_parent(parent)</h4>
<p>
　他のvrubyアプリケーションと合わせて使う場合、このメソッドにフォームのインスタンスを渡すことで、Simple Dialogで表示するダイアログの親ウインドウを設定できます。設定した場合、それ以降のダイアログが全てそのフォームを親とすることに注意してください。親ウインドウを無くして初期設定にするにはset_dialog_parent(nil)とします。
</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://cad-shelf.com/ruby/simple_dialog.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jw_cad ツールバーとユーザーバー</title>
		<link>http://cad-shelf.com/jw_cad/toolbar.html</link>
		<comments>http://cad-shelf.com/jw_cad/toolbar.html#comments</comments>
		<pubDate>Sun, 22 Mar 2009 21:18:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Jw_cad]]></category>
		<category><![CDATA[ツールバー]]></category>
		<category><![CDATA[ユーザーバー]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://cad-shelf.com/?p=471</guid>
		<description><![CDATA[Jw_cadにおけるツールバー


  









　各機能をボタンにして種類ごとにまとめたものを、ツールバーと呼びます(初期状態で左右にあるボタン全てがそうです)。ツールバーの中でもユーザーバーと [...]]]></description>
			<content:encoded><![CDATA[<h3>Jw_cadにおけるツールバー</h3>
<div class="section">
<div style="float:right;">
  <div class="adsense">
<script type="text/javascript"><!--
google_ad_client = "pub-1112500852749146";
/* 336x280, 作成済み 09/05/29 */
google_ad_slot = "0988350545";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>

</div>

<p>
　各機能をボタンにして種類ごとにまとめたものを、<strong>ツールバー</strong>と呼びます(初期状態で左右にあるボタン全てがそうです)。ツールバーの中でも<strong>ユーザーバー</strong>と呼ばれるものを利用すると、ユーザが好きにカスタマイズ・配置したツールバーを作成することができます。
</p>
<br style="clear:both;" />
<h4>配置と移動、初期化</h4>
<p>
　ツールバーの余白部分をドラッグすると移動させることができます。また、ツールバー右クリックから各ツールバーの表示・非表示を切り替えることができ、【メニューバー &gt; 表示 &gt; ツールバー】からまとめて操作することもできます。この辺りは簡単なので誰でも直感で操作できると思います。<br />　Jw_cadのツールバーの配置情報は全て<strong>レジストリ</strong>に記憶され、Jw_cad終了時などの様々なタイミングでその時々の状態が書き込まれます。また、ウインドウサイズを変更した際、自動で(勝手に)再配置されるようになっているので、注意が必要です。予期しないズレが発生した場合は、【メニューバー &gt; 表示 &gt; ツールバー】で表示されるダイアログから[初期状態に戻す]をチェックすると、インストール時の状態に戻すことができます。
</p>
<h4>勝手にずれる原因</h4>
<p>
　Jw_cad起動時に勝手に配置がずれていることがあります。これは<strong>ウインドウ最小化時にJw_cadを終了すると起こる現象</strong>で、「終了時にレジストリに配置が書き込まれる」ことと、「最小化時の配置は、ウインドウ自体を小さくした場合と判断される」こと、そして「自動再配置」の機能があるため起こるものです。不具合のようなものと捉えていいかもしれません。
</p>
<h4>配置情報をバックアップする</h4>
<p>
　上記の通り配置情報はレジストリに記憶されているため、バックアップすることが可能です。といっても直接いじるのは手間ということで、<a href="http://afsoft.jp/program/p05.html" target="_blank">AFsoftさんのJWlayout</a>を利用すると簡単にバックアップ・復元ができるようです。
</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://cad-shelf.com/jw_cad/toolbar.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LiteCAD</title>
		<link>http://cad-shelf.com/software/litecad.html</link>
		<comments>http://cad-shelf.com/software/litecad.html#comments</comments>
		<pubDate>Sun, 15 Mar 2009 07:04:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CADソフト・CADシステム]]></category>
		<category><![CDATA[AutoCAD]]></category>
		<category><![CDATA[DWG]]></category>
		<category><![CDATA[DXF]]></category>
		<category><![CDATA[LiteCAD]]></category>

		<guid isPermaLink="false">http://cad-shelf.com/?p=446</guid>
		<description><![CDATA[

  









　LiteCADは、AutoCAD標準フォーマット(DXF/DWG)に対応したフリーの海外製CADソフトです。シンプル且つ軽量で、USBなどの外部ドライブから起動できるのが特徴です [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<div style="float:right;">
  <div class="adsense">
<script type="text/javascript"><!--
google_ad_client = "pub-1112500852749146";
/* 336x280, 作成済み 09/05/29 */
google_ad_slot = "0988350545";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>

</div>

<p>
　<strong>LiteCAD</strong>は、AutoCAD標準フォーマット(DXF/DWG)に対応したフリーの海外製CADソフトです。シンプル且つ軽量で、USBなどの外部ドライブから起動できるのが特徴です。
</p>
</div>

<h3>ダウンロードとセットアップ</h3>
<div class="section">
<p>
・<a href="http://www.litecad.com/" target="_blank">LiteCAD</a>
</p>
<p>
　ダウンロードし、解凍するだけで起動できます。古いバージョンの初回起動時に表示される「<u>Recent Files List is empty</u>」は、「<u>最近作業したファイルの一覧</u>を表示しようとしたけどなかった」というエラーなので問題ありません。
</p>
<h4>インターフェイスの日本語化</h4>
<p>
　<a href="/litecad/language.html">LiteCADの日本語化の方法</a>をまとめています。サンプルの言語定義ファイルは完全なものではないので注意してください。
</p>
<h4>日本語の含まれるCADファイルの表示方法</h4>
<p>
　日本語を表示させるには、同梱のLCFont.exeを使って日本語フォントファイルを作成し、それを読み込む必要があります。フォントの設定と、文字コードのトラブルの話が<a href="http://www.ath-j.com/~net-1/jww/1.html" target="_blank">建築資料館</a>さんに詳しく載っているので、ご参照ください。
</p>
</div>

<h3>簡単な操作方法</h3>
<div class="section">
<p>
　機能は全て<strong>コマンド</strong>として用意されており、メニューバー/ツールバー/コマンド入力から実行することができます。全てのコマンドが、以下の例と同じような操作で実行できます。
</p>

<h4>コマンドの入力</h4>
<p>
　全てのコマンドは、キーボードから入力できます。大文字・小文字は区別されず、エンターキーまたはスペースでコマンドを確定することができます。IMEが日本語入力モードの時には入力できません。
</p>

<h4>線を引く</h4>
<h5>コマンド選択</h5>
<p>
　ツールバー上のLINEコマンドを選択するか、キーボードで<strong>LINE</strong> (又は単にL)と入力し、確定させます。
</p>
<h5>始点・終点</h5>
<p>
　左クリックで各点を指示し、連線を書きます。
</p>
<h5>コマンド実行(終了)</h5>
<p>
　右クリック後<strong>[Exit]</strong>を選択するか、[Esc]キーを押すとLINEコマンドを終了します。
</p>

<h4>オブジェクトを消す</h4>
<p>
　コマンドを選択していない状態で、左クリックでオブジェクトを選択します。右クリックで<strong>[Erase]</strong>を選択するか、[Del]キーを押す、または<strong>ERASE</strong>と入力すると選択したオブジェクトが削除されます。コマンドを先に入力/選択していても構いません。
</p>

<h4>基本操作</h4>
<dl>
  <dt>左クリック</dt>
  <dd>矩形選択・オブジェクト選択<br />コマンド実行時はオブジェクト選択や座標(指定点)の確定</dd>
  <dt>右クリック</dt>
  <dd>コマンド選択メニューのポップアップ<br />コマンド実行時はコマンドの終了・確定・進行</dd>
  <dt>マウスホイール</dt>
  <dd>図面の拡大/縮小/移動</dd>
  <dt>Esc</dt>
  <dd>オブジェクト選択の解放、コマンドの終了</dd>
  <dt>Enter, Space</dt>
  <dd>コマンド入力の確定</dd>
  <dt>Delete</dt>
  <dd>ERASEコマンドの実行</dd>
</dl>
</div>

<h3>まとめ</h3>
<div class="section">
<p>
　デフォルトのファイルフォーマットは独自形式の<strong>lcd</strong>という拡張子のもので、DXF/DWGは同梱のDLLファイルを使って読み書きしているようです。対応フォーマットをDLLで用意している点やコマンドの一貫性、多言語化への対応を見るに、シンプルさだけでなく拡張性を意識して作っているようなので、これからにとても期待できるCADソフトです。
</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://cad-shelf.com/software/litecad.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CADとプログラミング</title>
		<link>http://cad-shelf.com/cad/programming.html</link>
		<comments>http://cad-shelf.com/cad/programming.html#comments</comments>
		<pubDate>Thu, 12 Mar 2009 22:33:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CAD]]></category>
		<category><![CDATA[Jw_cad]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[外部変形]]></category>

		<guid isPermaLink="false">http://cad-shelf.com/?p=424</guid>
		<description><![CDATA[ 



  









  事務作業とプログラミング
  Jw_cadとプログラミング
  Ruby 参考書籍
  Python 参考書籍



事務作業とプログラミング

 [...]]]></description>
			<content:encoded><![CDATA[<script charset="utf-8" type="text/javascript" src="http://ws.amazon.co.jp/widgets/q?ServiceVersion=20070822&#038;MarketPlace=JP&#038;ID=V20070822/JP/hekoizm-22/8005/ae3d52a5-71e6-4e04-9387-5c51aa860e32"> </script>

<div class="section">
<div style="float:right;">
  <div class="adsense">
<script type="text/javascript"><!--
google_ad_client = "pub-1112500852749146";
/* 336x280, 作成済み 09/05/29 */
google_ad_slot = "0988350545";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>

</div>

<ul>
  <li><a href="#jimu">事務作業とプログラミング</a></li>
  <li><a href="#jw">Jw_cadとプログラミング</a></li>
  <li><a href="#ruby">Ruby 参考書籍</a></li>
  <li><a href="#python">Python 参考書籍</a></li>
</ul>
</div>

<h3 id="jimu">事務作業とプログラミング</h3>
<div class="section">
<p>
　自分でプログラムを組めるようになると、事務作業の効率が大幅に変わるかもしれません。もちろんそれなりの時間的な投資が必要ですが、一度覚えれば応用が利くようになり、特に事務的な繰り返し作業は確実に楽になります。
</p>
<h4>言語を選ぶポイント</h4>
<p>
　1つ習得すれば他の言語の習得も比較的早くなりますが、1つ目で挫折しては意味がありません。(個人的な)結論として、「すぐ結果が得られ、処理が簡潔に書ける」言語が初級者には適すると考えています。まず一般的な事務作業で必ず必要になるのは、<strong>ファイル操作</strong>(ファイルの読み込み・保存)と、<strong>文字列操作</strong>(検索や加工)です。一般的に<strong>スクリプト言語</strong>と呼ばれ、且つ現在普及しているものは、これらの処理を簡潔に書けるものが多く、(本格的ではなくとも)ある程度の習得は比較的容易であると言えます。<br />　スクリプト言語の定義は曖昧ですが、以下「インタプリタ形式で動く/記述が簡潔である/(普及度として)メジャーである/ある程度の資料がある」ものとして、<strong>PHP/Perl/Python/Ruby</strong>を取り上げて解説します。
</p>
<h4>各スクリプト言語の概要</h4>
<dl>
  <dt>PHP</dt>
  <dd>
    　まず<strong>PHP</strong>ですが、この言語は動的なWebページを作成することを主な目的としています。文法が単純で多数の専用関数が定義されており、そのため初級者でも習得しやすいと言われます。が、前述の通りWebと組み合わせて発揮される言語であるため、事務作業などの用途には向いていないかもしれません。
  </dd>

  <dt>Perl</dt>
  <dd>
    　<strong>Perl</strong>は、かつてWeb上で扱うCGIプログラムとして広く普及しました。組み込み/標準ライブラリで強力な機能を持っており、1つの目的を達成するのに複数の方法を持つような柔軟性があります。一時代を築いた言語なので、ネット上に大量のサンプル・解説が存在しています。しかし、文法が自由なため個々の技量に左右されやすく、悪い習慣が付くことがありソースコードが見づらくなりがちです。(もちろん綺麗に記述することもできます。)
  </dd>

  <dt>Python, Ruby</dt>
  <dd>
    　プログラミング言語は、互いに影響を受けあって変化・成長しています。そのため、後発の言語の方が構造化の技術や方法論が整備されていることが多く、何らかの思想のもと綺麗にまとまったものが多いです。後発の言語で広く普及したものとして、<strong>Python</strong>、<strong>Ruby</strong>がよく挙げられます。これらももちろん技量によりますが、比較的綺麗なソースコードで簡潔な記述が可能です。
  </dd>
</dl>
<h4>結局何がいいの？</h4>
<p>
　言語の比較をやりだすとキリがなく、趣旨と外れていくので書きませんが、今から始めようという方には<strong>Python</strong>または<strong>Ruby</strong>の何れかをお奨めします。どちらも国内外問わず人気が高く、書籍・ネット上の資料など十分にあります。特にRubyは、CAD業界でもJw_cadの外部変形プログラムとして普及しており、覚える価値は十分にあります。本サイトでもRubyプログラミングを多少扱っているので、ご参照ください。
</p>
</div>

<h3 id="jw">Jw_cadとプログラミング</h3>
<div class="section">
<p>
　言うまでもなく、Jw_cadの外部変形はある程度のプログラムを書かないと利用できません。自分の得意な言語・好きな言語で記述できるので、あまりこだわる必要もないかもしれません。
</p>
<dl>
  <dt>C/C++</dt>
  <dd>
    　コンパイルして容易に配布できるのが特徴です。言語としても枯れており、開発の際のノウハウやサンプルも見つけやすく、プログラムの処理速度も出やすいです。が、外部変形のような小規模のプログラムを書くには(他言語と比べて)冗長なコードになりやすく、速度差も大したアドバンテージにはなりません。
  </dd>

  <dt>Perl/Ruby/Python/AWK</dt>
  <dd>
    　インタプリタ型の(メジャー且つ実用的な)言語は、C/C++に比べて少ないコード量で簡潔に処理を記述することができます。テキスト・文字列の処理に強いので、外部変形プログラムにも向いていると言えます。言語処理系をインストールした環境でないと実行できないのが欠点ですが、言語によっては一つの実行ファイルにまとめる方法も存在します。(RubyのExerb、Pythonのpy2exeなど。)<br />　本サイトでも、<a href="/jw_cad/jwruby.html">Ruby 外部変形ライブラリ</a>を公開しています。
  </dd>

  <dt>GUI</dt>
  <dd>
    　言語ではありませんが、GUIやダイアログを表示させることで外部変形の幅が大きく広がります。スクリプト系でもライブラリ次第で簡単に出せるのですが、元からサポートされた言語(VBやDelphi)や<strong>.NET Framework</strong>で動く言語を視野に入れるのも良いかもしれません。
  </dd>

  <dt>その他</dt>
  <dd>
    　他の言語でも、外部変形くらいのプログラムなら開発コストは大して変わりません。「この言語が普及しているから」くらいの理由で始めても構わないかと思います。また、<a href="http://www17.ocn.ne.jp/~lite/gaihen_clisp.html" target="_blank">Common Lispの外部変形ライブラリ</a>を開発された方もいらっしゃいます。Lispの強力さを活かせるようになれば、それも面白いかもしれません。
  </dd>
</dl>
</div>

<h3 id="ruby">Ruby 参考書籍</h3>
<div class="section">
<p>
　流行りの言語はWeb上に情報が多く、分からないことでも検索すればすぐに出てくる場合が多々あります。ネットを活用すれば書籍が無くてもある程度は覚えられるものです。が、一冊の参考書があるとモチベーションも保ちやすく、何より体系的な学習ができるので、最初の言語の最初の一冊だけは持っていて損はありません。
</p>

<div class="amazon_block">
  <div class="amazon_image">
    <a type="amzn" asin="4797336617"><img src="http://cad-shelf.com/wp-content/uploads/2009/03/ruby1.jpg" alt="ruby1" title="ruby1" width="120" height="170" class="aligncenter size-full wp-image-433" /></a>
  </div>
  <div class="amazon_text">
    <h4><a type="amzn" asin="4797336617">たのしいRuby 第2版 Rubyではじめる気軽なプログラミング</a></h4>
    <p>
      　初めてRubyプログラミングを勉強する方にはこの本がお奨めです。チュートリアル・基礎・実践とテーマを分けて掲載してあり、プログラミング自体の初心者でも読み解けるようにまとめてあります。簡単な事務作業を行うだけなら、基本文法と基本的な組み込みライブラリの習得だけで十分だったりします。あまり込み入ってプログラムを組みたくはないけど、基礎はやっておきたいという方にもお奨めです。
    </p>
  </div>
</div>

<div class="amazon_block">
  <div class="amazon_image">
    <a type="amzn" asin="4797336617"><img src="http://cad-shelf.com/wp-content/uploads/2009/03/ruby2.jpg" alt="ruby2" title="ruby2" width="120" height="170" class="aligncenter size-full wp-image-434" /></a>
  </div>
  <div class="amazon_text">
    <h4><a type="amzn" asin="4797336617">Rubyレシピブック 第2版 268の技</a></h4>
    <p>
      　ジャンル・テーマごとにテクニックやサンプルを記載したレシピ本です。サンプルコードを載せているので、実践向けの逆引き本として役に立ちます。他の言語を触ったことがある人など、Rubyではどう書くか/どうすればRubyらしいプログラミングができるか、が知りたい場合は一読しましょう。Rubyに限りませんが、その言語の作法を知っているかどうかで作業効率は全く違ってきます。
    </p>
  </div>
</div>
<div class="amazon_block">
  <h4>プログラミングRuby</h4>
  <p>
    　Rubyプログラマとしてステップアップしたい方向けにも、基礎から高度な内容までを扱った書籍があります。以下は、Ruby作者のまつもと氏自身が翻訳に加わった書籍「プログラミングRuby」の、言語仕様・動作の仕組みなど高度な内容が記載された<strong>言語編</strong>と、組み込み/標準ライブラリを解説した<strong>ライブラリ編</strong>です。
  </p>
  <ul>
    <li><a type="amzn" asin="4274066428">プログラミングRuby 第2版 言語編</a></li>
    <li><a type="amzn" asin="4274066436">プログラミングRuby 第2版 ライブラリ編</a></li>
  </ul>
</div>
</div>

<h3 id="python">Python 参考書籍</h3>
<div class="section">
<div class="amazon_block">
  <div class="amazon_image">
    <a type="amzn" asin="479733665X"><img src="http://cad-shelf.com/wp-content/uploads/2009/03/python1.jpg" alt="ruby1" title="ruby1" width="120" height="169" class="aligncenter size-full wp-image-433" /></a>
  </div>
  <div class="amazon_text">
    <h4><a type="amzn" asin="479733665X">みんなのPython</a></h4>
    <p>
      　Pythonを基礎から学びたい人向けの書籍です。著者が日本の方なので、訳本にありがちな変な誤植もなく言語の習得に集中できます。Pythonらしいスマートなコードも、しっかりと学べる一冊です。
    </p>
  </div>
</div>

<div class="amazon_block">
  <div class="amazon_image">
    <a type="amzn" asin="4873111773"><img src="http://cad-shelf.com/wp-content/uploads/2009/03/python2.jpg" alt="ruby1" title="ruby1" width="120" height="176" class="aligncenter size-full wp-image-433" /></a>
  </div>
  <div class="amazon_text">
    <h4><a type="amzn" asin="4873111773">Pythonクィックリファレンス</a></h4>
    <p>
      　Pythonの重要な標準ライブラリモジュールや、人気のあるサードパーティ製の拡張モジュールが記載されたリファレンスマニュアルです。また、チュートリアルや、開発の参考となる資料などの概要も載っているので、素早くPythonを掴みたい方にお奨めです。
    </p>
  </div>
</div>

</div>
]]></content:encoded>
			<wfw:commentRss>http://cad-shelf.com/cad/programming.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

