■ nanoCAD 5 メモ
最終更新日 : 2024/12/24 f.izawa
■ ライセンスには、有効期限があります。
メニュー - [ヘルプ] - [nanoCAD 5.0 について]
■ nanoCAD 5 を使って良いのか?
・・・と思いながら試用しています。(メインの CAD は、BricsCAD V20 です)
dwg / dxf の読み書きは 当時の AutoCAD 互換と呼ばれる他の CAD と同じライブラリ
Teigha for .dwg files 2003-2013 by Open Design Alliance. All rights reserved.
を使っているので、問題ないかと思います。
2013 形式の DWG/DXF を読み書ききます。
サポート OS は Winodos XP、8 ですが、Windows 10、11 でも問題なく動iいています。
DWG、DXF を扱える CAD は多いですが、内部で独自のファイル形式に変換しているどの CAD よりも再現性が良く、扱いやすいと思います。
AutoCAD 互換と呼ばれる他の CAD の現バージョンと比較すると、かなり劣るところもあります。
基本的な機能としては十分です。LISP 、.NET で作成したコマンドも動きます。
AutoCAD 、その他の CAD と同じフォントファイル、線種ファイル を使うと線の尺度が異なるくらいで、
ほぼ同じように表示されます。印刷設定もそのまま使えます。
2018 年に使った時の感想として某 BBS に「DraftSight より軽くて速い」と書き込んでいます。
軽くて速いかというとそうでもなく、BricsCAD と比べた場合、起動も読み込みも、コマンド、LISP のロード、実行も遅いようです。
特に、LISP のロードは遅いです。
日本語化した場合、起動が若干遅くなるようです。
■ 他のCAD (AutoCAD, BricsCAD ... ) で開くと、「プロキシ情報」のダイアログが表示される
nanoCAD で保存すると、プロキシグラフィックが追加されることがあります。
これは、nanoCAD で新規に作成した図面だけなく、他のCAD の図面を読み込み、保存しても追加されることがあります。
どうも nanoCAD で作成した寸法、ノート(注釈、引出線)、テーブル図形があるとそうなるようです。
AutoCAD, BricsCAD で開く可能性がある場合は、気を付けたほうが良いでしょう。
ちなみに、IJCAD では表示されません。
回避方法ですが、2つあります。
1:WBLOCK コマンドで、図面全体を書き出します。2013 DWG 形式でも保存できます。
ただ、保存先とファイル名を指定する必要があるため少し面倒です。
2:SAVEAS コマンドで名前を変えて保存。ファイル形式として 「R11 互換形式」で保存します。
R11(R12) 形式でサポートされていない図形は、変換または削除されます。
ファイル名をそのまま使えるので、手軽です。
■ コードページ(DWGCODEPAGE) の問題
nanoCAD の規定値は ANSI_1251(キリル言語)。
2023 年 Nanosoft AS に変わってからは、ANSI_1252(西ヨーロッパ言語)になっています。
ODA File Converter で古い形式で DWG -> DXF 変換すると、文字化けすることがあります。
ユニコードに対応した 2007 形式であれば、問題ないと思われます。
文字が正しく表示されない時は、システム変数 DWGCODEPAGE を確認します。
メモ帳で DXF ファイルを開き、$DWGCODEPAGE を検索。
その数行下にある ANSI_xxxx を ANSI_932 に変えて保存。
CAD でその DXF ファイルを開くと正常に表示される。・・・はず。です。
テンプレートファイルを nanoCAD デフォルトのものではなく、日本語版 CAD のものを使用すると解決します。
テンプレートファイルの場所は、
メニュー-[ツール]-[オプション] または [Ctrl]+[9] でオプションダイアログを表示。
「標準ディレクトリ」の中に「テンプレートファイルの場所」があります。
既定値では、<C:\Users\owner\AppData\Roaming\Nanosoft AS\nanoCAD Int 5.0\Templates>です。
■ ノート、テーブル図形
ノート(注釈、引出線)は、多機能で簡単、非常に便利です。
テーブルは、Excel のアクティブなセルのデータをそのまま表として取り込めたりします。
が、いずれも nanoCAD 独自の図形のようです。
IJCAD では、ACAD PROXY ENTITY として読み込まれ、そのままでは編集不可。分解する必要があります。
BricsCAD ではプロキシ情報のダイアログが表示され、図形としては何も表示されなかったりします。
他の CAD で開く可能性がある場合は、分解しておくほうが良いと思います。
ちなみに、AutoCAD 他の CAD で作成した引出線は、nanoCAD では、LEADER + MTEXT として読み込まれます。
矢印の大きさは、変更できません。(プロパティーに出てこない)
AutoCAD 他の CAD で作成したテーブル(表)は、nanoCAD では、AutoCAD Table として読み込まれます。
そのままでは編集できません。分解する必要があります。
■ [Shift] キーで一時的に直交モード反転
座標を指示する時に、[Shift] キーを押している間、一時的に直交モードが反転します。
BricsCAD と同じで、非常に便利です。
■ 短縮コマンド、エイリアス
短縮コマンド、エイリアスは nCad.pgp ファイルにあります。
nanoCAD 5 を再起動すると反映されます。
■ TEXT, MTEXT の文字列編集
TEXT 文字列のダブルクリックで、「文字設定ダイアログ」が表示されます。
文字入力で[Enter]キーを押すと終了するので、使いやすいです。
[OK]ボタンをクリックしても終了します。
キャンセルは[ESC]キーか、[Cancel]ボタンです。
画面上での編集は、DDEDIT(ED) ですが、
日本語に対応していないため、「????」表示で内容が分かりません。
日本語以外であれば、使えます。
プロパティーウィンドウで変更するのが速いです。
複数の TEXT を選択すると、一括で同じ文字列に変更できます。
MTEXTを分解すると、日本語TrueTypeフォントは1文字ずつに分解されることがあります。
これ↑は、文字スタイルに関係するようです。新規図面だと大丈夫でした。
MTEXTを使う時は、日本語 SHX フォントを設定しておくと、マウスダブルクリックの編集で、
そのまま編集できるようになります。
また、分解しても一行文字 (TEXT) に変換されます。
■寸法作成
システム変数: DIMSCALE の値は、無視されるようです。
寸法が多い場合は、画面右下の [ M1:1 ] をクリック。
ポップアップメニューから「シンボル尺度」を選択。
[M1:1]の表示が [ m1:1 ] に変わるので、これをクリック。
ポップアップメニューから希望の尺度、例えば「1:10」を選択。
[ m1:10 ] に変わり、文字、矢印サイズが尺度 1/10 用に変わります。
寸法が少ない場合は、とりあえず寸法を作成。
それを選択して、プロパティーウィンドウの「尺度」1:1 を 1:10 に変更。
文字、矢印サイズが尺度 1/10 用に変わります。
すでに作成されている他の寸法にこれを適用する場合は、
MATCHPROP コマンド、またはメニュー-「変更」-「図形のプロパティコピー」で
元図形、合わせる図形の順で選択します。
あるいは、対象の図形をすべて選択して、プロパティウィンドウで一括で「尺度」を
変更するのが簡単で速いです。
例えば直径寸法の場合、対象の円の大きさを変更すると、寸法も追従して変わりますが、
nanoCAD の寸法を他の CAD で読み込んだ場合、この連携(追従)がされません。
その反対 他の CAD -> nanoCAD の場合も同様です。
■ ブロック挿入
ATTDIA, ATTREQ は AutoCAD と同じです。
ATTREQ は機能していないので、属性があるブロックでは挿入時に必ず属性入力になり、
入力属性の分だけ [Enter] が必要になります。
属性がマルチテキストのときは、ATE コマンドでは編集しにくいので、
プロパティー(インスペクタ)ウィンドウで変更したほうが効率的です。
-INSERT で DXF ファイルは挿入できない。拡張子は ..dwg に限るようです。
また、ファイル名に "" を付けると、「無効なブロック名...」になります。
プログラムから DXF ファイルを挿入する場合は、
blk := doc.ModelSpace.InsertBlock(vpt, fname, 1, 1, 1, 0, EmptyParam);
で、適当な位置に挿入して、挿入したブロックを削除すると、図面内にブロックが作成されるので、
そのブロック名が -INSERT のブロック名として使えるようになります。
あるいは、同じように適当な位置に挿入して COPYBASE でそれをコピー、削除。
PASTECLIP コマンドで任意の位置挿入にできるようになります。
属性の多いブロックにも有効です。
いずれも、パージは必要に応じて・・・。
■ 属性の編集
ATE, ATTEDIT または BATTMAN です。
ピックした属性の入力項目がアクティブにはなりません。
属性の数が多い時はページ数が多くなり、探すのが面倒です。
MTEXT の属性は、より面倒です。
プロパティーウィンドウで変更するのが速いです。
複数のブロックを選択すると、同じ属性名の値を一括で同じ値に変更できます。
■ ブロックの編集
ブロックをダブルクリックすると「ブロック編集ダイアログ」が表示されます。
[OK] ボタンをクリックすると、REFEDIT コマンドが実行され、ブロックの編集に入ります。
REFCLOSE (破棄して終了)で編集終了になります。
確認ダイアログ 「Do you really want to dose editing and discard changes?」
「行った編集と変更を破棄しますか?"」に[YES]をクリックすると、破棄されます。
コマンドラインに REFCLOSED を入力しても同様です。
コマンドラインに REFCLOSES (保存して終了)を入力すると、
ダイアログ 「Do you really want to close editing and save changes ?」
「編集を終了し、変更を保存しますか?」が表示されます。
■ 印刷
こちらの環境ではどうしてもモノクロ印刷ができないことがありました。現在は出来ています。
用紙サイズに ISO A0 .. , A0x2 ... とかが表示される場合は、
メニュー「ツール」-「オプション」-「用紙」のチェックをすべて外して[OK]をクリックすると、表示されなくなります。
■ DWG プレビューイメージ(サムネイル)
作成されないようです。システム変数 THUMBSAVE は存在せず、THUMBSIZE だけが存在します。
AutoCAD、IJCAD では表示されず、BricsCAD では、表示されますが、これは BricsCAD が独自に描画しているようです。
(BricsCAD では、DXF ファイルもプレビューが表示されます。)
■ コマンドラインでの LISP コード の実行
LSP[Enter]C[Enter]で、コマンドラインが _>: 表示になります。
この状態で、(entget(car(entsel))) とかが動きます。
[ESC] で元のコマンドラインに戻ります。
■ PDF のアタッチは対応していません。
他の CAD でアタッチされた PDF は表示されませんが、PDF アンダーレイとして情報は保持されます。
画面上では「Missinq or invalid reference」と表示されます。
■ PDF のインポート
出来ません。
CAD から出力した PDF 図面であれば PreCAD を使いましょう。手軽です。
https://junkbulk.com/windows/index.html
PDF を読み込んで、DXF, JWW, SXF に出力できます。
PDF に出力できる CAD は多いですが、PDF を読み込みできる CAD は珍しいです。
PreCAD を起動せずに、PreCad のアイコンに PDF ファイルをドラッグ&ドロップ。
PreCAD が起動するので、PDF のページ番号を入力。
何もせずに、「名前を付けて保存」で、DXF ファイルに保存。
他の CAD で読み込めない場合は、PreCAD で DXF ファイルを読み込んで、再度上書き保存。
または、
izawa-web.com/pdfaid/pdfaid1.html
AutoCAD に付属しているコンソール版のAuoCAD 「AcCoreCnsole.exe」 で PDF -> DWG 変換できます。
■ペースト(PASTECLIP)
こちらの環境では環境では、図形数の多いブロックを [Ctrl]+[C] または [Ctrl]+[Shift]+[C] でクリップボードにコピー。
[Ctrl]+[V] でペーストすると、nanoCAD が無応答になります。
タスクマネージャーから終了するしかありません。
図形数の関係か、内部図形の関係かは不明です。 微小円弧の可能性もありそう(想像)。
■ コマンドラインでの LISP のロード、実行
ロード:
LSP[Enter] L「Eneter]
LSP ファイルのフルパスファイル名[Enter]
※不具合があれば表示されます。
| システム変数が実装されていません: PRODUCT
|エラー:引数の型が無効です: STRINGP: nil
|...
実行:
LISPコマンド名[Enter]
上記で実行されない場合は、LSP[Enter]O(オー)[Enter]
追加されたコマンドの一覧を表示したあとに、LISPコマンド名[Enter]
■ LISP の自動ロード
メニュー [ツール]-[アプリケーション]-[アプリケーションをロード]
「スタートアップスイート」下の「カバン」ボタンをクリック、LISP ファイルを選択し、[追加] ボタンをクリック
または、
nanoCAD のフォルダ内に nCad.lsp という名前の lsp ファイルがあると、ドキュメントごとにロードされます。
例えば、「nCad.lsp がロードされました。コマンド: NOTEPAD」 とコマンドラインに表示され、notepad コマンドが使えるようになります。
nCad.lsp が無い場合は、新たに作成します。
■AutoSave ファイルの在り処
こちらの環境では、
C:\Users\owner\AppData\Local\Tempフォルダ内に
ファイル名+(10-58-13_2024-06-08).autosave のように
(時刻、日付)が追加された .autosave ファイルが作成されます。
自動保存時、コマンドラインにファイル名が表示されるので、コマンド履歴からも確認できます。
■ その他
・(findfile "ncad.exe") はフルパスを返しません。
(princ (vla-get-path (vlax-get-acad-object))) を使います。
・ファイル選択ダイアログ (setq fname (getfiled "Select a dwg File" ""
"dwg;dxf" 8)) は動きます。
2番目の引数 "" は初期フォルダ名です。
・システム変数 LASTPOINT は機能していないようです。
・FILEDIA の値を変えても、動作が変わらないことがあります。
・システム変数 COPYMODE はありません。
コマンドラインで COPY[Enter]L[Enter]M[Enter]S[Enter][ESC]でシングルモードに、
COPY[Enter]L[Enter]M[Enter]M[Enter][ESC]でマルチモードになります。
LISP だと (command "copy" "L" "" "M" "S" (chr 27)) です。
・LISP でのユーザー入力待ち PAUSE は無視されます。
・UNDO コマンドに BEGIN, END, .MARK ... はありません。コメントアウトしましょう。
ただし、UNDO を行うと、LISP コマンド実行前に戻ってしまうので、注意が必要です。
COM (ActiveX) の StartUndoMark, EndUndoMark も実装されていません。
・ENTMAKE した図形は UNDO コマンドでは戻せないことがあるようです。
・一時オブジェクトスナップ
必要な時に [Shift] または [Ctrl]+右クリックで一時オブジェクトスナップを指定できます。
コマンドラインに end ... とかを入力しても、エラーになります。
(command "") は enter と同じ。キャンセルは (command)または、(command (chr 27))
グリップ表示の解除はできないので、(command "regen") が必要です。
(command ...) は完結している必要があり、分割して送れません。
その代わり、終了待ち しなくても良いです。
command "line" (getpoint)(getpoint)"") は意図どおりに動きません。
ユーザー入力待ち pause は使えない。
vl-cmdf は実装されていません。
lisp コマンドは enter または space で再実行できるとは限りません。
lisp 内で最後に実行された (command ...) が走る確率が高いです。
例えば、BLINE という自前のコマンドの実行中に、直交モード ORTO を切り換えた時、
最後のコマンドは、BLINE ではなく ORTO になります。
なので、[Enter] で実行されるコマンドは、BLINE ではなく ORTO になります。
・・・という仕様っぽい。
作画領域でマウス右クリックのポップアップメニューの先頭にコマンド名が表示されますが、
LISP コマンドは2番目になっているので、そういう仕様なのだと思います。
マウス右クリックの動作については、オプションで変更できます。
Tools - Options ... Right button usage
[Ctrl]+[9]:オプション設定
座標指示で、コマンドラインに m2p、mtp、nea、qua ... 等、一時オブジェクトスナップは使えません。
[Shift] + 右クリックのポップアップメニューから選ぶ。m2p, mtp はありません。
コマンドで割り込みは使えません・・・。
EXYMIN, EXTMAX は機能していません。
初期値は、
EXTMIN = 1.00E+20,1.00E+20,1.00E+20
EXTMAX = -1.00E+20,-1.00E+20,-1.00E+20
で、nanoCAD で図形を追加しても、変化しません。
他の CAD 図面を読み込んだ場合はその値が保持されているので、なかなか気づきません。
システム変数 SCREENSIZE はありません。
システム変数 PRODUCT はありません。
entsel を enter または選択失敗したとき nil を返さずエラーとなります。
VLISP 関数、定数を使う場合は、必ず (vl-load-com) が必要です。
vbs の sendCommand はコマンドラインに文字列を送っているだけなので、
vbs とは同期がとれない。別のタイミングで動きます。
sendCommand はかなり後から実行される感じです。
サブ図形の選択 NENTSEL は実装されていません。
COM の GetSubEntity も実装されていません。
LISP のロードにかなり時間がかかります。
ドラッグ&ドロップでロード出来ないので開発効率が悪すぎます。
ncadLoader.exe を使いましょう。
VLISP 関数はほぼ動きます。
■ nanoCAD VBS について
nanoCAD 用の VBS は、VBS コマンドで実行できます。
nanoCAD 内部で動くので、外部からExcel や(nanoCAD 用でない普通の)VBS, Delphi で操作するより速いです。
コマンドとしては作成できないので、LISP から
(setvar "FILEDIA" 0)
(command "VBS" ファイル名...)
(setvar "FILEDIA" 1)
で呼び出すのが良いようです。最後の一行は、VBS 側で SetVariable "FILEDIA" 1 しても良いでしょう。
変数を受け渡す必要があるときは、システム変数 USER.. を使います。
図形ハンドルの受け渡しは、
LISP 側:
(setq sHandle (cdr (assoc 5 (entget ename))))
(setvar "users1" sHandle)
VBS, COM 側:
Set Obj = doc.HandleToObject(getVariable "users1")
のように、受け取ることができます。
VBS の GetPoint では 2点目を指示するとき、ラバーバンドが表示されません。
この部分を LISP で作成し、後の処理を VBS で行う使い方が出来ます。
外部から実行する VBS が扱いやすくて便利ですが、
コマンドとして登録できないので、[Enter] での再実行はできません。
やはり LISP + nanoCAD 内部で動く VBS が良いのかなと思います。
VLISP 関数もかなり動くので、LISP で出来ることは LISP のほうが良いように思います。
何よりも Visual Studio Code で作成できるので、快適です。
■外部 EXE の起動と LISP のオートロード
コマンドラインに shell_exec[Enter]open,notepad[Enter]
でメモ帳が起動します。ファイル名等、オプションは渡せないようです。
nanoCAD 5 では、shell_exec_param は使えません。
nanoCAD 5 のインストールフォルダに nCad.lsp の名前で、下記を保存すると、
NTED コマンドが追加され、NTED[Enter] で ncadNTED.exe が起動します。
これが一番簡単で使いやすいです。
nanoCAD 5 のインストールフォルダに対象の EXE を置いたときは、フォルダ名は不要になります。
(defun c:nted() (command "shell_exec" "open,D:\\xxx\\yyy\\zzz\\ncadNTED.exe") (princ) ) (princ)