// 内蔵エディタの保存サンプル 2023/06/01 NabeTech
Program EditorSaveFile;
var
folda, FileName, s : string;
begin // エディタにNCデータを準備しておいて下さい。
folda := 'c:\nc\'; // 任意のフォルダ
InputStr('File Name?', s);
FileName := folda + s + '.nc'; // 拡張子に注意
EditorSetCaption(FileName); // 内蔵エディタのキャプションを設定します。
EditorSave(FileName);
WinExec('c:\NTVIEW\NtView.exe' + ' ' + FileName); // 鍋ビュワの起動
End.
※ Ver9.16 以降のみ
24.zip 初めて投稿させて頂きます。
円、円弧及び直線を指定した長さの直線に分解するスクリプトです。
当方では3軸MCの等高線加工のZ座標計算用に使用しています。
// ラジオボタンサンプル 2021/06/29 NabeTech
Program TestDialog;
Begin
InitDlg(); // ダイアログ初期化
RadioItemsAdd('abc'); // アイテムの追加
RadioItemsAdd('bbc');
RadioItemsAdd('ccc');
RadioItemsAdd('zzz');
RadioItemsAdd('fff');
// ラジオボタンの追加(タイトル,横位,縦位置,幅,高さ,列数
AddRadio('TITLE', 20, 15, 300, 150, 2);
If ShowDlg(350, 250,'ラジオボタン') <> True Then
Exit;
OkMsgBox(IntToStr(GetRadioIndex()));
End.
※Ver9.13以降でないと動きません。
// ダイアログサンプル 2021/05/05 NabeTech
Program TestDialog;
var // グローバル変数宣言
pa, pb, pc : double;
Begin
AddLabel(40, 20, 80, 13, 'パラメータA');
AddLabel(40, 50, 80, 13, 'パラメータB');
AddLabel(40, 80, 80, 13, 'パラメータC');
AddEdit(1, 130, 20, 50, 21, '1');
AddEdit(2, 130, 50, 50, 21, '2');
AddEdit(3, 130, 80, 50, 21, '3');
If ShowDlg(220, 150,'ダイアログ1') <> True Then
Exit;
pa := StrToFloat(GetDlgText(1)); // 文字を実数に変換
pb := StrToFloat(GetDlgText(2));
pc := StrToFloat(GetDlgText(3));
InitDlg(); // ダイアログ初期化
AddLabel(20, 20, 80, 13, 'a+b+c='+FloatToStr(pa+pb+pc));
If ShowDlg(300, 100,'ダイアログ2') <> True Then
Exit;
End.
14.zip 選択HITした文字列をクリック毎に拡大、SHIFTまたはALTキー押し下げ状態ではクリック縮小されます。
文字列以外をHITしたり Escキーで終了します。
特殊キーの押下状態を取得します。
当然ですが、Ver9以降のみで動作します。
program GetKeyStatDEMO; // 2017/08/27
const
VK_SHIFT = $10; // Shiftキー
VK_CONTROL = $11; // Ctrlキー
VK_MENU = $12; // Altキー
var
stat : string;
begin
OkMsgBox('何かキーを押して下さい');
if GetKeyStat(VK_SHIFT) then
stat := ' Shift ';
if GetKeyStat(VK_CONTROL) then
stat := stat + ' Ctrl ';
if GetKeyStat(VK_MENU) then
stat := stat + ' Alt ';
OkMsgBox(stat);
end.
↓質問は「鍋CAD サポート掲示板」にお願いします。
お世話になります。
客先から入手したCADデータを鍋キャド8で編集(線等の削除)する方法教えてください。
10.zip 現ページのアクティブなレイヤ内にある全ての点を円に変換します。
直径も指定できますが、適当に改造してお使い下さい。
7.zip FANUC系NCデータをOSP用に変換するスクリプトです。
事前に内蔵エディタにNCデータを準備しておいて下さい。
自動編集ヶ所
1.G54..G59をG15H1..H6に変更する
2.G80を消す
3.M98をCALL Oに変更する
4.M99をRTSに変更する
6.zip ページとレイヤのリストをエディタに書き出します。
[作図要素数]も書き出すデラックス版です。
※Ver8.21以降のみ対応
5.zip 裏ページの要素をヒットすると、そのページ・レイヤにジャンプします。
// gotoPage 2014/11/28 Nabetech
var
id, ty, page, layer: integer;
d1, d2, d3, d4, d5 : double;
begin
Message('ジャンプ先要素をヒットして下さい');
id := Hit(ty, d1, d2, d3, d4, d5);
if id > -1 then
if GetPageLayer(id, page, layer) then
Begin
ActivePage(page);
Activelayer(layer);
End;
end.
4.zip ページとレイヤのリストをエディタに書き出します。
未公開関数のGetPageName()とGetLayerName()のサンプルとして下さい。
3.zip StringListを使うと大量の文字列を簡単に扱う事が出来ます。
以下、使用例です。
// NCコードに行の挿入例 2014/10/29 NabeTech
// エディタにNCデータを準備しておいて下さい。
Program WorkPositionEdit;
var
i, leng : integer;
s : string;
sl : stringlist;
begin
sl := stringlist.Create; // StringListの利用例
sl.Clear;
leng := EditorLength(); // エディタの行数を取得する
for i:=1 to leng do // StringListに全行を格納する
sl.Add(EditorRead(i));
EditorCrear(); // エディタの消去
for i:=1 to leng do
Begin
s := sl.GetItem(i-1); // 注:インデックスと違う
Writeln(s);
if Length(s) < 1 then continue;
if Pos('%', s) > 0 then continue;
Writeln('M01');
End;
sl.Free; // 解放を忘れずに
End.
// シーケンスナンバー追加ログラム
// Ver8.12以降をお使い下さい。 2013/11/29 NabeTech
Program SeqnNo;
var
i, n, leng : integer;
s : string;
begin // エディタにNCデータを準備しておいて下さい。
n := 1;
leng := EditorLength(); // エディタの行数を取得する
for i:=1 to leng do
Begin
s := EditorRead(i);
if Length(s) < 1 then continue;
if Pos('%', s) > 0 then continue;
if Pos('(', s) > 0 then continue;
if Pos('N', s) > 0 then continue;
EditorWrite(i, IntToStrf('N%.4d',n)+s);
inc(n);
End;
End.
スバム投稿が激しいため、投稿掲示板のCGIを更新しました。
旧投稿記事は↓にありますので、参照は出来ます。(投稿不能)
http://www.nabetech.com/ntcad/scriptpost/nabeclip.cgi