2024年5月30日木曜日

うっかり位置情報

iPhoneで写真から位置情報を削除する に、写真アプリを使って複数の写真や動画からまとめて位置情報を削除する方法も、設定のプライバシーでこれから撮影する写真や動画に位置情報を埋め込まない設定も書いてあった!ありがとう見知らぬ人!

しかしよ、既定値でオフにしてくれないかな?こういうのは。と思うよね。
思った人は「いいね👍」

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;
AutoCAD の Core か DataBase の Managed library の と覚えるとよい。

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;
GrxCAD の Core か DataBase の Managed library の と覚えるとよい。

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;
GrxCAD の Managed library の Application か DataBase と覚えるとよい。

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;
Teigha DWG の Managed library と、Felix Cad の Core の Managed library の と覚えるとよい。(Felix Cad は グレバートが ARES の前に作っていた CAD製品の名前)

参照するライブラリを変えることと、using 宣言を変えることで、AutoCAD, IJCAD, ARES (おそらく Brics CAD など AutoCAD 系のCADは全部) C# や VB.Net で作成されたマネージドライブラリは動くはずだ。

参照のときにはローカルコピーをする必要はない。

2024年5月26日日曜日

AutoCAD系 カスタマイズについて

 AutoCAD 系 カスタマイズについて

  • プログラミングが必要なもの
  • プログラミングが不要なもの
今回はプログラミングが必要なものを説明します。

何が使えるか、何に使うか

  • LISP
  • C#, VB.Net
  • C++
LISPはCADの組み込みのインタプリタで、コマンドをラッピングして使いやすくしたり、新たにコマンドを作成することも可能です。C++ は CADの高度なカスタマイズが可能です。扱える図形データを追加することも可能です。C#, VB.Net は、多くの人が知っている言語で、外部データベースとの接続など多くのプログラム部品を活用してCADアプリケーションを作成することが可能です。LISPはユーザーインタフェースを扱う部分が弱いので、ダイアログやパレットなどのユーザーインタフェースを利用する場合には C#, VB.Net の利用をお勧めします。

とりあえずLISP

AutoCADに最初からあるプログラミング環境であること、他に何も要らないこと、他のプログラミングを使う場合にも有益な基本が学べることから、とりあえずLISPをやってみることをお勧めします。

Visual Code Editor との連携

Visual Code Editor を使うと、LISP の組み込み関数のバルーンヘルプや、コード入力補完、整形が便利です。さらにオンラインデバッガとしてCADと連携することも可能です。
AutoCAD には、Visual LISP IDE という専用の IDE がありましたが、汎用のシェルプログラミングエディタをIDEとして使うことができるようになりました。

    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 プラグインー概要

    https://www.autodesk.com/support/technical/article/caas/tsarticles/ts/6kRFCS0mCalWLwAOpP9pNT.html

    .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)のトリニティ。 ...