問題タブ [autolisp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
programming-languages - Autolisp / visual lispの背後にある設計上の決定を誰かが私に説明できますか?
autolisp / visual lispの次の機能の背後にある設計の理論的根拠を誰かが説明できるでしょうか?私には、彼らは受け入れられたソフトウェアの練習に直面して飛んでいるように見えます...私は何かが欠けていますか?
- すべての変数はデフォルトでグローバルです(つまり
/
、関数の引数のaの後に配置されていない限り) - AutoCADからデータを読み書きするには、多くのマジックナンバーを含む関連付けリストにデータを入れる必要があります。
10
はx/y座標、90
は座標リストの長さ、63
は色などを意味します。これらをいくつかの定数に格納できますが、それはさらに多くのグローバルを意味します。ドキュメントでは、マジックナンバーを直接使用することを推奨しています。 - Lispは機能的なスタイルの言語であり、反復による再帰によるプログラミングを促進しますが、末尾再帰は視覚的なLispで最適化されておらず、恐ろしい呼び出しスタックにつながります。もちろん、反復しない限り。ただし、ループ構文は非常に制限されています。たとえば、終了条件に何らかのフラグを設定しない限り、ループから抜けたり、ループから値を返したりすることはできません。結果、醜いコード。
- 一般に、関数型プログラミングに直面するあらゆる場所で変数を宣言する必要があります。それでは、なぜ関数型(-ish)言語を使用するのでしょうか。
dialog - DCL を AutoLisp に適切にリンクするには?
非常に基本的な AutoLisp インターフェイスを作成しようとしています。私はまったくの初心者なので、ゼロからのコーディングに失敗した後、DCL をきちんと勉強するようになりました。私はこのチュートリアルに従いました:
http://www.afralisp.net/dialog-control-language/tutorials/dialog-boxes-and-autolisp-part-1.php
そして、同じエラーが発生しました。AutoCAD は基本的に、あたかも dcl ファイルが存在しないかのように、関数の実行を終了します。
アドレスを丸ごと打ち込んでみましたが、同じフォルダ内の画像にHTMLをリンクするような感じで動作するはずです。
以下に私のコードがあります:
DCL:
舌足らずの発音:
これを手伝ってくれる人に感謝します。私はかなり絶望的になり始めており、これは私の最初で唯一の autolisp プロジェクトなので、まったく経験がありません...
LE: dcl ファイルと lisp ファイルは両方とも同じフォルダーにあり、他のサブフォルダーやその他のものではないことに注意してください。
autocad - エスケープされていない文字列の処理
AutoCAD 図面を開くための代替機能を作成しました。ただし、AutoCAD では、Windows エクスプローラーから実行したときにドキュメントを開く方法を変更するのが非常に困難でした (ファイルを関連付けてファイルをダブルクリックします)。私が見つけた唯一の方法は、「OpenDdeExec」であるレジストリ キーを変更することです。開くファイルへのエスケープされていないパスを与える引数 (%1) が提供されています。
特殊文字として解析される前に、パスのエスケープを無視するか、バックスラッシュを二重のバックスラッシュに置き換える必要があります。C# では、次のようなことができstring s = @"I\Like random\backslashes";
、バックスラッシュは実際のバックスラッシュ文字と見なされます。Lispでは、私が見つけた唯一の同等性quote
は、奇妙な動作をしていることです(通常の使用は、私が達成しようとしているものとはまったく異なるためです)。
のようなものを書くと(quote (I\Like random\backslashes))
、結果は(I\\Like random\\backslashes)
私が必要としているものがほとんどです。ただし、括弧を取り除く必要があります。これを達成する方法はありますか?
注:これを行う(quote I\Like random\backslashes)
と、スペースが原因で壊れます。ただし、 で動作し(quote I\Like\backslashes)
ます。これはI\\Like\\backslashes
、私が望むように出力されます。
これは、説明されている問題のある現在の OpenDdeExec です。
autocad - entnext コマンドが nil を返すのはなぜですか?
私は AutoLISP と AutoCAD の初心者です。
幅を変更できるように、ポリラインの頂点を取得したい。
ここに私が書いたコードがあります。なぜうまくいかないのか知りたいです。「entnext」部分が問題の原因のようです。"!" でテストすると nil 値が返されます。
これを解決するための助けや手がかりをいただければ幸いです。
vba - AutoCAD 3D モデルの生成を自動化する
AutoCAD を使用して、球、立方体などの多くの基本的な 3D ジオメトリで構成される 3D モデルを生成したいと考えています。
基本的なジオメトリのローカル座標系の寸法と原点と向きがあります。データはExcelファイルに保存されます。Excel データの各行は 1 つのジオメトリに対応し、列は寸法、原点座標、および方向です。データ形式は、ジオメトリのタイプごとに定義されています。
AutoLisp、VBA、または AutoCAD 用のその他のマクロ ツールを使用してこのプロセスを自動化し、データが変更されたときにマクロを実行してデータを読み取り、AutoCAD 3D モデルを再生成するだけでよいようにしたいと考えていました。
最善の解決策は何ですか?
lisp - AutoCAD Lisp - Y を垂直に描画する方法
現在、次の Lisp コードを使用して、原点からの X 座標と Y 座標を表示しています。
スクリプトは現在、次のように Y 座標 (6050.00) を示しています。
Y座標を次のように垂直に描画したいのですが:
Lispを通じてこれを達成する可能性はありますか? その場合、どのような変更を加える必要がありますか?
functional-programming - AutoLISP:関数定義エラーを解決する方法は?
drawmycoil.lsp
以下に、ファイルからコードを貼り付けました。
ロードして実行した後のlispファイルの出力は次のとおりです。
関数を明確に定義したにもかかわらず、AutoCAD/AutoLISP にそれらを認識させることができません。Autodesk Education Master Suite 2011 を使用しています。かなりの数のチュートリアル サイトを見ましたが、それらのほとんどは機能の LISP 部分に焦点を当てています。私は、AutoCAD が LISP を介して自分の図面をプロットすることにもっと集中しています。
vb.net - .NET を使用して autocad で Lisp ファイルをロード (および実行) する
現在、いくつかの古い AutoCAD プラグインを VBA から VB.NET に書き直しています。結局のところ、上記のプラグインの (かなり大きな) 一部は LISP で実装されており、そのままにしておくように言われました。そのため、AutoCAD で .NET から LISP コードを実行すると問題が発生しました。現在、そのために必要なプロセスを説明しているオンラインのリソースがいくつかありますが (このようなもの)、それらはすべて、lisp ファイル/関数が既に読み込まれていることを当然のことと考えています。現在、変換方法を理解しようとして頭を悩ませている VBA 関数は"(LOAD ""<file>"")"
、.最初から最後まで実行され、それが機能します)。
だから私の質問はです。.NET プラグインから autocad に Lisp ファイルをロード (および実行) するにはどうすればよいですか?