この投稿では、CADソフトウェアのマクロを作成する方法と、追加する方法を学びます もっと ディーゼルコードで記述された1行プログラムによるマクロへのパワー。

ボタンをクリックするかメニューを選択すると、BricsCADがバックグラウンドで実行されます。 大きい。これは、ボタンまたはメニュー項目に割り当てられた一連の1つ以上のコマンドです。

[カスタマイズ]コマンドを使用すると、ボタン、メニュー選択、マウスクリック、およびその他のアクションの背後にあるマクロを変更できます。ツールバー、リボン、およびBricsCADユーザーインターフェイスの他のほとんどの部分は、すべて同じ形式のマクロを使用します。これは、この理由から朗報です。

1つのマクロを書くことを学ぶとき、あなたはすべてのマクロを書く方法を知っています

ただし、違いは1つだけです。メニューには他のメニューよりも多くのユーザーインターフェイスオプションがあるため、マクロに関してはより多くの機能があります。

一部のマクロは ディーゼルコード、単純化したプログラミング言語。メニュー項目の前のチェックマークを切り替えるなど、特殊効果に使用されます。ディーゼルが使用するコーディングは本当に、 本当に 難解。幸い、同じコードのディーゼルコードを繰り返し使用できるため、コードが何を実行するかを認識できれば十分です。

BricsCAD用ディーゼルの完全な概要については、公式を見ることができます、 BricsCADディーゼル開発者ガイド.


この投稿では、次のトピックについて説明します。

  • マクロ構文を学ぶ
  • メニュー固有のマクロを書く
  • ディーゼルでのコーディング
  • ディーゼル機能のカタログ化

マクロのメタキャラクターのクイックサマリー

マクロは、メニュー、ツールバー、および[カスタマイズ]ダイアログボックスの他の領域で、コマンド名とオプション名、メタ文字、ディーゼルコード、およびLISP関数を使用します。メタキャラクターは、アクションを表す句読点で構成されます。 BricsCADで使用されるメタ文字は次のとおりです。

^ —(カラット)は、 Ctrl キー。以下の制御キーの組み合わせは、マクロで有効です。

  • ^ B スナップモードを切り替えます
  • ^ C 現在のコマンドをキャンセルします
  • ^ D 座標形式を切り替えます
  • ^ E 次のアイソメトリック平面への変更
  • ^ G グリッド表示を切り替えます
  • ^ O 正投影モードを切り替えます
  • ^ S カーソルの下のエンティティを選択します
  • ^ T タブレットモードを切り替えます
  • ; (セミコロン)はEnterキーを表します。
  • '(一重引用符)は、透過モードでのコマンドの使用を強制します。
  • _(アンダースコア)は、コマンド名の英語バージョンの使用を強制します。
  • –(ダッシュ)コマンドのバージョンのコマンドを強制的に使用します。
  • \(バックスラッシュ)は、ユーザー入力のためにマクロを一時停止します。
  • ((左括弧)は、LISP関数の開始を示します。
  • $(は、ディーゼルステートメントの開始を示します。
  • )(右括弧)は、LISP関数とDieselステートメントの終わりを示します。

次のメタ文字は、メニューマクロでのみ使用されます。

マクロディーゼルコードBricsCAD

  • $Mは、複雑なマクロの開始を通知します。
  • 。!チェックマークが表示され、トグルがオンになっていることを示します。
  • 〜(チルド)メニュー項目がグレー表示され、使用できないことを示します。
  • &(アンパサンド)は、アクセラレータキーに信号を送り、 Alt キー。

詳細については、 BricsCADの開発者リファレンスの概要。

単純なマクロ

単純なマクロは、いくつかの異常な文字が前に付いた単一のコマンドで構成されています。たとえば、次のマクロは、描画ツールバーの[線]ボタンにアタッチされています。

^ c ^ c_line

以下の[描画]メニューの[線]に示すように、ツールバーとマクロにはまったく同じマクロが使用されます。

マクロディーゼルコードBricsCAD
Commandプロパティに表示される基本的なマクロ

マクロの^ c ^ c_文字の意味は次のとおりです。

  • ^ c — 制御文字です。キーボードでEscを押すことを模倣して、現在進行中のコマンドをキャンセルします。カラット記号(^)は、後続の文字が制御文字であり、コマンド名またはエイリアスの一部ではないことをBricsCADに警告します。
    ( 'c'はEscキーとどのような関係がありますか?1980年代と1990年代には、デスクトップコンピュータがオペレーティングシステムにMS-DOSを使用していたときに、ユーザーはCtrl + Cを押してコマンドをキャンセルしました。Cは「キャンセル」の略でした。 Microsoftは、WindowsではCtrl + Cの意味を「クリップボードにコピー」を意味するように変更しましたが、マクロでは引き続き「キャンセル」を意味します。)
  • ^ c ^ c — 多くのBricsCADコマンドは2レベルの深さなので、ほとんどのマクロは2つの^ csで始まります。
    余分な^ csは害を及ぼしません。実際、BricsCADの古いリリースでは、すべてのマクロの前に3つの^ csが付けられていました。 PEditのようなコマンドを処理するためのオプションです。マクロが透過的( 'アポストロフィで始まる)の場合、マクロの前にキャンセル文字を付けることはできません。これについては、このセクションの後半で詳しく説明します。
  • _ —アンダースコアは、コマンドを国際化する規則です。
    コマンド名の前にアンダースコアを付けると、ドイツ語、日本語、またはスペイン語のバージョンのBricsCADで使用するかどうかにかかわらず、コマンドの英語バージョンが常に機能します。
  • ライン— 実行するコマンドの名前です。
    マクロでは、キーボードの「:」コマンドプロンプトで入力するのとまったく同じように、BricsCADコマンドとそのオプションを入力します。最後にコマンドを終了するために必要なものはありません。 BricsCADは自動的に「Enterキーを押す」ことを行います。
ヒント マクロは大文字と小文字を区別しません。これは、マクロの文字が大文字、小文字、または大文字と小文字が混在する可能性があることを意味します。 BricsCADには関係ありません。以下は同じ効果があります。

  • ^ C ^ _LINE
  • ^ c ^ c_line
  • ^ C ^ c_Line

マクロでの透明なコマンド

ほとんどのマクロは、既存のコマンドをキャンセルすることから始まります。しかし、コマンドを透過的に使用したい場合もあります。つまり、別のコマンドの間。たとえば、コマンドの実行中に図面を拡大したい場合があります。

透過的なコマンドは、次のようにアポストロフィプレフィックス( ')で示されます。

'_ズーム

破線のコマンド

BricsCADのいくつかのコマンドはダッシュで始まります。これらは、ダイアログボックスを表示する代わりに、コマンドラインで動作するものです。

一例は 見る コマンド:Viewはダイアログボックスを表示しますが、 -見る コマンドラインにプロンプトを表示します。 Viewにコマンドラインでプロンプトを表示させるには、次のように入力します。

^ c ^ c_-見る

オプションとユーザー入力

マクロは、コマンドオプションを指定したり、ユーザーからの入力を待機したりできます。

オプション

オプションはコマンドと同じです。オプション名を書き出すだけです。注意すべき唯一のことは、セミコロン(;)を使用して、コマンドと他のオプションを区別する必要があることです。

以下は、レイアウトコマンドとその新規オプションの例です。

^ c ^ c_layout; _new

オプションは、アンダースコア(_)プレフィックスを受け取って国際化することもできます。

オプションの名前を完全に入力するか(_new)、または承認された省略形(_nなど)を使用できます。承認された略語は、次のように、コマンドプロンプトに表示されるオプション名の大文字で示されることを思い出してください。

: レイアウト

レイアウトオプションを入力[コピー/削除/新規/名前変更/設定/保存/テンプレート/?リストする] : 

Newオプションには「n」、Setオプションには「s」を使用できますが、Saveオプションには「sa」を使用する必要があります。

「?」の使用は完全に有効です(「?to list」のように)マクロでは使用できますが、スペースを使用することはできません。 入る.

ユーザー入力の一時停止

ユーザーがデータを入力できるようにするために、マクロでは円記号(\)を使用します。これにより、ユーザーが何かを行うのをマクロが強制的に待機します。通常、予想されるアクションは、ユーザーが次のいずれかを入力することです。

  • 画面上の点をピックするか、
  • キーボードでX、Y座標を入力する

マクロは、ユーザーが円の中心点を入力するのを待ちます。円は常に半径1単位です。

^ C ^ C_circle;\1

メニューピックやツールバーボタンなどからこのマクロを実行すると、コマンドラインで次のようになります。

  • : _サークル マクロがコマンドを開始します
  • 2点/…/
    : (ユーザーがポイントを選択)マクロは、ユーザーが図面内のポイントを選択する(または座標ペアを入力する)まで待機します。
  • 直径/ <5>: 1マクロは1(半径)を入力し、コマンドを終了します

ただし、コマンドによっては、予想されるアクションが他のアクションになることもあります。回転コマンドのオプションは、角度(ユーザーが画面上で2点を選択するか、1つの数値を入力する)を期待し、テキストコマンドでテキスト行(ユーザーが1つ以上の単語を入力する)などを期待します。

コマンドがユーザーからの複数の入力を予期している場合、次に示すように、複数のバックスラッシュを続けて入力できます。

オプションと一時停止の組み合わせ

オプションと一時停止は一緒に組み合わせることができます。この例では、ユーザーが中心点と回転角度を指定すると、マクロが楕円を描画します。

^ c ^ c_ellipse; _c; \\ _ r

コードの意味は次のとおりです。

  • ^ c ^ c 同時にアクティブになる可能性のある他のコマンドをキャンセルする
  • 楕円 アンダースコア(_)プレフィックスがコマンドを国際化する一方で、コマンドの名前です。
  • ; (セミコロン)は押すのと同じです 入る またはキーボードのスペースバー。
  • C 楕円コマンドの センター オプション。キーボードでオプションの省略形を入力するのと同じように、マクロで同じ省略形を使用できます。または、「Center」などのオプション名全体を入力できます。
  • \ (バックスラッシュ)マクロを一時停止し、ユーザーを待機します。行の2つの円記号は、マクロがユーザーに2つのピックを期待していることを意味します。
  • R 楕円コマンドの略です 半径 オプション。

マクロをもう一度見てみましょう。今回はコマンドのプロンプトと並行しています。

  • ^ C ^ C (Esc、Escを押します。)
  • _楕円; :楕円
  • ; (Enterキーを押します。)
  • _C; 円弧/中心/ : c (Press Enter.)
  • \ 楕円の中心:(ピックポイント。)
  • \ 軸の端点:(ピックポイント。)
  • _R 回転/ : r (Press Enter.)
    主軸周りの回転:(ピックポイント)

マクロがユーザーを待機する必要がなくなったため、最後のセミコロン(つまりEnter)とバックスラッシュ(つまりユーザー入力の一時停止)はマクロの最後に必要ありません。

ヒント ツールバーとメニューマクロにエイリアス、ディーゼルコード、およびLISPルーチンを含めることができます。マクロ用の「デバッガ」はないので、自分でエラーを理解する必要があります。

その他の制御キー

コマンドをキャンセルするためのコントロールキーである^ Cに会いました。 BricsCADは、^プレフィックスを使用して、これらすべてのコントロールキーの組み合わせもサポートしています。

制御キー 意味                                              同等のコマンド
^ B スナップモードを切り替え _'snap; _t
^ C コマンドをキャンセル Escキーを押します
^ D 座標を切り替え _ '座標; _t
^ E アイソメ平面を変更 _ 'アイソプレーン
^ G グリッド表示を切り替え _ 'グリッド; _t
^ O 正投影モードを切り替え _ '直交; _t
^ S カーソルの下のエンティティを選択します  . . .
^ T タブレットモードを切り替え _ 'タブレット; _t

これらのコントロールキーコンボは、エイリアスのような省略形と考えてください。これらのコントロールキーは、次のように、単独でマクロのショートカットとして使用できます。

Ctrlキーマクロのみで構成されるマクロ

メニュー固有のメタ文字

メニューは、ツールバーでは必要ない追加のメタ文字を使用します。これが完全なセットです:

メタキャラクター 意味
.! トグルがオンになっていることを示すチェックマークを表示します
~ (チルダ)
使用不可であることを示すグレー表示のメニュー項目
(アンパサンド) アクセラレータキーがキーボードからメニュー項目にアクセスできるようにします
その他のメタキャラクター
_ (アンダースコア) コマンドまたはオプションを国際化する
(見積もり) コマンドを透過的に開始します
\ (バックスラッシュ) ユーザー入力を待つ
; (セミコロン) Enterキーまたはスペースバーを押すのと同じ
$( Dieselステートメントを開始します
( LISPルーチンを開始します

 

ヒント AutoCADの一部®のメタ文字([]、+、\ t、*など)は機能しません。

ディーゼルコーディング

マクロが決定を実行するのを助けるために追加のコードが必要な場合があります。たとえば、[表示]メニューには、横にチェックマークが付いている3つのアイテム(コマンドバー、ステータスバー、スクロールバー)が一覧表示されます。 3つのバーが表示されると、メニューにチェックマークが表示されます。表示されない場合、チェックマークは表示されません。

左: チェックマークは、UI要素がオンになっていることを示します。
右: チェックマークがない場合、要素はオフになっています。

チェックマークを表示するメニューを取得するのは簡単です。 !. マクロへのメタ文字。ただし、チェックマークの表示は論理的な機能であるため、BricsCADで実際にオンとオフを切り替えるのは困難です。 UI要素がオンの場合にのみ、メニューに表示されます。

これがディーゼルコードの出番です。

ディーゼルについて

ディーゼルのマクロには2つの目的があります。1つは決定を行うことであり、もう1つはステータスバーをカスタマイズすることです。この名前は、「直接インタラクティブに評価される文字列式言語」の略です。 そしてそのプログラミングロジックは頭字語の意味と同じくらい明確です—泥と同じくらい明確です。

ディーゼル機能の概要

BricsCADは、次のディーゼル機能をサポートしています。

数学関数

  • + 添加
  • –  減算
  • 乗算
  • / 分割

論理関数

  • = 等しい
  • < 未満
  • > より大きい
  • != 等しくない
  • <= 以下
  • =以上
  • 論理ビットごとのAND
  • eq すべてのアイテムが等しいかどうかを決定します
  • もし if-then
  • または 論理ビットごとのOR
  • XOR 論理ビットごとのXOR

数値変換関数

  • 直す 実数を切り捨てられた整数に切り捨てます
  • angtos 角度をフォーマットします(文字列に対する角度の略)
  • rtos 数値を単位でフォーマットします(実数から文字列の略)

文字列(テキスト)関数

  • インデックス コンマ区切りのシリーズから1つの要素を抽出します
  • n番目 1つ以上のアイテムからn番目の要素を抽出します
  • strlen 文字列の文字数を返します(文字列の長さの略)
  • substr 文字列の一部を返します(部分文字列の略)
  • アッパー テキスト文字列を大文字に変換します

システム機能

  • edtime システム時刻をフォーマットします。
  • 評価 文字列をDieselに渡します。
  • getenv 環境変数の値を取得します。
  • getvar システム変数の値を取得します。
  • リネン ディスプレイの長さを返します

ディーゼルは、マクロ言語の珍しいフォーマットを持っています。すべての関数は、次のようにドル記号と括弧で始まります。

$ (関数、変数)

イニシャルの目的 $ 記号は、ディーゼル式が進行中であることをBricsCADに警告することです。 ( シンボルは、LISP式が近づいていることをBricsCADに警告します。の $ シンボルは、プログラマがテキストの文字列を示すためによく使用されます。

開始括弧と終了括弧は、ディーゼル機能の開始と終了を示します。関数は 入れ子、ここで、1つのディーゼル関数は2番目の括弧の内側にあります。ネストを使用して、1つの関数に2番目の関数の結果を評価させます。ディーゼルは完全に再入可能です。

ディーゼルプログラムはたった1行で構成されているからです。 —入れ子は、マクロ中に複数の関数を実行する唯一の方法です。

一部の機能では、ディーゼルは一度に9つの値を操作できます(複数の値を加算するなど)。右括弧は、ディーゼルに値のリストの終わりを警告します。

BricsCADは、26のディーゼル機能のカタログを提供します。それらのほとんどは、少なくとも1つの変数を使用し、一部は9つの変数を使用します。コンマは常に、関数名とその変数、および変数自体を区切ります。 ディーゼルはスペースを許容しません.

ディーゼル機能は、コマンドライン、ツールバー、メニューマクロ、LISPコード、およびステータスバーなどのBricsCADの他の領域で実行できます。ステータスバーで作業するには、 ModeMacro コマンドの後にディーゼル式が続きます。

(オートデスクのジョンウォーカー® ディーゼルを作成したプログラマーは、 setvar 時間、実装できましたが、実装されたことはありません。彼は提供します ディーゼルのソースコードにアクセスするための手順 そして、それを他の関数で再コンパイルします。彼はディーゼルを「ダムの解釈的に実行される文字列式言語」と名付けました。

チェックマークを切り替える方法

BricsCADは主にディーゼルを使用して、メニューのチェックマークを切り替えます。

  • チェックマークは、オプションがオンになっていることを意味します
  • チェックマークがない場合は、オプションがオンになっていることを意味します オフ

2つの状態を切り替えるために、BricsCADは。!を使用します。次のようなコードのメタ文字:

$(if、$(=、$(getvar、FILLMODE)、0)、、!.)

奇妙に見えるかもしれませんが、心配しないでください。そのコードを最初から作成する方法を知る必要はありません。必要なのは、(a)コピーして貼り付け、(b)単語を1つだけ変更する(この場合はFILLMODE)だけです。

ディーゼルコードの内容は次のとおりです。「FillModeの値が0の場合、何も表示しません。それ以外の場合は、チェックマークを表示します。」 BricsCADは .! メニューにチェックマークを表示するよう指示するメタキャラクター。

ここに、ディーゼルコードを見る別の方法があります。これは「解析」と呼ばれ、コードの各行に独自のインデントされた行が与えられます。

マクロディーゼルコードブリスカッド

これがコードの機能です。システム変数の値をチェックします FillMode。値が 0の場合、チェックマークは表示されません。値が 1、チェックマークが表示されます。

このコードを他のメニュー項目に使用するには、テキストをコピーして貼り付け、システム変数の名前を変更します。たとえば、[制限]コマンドにチェックマークトグルを追加するには、次のコマンドを使用します。 LimCheck システム変数。 Diesel文字列をコピー、貼り付け、編集して、次のようにします。

$(if、$(=、$(getvar、リムチェック),0),,!.)

同じコードを グリッド GridModeシステム変数を使用するコマンド:

$(if、$(=、$(getvar、グリッドモード),0),,!.)

したがって、Dieselコードが何をしているのかを実際に知る必要はなく、変更する単語を知るだけです!

グレーアウトの切り替え

メニューテキストの色を黒とグレーの間で切り替えるには、チルド( ~ ) キャラクター:

  • ブラック テキストは、メニュー項目が利用可能であることを意味します
  • グレー テキストは、メニュー項目が利用できないことを意味します

システム変数の値の報告

私たちはカスタマイザであるため、チェックマークやテキストの色を切り替えるだけではありません。 Dieselを使用してさらに多くのことを行う方法を理解しました。

たとえば、 システム変数の場合、 $(getvar 関数。このディーゼル機能 取得 システムの価値 variableを選択して、メニューに表示します。

次のチュートリアルでは、[高度]メニュー項目を変更して、現在の値がレポートされるようにします。 (高度は[設定]メニューにあります。)下の図は、このチュートリアルの前後のメニューの外観を示しています。 「後」の図では、標高は現在の値10.9000を報告します。

左: [設定]メニューの標高のデフォルトバージョン。 右: ディーゼルコードを使用して値を表示するように変更された標高

値を報告するようにメニュー項目を変更するには、次の手順に従います。

  1. 入力します Cui エイリアスを選択してから、 メニュー タブ。
  2. 拡大する 設定 ノード、次に選択します 標高 項目。
    [カスタマイズ]ダイアログボックスの[標高]コマンド
  3. ダイアログボックスの下部にあるマクロウィンドウであるメニュー項目領域に注意を向けます。横のフィールドをクリックします ディーゼル、次のコードを入力します。
                 $(getvar、elevation)
    このDieselコードは、Elevationシステム変数の値を取得して表示します。

    マクロにディーゼルコードを追加する
  4. [OK]をクリックして変更を適用し、[カスタマイズ]ダイアログボックスを閉じます。
  5. [設定]メニューを選択し、[標高]項目の変更を確認します。おそらく0.0000が前に付けられます—現在の標高。
  6. [高度]を選択してコマンドを実行し、1.23などの別の値を入力します。
    :標高
    ELEVATION <0.0000>の現在の新しい値を入力してください:1.23
  7. もう一度[設定]メニューを選択します。 [標高]の横の値が1.2300に変更されていることに注意してください。
    メニューに追加された実際の標高値

高度アイテムの表示をカスタマイズしました!ただし、ディスプレイには小さな問題があります。「1.2300」が「標高」という単語にぶつかって、見栄えがよくありません。

次のチュートリアルでは、間隔の問題を修正します。

    1. 再入 Cui エイリアスし、次に戻ります 設定|標高 項目。
    2. タイトルの横のフィールドを編集して、次のように変更します。
              エレベーション
      これに:
              =エレベーション
      スペース、等号、別のスペースを追加するだけです。

      マクロの強化
    3. [OK]をクリックして終了し、[設定]メニューを再試行してください。それは良く見えます!
      メニュー項目の外観の強化

番号は常に単語の前に表示されます。理由?ディーゼルコードは、単語の前に表示されるチェックマークを切り替えることを意図していたことを思い出してください。値の表示は ハック、後ろ向きの「1.2300 =標高」に悩まされています。ただし、「2つのSysvarを処理する方法」で後述するように、回避策があります。

どこにでも変数を適用する

同様の変更を[設定]メニューの他の項目に適用できます。それらのいくつかのシステム変数の名前を次に示します。

設定メニュー          システム変数  ディーゼルコード                                       
エンティティスナップ精度 絞り $(getvar、口径)
基点 InsBase $(getvar、insbase)
描画制限* LimMin、LimMax ($(getvar、リミン)、$(getvar、limmax))
厚さ 厚さ $(getvar、厚さ)

変更を適用すると、[設定]メニューは次のようになります。

値を報告する追加のメニュー項目

上記のメニューについては、いくつかの特別な注意点があります。それらを見ていきましょう。

ユニットを追加する方法

表示される10の値 エンティティスナップ精度 は少し意味がないので、次のようにTitleパラメータに「ピクセル」という単語を追加しました。

ピクセル= エンティティスナップ精度
BricsCADコマンドディーゼルコード
値に単位を追加する

アイコンと競合するチェックマークを解決する方法

の画像(アイコン)が 埋める チェックマークを上書きするようです。下の図では、どちらがオンで、どちらがオフですか。トグルがオンの場合、アイコンには薄い黒い境界線が表示されます。塗りつぶしでは、黒い境界線が既にあるため、見落としがちです。これが、私が本質的に見えない境界よりも大胆に見えるチェックマークを好む理由です。

1つの解決策は、Imageフィールドからアイコンを削除することです:

ディーゼルコードでBricsCADメニューをカスタマイズします。
上: どちらがオンになっているか
左下: 空白のアイコンで塗りつぶしがオフになっています 右下: チェックマークアイコンで塗りつぶしがオン

2つのシステム変数を処理する方法

最初は、 描画制限 正しく機能するアイテム。 LimMinとLimMaxという2つのシステム変数から値を抽出しますが、これはトリッキーです。いじくり回した後、ディーゼルコードの一部を 題名 このようなパラメータ:

2つの変数を報告するためのコード

ディーゼルコードの各部分が括弧で囲まれ、カンマで区切られていることに注意してください。

これにより、2D座標のペアが読みやすくなります。

描画制限= ($(getvar、limmin)), ($(getvar、limmax))

このマクロは、次のように制限を表示します。

(0,0), (12,9)
2つの変数の値を報告するメニュー項目

ディーゼルによる報告

他のメニューでは、ディーゼルのレポート機能を利用できます。これが可能な例です:

  • ファイル|閉じる で図面ファイルの名前を報告できます DwgName システム変数。
  • 編集|元に戻す 元に戻すコマンドの名前を報告できます CmdName.
  • 表示|視点を設定 現在のビューの座標をレポートできます VPointX, VPointY、そして VPointZ.
  • 挿入|ブロックを挿入 最後に挿入されたブロックの名前を InsBase.
  • 描く|サークル 現在の半径を報告できます CircleRad.
  • ディメンション|寸法スタイルを復元 現在の寸法スタイルの名前をレポートできます DimStyle.
  • 変更|フィレット 現在のフィレット半径を フィレット半径.
  • 設定| TextStyle 現在のテキストスタイルの名前を TextStyle.
  • ツール|お問い合わせ|時間変数 図面が開いている期間を報告できます TdInDwg.

単位のフォーマット

上の図では、基点と描画制限の値が建築単位で示されています。通常、デフォルトでは10進数の単位で表示されるため、これは驚くべきことです。この場合、私はだましました:私はディーゼルを使用しませんでしたが、ユニットのフォーマットを単に変更しました 単位 コマンド。

この例は、メニューの一部の値が現在の単位の設定の影響を受けることを示しています。ただし、標高や厚さなどの他の値は、小数点第4位まで表示されます。これは、次に説明するように、ディーゼルコードを使用してオーバーライドできます。

ディーゼル出力のフォーマット

ディーゼルで生成された数値とテキストに書式を適用できます。数値と角度は単位用にフォーマットできますが、テキストは大文字に変換したり切り捨てたりできます。

数値のフォーマット

Dieselは、数値と座標の基本的なフォーマットのための関数を提供します。

修正

修正 関数は、切り捨てられた整数に実数を切り捨てます。たとえば、ディーゼル計算が5.321の値を返す場合、Fix関数を適用すると値が4に変更されます。「切り下げ」とは、5.987などの値(6に切り上げられると予想される)も切り捨てられることを意味します4:

$(直す,4.321)                5を返します 

索引

索引 関数は、コンマ区切りの系列から単一の座標値を抽出します。たとえば、BasePointシステム変数は、次のようなx、y、z座標を返します。

(4,11,16)

次のように、Index関数を使用して(4,11,16)からx座標を抽出します。

$(インデックス、0、($getvar、basepoint))                  4を返します

ディーゼルは基数0を使用することに注意してください。つまり、人間のように1ではなく0から数え始めます。したがって、上記の関数の0は最初の座標xを抽出します。

インデックス番号 抽出された座標
0 バツ
1 y
2 z

(私たちが数えるとき、私たちは次のように数えます:1、2、3…;ディーゼルが数えるとき、それはこのように数えられます:0、1、2…これはあなたがあなたよりも1つ少ない数字を使用しているのでディーゼルでの数え方を複雑にします期待します。)

N番目

N番目 関数は、1つ以上のアイテムからn番目の要素を抽出します。ここでは、2は数値の文字列の3番目の要素である8を返します(ディーゼルは1ではなく0からカウントを開始するため)。

$(n番目,2,10,9,8,7)                                 8を返します

IndexとNthはどちらも数値とテキストを処理します。

Rtos

Rtos 関数は数値を単位でフォーマットします。関数名は「real to string」の略ですが、文字列とは関係ありません。 (同様の機能、 Angtos、角度をフォーマットします。)使用方法は次のとおりです。

図面に建築用の単位が含まれているが、Dieselが小数点以下1桁の精度で数値を10進表記で報告するとします。次の例では、Rtos関数は最初の面取り距離ChamferAをフォーマットします。

$(rtos、($getvar、chamfera)、2,1)

どこ:

($getvar、chamfera)–システム変数の名前、フォーマットする実数のソース。

2 –数値のフォーマット、この場合は10進数。ディーゼルはLUnitsと同じコードを使用します。詳細については、以下の表を参照してください。この数字を省略すると、BricsCADはLUnits(線形単位)sysvarで見つかった値を読み取ります。

モード(LUnits) 数値表示形式
1 科学表記(指数形式)2
2 10進形式(メトリック)
3 エンジニアリング形式(フィートと小数インチ)
4 建築フォーマット(フィートと分数インチ)
5 小数形式(小数インチ、フィートなし)

1 —数値の精度。この場合は小数点第1位です。この数字を省略すると、デフォルトでLuPrec(線形単位の精度)の値が使用されます。範囲は0〜8で、小数点以下0〜8桁を意味しますが、精度自体は角度の単位によって異なります。次の表をご覧ください。

角度単位 精度の範囲(AuPrec)                                                  
10進数 0 に  0 .00000000
DMS 0d 0d00'00 .0000”
卒業生 0g 0 .00000000g
ラジアン 0r 0 .00000000r
測量士のユニット N0dE N0d00'00 .0000” E

角度のフォーマット

角度は、 Angtos 関数、「文字列に対する角度」の略。この例では、Angtos関数は面取り角度ChamferDをフォーマットします。

$(angtos、($getvar、chamferd)、2,1)

どこ:

($getvar、chamferd)—システム変数の名前、角度のソースを指定します。

2 —角度のフォーマットを指定します。この場合はグラデーションです。 Dieselは、AUnits(角度単位)システム変数と同じコードを使用します。この数字を省略すると、BricsCADはAUnitsの現在の値を読み取ります。

モード(AUnits) 角度を表示
0 小数度(円あたり360 .0度)
1 度、分、秒
2 卒業生(1サークルあたり400卒業生)
3 ラジアン(円あたり2piラジアン)
4 測量者の単位(NおよびE座標)

1 —角度の精度を指定します。この場合、小数点以下1桁です。この数字を省略すると、AuPrec(角度単位の精度)

テキストのフォーマット

ディーゼルは、テキストをフォーマットするための最も基本的な機能を提供します。

アッパー

ディーゼルには アッパー テキスト文字列全体を大文字に変換する関数。これは、2つのテキスト文字列を比較して、それらが同一であることを確認するのに役立ちます。 「下」機能はありません。

StrnLen

StrLen 関数は文字列の文字数を決定しますが、 Substr 文字列の一部を抽出します。これらおよびその他の関数の詳細は、この投稿の後半に記載されています。

太字や色付けなど、他のタイプのテキスト形式はディーゼルでは使用できません。

ディーゼルの変数

ディーゼル関数で変数を使用できます。ある計算の結果が得られたら、後でそれを保存して別の2番目の計算で使用することができます。これは、計算機のメモリを使用するようなものです。これを行う方法は次のとおりです。

  1. まず、あなたは SetVar UserR1などのユーザーシステム変数の1つに値を格納するコマンド。 (これはメニューマクロの外で行う必要があります。)
    コマンド: setvar
    変数名を入力または[?]: userr1
    USERR1の新しい値を入力<0.0000>: 3.141
  2. 次に、$(getvar function:$(+、$(getvar、userr1)、25)を使用して、メニューマクロ内でそれにアクセスできます。

次のユーザーシステム変数をDieselで使用できます。

  • UserR1 使って UserR5 保管する 実数 (小数を含む数値)
  • UserI1 使って UserI5 保管する 整数 (小数なしの数値)
  • UserS1 使って UserS5 保管する 文字列 (テキスト)

実際には、これらの15のシステム変数に必要なものを格納できます。 R(実数)、I(整数)、S(文字列)のラベルが付いていると便利です。ただし注意が必要です。これらのシステム変数の内容は、BricsCADの終了時に完全に消去されます。次回BricsCADを起動したとき、それらの値はすべて0です。

ディーゼル機能の完全なカタログ

BricsCADがサポートするすべてのディーゼル機能の詳細を以下に示します。

数学関数

ディーゼルは、4つの基本的な算術関数をサポートしています。

+

+ (加算)関数は、最大9つの数値を加算します。

$(+,2,3.4,10,5)                   戻り値 20.4

この関数は、わずか1つの値で機能し、値を0に追加します。

$(+,2)                             戻り値 2

(減算)関数は、9から最大8つの数値を減算します。たとえば、次の方程式は2 – 3.4 – 10 – 5 = -16.4と解釈されます。

$(,2,3.4,10,5)                   戻り値 -16.4

別の例として、この方程式は2 – 0 = 2として読み取る必要があります。

$(-,2)                             戻り値 2

*

* (乗算)関数は、最大9つの数値を乗算します。

$(*,2,3.4,10,5)                   戻り値 340

pi(3.141)の値を UserR1、円を含む計算を実行できます。たとえば、円の面積を見つけるための式は次のとおりです。 pi * r2。ディーゼルは正方形や指数をサポートしていないため、複数の r 単独で: pi * r * r.

2.5インチ半径の円の面積を見つけるには:

$(*、$(getvar、userr1)、2.5,2.5) 戻り値 19.63125

/

/ (除算)関数は、1つの数値を最大8つの他の数値で割ります。

$(/,2,3.4,10,5)                   戻り値 0.01176471

これは2 / 3.4 / 10/5 = 0.1176471として読み取られます。

論理関数

ロジック関数は、2つ(またはそれ以上)の値が等しい(または等しくない)かどうかをテストします。

=

= (等しい)関数は、2つの数値(または文字列)が等しいかどうかを判断します。その場合、関数は1を返します。そうでない場合は、0を返します。

$(=,2,2)                           戻り値 1

$(=,2,3.4)                        戻り値 0

<

< (より小さい)関数は、ある数値が別の数値より小さいかどうかを判別します。その場合、関数は1を返します。そうでない場合は、0を返します。

$(<,2,2)                           戻り値 0

$(<、2、3.4)                        戻り値 1

>

> (より大きい)関数は、ある数値が別の数値より大きいかどうかを判別します。その場合、関数は1を返します。そうでない場合は、0を返します。

$(>,2,2)                           戻り値 0

$(>、2、3.4)                        戻り値 1

!=

!= (等しくない)関数は、ある数値が別の数値と等しくないかどうかを判別します。等しくない場合、関数は1を返します。等しい場合は0を返します。

$(!=,2,2)                          戻り値 0

$(!=,2,3.4)                        戻り値 1

<=

<= (より小さいまたは等しい)関数は、ある数値が別の数値より小さいか等しいかを判別します。その場合、関数は1を返します。そうでない場合は、0を返します。

$(<=,2,2)                          戻り値 1

$(<=、2,3.4)                        戻り値 1

$(<=、9,0.5)                        戻り値 0

> =

> = (より大きいまたは等しい)関数は、ある数値が別の数値より大きいか等しいかを判別します。その場合、関数は1を返します。そうでない場合は、0を返します。

$(> =,2,2)                          戻り値 1

$(> =、9,0.5)                        戻り値 1

$(> =、2,3.4)                        戻り値 0

そして

(論理ビットごとのAND)関数は、2つ以上の整数のビットごとの論理「AND」を返します。

この関数は、最大9つの整数で動作します。

EQ

eq (等価)関数は、2つの数値(または文字列)が等しいかどうかを判断します。同一の場合、関数は1を返します。それ以外の場合は0を返します。

$(eq,2,2)                          戻り値 1

$(eq、9,0.5)                        戻り値 0

値は 丁度 等しい;たとえば、次の例に示すように、実数は整数とは異なります。

$(eq、2.0,2)                        戻り値 0

通常、2つの数値をテストすることはありません。代わりに、変数に格納されている数値と値をテストします。たとえば、 LUnits 4(建築単位)に設定されます。

$(eq、$(getvar、lunits)、4)         戻り値 1 LUnits = 4の場合

戻り値 0 LUnits =その他の数値の場合

IF

もし 関数は、2つの式が同じかどうかを確認します。その場合、関数は最初のオプションを実行し、2番目のオプションを無視します。 falseの場合、2番目のオプションを実行します。一般的な言葉で:

$(もし、テスト、true、false)

どこ:

テスト — $(などの別の論理関数を指定しますeq、clayer、0); テスト 1(true)または0(false)の値が必要です。

本当 —テストが真の場合に実行するアクションを示します。

—テストがfalseの場合に実行するアクションを示します。

たとえば、次のテストでは、現在のレイヤーが0でないかどうかを確認します。0でない場合は、レイヤーの名前を取得します。ことに注意してください 本当 パラメータがありません。

$(if、$(eq、clayer、” 0”),, $(getvar、clayer))

または

または (論理OR)関数は、2つ以上の整数のビットごとの論理ORを返します。

XOR

XOR (論理ビットごとのXor)関数は、2つ以上の整数のビットごとの論理「XOR」(排他的OR)を返します。

変換機能

変換関数は数値の状態を変更します。

修正

直す 関数は、実数から小数部分を削除し、それらを整数に変換します。この関数は、実数から小数点の前の数を抽出するために使用できます。 (「丸め」機能はありません。)

$(修正、3.99)                        戻り値 3

文字列関数

文字列関数はテキスト(場合によっては数値)を操作します。

INDEX

インデックス 関数は、コンマ区切りのシリーズから1つの要素を抽出します。オートデスク® この関数を使用して、x、y、z座標を、 ($getvar 関数。

一般的に言えば、関数は次のようになります。

$(インデックス、アイテム、文字列)

どこ:

項目 - カウンター; 0から始まります。

ストリング —検索されるテキスト。カンマ区切りのアイテムが含まれています。

注意 その 項目 カウンターは1ではなく0で始まります。最初のアイテムは#0です。

$(index、0、” 2,4,6”)                戻り値 2

ストリング 引用符で囲まれたテキストでなければなりません。引用符を省くと、ディーゼルは機能を無視します。文字列は、コンマで区切られた1つ以上のアイテムで構成されます。

ここからy座標を抽出する例です LastPoint システム変数:

$(インデックス、1、$(getvar、lastpoint)) 戻り値 64.8721

(結果は、保存されている座標によって異なります LastPoint。)以下を使用します 項目 特定の座標を抽出する値:

  • 0 X
  • 1年
  • 2 Z

NTH

n番目 関数は 1つ以上のアイテムのth要素。この関数は最大8つの項目を処理します。お気に入り インデックス、リストの最初の項目は#0です。一般的に言えば、関数は次のようになります。

$(n番目、item、n1、n2、...)

どこ:

項目 - カウンター;範囲は0〜7です。

—コンマで区切られたアイテムのリスト。リスト内の最大8項目。

もし 項目 超える の場合、ディーゼルはこの機能を無視します。

以下は、数字とテキストで関数を使用する例です。

$(n番目、2、2.3、4.5、6.7)              戻り値 6.7

$(n番目、1、調整、BricsCAD、CAD) 戻り値 BricsCAD

STRLEN

strlen (文字列の長さ)関数は、文字列の文字数を返します。この関数は、次のような別の関数を適用する前に文字列の長さを見つけるのに役立ちます。 substr.

$(strlen、BricsCADの調整)     戻り値 18

文字列が引用符で囲まれている場合、ディーゼルはそれらを無視します。

$(strlen、「BricsCADの調整」) も返します 18

この関数は、数値とシステム変数でも機能します。

$(ストレン、3.14159)                 戻り値 7

$(strlen、$(getvar、platform))     戻り値 38

SUBSTR

substr (SubString)関数は文字列の一部を返します。これは、長い部分からテキストを抽出するのに役立ちます。一般的に、関数は次のようになります。

$(substr、文字列、開始、長さ)

どこ

ストリング —処理するテキストを指定します。

開始 —部分文字列の開始位置を示します。最初の文字は#1です。

長さ —部分文字列の長さを指定します。オプション。省略した場合、残りの文字列全体が返されます。

以下は、この関数の例です。

$(substr、BricsCADの調整、5) 戻り値 oring BricsCAD

$(substr、テーラリングBricsCAD、5、7) 戻り値 oring B

文字列が引用符で囲まれている場合、ディーゼルはそれらを無視します。

$(substr、” Tailoring BricsCAD”、5) も返します oring BricsCAD

この関数は、数値とシステム変数でも機能します。

$(substr、3.14159,1,4)            戻り値 3.14

$(substr、$(getvar、platform)、5,15) 戻り値 osoft Windows N

アッパー

アッパー (大文字)関数は、テキスト文字列を大文字に変換します。 (ディーゼルには「下位」機能はありません。)次のように、テキストおよびシステム変数で機能します。

$(アッパー、「BricsCADの調整」) 戻り値 BRICSCADの調整

$(上位、$(getvar、プラットフォーム)) 戻り値 MICROSOFT WINDOWS NT バージョン5.0

この関数は数値でも機能しますが、数値は変更されません。

システム機能

システム関数は、さまざまな関数の集まりです。

EDTIME

edtime (日付時刻の評価)関数は、システム時刻の表示をフォーマットします。この関数は、日付と時刻を 日付 システム変数を作成し、指示に従ってフォーマットします。一般的に、関数は次のようになります。

$(edtime、$(getvar、date)、format)ここで

フォーマット —以下の表に示すように、日付と時刻の表示方法を指定します。

いつ フォーマット Dieselが解釈できないテキストが含まれています。文字どおりに表示されます。この表は、2006年9月5日の日付フォーマットコードを示しています。

日付形式 意味
D 1桁の日付 5
DD 2桁の日付 05
DDD 3文字の日
DDDD 全手紙日 金曜日
M 1桁の月 9
MO 2桁の月 09
3文字の月 9月
完全な月 九月
YY 2桁の年 16
YYYY 4桁の年 2016

以下の表は、1:51:23.702AMの時間の時間フォーマットコードを示しています。

時間形式 意味
H 1桁の時間 1
HH 2桁の時間 01
んん 議事録 51
SS 23
MSEC ミリ秒 702
午前午後 大文字のAMまたはPM AM
午前午後 小文字のAMまたはPM 午前
A / P 省略された大文字 A
a / p 省略された小文字 a

ヒント フォーマットコードでカンマを使用するには、「、」でそれらを囲み、ディーゼルがカンマを引数のセパレータとして読み取らないようにします。

引用符のトリックは、「日付」や「月」などの単語では機能しません。ディーゼルは1日と7日を返します。

日付と時刻コードは大文字と小文字を区別しません。 Dとdは同じ働きをします。例外は、AM / PMおよびam / pmコードです。

AM / PMおよびA / Pフォーマットコードが使用されている場合、Dieselは12時間制を表示します。除外されると、ディーゼルは24時間時計を表示します。

AM / PMおよびA / Pフォーマットコードはスラッシュで入力する必要があります。たとえば、PMが入力された場合、ディーゼルはPを文字どおりに返し、Mを1桁の月コードとして読み取ります。

以下は、いくつかの使用例です EdTime 関数:

$(edtime、$(getvar、date)、H:MMam / pm)                戻り値 午前11時58分

$(edtime、$(getvar、date)、DDD”、” DD-MO-YY)         戻り値 01-07-05金

$(edtime、$(getvar、date)、DDD”、” d mon”、” YYYY) 戻り値 2015年7月1日

評価

評価 (評価)関数は、ステータスバーにテキストを表示します。

コマンド: モードマクロ

MODEMACROの新しい値、またはを入力します。なし<”” >: $(eval、” This is text”)

これは、 ModeMacro ディーゼルなしのコマンド:

コマンド: モードマクロ

MODEMACROの新しい値、またはを入力します。なし<”” >: これはテキストです

GETENV

getenv (環境の取得)関数は、環境変数に格納されている値を取得します。この関数はAutoCADで使用するために設計されました® LT、AutoCADにはない2つのコマンド®: SetEnv 環境変数に値を設定し、 GetEnv 値を読み取ります。これらの環境変数は、もともと名前が付けられたファイルに格納されていました aclt.iniですが、現在はWindowsレジストリに格納されています。

$(getenv、maxarray)                         戻り値 10000

BricsCAD V12以降、$(getenv)の動作はLISPおよびSDS / BRXの動作と一致するようになりました。BricsCAD環境レジストリで環境変数を検索します。 Windows、Linux、またはMacプロセス環境。 BricsCAD CFG設定で。読み取りシーケンスは次のとおりです。

  1. BricsCAD Windowsレジストリ
  2. Linux、Mac、またはWindowsプロセス環境
  3. BricsCAD構成

書き込みシーケンスは、(a)BricsCAD構成(キーが存在する場合)と(b)BricsCAD Windowsレジストリです。

GETVAR

getvar (変数の取得)関数は、システム変数の値を取得します。

$(getvar、lunits)                  戻り値 4

リネン linelen(ラインの長さ) 関数は表示の最大長を返します。

$(リネン)                        戻り値 240

ディーゼルプログラミングのヒント

ディーゼルを使用するためのいくつかのヒントを次に示します。

  • 各引数はコンマで区切る必要があります。式内にスペースがあってはなりません。
  • Dieselマクロの最大長は240文字です。ステータスバーの最大表示は32文字です。
  • ModeMacro システム変数は、テキストがステータスバーに直接到達するまで、ステータスバーに直接出力します。 $(、それからマクロの評価を開始します。
  • 使用 MacroTrace マクロをデバッグするシステム変数。
  • LISPを使用する (strcat) LISP内のディーゼルマクロをつなぎ合わせる関数。
  • 使用 $M = メニューおよびツールバーマクロでディーゼル式を使用するための構成。

ディーゼルのデバッグ

の目的 MacroTrace システム変数は、ディーゼルマクロのバグを追跡するのに役立ちます。オンの場合、ディーゼルマクロの段階的な評価がテキストウィンドウに表示されます。 MacroTraceはBricsCADに存在しますが、まだ実装されていません。

代わりに、BricsCADは、メニューでもコマンドラインでも、エラーを直接表示します。以下では、存在しないant sysvar「ナンセンス」を使用してディーゼルコードを入力しました。

ディーゼルコードレッスン
ディーゼルから報告されたエラー

 ModeMacro:ステータスバーにテキストを表示する

ModeMacroコマンドの目的は、ステータスバーにテキストを表示することです。

BricsCADがこの関数を取得した場合、それを使用する方法を次に示します。まず、ステータスバーにテキストを表示する方法を見てみましょう。

  1. 入力します ModeMacro 'Command:'プロンプトでシステム変数を入力し、次のように入力します。
    コマンド: モードマクロ
    MODEMACROの新しい値、または。なし<”” >:
    BricsCADのカスタマイズ
    「Customizing BricsCAD」という言葉がステータスバーの左端に表示されます。

    BricsCADのディーゼルコード変更メッセージ
    ディーゼルを使用してステータスバーにテキストを表示する

    (ステータスバー上のテキストの位置を変更することはできません。)

  2. ステータスバーからテキストを削除するには、 ModeMacro システム変数.  (null string)、次のように:
    コマンド: モードマクロ
    MODEMACROの新しい値、または。なし<"Customizing BricsCAD" >: .

 

ステータスバーからのユーザー定義テキストの削除

BricsCAD体験版を
ダウンロード

今すぐBricsCADを使ってみましょう

多言語、広範囲で使える永久ライセンスとサブスクリプションです。


  1. 前書き
  2. BricsCADユーザーのための55のヒント
  3. 設定
  4. 環境を変える
  5. カスタムユーザーインターフェース
  6. [カスタマイズ]ダイアログボックスの概要
  7. メニューバーとコンテキストメニューをカスタマイズする
  8. ツールバーとボタンアイコン
  9. マクロとディーゼルコードの記述
  10. リボンのタブとパネル
  11. キーストロークのショートカット、エイリアス、シェルコマンド
  12. マウス、ダブルクリック、タブレットボタン
  13. クワッドについて知っておくべきすべてのこと
  14. ロールオーバープロパティ
  15. ワークスペースとユーザーインターフェイス
  16. 設計ツールと構造パネル
  17. シンプルで複雑な線種の作成
  18. ハッチングのパターン化
  19. 形状とフォントのデコード
  20. フィールドテキストでのコーディング
  21. スクリプトを書く
  22. LISPによるプログラミング(はじめに)
  23. LISP関数