イメージのロード・アンロード


VLISPがまじったり、DXFで取得したり、イマイチ美しくないなぁ。
どうして私は探し出せないんだろう・・・。

(defun c:il(
/
E_NAME
OBJ
NAME
)
(while (not (setq E_NAME (car (entsel)))))
(setq OBJ (vlax-ename->vla-object E_NAME))
(setq NAME (vlax-get-property OBJ 'Name))
(if (= 0 (y_dxfdata 280 (entget (cdr (assoc 340 (entget E_NAME))))))
(command "-image" "r" NAME)
(command "-image" "u" NAME)
)
)
  1. #1 by 匿名 - 2月 28th, 2006 at 19:03

    VLでObjectを取っているなら
    if は ClippingEnabled
    ロードは表示・非表示に変えてみてはどうでしょう。
    ImageVisibility

  2. #2 by liki - 2月 28th, 2006 at 21:55

    (setq img (car (entsel)))
    (setq imgdata (entget img))
    (setq imgdef (cdr (assoc 340 imgdata)))
    (setq imgdefdata (entget imgdef))
    (setq loadflag (cdr (assoc 280 imgdefdata)))
    (if (zerop loadflag)
    (entmod (subst ‘(280 . 1) ‘(280 . 0) imgdefdata))
    (entmod (subst ‘(280 . 0) ‘(280 . 1) imgdafdata))
    )
    エラー処理は省略
    と、純粋にLISPのみでいいんでないの。
    もちろんActiveXの方が高速だけどこの程度の処理なら
    違いはない。どちらも一瞬の出来事。
    VLISPでActiveXを使うか、AutoLISPのみか
    COMMAND使うか。
    どうしてもの場合以外は一貫性を持たせた方が美しいね。

  3. #3 by 匿名 - 3月 1st, 2006 at 19:00

    280番の勘違いxx
    すみませーん
    VBではx
    likiさんLispが美しい!

  4. #4 by ゆり - 3月 3rd, 2006 at 23:03

    >ロードは表示・非表示に変えてみてはどうでしょう。
    最初はそれでやってみたんですけど、
    表示・非表示だとあんまりパフォーマンス上がらなかったのです(TT)
    >と、純粋にLISPのみでいいんでないの。
    まぁそうなのですけど、
    できればVLISPの方がコメントなしでもわかりやすいかと(笑)

(will not be published)

  1. No trackbacks yet.