ホームページ > 記事 > コンピューターのチュートリアル > CAD Autolisp の二次開発はどのように行うのですか?
;;;ランプ T4
(デフォルト C:T4206()
ユーザーは、T4206 実行コマンド (パラメーターなし) を入力して、後続のプログラムをロードし、すぐに実行します。
(グラフスクラ)
(setvar "cmdecho" 0)
;;;コマンドライン表示オフ
(setq P1(getpoint "\nランプの配置位置を指定してください(T4 206.5mm 6W):"))
;;;挿入ポイント P1 を設定し、ポイント
を返します。(コマンド "-INSERT" "D:/YZ_ZCAD/TK/DGT/T4206.dwg" "S" "1" P1 "0")
CAD 標準コマンドを実行する場合、コマンドの前に「-」(CAD コマンドを参照)を追加すると、ダイアログ ボックスを使用せずにコマンド ラインで直接コマンドを実行できます。
プログラム実行時はダイアログボックスでの操作はできませんので、コマンドの前に「-」記号を付けるか、変数FILEDIAで制御することができます。他の方法で制御できる特殊なケースもいくつかあります。
(setvar "cmdecho" 1)
;;;コマンドライン表示が開きます
(王子)
###;;;結論###)
;;;上記のテキストを LISP に入力し、任意の英語名で保存します
ファイルを保存した後、AP を使用してファイルを CAD にロードできます。
;;; T4206コマンドを実行して挿入コマンドを実行します(ファイルの存在を確認します)
個人的な意見ですが、LISP よりも VBA 開発の方が便利だと思います。 LISP を学ぶには、基本的な知識を習得するだけでよく、深く勉強する必要はありません。 LISP ダイアログ ボックス開発 (DCL) は、VBA よりもはるかに複雑です。ただし、場合によっては、VBA 関数を実行するために LISP 関数を使用する必要があります。 AutoCAD のヘルプ ドキュメントには、開発者向けに特別に提供されたヘルプがあり、多くの詳細な内容が含まれています。多くの編集者も、これらのドキュメントのリソースを直接使用しています。役立つかもしれないので、見てみることをお勧めします。
CAD二次開発修正LISP
(vl-load-com)
(setq oce1 (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq ms (vla-get-modelspace
(vla-get-activedocument (vlax-get-acad-object)) このコード行は、AutoCAD で現在アクティブなドキュメントのオブジェクトを取得するために使用されます。 AutoCAD の VLAX (Visual LISP ActiveX) インタフェースを使用し、関数 vlax-get-acad-object を通じて AutoCAD アプリケーション オブジェクトを取得し、次に vla-get-activedocument メソッドを使用して現在アクティブなドキュメントのオブジェクトを取得します。このようにして、現在のドキュメントに対して、プロパティへのアクセス、オブジェクトの変更などのさまざまな操作を実行できます。このコード行は AutoCAD の LISP プログラミングで非常に一般的であり、ドキュメント オブジェクトを操作する場合に非常に役立ちます。
))
(qz
の場合
()(setq qz """)
)
(hz
の場合
()(setq hz """)
)
(initget "c")
(setq nqz (getstring (strcat "\nプレフィックス
/c (空): " )))
(条件
((= nqz "") (setq qz ""))(T (if (/= nqz "")(setq qz nqz)))
)
(setq hz """)
(if (not (setq n1 (getint "\n開始シーケンス番号
: ")))
(setq n1 1)
)(setq zn 1)
(if (not (setq h1 (getreal "\nテキストの高さを指定してください
: ")))
(setq h1 2.5)
)(setq sxh1 (strcat qz (itoa n1) hz)) は、一般的な LISP 式です。この式では、qz、n1、および hz は変数であり、それらの値を連結することによって新しい文字列 sxh1 が作成されます。 この表現が何を意味するのかを詳しく説明します。 ・ qzはprefixを表す変数で、「prefix」などの文字列が格納されます。 - n1 は、10
などの数値を格納する整変数です。
(setq p1 (getpoint "\n挿入ポイントを指定してください: "))(while (/= p1 nil)
(setq p1 (vlax-3d-point p1))
(setq txt (vla-addtext
###MS###
sxh1p1
h1
)
)
(セットq
n1 (n1 zn)
sxh1 (strcat qz (itoa n1) hz)
p1 (getpoint "\n次の挿入ポイントを指定してください: ")
)
)
(setvar "cmdecho" oce1)
(vlax-release-object ミリ秒)
(王子)
)
CAD二次開発LISPマスターがプログラムを書く
は次のように変更できます:
(defun c:sdd (dwg)
(if (wcmatch dwg "*
#-##-
#:##.dwg")(setq dwg (substr dwg 1 (vl-string-search " " dwg)))
文字列変数 `dwg` を指定すると、`(setq dwg (substr dwg 1 (- (strlen dwg) 4)))) ` を使用して処理できます。このコード行の機能は、`dwg` 文字列の最後の 4 文字を切り捨て、その結果を `dwg` 変数に再代入することです。これは、ファイル名またはその他の識別子からファイル拡張子を取り除くために行われる場合があります。このコード行を通じて、特定の要件や形式を満たすように「dwg」文字列を変更できます。
)
(setq dwg (strcat dwg " " (menucmd "M=$(edtime,$(getvar,date),YYYY-MO-DD HH:MM)") ".dwg"))
(コマンド "_.saveas" ""” dwg)
(王子)
)
以上がCAD Autolisp の二次開発はどのように行うのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。