yoin

cetacad

Beste forumgebruikers,

Om zien of een block in een tekening voorkomt gebruik ik (tblsearch "BLOCK" "bloknaam").
Weet iemand hoe ik een image kan vinden?


Alvast bedankt, Fred.

sschevers

Fred,

Images zitten niet in een table maar in een named dictionary. Zie bijgaande link voor een mogelijke oplossing (zelf niet getest!)
http://forums.autodesk.com/t5/Visual-LISP-AutoLISP-and-General/lisp-to-get-raster-image-properties/m-p/1372057


succes stephan

cetacad

Bedankt Stephan,

Dit was precies wat ik zocht.
Ik heb het op de volgende wijze toegepast:

(setq logo-in nil)
(IF (= (cdr(assoc 3 (dictsearch (namedobjdict) "Acad_image_dict"))) "Logo stempel")(progn(setq logo-in "JA")
))

Fred.

HofCAD

#3
Citaat van: cetacad op wo 19 01 2011, 13:44:07
Bedankt Stephan,

Dit was precies wat ik zocht.
Ik heb het op de volgende wijze toegepast:

(setq logo-in nil)
(IF (= (cdr(assoc 3 (dictsearch (namedobjdict) "Acad_image_dict"))) "Logo stempel")(progn(setq logo-in "JA")
))

Fred.
Beste Fred,

En als er nu twee of meer verschillende Images in je tekening staan,
en je hebt dus na je Logo stempel nog andere gekoppeld? :lol:
Je kan verder nog het verschil maken tussen geplaatst (referenced) en
niet geplaatst (unreferenced) maken.
Na een attach en een erase zit de image nog steeds in de dictionary.

Met vriendelijke groet, HofCAD CSI.

(defun c:ImageAt?( / lst)
(vl-load-com)
(vlax-map-collection
 (vla-get-filedependencies
   (vla-get-activedocument
     (vlax-get-acad-object)
   )
 )
 '(lambda (x)
    (if (= (vla-get-feature x) "Acad:Image")
      (setq lst (append lst (list (vla-get-fullfilename x)))
     ;;; of (setq lst (append lst (list (vla-get-filename x)))
     ;;; of (setq lst (append lst (list (vl-filename-base (vla-get-filename x))))
    )
  )
)
)
lst
)

Als je Imagefile met extensie "Logo stempel.jpeg" is, dan kun je het volgende
voor koppelings (attachment) onderzoek gebruiken:
(defun c:LogoAt?( / lst logo)
(vl-load-com)
(setq logo "Logo stempel.jpeg" logo-in nil)
(vlax-map-collection
 (vla-get-filedependencies
   (vla-get-activedocument
     (vlax-get-acad-object)
   )
 )
 '(lambda (x)
    (if (= (vla-get-feature x) "Acad:Image")
      (setq lst (append lst (list (vla-get-filename x)))
    )
  )
)
)
(if (member logo lst) (setq logo-in "JA"))
)

of als je Imagefile "Logo stempel" is, dan kun je het volgende
voor koppelings (attachment) onderzoek gebruiken:
(defun c:LogoAt3? (/ ed logo)
 (setq logo "Logo stempel" logo-in nil
 )
 (setq ed (dictsearch (namedobjdict) "Acad_image_dict"))
 (foreach v ed
   (if (= (car v) 3)
     (progn
(if (= (cdr v) logo)
(setq logo-in "JA")
)
     )
   )
 )
 logo-in
)

Als je Imagefile zonder extensie "Logo stempel" is, dan kun je het volgende
voor plaatsings (reference) onderzoek gebruiken:
(defun c:LogoRef? (/ logo ss i)
 (setq logo "Logo stempel" logo-in nil
 )
 (setq i 0
        ss (ssget "_X" (list (cons 0 "IMAGE")))
 )
 (repeat (sslength ss)
   (if
     (= (vl-filename-base
  (cdr
    (assoc 1 (entget (cdr (assoc 340 (entget (ssname ss i))))))
  )
)
logo
     )
      (setq logo-in "JA")
   )
   (setq i (1+ i))
 )
 logo-in
)
ACADcadabra