我的完整代码是这样的,因为我也有只有一个图像的图纸。
只有一个图像的图形:DWG和PNG获得完全相同的(客户端)名称
图像>1的图形:DWG和PNG具有相同的(客户端)名称,但PNG在名称中有额外的“-01”、“-02”。
只有一张图片的情况正在工作!
- (defun c:IMREN ( / img_len img_nr dwg_len nm vl sset)
- (vl-load-com)
- (if (setq ss (ssget "x" '((0 . "IMAGE"))))
- (cond
- ((= (sslength ss) 1)
- (progn
- (setq sset (ssname ss 0))
- (setq vl (vlax-ename->vla-object sset))
- (setq nm (vla-get-name vl))
- (setq dwgpath (getvar "DWGPREFIX"))
- (setq dwgname (strcat (vl-filename-base (getvar "DWGNAME"))))
- (setq path (strcat dwgpath dwgname ".png"))
- (command "-image" "p" nm path)
- (vlax-put-property vl 'Name dwgname)
- )
- )
- ((> (sslength ss) 1)
- (progn
- (setq cnt 0)
- (setq str "Z01")
- (repeat (sslength ss)
- (setq sset (ssname ss cnt))
- (setq vl (vlax-ename->vla-object sset))
- ;(setq nm (vla-get-name vl))
- (setq nm
- (append nm (list (vla-get-name vl)))
- )
- (princ nm)
- (setq dwgpath (getvar "DWGPREFIX"))
- (setq dwgname (strcat (vl-filename-base (getvar "DWGNAME"))))
- (setq dwg_len (- (strlen dwgname) (+ (strlen str) 1)))
- (setq revnr (substr dwgname (+ dwg_len 1)))
- (setq imgname (substr dwgname 1 dwg_len))
-
- ;(if
- (setq path (strcat dwgpath imgname "-" (strcat "0" (itoa cnt)) revnr ".png"))
- (command "-image" "p" (nth cnt nm) path)
- (vlax-put-property vl 'Name dwgname)
-
-
- (setq cnt (1+ cnt))
- )
- )
- )
- )
- (princ "Error - No images in drawing!.")
- )
- (princ)
- )
|