2024年5月30日木曜日
うっかり位置情報
2024年5月27日月曜日
マネージドライブラリは今でもクラスライブラリ(.Net Framework) で作成する
AutoCADのC#,VB.Netのマネージドライブラリ
- クラスライブラリ(.Net Framework)で作成する
- ターゲットバージョンは最近は 4.8
- 拡張子は .dll
- 参照は、AcMgd.dll, AcCoreMgd.dll, AcDbMgd.dll が必須。後は必要に応じて。
- Using (Imports)はこの辺が必須。後は必要に応じて。
using AutodeskAutoCAD.ApplicationServices;using AutodeskAutoCAD.DatabaseServices;using AutodeskAutoCAD.EditorInput;using AutodeskAutoCAD.Runtime;
IJCAD 2024のC#,VB.Netのマネージドライブラリ
- クラスライブラリ(.Net Framework)で作成する
- ターゲットバージョンは最近は 4.8
- 拡張子は .dll
- 参照は、GcMgd.dll, GcCoreMgd.dll, GcDbMgd.dll が必須。後は必要に応じて。
- Using (Imports)はこの辺が必須。後は必要に応じて。
using Itjp.Ijcad.ApplicationServices;using Itjp.Ijcad.DatabaseServices;using Itjp.Ijcad.EditorInput;using Itjp.Ijcad.Runtime;
IJCAD 2023のC#,VB.Netのマネージドライブラリ
- クラスライブラリ(.Net Framework)で作成する
- ターゲットバージョンは最近は 4.8
- 拡張子は .dll
- 参照は、gmap.dll, gmdb.dll が必須。後は必要に応じて。
- Using (Imports)はこの辺が必須。後は必要に応じて。
using GrxCAD.ApplicationServices;using GrxCAD.DatabaseServices;using GrxCAD.EditorInput;using GrxCAD.Runtime;
ARESのC#,VB.Netのマネージドライブラリ
- クラスライブラリ(.Net Framework)で作成する
- ターゲットバージョンは最近は 4.8
- 拡張子は .dll
- 参照は、TD_Mgd_バージョン.dll, FxCoreMgd_バージョン.dll が必須。後は必要に応じて。
- Using (Imports)はこの辺が必須。後は必要に応じて。
using Teigha.ApplicationServices;using Teigha.DatabaseServices;using Teigha.EditorInput;using Teigha.Runtime;
2024年5月26日日曜日
AutoCAD系 カスタマイズについて
AutoCAD 系 カスタマイズについて
- プログラミングが必要なもの
- プログラミングが不要なもの
何が使えるか、何に使うか
- LISP
- C#, VB.Net
- C++
とりあえずLISP
Visual Code Editor との連携
2024年5月25日土曜日
ライトウェイトポリラインを3Dポリラインに変換するLISPコマンド
AutoCAD Civil 3D には、2D ポリラインを3D ポリラインに変換するコマンドと、3D ポリラインを2D ポリラインに変換するコマンドがありますが、AutoCAD 他にはありません。
LISPでライトウェイトポリラインを3Dポリラインに変換するコマンドを作ってみました。
;;; ----------------------------------------------------------
;;; conv3dpoly.lsp
;;; (C) Copyrights 2024 Graebert Japan LLC.
;;; ----------------------------------------------------------
;;1個のライトウェイトポリラインを変換
(defun CONV3DPOLY ( en / el la fl i lp )
;図形リストを取得する
(setq el (entget en)
la (cdr (assoc 8 el))
fl (cdr (assoc 70 el)))
;頂点の数を返す
(setq i (vlax-curve-getendparam en))
;コマンドパラメータの最後はEnterである
(setq lp '(""))
;閉じたポリラインを閉じたポリラインとして処理するとき
;(if (/= 0 (logand 1 fl))
; (setq i (- i 1.0) lp '("C"))
;)
;頂点を最後から最初まで取得する
(while (not (minusp i))
;頂点を前に詰めていく
(setq lp (cons (vlax-curve-getpointatparam en i) lp))
(setq i (- i 1.0))
)
;コマンド名を前に詰める
(setq lp (cons "3dpoly" lp))
;画層を切り替え
(setvar "CLAYER" la)
;コマンドを実行
(apply 'command lp)
;ライトウエイトポリラインは削除する
(entdel en)
)
;;複数のライトウェイトポリラインをまとめて変換
(defun C:CONV3DPOLY ( / ss cl i n en )
; ライトウェイトポリラインのみ取得
(if (setq ss (ssget '((0 . "LWPOLYLINE"))))
(progn
;画層を元に戻すのに必要
(setq cl (getvar "CLAYER"))
;選択したすべてのライトウェイトポリラインについて
(setq i 0 n (sslength ss))
(while (< i n)
;図形名を取得
(setq en (ssname ss i))
;3Dポリラインに変換
(CONV3DPOLY en)
(setq i (1+ i))
)
(setvar "CLAYER" cl)
)
)
(princ)
)
- 特定の図形を複数選択する方法
- コマンドと関数の切り分け
- vlax-curve 関数の使用法
- 可変長のコマンド引数の渡し方
Visual LISP ~ 図形を画層に振り分けたら線種尺度を設定する
画層のプロパティとして、線色、線種、線幅、印刷スタイルなどはありますが、線種尺度はありません。線種尺度=ByLayerという設定の代わりになりそうなものを考えてみました。
Visual LISP で作成したので、AutoCAD 系の他のCAD でも使えると思います。
;;; ----------------------------------------------------------
;;; LayLScale.lsp
;;; 画層毎に線種尺度を設定する
;;; (C) Copyrights 2024 Graebert Japan LLC.
;;; ----------------------------------------------------------
;; 画層名と線種尺度のペアを設定(いくらでも追加可能)
(setq #LayLScale '(
("MODEL" . 1.0)
("MODEL2" . 2.0)
("MODEL4" . 4.0)
("MODEL8" . 8.0)
))
;; 線種尺度を書き換えるコールバック関数
(defun layLscaleReactor( cb data / obj item )
; 図形名をVLAオブジェクトに変換
(if (setq obj (vlax-ename->vla-object (last data)))
; VLAオブジェクトは画層と線種尺度が使用できるか
(if (and (vlax-property-available-p obj 'Layer)
(vlax-property-available-p obj 'LinetypeScale T))
; 図形の画層から線種尺度のペアを取得できるか
(if (setq item (assoc (vla-get-Layer obj) #LayLScale))
; 線種尺度がペアの設定値と一致していないとき
(if (/= (cdr item) (vla-get-LinetypeScale obj))
; 線種尺度を修正する
(vla-put-LinetypeScale obj (cdr item))
)
)
)
)
; VLAオブジェクトを解放する
(setq obj nil)
)
;; Visual LISP データベース リアクターを設定
(vlr-acdb-reactor nil '(
(:vlr-objectappended . layLscaleReactor)
(:vlr-objectmodified . layLscaleReactor)
))
使い方は、図面を開いたときに自動的に読み込まれるLISPファイルとしてどこかに登録してください。AutoCADなら、acad2025doc.lsp ファイルに、(load "LayLScale.lsp") と書くとかですね。
AutoCAD 2025 のカスタマイズ ことはじめ
AutoCAD 2025 のカスタマイズに必要な資料はこの辺からアクセス。
AutoCAD 2025 カスタマイズ オンライン ヘルプ 英語
https://help.autodesk.com/view/OARX/2025/ENU/
AutoCAD 2025 カスタマイズ オンライン ヘルプ 日本語
https://help.autodesk.com/view/OARX/2025/JPN/
DXFファイルリファレンスも、オンラインヘルプからアクセス可能。
AutoCAD 2025でも、DWGのバージョンはAC1032 (AutoCAD 2018相当)のまま。
メインバージョンはAutoCAD 2018 形式で打ち止めらしい。
My First AutoCAD Plug-in Overview
私の最初のAutoCAD プラグインー概要
.Net (C#かVB.Net) を使ったアプリケーション作成を1歩ずつ説明するコンテンツ(英語のみ)
ObjectARX SDK の入手方法
https://aps.autodesk.com/developer/overview/objectarx-autocad-sdk
ここから無料で入手可能。以前と異なり名前やメールアドレスを聞かれることもなくなった。
AutoCAD Mechanical API の入手方法
https://aps.autodesk.com/developer/overview/autocad-mechanical
ここから無料で入手可能。
AutoCAD 2025 の C++アドイン ARX/CRX/DBX の開発では Visual Studio 2022 と Visual C++ が必要になりました。
C# や VB.Net での開発は、Microsoft .Net Framework 4.8 なので、Visual Studio 2022 必須ではありませんが、C++ での開発が必要なら一緒でよいでしょう。
Windows 専用の Visual LISP 拡張や、VBA (Visual Basic for Automation) は今でも使えます。
LISP エディタとしては、Microsoft Visual Code Editor の利用が推奨されてます。
この流れは止まらないっぽい。
ARESのトリニティ(三位一体)
ARESのトリニティ戦略、どこがトリニティなんでしょう。 まずはデスクトップCADが、WindowsにもMacにもLinux版もあるというトリニティ。 デスクトップCADと、モバイルCAD(ARES Touch)と、ブラウザとサーバーCAD(ARES Kudo)のトリニティ。 ...
-
SXFファイル形式は現在4つの拡張子のものが出回っている。 P21 (STEP AP 202) STEP 規格に基づいた正式な SXF ファイル。1個の図形を定義するのに、何行も使うし、英数字それも大文字ばかりの内容を見ると、昔懐かしい FORTRAN や COBOL のソ...
-
PowerShell で INI ファイル編集 PsIni というパッケージを使うとPowerShellでのINIファイル編集が容易になる。 残念なのは、シフトJIS に対応していないこと。 インストールの方法はPowerShell 上で次のように入力する Instal...
-
スライドファイル(拡張子 .SLD) スライドライブラリファイル(拡張子 .SLB) AutoCAD関連コマンド・ツール MSLIDE コマンドで作成 VSLIDE コマンドで画面に表示 SLIDELIB ツールでSLDファイルをSLBファイルにまとめる ...