本帖最后由 日以继夜 于 2019-4-24 14:25 编辑
目前有大量CAD地形分块图(500+,总文件大小超过2G),原始数据较为混乱。
各图的坐标系都是统一的,但各图纸(units命令中的)插入时的缩放单位设置不同,无单位、米、毫米、英寸都有。
目前需要批量拼图工具拼合地形图,但由于缩放单位不一致,批量插入图块后比例不同,图块乱飞,要修正很麻烦。
补充:主图和cad设置中都设为无单位可以解决这问题~
最终目标:请问如何便捷实现该任务?
拟提出的中间需求:
1、如何批量对大量cad图纸设置统一的插入缩放单位,并保存。
插入时如果能强制无视缩放单位也是个办法,但我希望能对原始数据作统一修正,便于其他各种场景下的利用。
2、如何批量对大量cad图纸进行清理,并保存。
原始分图中均含有大量未清理对象。考虑数据规模较大,也希望对所有分图做一次清理,以便于后续操作减小卡死的概率。
3、后附的拼图工具,不知道为什么,设置项选择 1-按块插入 时正常工作,选择 2-解块插入 时,被插入对象会旋转一个角度,烦请检查下代码本身是否存在问题,又或者是窝自己这边的其他原因。
这里后附用到的拼图工具:
- ;; 原点批量插图块
- (defun c:tt (/ pf path lst)
- (defun sub (path lst mode / a name)
- (foreach a lst
- (setq name (strcat path a)
- name (if (= mode 0)
- name
- (strcat "*" name)
- )
- )
- (command "insert" name "0,0" "1" "1" "")
- )
- )
- (setq dwg (getfiled "指定原文件路径中的一个图形文件:>" "*" "dwg" 8)
- path (strcat (vl-filename-directory dwg) "\")
- lst (vl-directory-files path "*.dwg" 1)
- ukw (UKWORD 1 "1 2" "1-按块插入/2-解块插入" ukw)
- )
- (prompt "\n程序正在插入图幅,请等待...")
- (cond ((= ukw "1") (sub path lst 0))
- ((= ukw "2") (sub path lst t))
- )
- (princ)
- )
- (defun ukword (bit kwd msg def / inp)
- (if (and def (/= def ""))
- (setq msg (strcat "\n" msg "<" def ">: ")
- bit (* 2 (fix (/ bit 2)))
- )
- (setq msg (strcat "\n" msg ": "))
- )
- (initget bit kwd)
- (setq inp (getkword msg))
- (if inp
- inp
- def
- )
- )
|