明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: xcz123m

[提问] 怎么批量选取tif图像插入cad中

[复制链接]
发表于 2018-5-7 16:28 | 显示全部楼层
本帖最后由 yangqingchao 于 2018-5-7 16:34 编辑

本人也经常用到这个功能,一直都没找到合适的,只能单张插入,今天看到@Atsai提供的文件,使用起感觉非常方便,于是就将两个文件稍加整合,基本能实现楼主所说的功能,由于我不懂编程,所以难免有很多错误,但我自己测试基本功能可以使用,大神们不要喷我。
  1. (vl-load-com)

  2. (if (null degrad)
  3.   (defun degrad  (ang)
  4.     (* pi (/ ang 180.0))
  5.   )
  6. )

  7. (if (null raddeg)
  8.   (defun raddeg  (ang)
  9.     (* 180.0 (/ ang pi))
  10.   )
  11. )
  12. (defun c:iimg()
  13.     (initget "1 2")
  14.     (princ "\n选择插入影像方式:")
  15.     (setq key (getkword "\n1单张\\2批量\\<1>:"))
  16.        (cond ((not key) (dz))    ;
  17.        ((= key "1") (dz))  ;
  18.        ((= key "2") (pl))  ;
  19.        );cond
  20. )
  21.   (defun dz()
  22.    (findfile (setq im (getfiled "Select Image File"
  23.                (getvar "dwgprefix")
  24.                "tif;jpg;png;ecw"
  25.                16
  26.            )
  27.         )
  28.     )
  29.   (tfw im)   
  30.   )
  31.   (defun pl()
  32.     (setq dir (LM:getfiles "选择文件" "" "tif;jpg;png;ecw"))
  33.     (repeat (setq n (length dir))
  34.       (setq n (1- n))
  35.       (setq e (nth n dir))
  36.       (tfw e)
  37.     )
  38.     (princ (strcat "\n成功插入 " (itoa (length dir)) "个影像!"))
  39.     (princ)
  40.   )


  41. (defun tfw ( im / img file res pt  xres yres xrot yrot left top minpt maxpt)
  42.           ;define the function name and variables
  43.       (if (= (type im) 'str)
  44.   (progn
  45.     (setq  img
  46.      (vla-addraster
  47.        (vla-get-block
  48.          (vla-get-activelayout
  49.            (vla-get-activedocument (vlax-get-acad-object))
  50.          )
  51.        )
  52.        im
  53.        (vlax-make-variant
  54.          (vlax-safearray-fill
  55.            (vlax-make-safearray vlax-vbdouble (cons 0 2))
  56.            '(0.0 0.0 0.0)
  57.          )
  58.        )
  59.        1.0
  60.        0.0
  61.      )
  62.     )
  63.     (if (snvalid (vl-filename-base im))
  64.       (vla-put-name img (vl-filename-base im))
  65.     )
  66.     (setq im (vlax-vla-object->ename img))
  67.   )
  68.   (setq imG (vlax-ename->vla-object (ssname im 0)))
  69.       )
  70.       (if (findfile (vl-string-subst
  71.           ".ers"
  72.           (vl-filename-extension (vla-get-imagefile img))
  73.           (vla-get-imagefile img)
  74.         )
  75.     )
  76.   (setq file (vl-string-subst
  77.          ".ers"
  78.          (vl-filename-extension (vla-get-imagefile img))
  79.          (vla-get-imagefile img)
  80.        )
  81.   )
  82.   (if (findfile (vl-string-subst
  83.       ".tfw"
  84.       (vl-filename-extension (vla-get-imagefile img))
  85.       (vla-get-imagefile img)
  86.           )
  87.       )
  88.     (setq  file (vl-string-subst
  89.            ".tfw"
  90.            (vl-filename-extension (vla-get-imagefile img))
  91.            (vla-get-imagefile img)
  92.          )
  93.     )
  94.     (if (findfile  (vl-string-subst
  95.         ".jgw"
  96.         (vl-filename-extension (vla-get-imagefile img))
  97.         (vla-get-imagefile img)
  98.       )
  99.         )
  100.       (setq file (vl-string-subst
  101.        ".jgw"
  102.        (vl-filename-extension (vla-get-imagefile img))
  103.        (vla-get-imagefile img)
  104.            )
  105.       )
  106.       (if  (findfile (vl-string-subst
  107.           ".pgw"
  108.           (vl-filename-extension (vla-get-imagefile img))
  109.           (vla-get-imagefile img)
  110.         )
  111.     )
  112.         (setq file (vl-string-subst
  113.          ".pgw"
  114.          (vl-filename-extension (vla-get-imagefile img))
  115.          (vla-get-imagefile img)
  116.        )
  117.         )
  118.       )
  119.     )
  120.   )
  121.       )
  122.       (if (or file
  123.         (setq file (getfiled "Select World File"
  124.            (vl-string-subst
  125.              ""
  126.              (vl-filename-extension (vla-get-imagefile img))
  127.              (vla-get-imagefile img)
  128.            )
  129.            "tfw;jgw;pgw;ers"
  130.            0
  131.        )
  132.         )
  133.     )
  134.   (if (= (vl-filename-extension file) ".ers")
  135.     (progn
  136.       (setq file (open file "r"))
  137.       (repeat 19 (read-line file))
  138.       (setq left (atof (last (split (read-line file) " ")))
  139.       top  (atof (last (split (read-line file) " ")))
  140.       )
  141.       (close file)
  142.       (vla-put-origin
  143.         img
  144.         (vlax-make-variant
  145.     (vlax-safearray-fill
  146.       (vlax-make-safearray 5 (cons 0 2))
  147.       (list left (- top (vla-get-height img)) 0.0)
  148.     )
  149.         )
  150.       )
  151.       (vla-put-imagewidth img (vla-get-width img))
  152.       (vla-put-imageheight img (vla-get-height img))
  153.       (vla-getboundingbox img 'minpt 'maxpt)
  154.       (vla-zoomwindow (vlax-get-acad-object) minpt maxpt)
  155.     )
  156.     (progn
  157.       (setq file (open file "r")
  158.       xres (atof (read-line file))
  159.       xrot (atof (read-line file))
  160.       yrot (atof (read-line file))
  161.       yres (atof (read-line file))
  162.       ins  (list (atof (read-line file)) (atof (read-line file)) 0.0)
  163.       ins  (polar ins
  164.             (* (/ (+ xrot 90.0) 180.0) pi)
  165.             (* (vla-get-height img) yres)
  166.            )
  167.       )
  168.       (close file)
  169.       (vla-put-rotation img (degrad xrot))
  170.       (vla-put-origin
  171.         img
  172.         (vlax-make-variant
  173.     (vlax-safearray-fill (vlax-make-safearray 5 (cons 0 2)) ins)
  174.         )
  175.       )
  176.       (vla-put-imageheight
  177.         img
  178.         (* (vla-get-height img) (abs yres))
  179.       )
  180.       (vla-put-imagewidth img (* (vla-get-width img) (abs xres)))
  181.       (vla-getboundingbox img 'minpt 'maxpt)
  182.       (vla-zoomwindow (vlax-get-acad-object) minpt maxpt)
  183.     )
  184.   )
  185.       )
  186.     ;)
  187. ;  )
  188.   (princ)        ;exit quietly
  189. )


回复 支持 1 反对 0

使用道具 举报

发表于 2018-5-7 20:29 | 显示全部楼层
dfg df gdf gdf
发表于 2018-5-8 07:51 来自手机 | 显示全部楼层
JHX948954875 发表于 2018-4-25 10:49
你好,这个怎么运行?

请看21楼的帖子
发表于 2018-6-13 15:11 | 显示全部楼层
我也遇到需要批量插入TIFF文件
发表于 2018-6-13 19:03 | 显示全部楼层
yangqingchao 发表于 2018-5-7 16:28
本人也经常用到这个功能,一直都没找到合适的,只能单张插入,今天看到@Atsai提供的文件,使用起感觉非常方 ...

命令是哪个 怎么用不了呢
发表于 2018-6-14 14:52 | 显示全部楼层
依然小小鸟 发表于 2018-6-13 19:03
命令是哪个 怎么用不了呢

命令就是iimg,运行不了的话,看看是什么提示呢,我这可以呢
发表于 2018-6-14 22:32 | 显示全部楼层
yangqingchao 发表于 2018-6-14 14:52
命令就是iimg,运行不了的话,看看是什么提示呢,我这可以呢

如何单纯的批量插入tiff呢  不需要定位 就是批量插入tiff就行  我的tiff是A3 PDF转换过来的 每次自己手动一张一张的插入tiff太慢  而且插入完tiff 发现比例不对(不是正常的A3大小)  大神你可以帮忙实现吗  批量插入tiff  或者更直接的 批量插入PDF  而且大小正好是原始大小  我不需要定位
发表于 2018-6-15 08:55 | 显示全部楼层
依然小小鸟 发表于 2018-6-14 22:32
如何单纯的批量插入tiff呢  不需要定位 就是批量插入tiff就行  我的tiff是A3 PDF转换过来的 每次自己手动 ...

http://bbs.xdcad.net/thread-711226-1-1.html这里有
发表于 2018-6-15 11:52 | 显示全部楼层
yangqingchao 发表于 2018-6-15 08:55
http://bbs.xdcad.net/thread-711226-1-1.html这里有

没装晓东的任何东西 用不了貌似
发表于 2018-8-13 23:06 | 显示全部楼层
xyp1964 发表于 2017-10-13 08:43
;; tt(批量插入图像)
(defun c:tt ()
  (setq        pt  '(0 0)

哥们,此插件可否分享一下呢,谢谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 12:27 , Processed in 0.283119 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表