【AutoCAD徹底研究】AutoLISPなどによる設計作業効率化・自動化

AutoCADの日々の設計作業をもっとスマートに、もっと効率的に。AutoLISPを使用して日々の業務の効率化を考えていきましょう。

このブログについて・サイトマップ(記事一覧)

AutoCADを使った設計業務の中には、クライアントから与えられる納期がシビアな仕事も少なくありません。

会社勤めの設計士の方は徹夜や残業続きの方もいらっしゃるのではないでしょうか。

このブログでは、プログラミング言語のAutoLISPなどを使って、AutoCAD作業を効率化・自動化する方法を紹介していきます。

AutoCADの機能をフル活用して、日々の業務に余裕を持たせましょう!

 

サイトマップ(記事一覧)

Openをクリックするとカテゴリー下の記事を表示します。

 

【ココナラにてAutoLISP修正・作成サービスを行っています。】

AutoLISP作成に行き詰った・効率化したい作業はあるけれどもどうしたらいいかわからない方などはお気軽にご利用ください。

 

当ブログのプライバシーポリシー

▼広告の配信について

当サイトはGoogle及びGoogleのパートナー(第三者配信事業者)の提供する広告を設置しております。その広告配信にはCookieを使用し、当サイトやその他のサイトへの過去のアクセス情報に基づいて広告を配信します。

Google が広告 Cookie を使用することにより、当サイトや他のサイトにアクセスした際の情報に基づいて、Google やそのパートナーが適切な広告を表示しています。

お客様はGoogleアカウントの広告設定ページ(https://adssettings.google.com/u/0/authenticated)で、パーソナライズ広告を無効にできます。また aboutads.info のページにアクセスして頂き、パーソナライズ広告掲載に使用される第三者配信事業者のCookieを無効にできます。

その他、Googleの広告におけるCookieの取り扱い詳細については、Googleのポリシーと規約ページ(https://policies.google.com/technologies/ads)をご覧ください。

 

変数について・関数【setq】


AutoLISPコードを書く上で変数の取り扱いを理解することは必須です。この記事では変数とはどういうものか、変数の値をどのように操作できるかを見ていきます。

目次

変数とは

プログラミングにおける変数とは、データを格納するメモリ上の位置に名前をつけたものです。

AutoLISPにおいても変数は文字列や数値、座標やオブジェクト名など様々なデータを格納できます。

ユーザー入力した値やオブジェクトを取扱うために変数に格納したり、変数データを操作して条件分岐式と組み合わせたりと、使用する頻度はとても多いです。

 

関数【setq】について

setqは変数に値を割り当てるための関数です。

(setq 変数名 値)

変数を扱う上で一番基本的な形です。オリジナルの変数名を入力し、そこに数値や文字列などの値を代入します。

コード内で初めてこの変数を使用する場合も、2回目以降変数に値を代入する場合も同じようにこの形で記入します。変数に値を代入する際に、すでに値が入っている場合は、自動的に初期化して上書きされます。


(setq hensu 10)

この例では変数「hensu」に整数「10」を代入しています。

・複数の変数の割り当て

setq関数は複数の変数と値のペアを同時に扱うこともできます。


(setq hensu1 10 hensu2 100 hensu3 1000)

この例では「hensu1」に整数「10」を代入し「hensu2」に整数「100」を代入し、「hensu3」に整数「1000」を代入しています。このようにsetq関数は複数の変数を同時に操作できます。

 

変数の使い方

・変数の宣言

変数の宣言とは、プログラム内で変数を使用する際にその変数の名前を定義するプロセスをいいます。変数の宣言によりプログラムがその変数の存在と構造を認識し、メモリ内で適切な領域を確保することができます。

AutoLISPでは、基本的に変数を宣言するプロセスを単独で行う必要はありません。

setq関数では変数に値を割り当てることができ、その際に変数の宣言と初期化が同時に行われます。

・defunの引数としての変数の宣言

ただし、defun・defun Cの引数として変数の宣言を行うことができます。

例
(defun kansu (hensu1 hensu2))

(関数呼び出し時)
(kansu 10 100)

この例では「kansu」という名前で独自の関数を定義しており、引数として「hensu1」と「hensu2」を指定しています。

(kansu 10 100)の形でkansuの関数を呼び出して引数として10と100を記入することで、hensu1に「10」、hensu2に「100」の整数が割り当てられます。

・変数の名前のつけ方

変数の名前をつける上での注意点を以下に記載します。

1.アルファベットと数字を使用する

変数名はアルファベットの文字(大文字・小文字)と数字を組み合わせて作成することができます。

ただし、変数名の最初の文字はアルファベットに限られ、数字から始まる変数名は使用することができません。

2.使用できる記号は一部

一部の特殊文字や記号は変数名に使用できません。例えば「-」(ハイフン)は使用できず、「_」(アンダーバー)は使用できるためこちらを使用してください。

3.変数名のわかりやすさを意識する

変数名はどのような用途で使用する変数か、わかりやすいような名前にしてください。特に長いコード内で、この部分が何について書いているのかわかりやすくなります。

また、名前のつけ方に規則性をもたせることでもコードが読みやすくなります。

・変数の値の種類

変数に格納される値の種類と記述方法は、大まかには以下の3種類です。

1.数値変数

「10」や「20.1」のように整数や実数の数値を格納することができます。

例
(setq hensu1 10
hensu2 20.1)

「hensu1」に整数「10」を割り当て「hensu2」に実数「20.1」を割り当てています。

2.文字列変数

"文字列"や"文章も格納できます"などの文字列を格納することができます。文字列として変数を格納するためには「""」(ダブルクォーテーション)で文字列を囲います。

例
(setq hensu1 "文字列"
hensu2 "文章も格納できます"
hensu3 "10")

「hensu1」に文字列の"文字列"を割り当て「hensu2」に文字列の"文章も格納できます"を割り当て、「hensu3」に文字列の"10"を割り当てています。

「hensu3」に格納した"10"は数値ですが「""」で囲んでいるため文字列として格納されています。数値データとしての意味はなくなってしまっているため、この"10"を利用して計算などを行うことはできません。

3.リスト変数

変数は複数の値をリストとして格納できます。リスト関数を作成するにはlist関数を用いるか「'」(アポストロフィ)を用います。

例
(setq 
list1 (list 1 2 3 "文字列"))
(setq
list1 '(1 2 3 "文字列"))

例の2文は同じリスト変数「list1」を作成しています。「1」「2」「3」は数値として、"文字列"は文字列として「1 2 3 "文字列"」のリストを作成しています。このように数値と文字列を混合してリストにすることもできます。

グローバル変数とローカル変数

グローバル変数とは、プログラムのどこからでもアクセスできる変数です。異なる関数からでもグローバル変数にアクセスできるため、異なる関数間でデータを共有する際に便利です。

変数をグローバル変数とするための特別な宣言はありません。setq関数などで変数に値を割り当てた時点で、その変数はグローバル変数となります。

グローバル変数の値は図面ファイルを閉じた時点でリセットされます。

グローバル変数は想定していない他の関数に影響を与える可能性があります。最小限にしておきましょう。

グローバル変数に対し、ローカル変数は特定の関数内でしかアクセスできない変数です。その関数の処理が終了した時点で初期化されます。

ローカル変数を使用することは、変数の影響範囲を想定し易い(その関数以外への影響を考慮する必要がない)・変数データを格納するメモリを節約できるなどの利点があります。

・ローカル変数の定義の仕方

ローカル変数は次のように定義します。

(defun C コマンド名 (/ 変数名1 変数名2 変数名3...))

defun・defun C関数を用いて、引数を入力する欄に「/ 」(スラッシュ・スペース)からはじめてローカル変数に定義したい変数名を入力していきます。

例
(defun C com (/ hensu1 hensu2 hensu3)
(setq hensu1 10
hensu2 100
hensu3 1000)

以上のように記載することで、「hensu1」「hensu2」「hensu3」はローカル変数として定義され、このコマンドの処理が終了した時点で初期化されるため他の関数・コマンドからこの変数の値にアクセスすることはできません。

他の関数・コマンドからアクセスしたい特別な事情を除いて、出てきた変数を一括してローカル変数として宣言しておきましょう!

まとめ

変数とはデータを格納するメモリ上の位置に名前をつけたもの

(setq 変数名 値)を基本の形として変数の宣言・値の割り当てを行う

・特別な事情がない限りローカル変数の宣言を行っておく

AutoLISPコードの書き方・関数【defun】

この記事ではAutoLISPをマスターする第一歩として基本的な書き方を学んでいきましょう。

目次

基本的な書き方

(defun C:hello ()
  (alert "Hello World") ;「Hello World」とダイアログボックスで表示
  (princ)
)

AutoLISPの作成と読み込みの記事で、ダイアログボックスに「Hello World」と表示するコマンドを作成しました。説明の便宜上少し改変しています。

・関数とは

関数とは、プログラミングにおいて、特定の処理を行い結果を返すコードのまとまりです。AutoLISPにおいても様々な関数が用意されており、これらを使用することで自分の実行したい処理を行うプログラムを作成します。

上の例では"defun C"や"alert"、"princ"が関数に当たります。"hello"はユーザーが名前をつけるコマンド名です。これは下記の「defunについて」のトピックで説明します。

AutoLISPの基本的な構文は (関数 引数) の形になります。コードを囲む ( ) は1セットになりますので、対応する閉じカッコが書かれていないと読み込んだ時点でエラーになってしまいます。

特にコードが複雑になってきたときには ( ) の閉じカッコを忘れないように注意しましょう!

引数とは、関数に渡される値や変数で、関数の動作を制御するために使用されます。AutoLISPの関数では、引数は数値、文字列、リストなど、さまざまなデータ型を取ることができます。引数は、関数が特定のタスクを実行する際に必要な情報を提供します。

・コメントの追加

AutoLISPではセミコロン(;)を使ってコメント・注釈を追加できます。

(alert "Hello World") ;「Hello World」とダイアログボックスで表示 というように注釈を記載します。 セミコロン以降のテキストは全てがコメントとして扱われ、コードに影響しません。

コードが長くなったときに該当部分が何について記載しているか一目でわかるように、こまめにコメントをつけておきましょう。

・文末の(princ)

princはコマンドラインに文字列や値を表示する関数です。この関数を使って、文字列や変数の値をユーザーに対して表示することができます。

引数なしで (princ) を使用すると、何も表示されずにプログラムが静かに終了します。しばしばこの (princ) をコードの文末に記載しますが、これはプログラムが終了したときにコマンドライン上に表示される不要な情報を抑制するためです。

 

関数【defun】について

(defun C:コマンド名 (引数1 引数2 ...)
)

defunは関数を定義するための関数です。この関数の変形であるdefun Cを使用して自作のコマンドを作成します。上記の形式でdefun Cを用いると、AutoCADコマンドラインにコマンド名を入力することでコマンドとして実行できます。

頻繁にコマンドラインから呼び出す場合は、入力しやすいように3文字以内でコマンド名を入力しておくのがオススメです。

・defunとdefun Cの違い

defun CはAutoCADのコマンドを定義するための関数です。defunの形で関数を定義してもコマンドラインから実行することができないため、AutoCADで実行するためのコマンドとして作成したいときはdefun Cの形でコマンド名を定義します。

自作コマンドを作る上で最も基本の形です!

・defunの引数リストについて

defunやdefun Cの後の関数名(コマンド名)の次に(引数1 引数2 ...)というように引数を記載する必要があります。引数を記載しない場合にも、空のカッコ () は記載しなければなりません。

この引数には通常変数名を記載します。引数に変数を記載することで、関数の中でその変数に格納された値にアクセスでき、コードの再利用性と柔軟性を高めることができます。

つまり、コードの中の、値だけを処理によって変更したい部分を変数として抽象化・代用可能にすることで何度もコードを書かずに似たような処理を実現することができます。変数については、変数についての記事で説明します。

 

まとめ

関数とは特定の処理を行い結果を示すコードのまとまりである

セミコロン(;)を使ってコード内にコメントを記入する

AutoCADの自作コマンドを作成する場合にはdefun  C関数を使用する

AutoLISPでAutoCAD設計作業効率化します!

AutoLISP作成・修正サービスを行っています。以下のような方に特におすすめです。

AutoCADで効率化したい作業があるけれどどのようなコードを書けばいいかわからない。

・このブログにてAutoLISPを学習しているけれどつまずいてしまった。コードがうまく作成できない。

・漠然と仕事の効率をあげたいと思っているのでアイデアを一緒に考えてほしい。

 

このようなお悩みをお持ちの方も、それ以外のご相談もお気軽に!

 

サービスの特徴

CHECK

✔ コードの作成:作業の効率化を助けるコマンド・ツールを作成・修正します。

✔ 修正・カスタマイズ:イメージを聞き細かいカスタマイズを行います。

✔ 業務効率化サポート:効率化したい作業が具体的に決まっていなくても大丈夫!仕事内容を伺って一緒に考えさせて頂きます。

 

利用方法

サービス提供サイトの「ココナラ」にてサービスをさせて頂いています。「ココナラ」とは、「得意を売り買いスキルマーケット」をコンセプトに、個人のスキルを気軽に売り買いできるスキルマーケットです。私も「AutoLISPで設計業務効率化」と題して登録しています。下記の手順でご利用ください。

 

「ココナラ」の登録方法

1.「ココナラ」サイトにアクセスしてください。

2.トップページ右上の「会員登録」ボタンをクリックします。

3.必要な情報(メールアドレス、パスワード、名前など)を入力し、利用規約に同意します。

4.登録したメールアドレスに認証メールが送信されるので、メール内のリンクをクリックして認証を完了させます。

5.必要に応じてプロフィール情報を追加・編集しましょう。

6.私のサービスを利用頂けるなら、AutoLISPで設計業務効率化で検索しお気軽にお見積依頼ください。※検索に現れない場合は、「初心者向け」のソートを「オススメ順」などに変更してください。

 

AutoLISPとは:CADユーザーは必ず学ぶべき!

このブログではAutoCADを効率化する方法としてAutoLISPの学習をおすすめしています。AutoLISPを学ぶメリットについて詳しくみていきましょう。

目次

 

AutoLISPとは何か?

AutoLISPは、AutoCADに搭載されているインタープリタ型のプログラミング言語です。この種の言語はソースコードを1行ずつ読み込み、その場で実行する特性を持っています。

AutoLISPを利用することで、独自のコマンドを作成したり、システムの設定を変更したり、さまざまな対話型ダイアログボックスを生成したりすることが可能になります。

これらの機能は、AutoCADでの作業を自動化し、効率化するために用いられます。

AutoLISPはAutoCAD専用のプログラミング言語で、無償で利用することができます。

 

AutoLISPを学ぶメリット

AutoLISPを学ぶことで、AutoCADの操作を自動化し、作業効率を大幅に向上させることが可能になります。

例えば、図面の描画、パーツの挿入、図面情報の整理などの一連の作業を一つのコマンドとして登録しておけば、それらの作業を一度に実行することができます。

これにより、手作業で行うよりも高速かつ正確に、作業効率があがります。

また、AutoLISPは、ユーザーが自分自身でプログラムを作成し、自分だけのカスタマイズしたコマンドを作ることができます。AutoLISPで自分の作業スタイルに最適化された環境を作りましょう。

 

設計業界とAutoLISP

私は8年間建設コンサルタントに所属していました。上司・同僚は皆AutoCADや互換CADを使用していましたが、AutoLISPを使用してCADをカスタマイズしている人は少なかったです。

これは設計業界の一部で高齢化が進んでおり、コンピューターに詳しくない人が多いことも一因かと思われます。

しかし、こうした状況はAutoLISPの知識を身につけるチャンスでもあります。AutoLISPを理解していると、同僚や競争相手に差をつけることができ、これがあなたのキャリアに大きな利点となるでしょう。

CADを日常的に使用している方々には、ぜひAutoLISPの学習をお勧めします。

 

まとめ

AutoLISPとはAutoCADに搭載されているプログラミング言語のこと

・AutoLISPで独自のカスタマイズコマンドを作成可能

AutoCADを使っているならAutoLISPを学ぶことは作業効率UPに有益

 

AutoLISPの作成と読み込み

 


スーツ男性

AutoLISPのコードを作成し実行してみましょう。 この記事では、AutoLISPの基本的な作成方法と、そのLISPAutoCADに読み込む手順について解説します。

目次

AutoLISPの作成

・Visual LISPエディタの起動

AutoCADを開き、コマンドプロンプトに「VLIDE」と入力し、Enterキーを押します。これによりVisual LISPエディタが開きます。

AutoCADではVisual LISPというAutoLISP作成用のエディターが備わっています。メモ帳などで作成することも出来ますが、基本的にこのツールを使用して作成するのが良いでしょう。

Visual LISPではエラーチェックなどを行うことができるため便利です。

・新しいLISPファイルの作成

「ファイル(F)」メニューから「ファイルを新規作成(N)」を選択して、新しいLISPファイルを作成します。

・コードの記述
(defun c:hello ()
  (alert "Hello World")
  (princ)
)

ダイアログボックスで「Hello World」と表示するコマンドを記述しました。

defun c:hello ()の「hello」の部分はAutoCADからこのコマンドを呼び出す際のコマンド名です。

頻繁に使用する場合は3文字以下の入力し易いコマンド名とするのがオススメです。

その他のLISPコードの記述の仕方は別記事にて解説します。

・保存

「ファイル(F)」メニューから「名前を付けて保存(A)」を選択し、ファイル名と保存場所を指定してLISPファイルを保存します。LISPファイルは「ファイル名.lsp」の形式で保存されます。

他エディタで作成する場合も拡張子に「.lsp」で保存することでLISPファイルとして読み込むことができます。

 

AutoLISPの読み込み

AutoCADに戻る

Visual LISPエディタを閉じるか、AutoCADのウィンドウに切り替えます。

LISPの読み込み

AutoCADコマンドラインに「APPLOAD」と入力し、Enterキーを押します。次に表示されるダイアログボックスで先ほど保存したLISPファイルを選択して「ロード(L)」ボタンをクリックします。

LISPファイルの保存場所によってはこのようなダイアログが表示されます。

「一回ロードする」をクリックすると、AutoCADウィンドウを閉じるまでの間ファイルのロードが有効になります。

「常にロードする」をクリックすると、これ以降APPLOADコマンドを実行せずとも常にファイルをロードしている状態になります。

LISPの実行

コマンドラインに新しく作成したコマンド名(この例では "hello")を入力し、Enterキーを押すことで、LISPが実行されます。

画面上にダイアログボックスで「Hello World」が表示されました。これでLISPの実行は成功です。

 

まとめ

・AutoLISPの作成にはAutoCADにそなわっているVisual LISP を使用する

LISPファイルの拡張子は「.lsp」

APPLOAD コマンドで作成したLISPファイルをロードする