<?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>メインプログラム | じじぃの引出し</title>
	<atom:link href="https://www.kazuban.com/blog/tag/main-program/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kazuban.com/blog</link>
	<description>なにかしら、皆さんの参考になれば幸いです！</description>
	<lastBuildDate>Mon, 22 Dec 2025 22:57:33 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.kazuban.com/blog/wp-content/uploads/2020/05/cropped-ICON-1-32x32.png</url>
	<title>メインプログラム | じじぃの引出し</title>
	<link>https://www.kazuban.com/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>DXFから、穴情報を取出す</title>
		<link>https://www.kazuban.com/blog/get-circle/</link>
					<comments>https://www.kazuban.com/blog/get-circle/#comments</comments>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Sun, 03 May 2020 07:30:23 +0000</pubDate>
				<category><![CDATA[NC]]></category>
		<category><![CDATA[DXF]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Fanuc]]></category>
		<category><![CDATA[エクセル]]></category>
		<category><![CDATA[サブプログラム]]></category>
		<category><![CDATA[ファナック]]></category>
		<category><![CDATA[メインプログラム]]></category>
		<category><![CDATA[固定サイクル]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=2442</guid>

					<description><![CDATA[外出自粛のなか、DXFデータの円要素を読み込み、穴情報を取り出すソフトを作成してみました。CADなどで描いた「円要素」を穴と捉え、位置や直径などを取り出します。取り出した情報ファイルはテキストやエクセルの他に、簡易的なＮ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>外出自粛のなか、DXFデータの円要素を読み込み、穴情報を取り出すソフトを作成してみました。<br>CADなどで描いた「円要素」を穴と捉え、位置や直径などを取り出します。<br>取り出した情報ファイルはテキストやエクセルの他に、簡易的なＮＣデータも自動作成する仕様としました。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">DXFファイル</a><ol><li><a href="#toc2" tabindex="0">DXFファイルを覗いてみる</a></li><li><a href="#toc3" tabindex="0">円情報はどこにある？</a></li></ol></li><li><a href="#toc4" tabindex="0">穴情報取り出しソフトGetCircleFromDxf.exe</a><ol><li><a href="#toc5" tabindex="0">C++Builder</a></li><li><a href="#toc6" tabindex="0">こんなソフト</a></li><li><a href="#toc7" tabindex="0">ダウンロード</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">DXFファイル</span></h2>



<p>「DXF」は「Autodesk社」が開発した、CAD間でやり取りできる、データ構造の一種ですが、事実上の標準フォーマットになっていてほとんどのCADで読み書きできます。<br>DXFには、テキストとバイナリ形式が存在するようですが、ここで紹介するのは、テキスト形式に限定させていただきます。</p>



<h3 class="wp-block-heading"><span id="toc2">DXFファイルを覗いてみる</span></h3>



<p>テキスト形式のDXFファイルであれば、メモ帳やエディタなどで開く事ができます。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/05/DxfOpen.png" alt=""/></figure>



<p>DXFファイルは、ほとんどのCADであれば、作成する事ができると思いますし、このサイトでも取り上げてる、「Fusion360」でも作成可能です。<br>スケッチモードで適当な図形（今回は穴がテーマなので円など）を描いて、<br>「スケッチ１」⇒ マウス右クリックから「DXF形式で保存」で作成できます。</p>



<figure class="wp-block-image size-large"><a href="https://www.kazuban.com/blog/wp-content/uploads/2020/05/DXF_Create.png" target="_blank"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/05/DXF_Create.png" alt=""/></a></figure>



<p>Fusion360で作成された「DXFファイル」をエディタなどで開いてみます。<br>意味は置いといて、数字と単語が羅列されています。<br>このDXFフォーマットの詳しい内容は理解していませんが、<span class="markerPink">２行が一組</span>で意味があるようです。<br>ここでは詳細の説明はできませんので、ご了承ください。<br>興味ありましたら、<a href="https://help.autodesk.com/view/ACD/2019/JPN/?guid=GUID-235B22E0-A567-4CF6-92D3-38A2306D73F3">Autodeskのサイトなど</a>から検索してみてください。</p>



<h3 class="wp-block-heading"><span id="toc3">円情報はどこにある？</span></h3>



<p>ここでのテーマは、<span class="markerYellow">DXFから穴情報を取り出す</span>事です。<br>通常、加工図面では、穴は円で描かれていると思うので、まずは円情報を探してみます。<br>DXF形式の、「円」のキーワードは「<strong>CIRCLE</strong>」になります。<br>ちなにみ、「<strong>CIRCLE</strong>」は閉じている図形です。<span class="markerPink">閉じていない場合には「ARC」</span>となりますので注意してください。<br>では、「閉じた円」が含まれるDXFファイルを作成し、「<strong>CIRCLE</strong>」文字列を検索してみます。<br> <span class="markerYellow">位置や円径などは単純でないほうが分析しやすい</span>です <br><br></p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/05/DXF_Read.png" alt=""/></figure>



<p>「<strong>CIRCLE」</strong>と「<strong>AcDbCircle</strong>」が見つかりました。<br>私自身、DXF形式を理解しているわけではないので、正確な説明はできませんが、「円」の情報はこの２つのキーワードから取り出すことができそうです。<br>この例で分析してみると、「0」「CIRCLE」「5」「100」と続き、その後<br>「8」「0」「100」「AcDbCircle」「10」「-44.847&#8230;」「20」「34.949&#8230;」が見つかります。<br>この値を<span class="markerPink">元図面と比較するとルールが見えて</span>きます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>「10」の次が円中心のＸ座標。<br>「20」の次が円中心のＹ座標。<br>「30」の次が円中心のＺ座標。<br>「40」の次が円の半径。</p></blockquote>



<p>これが分かれば、「DXFファイル」から「<strong>AcDbCircle</strong>」を検索し、その次の行から「10」「20」・・のキーワードで、穴の中心と径の情報を取り出す事ができますね。<br>ただ「<strong>AcDbCircle</strong>」は<strong>サブクラス</strong>としての定義みたいなので、単純な「<strong>CIRCLE</strong>」セクションに直接図形情報がある場合もあるようです。<br>ソフトを開発する場合、より汎用性を求めるなら、そちらにも対応しておいたほうがいいかもしれません。</p>



<h2 class="wp-block-heading"><span id="toc4">穴情報取り出しソフト<br>GetCircleFromDxf.exe</span></h2>



<p>DXFの円定義方法がわかったので、このルールを基に穴の位置と径の情報として取り出すソフトを作成しました。</p>



<h3 class="wp-block-heading"><span id="toc5">C++Builder</span></h3>



<p>開発環境は、C++Builder Community Editiond です。<br>個人使用の場合には、１年間無料で使用できます。<br>ライセンス更新もできますからソフト開発の勉強にはもってこいです<br></p>



<figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-じじぃの引出し"><div class="wp-block-embed__wrapper">

<a href="https://www.kazuban.com/blog/cbuilder-license-update/" title="C++Builder Community Edition　のライセンス更新" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="160" height="35" src="https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_3_1.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_3_1.png 630w, https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_3_1-300x65.png 300w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">C++Builder Community Edition　のライセンス更新</div><div class="blogcard-snippet internal-blogcard-snippet">会社では開発環境として、「C++Builder EX6」を使用しています私はソフトウェア開発が商売ではなく、加工が楽になるような、NCデータやNC機械や測定器などのユーティリティソフトを作成していますC++の統合開発環境としては、やはりMSのVisual C++ がメジャーだと思いますが私は、二昔以...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2019.07.29</div></div></div></div></a>
</div></figure>



<h3 class="wp-block-heading"><span id="toc6">こんなソフト</span></h3>



<p>まずは、起動した、ウィンドウに「DXFファイル」を<span class="markerPink">ドロップ</span>します</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/05/Soft01.png" alt=""/></figure>



<p>ドロップすると、ファイル名や作成するデータの選択画面になります。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/05/Soft02.png" alt=""/></figure>



<p>デフォルトでは、「Text」と「Excel」がチェックされています<br>必要ない場合には、チェックを外します。<br>「円座標取出し」ボタンで、ドロップした「DXFファイル」と同じフォルダに、穴の<strong>中心位置と穴径</strong>の情報ファイルが出力されます。<br>簡易的なテンプレートデータですが、「NcData」をチェックすると、<strong>ファナック系</strong>のＮＣデータを作成します。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/05/Soft03.png" alt=""/></figure>



<p>ＮＣデータは、<span class="markerYellow"> ファナックをターゲット</span>にしています<br>メインプロで工具交換や回転など行い、サブプロには、穴径で分別した穴位置を指令するような構成です</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/05/Folder.png" alt=""/></figure>



<p>ＮＣプログラムの構成やメイン・サブプログラムについては下記で詳しく説明しています。<br>興味あれはご覧ください。</p>



<figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-じじぃの引出し"><div class="wp-block-embed__wrapper">

<a href="https://www.kazuban.com/blog/main-sub-pro/" title="NCプログラム／プログラム構成" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="122" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2021/01/Milling2.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2021/01/Milling2.png 1022w, https://www.kazuban.com/blog/wp-content/uploads/2021/01/Milling2-300x221.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2021/01/Milling2-768x567.png 768w" sizes="(max-width: 122px) 100vw, 122px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">NCプログラム／プログラム構成</div><div class="blogcard-snippet internal-blogcard-snippet">NCプログラムの構成は、大きく分けると２種類にわける事ができます。一つは加工に必要な準備機能で、もう一つは、実際の加工経路の動作指令です。さらに、マシニングセンターを対象にすると、準備機能は４つに分ける事ができます。CAMのポストプロセッサを編集する場合やプログラム全体の構成を検討する際、この基本構...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.01.28</div></div></div></div></a>
</div></figure>



<p><span class="markerPink">「DXF」では「<strong>穴の属性</strong>」までは認識できない</span>ので、メインプロは、単純な固定サイクルコードを出力するのみです。<br>固定サイクルの種別、加工深さ、加工条件などは、<span class="markerPink">編集が必要</span>です。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/05/NcData.png" alt=""/></figure>



<p>実際の条件などの出力は「DXF」の情報だけでは、取得できないので「DXF」だけで求めるＮＣデータを作成する事はできませんが<br>ＮＣコードの出力順序など若干のカスタマイズはできるようにしました。<br>実行ファイルと同梱されている、「TempFile」の中の４つのテキストファイルでカスタマイズできます。</p>



<pre class="wp-block-preformatted">・「Header.txt」
　メインプロ全体の、始まりのコードです。Ｏ番号や初期化コードを指令。

・「Footer.txt」
　メインプロ全体の、終了のコード。キャンセルや「M30」。

・「ToolBegin.txt」
　工具交換など、各工程の始まりのコード。
  工具交換、回転、工具長補正、固定サイクルなど。

・「ToolEnd.txt」
　各工程の終了コード、回転・冷却のキャンセルなど。</pre>



<h3 class="wp-block-heading"><span id="toc7">ダウンロード</span></h3>



<p><a href="https://www.kazuban.com/blog/free_soft/#Soft03">こちらから、ダウンロードできます。</a><br>単純な穴あけ加工や、穴位置の最終確認などには、使えるかもしれません。<br>「Vector」にも登録しました。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><a rel="noopener" href="https://www.vector.co.jp/soft/winnt/business/se521263.html" target="_blank"><strong>「Vector」はこちらから、ダウンロードできます。</strong></a></p></blockquote>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.kazuban.com/blog/get-circle/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>NCプログラム／メイン・サブ構成のNCデータを一本化（パッケージ化）したい場合もあるよね！</title>
		<link>https://www.kazuban.com/blog/sub-to-package/</link>
					<comments>https://www.kazuban.com/blog/sub-to-package/#comments</comments>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Thu, 06 Feb 2020 13:02:27 +0000</pubDate>
				<category><![CDATA[NC]]></category>
		<category><![CDATA[サブプログラム]]></category>
		<category><![CDATA[ファナック]]></category>
		<category><![CDATA[フリーソフト]]></category>
		<category><![CDATA[メインプログラム]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=1791</guid>

					<description><![CDATA[前回は、複数種類のマシニングセンターを運用する場合、「メイン・サブ仕様」の構成をお勧めしました。ただ、サブプロに対応していない制御機やシミュレーションソフトの場合や、データ管理的には、一つのパッケージのＮＣプログラムのほ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://www.kazuban.com/blog/main-sub-pro/">前回</a>は、複数種類のマシニングセンターを運用する場合、「メイン・サブ仕様」の構成をお勧めしました。<br>ただ、サブプロに対応していない制御機やシミュレーションソフトの場合や、データ管理的には、一つのパッケージのＮＣプログラムのほうがいい場合もあります。<br>そこで、メインプログラムのサブプロ呼び出し指令「M98 / M198」部分へ呼び出し先のサブプロブラムを挿入し一つのデータに統合するソフトを製作しました。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">サブプロを挿入するソフト公開</a><ol><li><a href="#toc2" tabindex="0">無料で使用できる、C++Builder で作成</a></li><li><a href="#toc3" tabindex="0">フリーソフトとして公開</a><ol><li><a href="#toc4" tabindex="0"> ＮＣプログラムの記事 </a></li></ol></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">サブプロを挿入するソフト公開</span></h2>



<p>ダウンロード後、起動すると、上のようなウィンドウが表示されます。<br> 通常、メイン・サブ構成でNCプログラムを作成した場合、フォルダ内は下記のようなイメージだと思います。 <br><br><br></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="728" height="357" src="https://www.kazuban.com/blog/wp-content/uploads/2020/02/SelectMainpro.png" alt="" class="wp-image-1796" srcset="https://www.kazuban.com/blog/wp-content/uploads/2020/02/SelectMainpro.png 728w, https://www.kazuban.com/blog/wp-content/uploads/2020/02/SelectMainpro-300x147.png 300w" sizes="(max-width: 728px) 100vw, 728px" /></figure>



<p>この例では、一番上が「メインプログラム」。<br>その下、４個がメインから呼ばれる「サブプログラム」です。<br><br></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="673" height="347" src="https://www.kazuban.com/blog/wp-content/uploads/2020/02/ProgramStart.png" alt="" class="wp-image-1797" srcset="https://www.kazuban.com/blog/wp-content/uploads/2020/02/ProgramStart.png 673w, https://www.kazuban.com/blog/wp-content/uploads/2020/02/ProgramStart-300x155.png 300w" sizes="(max-width: 673px) 100vw, 673px" /></figure>



<p>「メイン・サブ」構成のNCプログラムを、一つに統合するには、この画面の<font color="red"><strong>①</strong></font>エリアへ、「メインプログラムファイル」をドロップします。<br>もし「サブプログラム」が違うフォルダに登録されている場合には、<font color="blue"><strong>②</strong></font>のエリアへ「サブプログラム」のどれか一つをドロップします。<br>後は、「サブプロ挿入実行」のボタンクリックで作成が始まります。<br>「作成しました」のメッセージダイアログが表示されれば完了です。<br>作成されたパッケージファイルは、「PackageData.nc」になります。<br>ただし、サブプロ呼び出しは、ファナックの「M98 / M198」しか対応していません。OSPの「CALL」など他の制御機には対応していません。</p>



<h3 class="wp-block-heading"><span id="toc2">無料で使用できる、C++Builder で作成</span></h3>



<p></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="630" height="335" src="https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_3.png" alt="" class="wp-image-1032" srcset="https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_3.png 630w, https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_3-300x160.png 300w" sizes="(max-width: 630px) 100vw, 630px" /></figure>



<p>このソフトは趣味で使わせてもらってる、「C++Builder Community edition」で作成しました。<br>ランタイムが不要な、Windowsネイティブな「EXE」ファイルが作成できるので遊ぶには持って来いですね。<br>会社では、有料版の「 C++Builder  XE6」を使っていますが、私程度のレベルでは、ほとんど同じ関数しか使用しないので、C＋＋の勉強するには最適です。</p>



<h3 class="wp-block-heading"><span id="toc3">フリーソフトとして公開</span></h3>



<p>ベクターに登録しました</p>




<a rel="noopener" href="https://www.vector.co.jp/soft/winnt/business/se521022.html" title="&#12513;&#12452;&#12531;&#12503;&#12525;&#12395;&#12469;&#12502;&#12503;&#12525;&#12434;&#25407;&#20837;&#12398;&#35443;&#32048;&#24773;&#22577; : Vector &#12477;&#12501;&#12488;&#12434;&#25506;&#12377;&#65281;" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.vector.co.jp%2Fsoft%2Fwinnt%2Fbusiness%2Fse521022.html?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">&#12513;&#12452;&#12531;&#12503;&#12525;&#12395;&#12469;&#12502;&#12503;&#12525;&#12434;&#25407;&#20837;&#12398;&#35443;&#32048;&#24773;&#22577; : Vector &#12477;&#12501;&#12488;&#12434;&#25506;&#12377;&#65281;</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.vector.co.jp/soft/winnt/business/se521022.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.vector.co.jp</div></div></div></div></a>



<p><a href="https://www.kazuban.com/blog/free_soft/#Soft01">こちらからも、ダウンロードできます。</a></p>



<p>ソフトの使用条件は、同梱されている「README.TXT」をお読みください。 <br>インストールの必要はありません。<br>展開された、「SubToPackage.exe」  を実行するのみです。<br>ただ、ダウンロードされたファイルは実行ファイル（exe）のため、下記のような警告が出る場合があります。<br>「詳細情報」⇒「実行」で起動してください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="536" height="500" src="https://www.kazuban.com/blog/wp-content/uploads/2020/02/警告.png" alt="" class="wp-image-1822" srcset="https://www.kazuban.com/blog/wp-content/uploads/2020/02/警告.png 536w, https://www.kazuban.com/blog/wp-content/uploads/2020/02/警告-300x280.png 300w" sizes="(max-width: 536px) 100vw, 536px" /></figure>



<p>起動後は、メインプログラムファイルをドロップ後、「サブプロ挿入実行」ボタンのクリックするのみです。</p>



<h4 class="wp-block-heading"><span id="toc4"> ＮＣプログラムの記事 </span></h4>



<div class="pager">
  <a class="prev page-numbers" href="https://www.kazuban.com/blog/main-sub-pro/">PREV</a>
  <a class="page-numbers" href="https://www.kazuban.com/blog/nc-gcode-01/">1</a>
  <a class="page-numbers" href="https://www.kazuban.com/blog/nc-gcode-02/">2</a>
  <a class="page-numbers" href="https://www.kazuban.com/blog/dia-compensation/">3</a>
  <a class="page-numbers" href="https://www.kazuban.com/blog/lenrth-compensation/">4</a>
  <a class="page-numbers" href="https://www.kazuban.com/blog/main-sub-pro/">5</a>
  <span class="page-numbers current" aria-current="page">6</span>
  <!-- <a class="page-numbers" href="https://www.kazuban.com/blog/sub-to-package/">6</a> -->
  <a class="page-numbers" href="https://www.kazuban.com/blog/nc-program-g91/">7</a>

  <a class="next page-numbers" href="https://www.kazuban.com/blog/nc-program-g91/">NEXT</a>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.kazuban.com/blog/sub-to-package/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>NCプログラム／プログラム構成</title>
		<link>https://www.kazuban.com/blog/main-sub-pro/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Tue, 28 Jan 2020 00:32:43 +0000</pubDate>
				<category><![CDATA[NC]]></category>
		<category><![CDATA[NCプログラム]]></category>
		<category><![CDATA[サブプログラム]]></category>
		<category><![CDATA[プログラム構成]]></category>
		<category><![CDATA[メインプログラム]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=1702</guid>

					<description><![CDATA[NCプログラムの構成は、大きく分けると２種類にわける事ができます。一つは加工に必要な準備機能で、もう一つは、実際の加工経路の動作指令です。さらに、マシニングセンターを対象にすると、準備機能は４つに分ける事ができます。CA [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>NCプログラムの構成は、大きく分けると２種類にわける事ができます。<br>一つは加工に必要な<strong>準備機能</strong>で、もう一つは、実際の<strong>加工経路</strong>の動作指令です。<br>さらに、マシニングセンターを対象にすると、準備機能は４つに分ける事ができます。<br>CAMのポストプロセッサを編集する場合やプログラム全体の構成を検討する際、この基本構成から検討していけば、<span class="markerPink">複数の機械を使用する場合</span>に互換性を持たせやすくなります。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">準備機能指令と加工経路指令</a><ol><li><a href="#toc2" tabindex="0">加工経路指令</a></li><li><a href="#toc3" tabindex="0"> 準備機能指令 </a></li><li><a href="#toc4" tabindex="0"> 準備機能指令 を４種類に整理 </a></li></ol></li><li><a href="#toc5" tabindex="0">メイン・サブ　プログラム方式</a><ol><li><a href="#toc6" tabindex="0">M98・M198　／　ファナック、サブプロ呼び出し</a></li><li><a href="#toc7" tabindex="0">サブプログラムのファイル名</a></li><li><a href="#toc8" tabindex="0">M99</a></li></ol></li><li><a href="#toc9" tabindex="0">まとめ</a><ol><ol><li><a href="#toc10" tabindex="0">  ＮＣプログラムの記事  </a></li></ol></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">準備機能指令と加工経路指令</span></h2>



<h3 class="wp-block-heading"><span id="toc2">加工経路指令</span></h3>



<p>加工経路指令は、主に<a href="https://www.kazuban.com/blog/nc-gcode-02/">Gコードのページで説明</a>したような、実際の工具の動きを定義する部分です。<br>使用される指令（Gコード）はかなり少なく、移動先の座標値が主ですね。</p>



<pre class="wp-block-preformatted"> %
 O0402
 (T=T02, D=8.00)
 G90G00G17
 Z50.
 X0Y150.65
 Z3.
 G90G01Z-6.99F1050
 G41X2.5Y154.98D01F300
 G03X0Y155.65I-2.5J-4.33
 G02X-32.502Y159.641J134.35F1120
 X-50.886Y168.633I11.842J47.496
 G03X-58.513Y170.962I-6.823J-8.691
 G02X-68.09Y180.562I-.652J8.927
 G03X-72.281Y191.868I-14.409J1.088
 G01X-75.372Y194.959
・
・
 G02X32.502Y-130.359I-39.048J29.518
 X0Y-134.35I-32.502J130.359
 G03X-2.5Y-135.02J-5.
 G40G01X0Y-139.35
 G00Z50.
 X0Y0
 M99
 %</pre>



<p>上は、ファナック機用の実際の加工データの一部ですが、このように実際の加工経路を指令するコードは</p>



<ul class="wp-block-list"><li>「G90/G91」の座標系の指令</li><li>「G17/G18/G19」の平面指定</li><li>「G00/G01/G02/G03」の移動指令</li><li>「G40/G41/G42」の工具径補正</li></ul>



<p>この程度です。<br>基本のコードばかりなので、この<strong>加工経路指令</strong>の部分は、<span class="markerYellow">機械の種類や制御機が違ってもかなり互換性は高い</span>です。<br>おそらく、 オークマOSP やソディックの制御機など国産の機械では、 「%」や「M99」  の違いがありますが、 <span class="markerYellow">基本部分はそのまま使用できる</span>と思います。  <br>さらに、ハイデンハインのISOコードやレダースでも若干の修正で使用できます。<br>ただし、<span class="markerBlue">穴あけなどの、「固定サイクル」は互換性は低い</span>です。<br>ファナックとOSPでも違いがあります。<br>また、EU機の場合、円弧補間の（I  ,  J ,  K）のデフォルトが一般的な「インクリメンタル／相対値」でなく「アブソリュート／絶対値」の場合もあるので注意が必要です。<br>明示的にどちらを使用するかの指令はあるとは思いますので、事前の調査は必要ですね。<br>このように制御機により若干の違いはありますが、同じ制御機であれば、同じプログラムが使用できます。</p>



<h3 class="wp-block-heading"><span id="toc3"> 準備機能指令 </span></h3>



<p>これは工具の動きではなく実際の加工に必要な準備をさせる指令の集まりです。<br>マシニングセンターであれば、主軸に使用工具を装着したり、回転させたり、工具長補正を完成させたり、クーラントのON・OFFなどです。<br>この部分は、機械への依存度が高いため、互換性は少ないです。<br><strong>同じファナックの制御機</strong>であっても、<span class="markerPink"><strong>機械メーカー</strong>や<strong>機械仕様</strong>によって<strong>指令コード番号</strong>が違います。</span><br>補助機能とも呼ばれる「<strong>Mコード</strong>」での指令が多いですが、この「<strong>Mコード</strong>」は<span class="markerYellow">ユーザー側でもカスタマイズが可能</span>なので同じ機械でも、部署や担当者により違いが出てくる可能性があります。</p>



<pre class="wp-block-preformatted"> %
 O6412(PARTS-02 CAVITY V33 2020/01/01 )
 G90G00G17G40G80G49           &lt;-------　デフォルトとキャンセル
 G54                          &lt;-------　ワーク座標系
 N0001
 ( N0001  T01  DIA = 8.000 )
 T01                          &lt;-------　工具指示
 M06                          &lt;-------　工具交換
 G90G00X0Y0
 G43Z50.H01                   &lt;-------　工具長補正
 S4000                        &lt;-------　スピンドル回転数
 M03                          &lt;-------　回転指令
 M07                          &lt;-------　クーラント
 G04X30.                      &lt;-------　暖機
 　・
 　・              &lt;-------　実際の加工経路 ------------------- 
 　・
 M09                          &lt;--------　クーラント停止
 G91G28Z0                     &lt;--------　Z軸退避
 G49                          &lt;-------- 工具長補正キャンセル
 G90M05                       &lt;--------　回転停止
 M30                          &lt;--------　終了
 %</pre>



<p>上の例では一般的なコードを使用したので、ファナック機であれば互換性は高そうですが、<span class="markerYellow">「<strong>ワーク座標系</strong>」「<strong>工具長補正</strong>」「<strong>クーラント</strong>」などの指令</span>は制御機や機械仕様により変わってきます。<br>特に、「<strong>クーラント指令</strong>」は、<span class="markerPink">同じ機械メーカー、同じ制御機</span>であっても指令コードが違う場合が多いのでかなり厄介です。<br>また、<span class="markerPink">コード的には同じ</span>でも、使用者（会社・部署）によって出力の<span class="markerPink"><strong>順番</strong>が違う</span>場合もあります。<br>例えば、工具を回転させる場合、暖気を考慮すれば工具交換後すぐに回転させたい場合もあれば、危険を考慮すれば加工近くまで移動した後に回転させたい場合もあります。<br>クーラントも、冷却水状態が安定してから加工したい場合、早めに吐き出したいかもしれません。<br>逆に、工具が高い位置で出してしまうと、冷却水の周辺への飛び散りなど周りへの影響を気にする場合もあるかもしれません。<br>このように、準備機能は、<span class="markerPink">機種によるコードの違いと共にユーザーの経験や考え方でも違ってきます。</span><br>逆に考えると、ノウハウの対応や数種類の機械を使用する場合、この部分は機械依存で用意する必要がありますが、この準備機能指令と工具経路指令を分けて構成する事で比較的簡単に、違う機種でも動作させる事ができそうです。</p>



<p><a id="DownLoad"></a></p>



<a id="constitution"></a><h3><span id="toc4"> 準備機能指令 を４種類に整理 </span></h3>



<p>さらにマシニングセンターを対象に、準備機能指令を考えてみると、全体の最初と最後、各加工工程の前後で４種類に分類できます。<br>例として、このように分割してみましょう。<br>「全加工の始まり：Header.nc」 <br>「全加工の終わり：Footer.nc」<br> 「加工工程の前　:ProcessStart.nc」<br>「加工工程の後　：ProcessEnd.nc」  </p>



<pre class="wp-block-preformatted"><strong>「全加工の始まり：Header.nc」  </strong>

%
 O「番号」(コメント)
 G90G00G17G40G80G49
 G「ワーク座標番号」
(初期暖気など、最初のみやらせたい指令) </pre>



<pre class="wp-block-preformatted">「<strong>加工工程の前　:ProcessStart.nc」   </strong>

 N「工程番号」
 ( NO.「工程番号」  T「工具番号」  DIA = 「工具径」 必要なら工具情報など)
 G「ワーク座標番号」
 T「工具番号」
 M06
 G90G00X0Y0
 G43Z50.0H「工具長補正番号」
 S「回転数」
 M03
 M「クーラント指令」
 G04X「暖気時間」</pre>



<pre class="wp-block-preformatted">（　ここに、実際の加工経路プログラムを置く　）</pre>



<pre class="wp-block-preformatted"><strong>「加工工程の後　：ProcessEnd.nc」</strong>

 M09(Coolant off)
 G91G28Z0
 G49
 G90M05</pre>



<pre class="wp-block-preformatted"> <strong>「全加工の終わり：Footer.nc」</strong> 

 (自動掃除など、加工終了のみやらせたい指令)  
 M30
 %</pre>



<p>こんな感じでしょうか。<br>この構成の「加工工程の前・後」の間に、加工経路指令のNCプログラムを挿入すれば、マシニングセンターでの自動加工プログラムの完成ですね。</p>



<h2 class="wp-block-heading"><span id="toc5">メイン・サブ　プログラム方式</span></h2>



<p> もちろん上記のように、「加工工程の前・後」の間に、加工経路指令を直接挿入してもいいですが、「加工経路指令」部分を<strong>サブプログラム</strong>として呼びだす方法もあります。<br>こちらのほうが、「機種依存」だけのプログラムになるので、より読みやすくなります。<br>上の説明のように、<span class="markerYellow">「<strong>加工経路指令</strong>」は互換性が高い</span>ですから、この部分をサブプロとして、互換性の低い「<strong>準備機能指令</strong>」をメインプロとしてこのメインから呼び出す構成にします。こうする事で、多機種に対応したい場合、<span class="markerPink">メインプロのみ機種依存に応じたデータを用意すればよく、</span>管理も楽になります。<br>さらに「加工経路指令」部分は、複雑になれば手作業での作成は難しいのでCAMのお世話になる事が多いですが、メインプロだけであれば、<strong>テンプレート</strong>を作成しておき、少しの編集で作成可能です。<br>下の例でも、編集箇所はそれほど多くないのがわかります。</p>



<pre class="wp-block-preformatted">  %
 O6412(PARTS-02 CAVITY V33 2020/01/01 )
 G90G00G17G40G80G49    
 G54                          
 N0001
 <strong>T01  </strong>        　　　　　&lt;---------- 使用工具に番号に変更                
 M06                          
 G90G00X0Y0
 G43Z50.<strong>H01 </strong>  　　　　　&lt;---------- 使用工具長補正番号に変更                
 <strong>S4000</strong>                 &lt;---------- 使用回転数に変更                      
 M03                     
<strong> M07</strong>                   &lt;----------　使用クーラントに変更                  
 G04X30.                    
 　・
 <strong>M98P2000 </strong>             &lt;--　実際の加工経路 この部分をサブプロ化し呼び出す
 　・
 M09                  
 G91G28Z0               
 G49                  
 G90M05                   
 M30                   
 % </pre>



<p> メインプロのみ、エディタなどで作成すれば、互換性の高いサブプロ部分は、CAMの標準的なポストプロセッサで出力できますから、<span class="markerPink">最小限のポストプロセッサで、複数の機械を動作させる事ができます。 </span></p>



<h3 class="wp-block-heading"><span id="toc6">M98・M198　／　ファナック、サブプロ呼び出し</span></h3>



<p>ファナックでは、サブプロ呼び出しに、「<strong>M98 / M198</strong>」を使用します<br>このMコードに、サブプログラムのファイル名を付加して指令します。<br>二つの違いは、<span class="markerBlue">サブプログラムを保存している制御機内の場所</span>になります。<br>基本的にメインプログラムはメモリー内に登録して実行しますが、「<strong>M98</strong>」は、<strong>メインプログラムと同じメモリーの場所</strong>に保存してあるNCプログラムを呼び出します。<br>「<strong>M198</strong>」は、メモリとは別に、ハードディスクなど<strong>補助記憶装置に保存</strong>してあるNCプログラムを呼び出します。<br>昔はファナック制御機のメモリ容量を増やすのはかなり高価でしたが、３D加工が主流になりプログラム容量が大きくなるにつれて、補助記憶装置を設備する場合が多くなっていると思います</p>



<h3 class="wp-block-heading"><span id="toc7">サブプログラムのファイル名</span></h3>



<p>基本的には、ファナックは「<strong>O番号</strong>」と呼ばれる番号でプログラムを識別するので<span class="markerYellow">その番号と同じファイル名を使用</span>します。<br>例えば、プログラム番号を「<strong>O1234</strong>」とした場合、サブプログラムのファイル名も「<strong>O1234</strong>」とします。<br>その後、<span class="markerPink">「<strong>O</strong>」を「<strong>P</strong>」に変更</span>し、このメインプロに「<strong>M98 P1234</strong>」の指令をする事で、その箇所にサブプログラムを挿入する事ができます<br>また多くは、「<strong>O</strong>」+「数字４桁」という制限があり、４桁の番号で加工プログラムを識別しなければいけません。<br>なんとも厄介な仕様ですが、制御機によっては<span class="markerYellow">ファイル名で呼び出せる</span>機種もあります。<br>こちらであれば、かなりわかりやすいです。<br>「&lt; &gt;」内に、ファイル名を書いて呼び出しが可能な機種もあります。<br>こちらであれれば、ファイル管理はかなり楽になりますね。<br>（例）<em><strong> M198 &lt;Running.nc&gt;</strong></em><br> <br>ただし、ソディックの場合は、「<strong>&lt; &gt;</strong>」でなく「<strong>(  )</strong>」になります。<br>またまた、面倒ですね～。いじめです！</p>



<h3 class="wp-block-heading"><span id="toc8">M99</span></h3>



<p>通常NCプログラムの最後は「<strong>M30</strong>（もしくはM02）」ですが、サブプログラムの最後は、「<strong>M99</strong>」にしなければいけません。<br>完成された一連のNCプログラムを使用する場合には、そえほど問題になりませんが、<span class="markerPink">既存のプログラムを使用</span>して、<span class="markerPink">多数個や多品種加工</span>に対応したい場合、かなり面倒です。<br><span class="markerYellow"><strong>サブプログラムだけ</strong>でも加工ができる場合、<strong>メインプログラム</strong>として使用</span>したいですが、最後の「M99」をそのままにすると、永遠にプログラムを繰り返す事になります。<br>また、逆に<span class="markerYellow"><strong>メインプログラム</strong>を別のプログラムから呼び出して、<strong>サブプログラム</strong>として使用</span>したい場合、最後の「M30」をそのままにすると、そこで終了してしまい、呼び出し元に戻ってきません。<br>ちなみに、ハイデンハインもレダースも、メイン・サブの違いはありません。<br>ハイデンハインは「END PRM 」が終了コードですし、レダースはすべてが「M30」です。</p>



<h2 class="wp-block-heading"><span id="toc9">まとめ</span></h2>



<p>機械が増えてきて、同じ制御機でもバージョンが変わってきたり、機械メーカー独特の指令が増えてきたりすると、NCプログラムの管理も大変になってきます。<br>ポストプロセッサでの対応でどうにかなりますが、<span class="markerPink">CAM作成時に加工機械が決定されていない</span>場合、機械の種類だけポストを準備して数種類のNCプログラムを作成しなくてはいけません。<br>このメイン・サブ方式にすることで、メインプログラムのみを複数作ることで対応できます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="900" height="736" src="https://www.kazuban.com/blog/wp-content/uploads/2020/01/変換ソフト.png" alt="" class="wp-image-1749" srcset="https://www.kazuban.com/blog/wp-content/uploads/2020/01/変換ソフト.png 900w, https://www.kazuban.com/blog/wp-content/uploads/2020/01/変換ソフト-300x245.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2020/01/変換ソフト-768x628.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p><br>メインプログラムは、<strong>エディタ</strong>編集や<strong>エクセルのマクロ</strong>でも作成可能です。<br>私は、ファナックとOSPの機械は、<span class="markerPink">基準のメインプロデータ</span>のみ作成し、変換ソフトで複数の機械へ対応させる方法で運用しています。<br>メイン・サブ方式のほうが変換ソフトを開発する場合でも、作成しやすいです。</p>



<h4 class="wp-block-heading"><span id="toc10">  ＮＣプログラムの記事  </span></h4>



<div class="pager">
  <a class="prev page-numbers" href="https://www.kazuban.com/blog/lenrth-compensation/">PREV</a>
  <a class="page-numbers" href="https://www.kazuban.com/blog/nc-gcode-01/">1</a>
  <a class="page-numbers" href="https://www.kazuban.com/blog/nc-gcode-02/">2</a>
  <a class="page-numbers" href="https://www.kazuban.com/blog/dia-compensation/">3</a>
  <a class="page-numbers" href="https://www.kazuban.com/blog/lenrth-compensation/">4</a>
  <span aria-current="page" class="page-numbers current">5</span>
  <a class="page-numbers" href="https://www.kazuban.com/blog/sub-to-package/">6</a>
  <a class="page-numbers" href="https://www.kazuban.com/blog/nc-program-g91/">7</a>

  <a class="next page-numbers" href="https://www.kazuban.com/blog/sub-to-package/">NEXT</a>
</div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
