乐筑天下

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

[编程交流] 插入所有块的lisp

[复制链接]

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 06:24:57 | 显示全部楼层 |阅读模式
有时文件有很多块,但没有插入。但在清除之前,我希望看到所有的块。因此,我正在搜索lisp以插入所有块。就像附件一样。
072504jeesxw3ysk3ucs3m.jpg
回复

使用道具 举报

49

主题

1246

帖子

1210

银币

后起之秀

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

铜币
254
发表于 2022-7-6 06:33:24 | 显示全部楼层
只需将所有块放入单个DWG文件中的一个块中。然后使用工具选项板或设计中心引入一个块,嵌套在其中的所有其他块将随它一起出现,将它们一次全部插入到当前图形中。
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-6 06:40:14 | 显示全部楼层
以下是一种在当前图形中插入所有块定义的快速而肮脏的方法。
 
  1. (setq *acad* (vla-get-ActiveDocument (vlax-get-acad-object)))
  2. (setq *ms* (vla-get-ModelSpace *acad*))
  3. (vlax-for
  4.          item
  5.              (vla-get-Blocks *acad*)
  6. (setq name (vla-get-Name item))  
  7. (if (not (eq "*" (substr name 1 1)))
  8.    (vlax-invoke-method
  9.      *ms*
  10.      'InsertBlock
  11.      (vlax-3d-point (list 0.0 0.0 0.0))
  12.      (vla-get-Name item)
  13.      1.0
  14.      1.0
  15.      1.0
  16.      0.0
  17.    )
  18. )
  19. )
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 06:46:06 | 显示全部楼层
Thanx公司
这就是我要找的。
我对插入点做了一些更改。
 
但我必须为每个街区选择一个点。如何对所有块使用同一点
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:51:37 | 显示全部楼层
试试这个:
 
  1. (DEFUN C:BLKINS  (/ pt name)
  2. (vl-load-com)
  3. (setq *acad* (vla-get-ActiveDocument
  4.                 (vlax-get-acad-object)))
  5. (setq *ms*   (vla-get-ModelSpace *acad*))
  6. (vlax-for item (vla-get-Blocks *acad*)
  7.    (if (and (not (eq "*" (substr (setq name (vla-get-Name item)) 1 1)))
  8.             (setq pt (getpoint "\nSelect Point for Block: ")))
  9.      
  10.      (vlax-invoke-method *ms* 'InsertBlock (vlax-3d-point pt) name 1.0 1.0 1.0 0.0)))
  11. (princ))

 
编辑:对不起,没有读最后一点
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:56:40 | 显示全部楼层
试试这个:
 
  1. (DEFUN C:BLKINS  (/ blks pt name)
  2. (vl-load-com)
  3. (setq *acad* (vla-get-ActiveDocument
  4.                 (vlax-get-acad-object)))
  5. (setq *ms*   (vla-get-ModelSpace *acad*))
  6. (if (and (not (zerop (- (vla-get-count (setq blks (vla-get-blocks *acad*))) 1 (length (layoutlist)))))
  7.           (setq pt (getpoint "\nSelect Point for Block: ")))
  8.    (vlax-for item blks
  9.      (if (not (eq "*" (substr (setq name (vla-get-Name item)) 1 1)))
  10.        (vlax-invoke-method *ms* 'InsertBlock (vlax-3d-point pt) name 1.0 1.0 1.0 0.0))))
  11. (princ))
回复

使用道具 举报

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 07:04:34 | 显示全部楼层
我将使用wba将它们提取到单个图形中,并将其提取到指定的子目录中。lsp,然后我将使用Bi(Blkimport.lsp)将所有提取的块插入到当前图形中,使用它们之间5.0个单位的间隙。。。可以更改lisp内的间隙。
wba。lsp
BI。lsp
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 07:10:07 | 显示全部楼层
Thanx RKMCSWAIN公司
Thanx LEE公司
有一个问题
lisp能否计算块宽度,然后在前一个插入点中插入下一个块加上块宽度。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:13:07 | 显示全部楼层
它必须插入块,使用边界框,然后相应地移动块。。。
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 07:21:44 | 显示全部楼层
只要提供这一个,如果您的目的是为了检查,也可以在autocad design center上尝试一下。键入ADC,然后转到“打开图形”选项卡,然后选择“块”。你会在一个窗口中看到所有的缩略图。当你点击一个缩略图时,下面会显示一个更大的缩略图,你可以将其进一步向上拉伸,这样就可以看到一个更大的块视图,而无需插入。
 
 
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 17:55 , Processed in 0.802665 second(s), 75 queries .

© 2020-2025 乐筑天下

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