Brics CAD V16で自動雲マーク作成をLISPで実装する

Brics CAD V16で自動雲マーク作成をLISPで実装する

どうも!ブラコです!

最近AutoCADからBricsCADへ乗り換えている企業も多いかと思います!
互換性も高くて値段も安いときては乗り換えないわけにはいきません。
弊社も昔から使っています。

ただ私は1年半くらいのみ使って、業務としてBricsCADは使わなくなりましたが、半年ほどで誰よりも機能を理解してしまったため、機能拡張やアップデートは私がやっています。
私が転職したらどうするのか心配するばかりです。

さて、本日は(実はこのHP立ち上げて最初の投稿です笑)
BricsCADで雲マークを書きたい人のためにある便利な機能を紹介したいと思います!

そもそもBricsCADでは、ECADみたいに標準でレビジョンマーク作成が備わっていません!
あー、図面変更出てお客さんにださないといけないのに、雲マーク作るのに面倒な時間をくってしまう~。

そのため毎回手作りする必要があるかと思います。
それは非常に面倒だと思ったので、私は楽がしたいがためにあるものを使いました。

それはLISPです!

LISPとは

Wikipedia様より一部抜粋すると

LISP(リスプ)は、プログラミング言語である。前置記法などが特徴である。

1958年にはじめて設計されたLISPは、現在広範囲に使用されている高水準プログラミング言語の中でもFORTRANに次いで2番目に古い[1]。ただし、FORTRANと同様に、現在のLISPは初期のものから非常に大きく変化している。

とあります。
うむ、なんとなく古い歴史のあるものであることがわかりますね!

BricsCADはこの古い歴史のある言語をサポートしています!

BricsCADでLISPを使用するための記事は別で立ち上げるので、まずは雲マーク作成について記載します。

まずはコード

(defun c:REV1()


	(setq mgaso (getvar "clayer"))     ;現在の画層名を取得
	(setq zuwakuscale (getvar "dimscale"));現在の図枠サイズを取得
	
	(setq sankakusaizu (* 2 zuwakuscale));sankakusaizuという変数にzuwakuscaleの2倍値を格納
	
	(command "_-layer" "M" "REV1" "C" "242" "REV1" "p" "no" "REV1" ""    ;REV1という画層を作成し、カラーは242番(赤)、非印刷設定
	command "_rectang"  ""pause pause    ; 四角形の配置
	 "_revcloud" "e" "L" "y"             ; 雲マーク化 
)

	(setq nowosmode (getvar "osmode"));現在の図形スナップ値取得
	(setvar "osmode" 0);図形スナップを0にする

	(setq p (getpoint "ポイントを指示")) ;クリック位置の座標取得
	(COMMAND "polygon"  "3" P  sankakusaizu	;クリック位置を焦点に三角形を配置
	"TEXT" "M" P  sankakusaizu "0" "1"  ;1 という文字を挿入
	
	
)
	 
(setvar "clayer" mgaso)            ; コマンド実行前の現在画層に戻す							
(setvar "osmode" nowosmode)        ; コマンド実行前の図形スナップに戻す
)

うーむ、最初見る人は意味わからないと思います。
これから詳細について解説していきます。

コード解説

1行目でプログラム宣言
4行目は、雲マークコマンド終了後の画層を元に戻すために現在値を取得しておきます。
5、7行目は、三角形を描写する際のサイズを、”zuwakuscale”から取得することによって、あらゆる図枠サイズに対応できるようにしています。

9行目で、画層を作ります。
この “-layer”コマンドは画層がすでにあれば新規作成し、すでに画層があれば上書きする便利なコマンドです。ここで赤色を指定し、非印刷設定にしています。
非印刷にする理由は、これは弊社では必ずしもクライアントに図面を提出する際に雲マークを載せる必要があるわけではないためであるからです。

10行目、11行目で四角形を配置し、それを雲マーク化します。
pause というのは、ユーザーの操作を待つ意味であり、この場合はユーザーが任意の四角形を配置するのを待ちます。間違って違う操作をするとプログラムが進んでしまってバグりますので注意してください。
“_revcloud” “e” “L” “y”  のLは最後に触った図形を選択する効果を持ちます。
LISPではよく使うので覚えてください。

14行目で現在の図形スナップ値を取得し、15行目で三角形を置くために図形スナップを無効化します。
図形スナップの無効化は個人の趣味ですので不要であれば、コメントアウトして大丈夫です。
ただ、三角形を配置する際に図形スナップに引っ張られると、後述のクリック位置と実際の配置位置がずれて、文字が三角形の中に入らなくなるのでオススメしません。

17行目で、三角形を置く位置をクリックします。

18行目で三角形を配置します。
19行目で1という文字を記載します。

24行目、25行目で画層と図形スナップを元に戻し、コマンドは終了します。

レビジョンを2以降も作りたい方

9行目の REV1を任意な数字
19行目の”1″を任意な数字に変えればよいです。

私はレビジョン4以上は任意に変更できるLISPコマンドを作成したので、どこかのタイミングで公開できればと思います。

そもそもどうやって使うんや??

これもまた記事別の記事で紹介します!

今日はこんなところで
Chao!

CADカテゴリの最新記事