乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 33|回复: 19

[编程交流] 合并图形

[复制链接]

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 22:42:25 | 显示全部楼层 |阅读模式
嗨,朋友们。
 
我从事机械行业,使用Autodesk Inventor绘制零件和部件。有时,我需要将idw图形批量转换为DWG格式。
 
一个零件,一个图纸,所以,如果有100个零件,它有100个图纸。
现在,我希望将100个或更多dwg合并到一个dwg文件中。
 
每个图纸范围的尺寸可能不同(A4、A3等)
绘图框架和标题栏是属性块。
234230qn886awe1ee3c00a.png
 
将更多图形合并到dwg文件中,我认为需要Dcl文件来输入行和列、行距和列间距。
 
谢谢你的帮助!感谢论坛中的所有朋友。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 22:47:20 | 显示全部楼层
不知道idw到dwg,但可以使用脚本打开dwg并检索dwg A3 A4等的大小,然后使用此信息编写脚本文件,将所有dwg插入主dwg。
 
我们的标题栏将图纸的大小作为一个变量,所以可以读取它,或者只计算标题栏的大小。
 
我不会担心dcl,这是一个有点额外的工作,几乎没有收获。
 
重新编程只有一个双重复X Y,我将使用A3大小作为间距,然后你可以忽略大小差异。鉴于图纸将在模型空间中,可以进行自动绘图等,我会考虑使用布局,每张图纸1,那么大小也不相关。
回复

使用道具 举报

7o7

0

主题

93

帖子

93

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 22:50:01 | 显示全部楼层
你试试这个惯例。首先制作一个新的空白图形,加载此例程,输入“IF”(lisp命令的名称,表示“插入文件”),指出包含100个或更多dwg文件的目录(必须将idw导出为dwg),然后等待结果。插入的文件尚未分解。
  1. (defun c:if(/ dir files len col n x y h dy v li dy minp maxp)
  2. (setq dir (vl-filename-directory (getfiled "Get Directory" (getvar "dwgprefix") "dwg" 4))
  3. files (vl-remove-if-not
  4.       '(lambda(x) (vl-string-search "DWG" (strcase (vl-filename-extension x))))
  5.          (vl-directory-files dir nil 1))
  6. len (length files)
  7. col (fix (sqrt len))
  8. n -1
  9. y 0
  10. h 0
  11. )
  12. (while (< n (1- len))
  13.    (setq x 0
  14.   y (+ y h)
  15.   h 0)
  16.    (repeat col
  17.      (setq v (nth (setq n (1+ n)) files))
  18.      (if v
  19. (progn
  20.   (command "-insert" (strcat dir "/" v) '(0 0) "" "" "")
  21.   (vla-getBoundingBox (vlax-ename->vla-object (entlast)) 'minp 'maxp)
  22.   (setq li (mapcar 'vlax-safearray->list (list minp maxp)))
  23.   (command "move" (entlast) "" '(0 0) (list x y))
  24.   (if (> (setq dy (abs (- (cadadr li) (cadar li)))) h)
  25.     (setq h dy))
  26.   (setq x (+ x (abs (- (caadr li) (caar li)))) )
  27. )
  28.      )
  29.    )
  30. )
  31. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 22:52:50 | 显示全部楼层
7o7好主意,行-列的sqrt,正如我建议的那样,修改代码也很容易,保留前6行,然后使用“Layout”“N”在每个新布局中插入一部分。
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 22:55:53 | 显示全部楼层
 
 
非常感谢!707
我测试,但有些重叠。
234232pg7gvxxqd5g9fxxz.png
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 23:01:04 | 显示全部楼层
@7o7小时
 
这就足够了。
取代所有这一切。
  1. (vl-remove-if-not
  2. '(lambda (x) (vl-string-search "DWG" (strcase (vl-filename-extension x))))
  3. (vl-directory-files dir nil 1)
  4. )
回复

使用道具 举报

7o7

0

主题

93

帖子

93

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 23:04:19 | 显示全部楼层
@塔瓦:好的,谢谢,你的很好。
@andy_Lee:它是重叠的,因为插入点不是0,0。除非将每个图形的左下角移动到0,0。
这就是我不想分解插入图形的原因。
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 23:04:56 | 显示全部楼层
可以使用“插入DWG参考”模式吗?
可以用图号从左到右,从上到下顺序排列吗?
 
图号:xxx-xxx-001、xxx-xxx-002。。。。。。
回复

使用道具 举报

7o7

0

主题

93

帖子

93

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 23:08:43 | 显示全部楼层
什么是“插入DWG参考”模式?
如果要从上到下,请将(+y h)更改为(-y h)
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 23:13:35 | 显示全部楼层
菜单 插入--DWG参考, 这样我们就可以保持文件的完整性。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 03:09 , Processed in 1.155694 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表