这几乎和你的另一篇文章一样,你在那里使用了文件首选项,这是我不会做的,它很容易从一个给定的目录中列出dwg名称。这里有很多帖子。
无论如何,我已经做了你想要的,但在大约50张图片在一个去它是我们的电话簿,他或她在哪里?在本例中,它使用标签电话号码,并将其与具有相同号码的图像相匹配。
- ; routine to insert images based on a block position
- (vl-load-com)
- (defun *error* ( msg )
- (princ "\nerror: ")
- (alert (strcat "\n Missing phone number image" name))
- (princ)
- )
- (setq mspace (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
- (setvar "clayer" "staffimages")
- (setq ss1 (ssget "x" (list (cons 0 "INSERT") (cons 2 "phnum")))) ;block name is phnum
- (setq len (sslength ss1))
- (setq x 0)
- ; then insert block value at x,y
- ; need to pull out block find x,y and value
- (repeat len
- (foreach att (vlax-invoke (vlax-ename->vla-object (ssname SS1 x )) 'getattributes)
- (if (= "PHNUM" (strcase (vla-get-tagstring att))) ; tagname is phnum
- (progn
- (setq blknum (vla-get-textstring att))
- (setq inspt (vla-get-insertionpoint att))
- )
- )
- )
- ;(setq blkval (rtos blknum 2 0))
- (setq name (strcat "P:\\St Offices\" blknum ".jpg" ))
- (princ (strcat "\n" name))
- (vla-AddRaster mspace name inspt 1.5 0.0)
- ;(command "-image" "attach" name (vlax-3d-point inspt) 1.0 0.0)
- (setq x (+ x 1))
- ) ;repeatlen
- (setq ss1 nil)
- (princ "alla done"
- (princ)
|