2021年3月31日水曜日

異尺度注釈図形にアタッチされている尺度を知る

 異尺度注釈図形が持っている尺度(文字列)を表示する


;;;

;;; LISTANNOSCALE.LSP

;;;

(defun C:LISTANNOSCALE ( / el id f)

  (setq f T)

  ;異尺度注釈図形を選択

  (if (setq el (entget (car (entsel "異尺度注釈を選択:"))))

    ;拡張ディクショナリを選択

    (if (setq id (cdr (assoc 360 el)))

      ;AcDbContextDataManagerデータを選択

      (if (setq id (cdr (assoc -1 (dictsearch id "AcDbContextDataManager"))))

        ;ACDBANNOTATIONSCALESデータを選択

        (if (setq id (cdr (assoc -1 (dictsearch id "ACDB_ANNOTATIONSCALES"))))

          ;オブジェクトコンテキストデータを取得

          (while (setq el (dictnext id f))

            (if (setq sl (entget (cdr (assoc 340 el))))

              (princ (strcat (cdr (assoc 300 sl)) ","))

              (princ "\nSCALEがありません")

            )

            (setq f nil)

          )

          (princ "\nAcDbObjectContextDataがありません")

        )

        (princ "\nAcDbContextDataManagerがありません")

      )

      (princ "\n拡張ディクショナリがありません")

    )

    (princ "\n図形選択エラー")

  )

  (princ)   

)


2021年3月30日火曜日

標準矢印ブロックのローカル名とグローバル名

ローカル名(日本語)とグローバル名。
英語のローカル名はアンダーバーがない CLOSED, DOT などです。
塗り潰し矢印: ブロックではない
空矢印:_CLOSEDBLANK
閉矢印:_CLOSED
黒丸:_DOT
ティック(太):_ARCHTICK
ティック:_OBLIQUE
開き矢印:_OPEN
白丸1:_ORIGIN
白丸2:_ORIGIN2
90度開き矢印:_OPEN90
30度開き矢印:_OPEN30
小黒丸:_DOTSMALL
空白丸:_DOTBLANK
小空白丸:_SMALL
空白四角:_BOXBLANK
塗り潰し四角:_BOXFILLED
空白データム:_DATUMBLANK
塗り潰しデータム:_DATUMFILLED
波形:_INTEGRAL
なし: _NONE

ローカル名からグローバル名への変換には次の関数が便利です。
const ACHAR* AcDmUtil::globalArrowName(const ACHAR* ローカル名 )

矢印ブロック名から矢印ブロックのオブジェクトIDに変換するには次の関数が便利です。
Acad::ErrorStatus getArrowId(
   const ACHAR * pName,         // グローバル名
   AcDbObjectId& blockId,         // オブジェクトID
   AcDbDatabase* pDb = 0        // 指定しないとCurDoc/WorkingDatabaseで調べる
);

塗りつぶし矢印は、名前指定のときは空文字列で、オブジェクトID は Null で、ハンドル値では 0 になります。


異尺度注釈図形にアタッチされている尺度を知る

 異尺度注釈図形が持っている尺度(文字列)を表示する ;;; ;;; LISTANNOSCALE.LSP ;;; (defun C:LISTANNOSCALE ( / el id f)   (setq f T)   ;異尺度注釈図形を選択   (if (setq el (entg...