Welcome to Our Company
HOME シェアウェア 講習 リンク


 L3.図形の情報(画層、線種、色)を取得する
   (defun c:ufl00003m ( / ents enna outm )
    (setq ents (entsel "\n図形を選択:"))
    (if (/= ents nil)
     (progn
      (setq enna (nth 0 ents))
      (if (/= enna nil)
       (setq outm (ufl00003 enna))
      )
      (print outm)
     )
    )
    (princ)
   )
   (defun ufl00003 ( u_entn ;エンティティ名
           / out ;(list lay lnkd col)
            lay ;画層名
            lnkd ;線種
            col ;色番号
            enls )
   ;画層名、線種、色を得る
    (setq out nil)
    (setq lay nil)
    (setq lnkd nil)
    (setq col nil)
    (if (/= u_entn nil)
     (progn
      (setq enls (entget u_entn))
      (if (/= enls nil)
       (progn
        (setq lay (cdr (assoc 8 enls)))
        (setq lnkd (cdr (assoc 6 enls)))
        (setq col (cdr (assoc 62 enls)))
        (setq out (list lay lnkd col))
       )
      )
     )
    )
    out
   )
  上記AutoLISPファイル(ufl00003.lsp)のダウンロード

 説明
  entsel:図形名と指定した点の座標を得る。
   (entsel "文字列") 文字列はコマンドウィンドウに表示メッセージ。
  nth:リストから特定の項目を取り出す。
   (nth 0 ents)は番号が0からのため1番目のリスト内の項目。
  print:メッセージを表示する。
  entget:指定された図形の定義データを得る。
  cdr:リストから最初の要素以外のすべての要素を返す。
  assoc:指定されたキーによって識別される項目を返す。
   entgetした図形の定義データ例
    ((-1 . <図形名: 7ef5ae80>) (0 . "LINE") (330 . <図形名: 7ef5acf8>)
    (5 . "88") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")
    (100 . "AcDbLine") (10 724.121 636.774 0.0) (11 1025.73 447.194 0.0)
    (210 0.0 0.0 1.0))
   (cdr (assoc 8 enls)) によって "0" を得る。
   (cdr (assoc 10 enls))) の場合は (list 724.121 636.774 0.0)

Presented By ユーザーフレンドリー
E-mail:usrfr@yk.rim.or.jp