2017年12月26日火曜日

AutocadからFaboolに変換、送信 [VER UP!]


AutocadからFaboolに変換、送信

Autocadユーザーの方の限定となりますが、自作APPをUPしました。
興味のある方は使って頂き、感想をいただけると今後の励みになります。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
FABOOL Laser Miniを 持っていること。 

※FABOOL Laser本体のドライバーインストールしていること。
https://www.smartdiys.com/manual/user-registration-driver-installation/

※Autocad2007以降をインストールしていること。

※AutoCAD の Express Tools をインストールしていること。

※AutoCAD が既にインストールされている場合に
Express Tools をインストールするには、
1.Windows のコントロール パネルから[プログラムと機能]を開きます。
2.プログラムの修正/変更を行うために、[AutoCAD]をダブルクリックします。
3.セットアップ ウィンドウが表示されたら、[機能を追加または削除]をクリックします。
4. [プログラムの機能]の一覧で、Express Tools にチェックを付けます。
AutoCAD のバージョンによっては、機能の一覧を見つけるために、
[次へ]を 1、2 回クリックする必要があります。
[更新]または[次へ]をクリックし、操作を完了します。

※マウスの右クリックを [Enter] にします。

コマンド名 "options"
[基本設定] → [右クリックをカスタマイズ] →
[コマンドモード] → [Enterキー] → [適応して閉じる]
にすると使いやすいです。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
※AutocadからFaboolに変換 DL先
http://wwwc.pikara.ne.jp/masanori/fabool-offline.VLX

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1.上記ファイルを保存(※1)
2.Autocad起動
3.図面を開く。
4.ツール→アプリケーションのロード→
先ほど保存した/fabool-offline.VLX(※1)を指定


コマンドラインで使える命令が 3つ増えます
・SVG
・FAB
・FABV
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[1.コマンド SVG]
●目的
Inkscapeを介さずに直接Fabool Sotwareへ渡したい。
DXFで渡すと色が黒一色になってしまい
印刷速度が一種類しか指定出来ない。

Autocad側から SVG化したい要素を指定する。

見た目通りに分解し、最大要素範囲を計算し
ファイル名の最後に自動でサイズを付けて指定先に保存。

ログインしてFabool Sotwareを起動
インポートにて保存したSVGを指定
Inkscapeを介せずにデータを渡せることが可能となります。

画像サイズをファイル名に付けていますので、
今回の場合「fabool公開[150x100].svg」となってます。
読み込んだ後、指定の大きさを手動で入れることでも等倍になります。

ちなみにInkscapeで保存したファイルを読むと、このような感じ

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[2.コマンド FAB]

●目的
Inkscapeも必要ない。
Fabool Sotwareも介さずにオフラインにて印刷したい。
ネット環境が無いところでもやりたい。

Autocad側から 出力したい要素を指定する。
選択(囲んだ)要素を最大エリアと見なします。
出力は 色1番~色19番のみです。
色20以上は出力しません。
ちなみに↓枠は153色(20番以上)で書いています。

マウス右ボタンで
各色のスピードとパワーを指定出来ます。
脱調対策のために出力時の移動スピードを変更出来ます。
見た目通りに分解し、最大要素範囲を計算し
レーザーヘッドの移動を少なくする処理(ネスティング)
をするかどうか聞いてきます。
ネスティングに時間が掛かりますが
出力時は確かに早いです。
文字も、寸法やハッチング、円も楕円、スプライン、ポリラインも
全て直線化しますので、処理時間が掛かります。
線分の重複処理をおこないますので、ダブった線は一本化されます。
出力の時間も表示します。

処理が出来たら、CADの要素は、何事も無かったように元通りに戻します。

デスクトップに faboo送信 ホルダーを自動で作り
作成した日時、時刻、ファイル名の中に必要なファイルが3ケ作られます。
この3つのファイルがあればオフラインで動きます

出来たファイル名の htm を開くと

プッシュボタン5ケと
1.原点に移動
2.範囲確認 サイズ表示付
3.中心確認しヘッドを移動させます。
素材を配置する時に原点にあると邪魔なので、
4.加工開始 およその時間表示
5.ストップ 一次停止は今の所無し。

要素情報、作図速度、パワー、脱調対策の移動スピードを表示
その下に、Autocadの画面をイメージで表示してます。

いつも通りfaboolに素材をセットし、レーザーの焦点を合わせたら
加工開始ボタンで印刷となります。━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 [3.コマンド FABV]
●目的
このソフトでできたJSファイルを
Autocad側で、印刷順に読み込ませてみよう。

 読み込む点を指定したら
実際のレーザーヘッドの動きでシミュレーション出来ます。
 

 
Faboolの機器と同じ 左上が原点です。  
ヘッドの移動通りの軌跡が表示(作図)されます。

Cadで拡大すると、
全て直線になってるでしょ?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
※今回使ったサンプルを
http://wwwc.pikara.ne.jp/masanori/fabool-sample.dwg
に置いています。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 2017/12/26 Ver UP !!

コマンド FABV
1.描画モード時にCTRLキーを押すと 高速表示としました。
大容量時の時、最後まで描画が待てない為(笑)

2. 作図完了時にコマンドラインに経過時間を表示させてましたが、
画面にもファイル名、経過時間、他を記入させました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



2017年12月20日水曜日

オブジェクト選択

Autocad操作中に
オブジェクト選択:直前(P)を 私は良く使うのですが、

例:蝶の絵柄を右にコピーするとする 
コピーするとこんな感じ

-------------------------------------------------
ここからが、ちょっと違うこと。
Autocad の COPY で コピーすると、
オブジェクト選択:直前(P) をすると、
最初に選択した要素が選ばれます。

-------------------------------------------------
これが、いろんなCADを使った私からすると、、
使いにくいのです。
ns-menuコマンドで C または (NS_C) で  コピーすると、
オブジェクト選択:直前(P) をすると、
最後にコピーされた要素が選ばれます。

 最後にコピーされたものが選ばれることで、
この要素群に対し上に30mmとか 簡単にできる。
次への 連続した動作が引き継がれます。
-------------------------------------------------
ns-menu で行った操作で、コマンド終了すると、
最後に行った要素群が 直前(P)になるように
処理を掛けています。 
-------------------------------------------------

2017年12月19日火曜日

図面編集時間

Autocadで作図した図面は、
知らぬ間に「図面編集時間」や「最終登録者」「更新日時」等の情報が、登録されます。
特に 「図面編集時間」はリセット出来ない。
図面が出来て、客先等に送信する場合には、
この情報も行っちゃうんです。(@@;)
------------------------------------------------------------------
●例:
 -----------------------------------------------------------------------------
●送信は汎用性のある中間ファイル「DXF」にて送る場合が多いのですが、
DXF変換しても「図面編集時間」等が引き継がれます。(^0^;)

今回は、出来たDXF内の「図面編集時間」、「最終登録者」等を
リセットするプログラムを作りました。
 変換後、できあがったDXFを読んでみると、
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
↑無くなってるでしょ?\(^O^)/
 -----------------------------------------------------------------------------

以下を メモ帳で開き デスクトップに dxf.lsp で保存
 変換したい図面を読み
[ツール] → [AutoLisp] → [アプリケーションロード]で
デスクトップの dxf.lsp を読み込み
 コマンド DXF で動作します。

読み込んだ図面からコマンド実行で,
デスクトップに 編集時間を削除したDXFファイルができあがります。
↓------ここから

 (defun c:dxf ( / DATA DNAME1 DNAME2 FULLNAME1 HNAME1 MNAME1 OPENFILE1 OPENFILE2 TMP1 TMP8 TXT TXT1 UNAME)
 ;DXFをデスクトップに作成後 編集時間を消して再登録します。
 ;
 (setq data "2000-DXF");下の5種から選べる
 ;
 (VL-LOAD-COM)
 (setvar "CMDECHO" 0)
 (command ".clayer" "0")
 (vla-purgeall (vla-get-activedocument (vlax-get-acad-object)));purge_all
 (command ".zoom" "e")
 (while (= 1 (getvar "cmdactive"))(command pause));コマンド終了まで待つ
 (setq hname1 (getvar "dwgprefix"));図面ホルダー名
 (setq hname1 (strcat "C:\\Users\\"(getenv "USERNAME") "\\Desktop\\"));デスクトップへ
 (setq mname1 (getvar "dwgname"));元ファイル名(変換用ファイル名.dwg)
 (setq fullname1 (strcat hname1 mname1));元のホルダー+ファイル名
 (setq uname (getenv "USERNAME"));ユーザー名
 ;
 (setq dname1 (strcat hname1 (substr mname1 1 (- (strlen mname1) 4) )          ))
 (setq dname2 (strcat hname1 (substr mname1 1 (- (strlen mname1) 4) ) "[0TIME]"))
 ;
 (setq tmp1 (getvar "FILEDIA"))
 (setq tmp8 (getvar "EXPERT"))
 (setvar "FILEDIA" 0)
 (setvar "EXPERT" 2)
 (princ         "\n━━━━━━━━━━━━━━━━━━━━━━━")
 (princ (strcat "\n" dname2 "\n["data"] 形式で保存中"))
 (cond
  ((= data "2000-DXF") (command "_SAVEAS" "DXF" "V" "2000" "" dname2))
  ((= data "2004-DXF") (command "_SAVEAS" "DXF" "V" "2004" "" dname2))
  ((= data "2007-DXF") (command "_SAVEAS" "DXF" "V" "2007" "" dname2))
  ((= data "2010-DXF") (command "_SAVEAS" "DXF" "V" "2010" "" dname2))
  ((= data "2013-DXF") (command "_SAVEAS" "DXF" "V" "2013" "" dname2))
  )
 (while (= 1 (getvar "cmdactive"))(command pause));保存終了まで待つ
 (princ (strcat "\n" dname2 "\n["data"] 形式で保存完了"))
 (princ (strcat "\n" dname2 "\n["data"] 編集時間調査中"))
 (setvar "FILEDIA" tmp1)
 (setvar "EXPERT"  tmp8)
 (command "_SAVEAS" "2000" (strcat "C:\\Users\\"(getenv "USERNAME") "\\Desktop\\変換ファイル削除可.dwg"))
 (setq openfile2 (open (strcat dname1 ".dxf") "w"))
 (setq openfile1 (open (strcat dname2 ".dxf") "r"))
 (setq txt (read-line openfile1))
 (while txt
  (cond
   ((or (= txt "$TDCREATE")(= txt "$TDUCREATE")(= txt "$TDUUPDATE")(= txt "$TDINDWG")(= txt "$TDUSRTIMER"))
    (read-line openfile1)
    (read-line openfile1)
    (read-line openfile1)
    )
   ((= txt uname)
    (write-line "-----" openfile2)
    )
   (T
    (write-line txt openfile2)
    )
   )
  (setq txt (read-line openfile1))
  )
 (close openfile1)
 (close openfile2)
 (princ (strcat "\n" dname1 "\n["data"] 編集時間編集済み"))
 (vl-file-delete (strcat dname2 ".dxf"))
 (command ".delay" 2000);待ち時間
 (if (>= (atof (substr (getvar "ACADVER") 1 4)) 19.1);2014
  (progn
   (command "_.wipeout" "_f" "_off")
   (command-s "_.close" "Y")
   )
  (progn
   (command ".close" "Y")
   )
  )
 (princ)
 )
↑----------------ここまで

2017年12月18日月曜日

キーボードコマンド 割付表

Autocad に 至るまでには
何種類かの汎用Cadを使ってきました。
Autocad を使ってみると使いにくい事ばかり、、
経験のある汎用CADの操作性の良いところ?の
アイデアをこの"ns-menu"に詰め込んでます。

ns-menu キーボードコマンド 割付表です。

 JWWっぽい?キーボード割当にしています。

2017年12月15日金曜日

[機能紹介] 画層一覧

画層一覧のコマンドです
コマンド GA または (NS_GA)

例:画層毎に書かれた図面がある。
実行すると。
[画層処理] [現状の画層情報を保存しました]
[画層一覧] G:画面に配置 / B:画層毎にブロック化 / L:画層一覧
 / H:範囲一覧 / マウス左右=移動 / ESC=決定 / RET=戻

●G:画面に配置 の場合
 画層毎に等間隔で図面上に配置出来ます。
本数:画層名:画層色なども自動で配置されます。

●L:画層一覧 の場合
 画層情報 画層名:画層色:本数他を希望の位置に配置出来ます。

 ● マウス左右 で 現在層を移動させ、濃淡表示でわかりやすく、
高速で切り替える事も出来ます。

画層のダイアログ出して、ロックや非ロック、表示したり、
現在層に移動、、煩わしい作業をしなくても、
マウス左右で一発。これは便利ですよ。

[機能更新] 3Dを2D化

3Dから2D変換には
●「FLATSHOT」 の コマンドがありますが、3D要素のみ
●「FLATTEN」の コマンドは 2D要素のみ

両方を合成したコマンド
コマンド  FLAT または  (ns_FLAT)

[NS-FLAT] FLATSHOTしたい画面に回転しておくこと。
          2D要素=FLATTEN 3D要素=FLATSHOTをして
          コピー登録 C0 に登録します。
フィルターセットにて要素種別を判別。
プログラムを見直して、高速化を行いました。
例:この3D画面から

コマンド  FLAT を行うと
こんな感じになります。
よーく見るとUCSアイコンも平面表示でしょ。


2017年12月13日水曜日

[機能紹介] 高速図面閉じ

Autocadで作業を行っていると、
作図中に参考となる図面を開いたりしていると
いつの間にか、図面を何枚か開いていることがあります。

この例だと、8枚も開いちゃってる。(^0^;)
一枚一枚図面を閉じる(ウィンドうの右上の×)事になるが、
一枚一枚保存しないを押さないと閉じない。

煩雑ですよね?(^0^;)

コマンド nsc または (ns_nsc)
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃[裏窓高速図面閉じ] 現在開いている図面以外を全て閉じます ┃
┃[■ ◆ 注意 ◆ ■] 保存せずに閉じます。よろしいですか?  ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
[高速図面閉じ] [7] 枚 裏窓図面があります
[高速図面閉じ] 全図面閉じは A  裏窓図面閉じは [Y]  キャンセルは [N] 

A か Y を押すだけで、強制閉じ処理。
保存せず、あっという間に閉じてくれます。

2017年12月1日金曜日

[機能紹介] 3D要素

[3D要素] 基準中心選択後、
要素指定で即回転体作成 2点で回転、4点で簡易バルブ作成

例題:このようなバルブの絵があるとする。

コマンド: 3R または (NS_3R)
1.中心線指定
2.フランジ始端
3.フランジ終端
4.スピンドル橋
5.ハンドル端
を入力するだけで、、

この5つの座標だけで計算して、,, 
じゃぁ~~~ん。
簡易バルブの3Dが出来ちゃいます。 
これも見ているだけで、たのしぃっ。

[機能紹介] 3Dスイープ

[3Dスイープ] 選択した要素にチューブ,選択閉図形の3Dを作成
例:あらかじめ3Dにて中心線を書いておく

コマンド 3E または (NS_3E)
[3Dスイープ]【150SGP 150S40 等配管値で 外径/内径】
         【H150*150 L50*6 C150x75 等鋼材に対応】
[3Dスイープ][-2:形鋼],-1:多角形,0:閉図形,外径値:

例:100Aを指定(φ114.3)して
紫の要素を選択すると
あっという間に、UCSを操作せず、自動でパイプになります。
自動で作図されるのを見てるのが楽しぃ。