xj6019 发表于 2022-4-27 10:59:45

wutao8282 发表于 2022-4-27 10:38
CAD2005完整版!; 输入NM之后鼠标变成十字,点一下图纸任意卫视提示 :错误: Automation 错误 ...

换个高点的版本cad试试

vitalgg 发表于 2022-4-27 11:02:22

本帖最后由 vitalgg 于 2022-4-27 11:09 编辑






插件 到 http://atlisp.cn安装 @lisp,然后在应用管理中选中 @lisp块操作

会把 所有块都插到 图中 。如尺寸界线的块。

(defun @block:insert-all (/ pt0 pt1 ang dist blk)
(@:help (strcat "块操作 -> 插所有块\n"
                  " 将当前 dwg 中的所有块插入到从指定点和指定距离排列。"))
(if (and (setq pt0 (getpoint "请输入插入点:"))
         (setq pt1 (getpoint pt0 "请输入相对插入点的距离和方向点:"))
         (setq ang (angle pt0 pt1)
               dist (distance pt0 pt1)))
      (progn
      (setq blk (tblnext "block" t))
      (while blk
          (block:insert (cdr (assoc 2 blk)) "" pt0 0 1)
          (setq pt0 (polar pt0 ang dist))
          (setq blk (tblnext "block"))))))


函数 block:insert 定义代码在http://atlisp.cn/function/block:insert

wutao8282 发表于 2022-4-27 11:10:22

本帖最后由 wutao8282 于 2022-4-27 11:14 编辑

vitalgg 发表于 2022-4-27 11:02
插件 到 http://atlisp.cn安装 @lisp,然后在应用管理中选中 @lisp块操作



这还是得一块一块插入啊?

wutao8282 发表于 2022-4-27 11:35:53

xj6019 发表于 2022-4-27 09:01
前提你要保证你的每个块的基点都在块上就正常,如果排出来顺序乱七八糟,就说明你自己的块有问题,和本代码 ...

CAD2009 完整版还是不行?老师您那边测试正常吗?

xj6019 发表于 2022-4-27 11:42:06

wutao8282 发表于 2022-4-27 11:35
CAD2009 完整版还是不行?老师您那边测试正常吗?

你上传个文件看看

xj6019 发表于 2022-4-27 11:47:05

我这边是正常的呀没发现问题呢

xj6019 发表于 2022-4-27 11:58:42

你再试试基本没变动,应该是没问题的呀
(defun c:NM (/ *acad* *acdocument* *blks* *doc* *docs* *ms* outlst p)
        (vl-load-com)
        (if(and
                       (setq
                               *ACAD*(vlax-get-acad-object)
                               *DOC*   (vla-get-ActiveDocument *ACAD*)
                               *MS*    (vla-get-modelspace *DOC*)
                               *BLKS*(vla-get-Blocks *DOC*)
                       )
                       (setq p (getpoint "\n请指定插入点:" ))
               )
                (mapcar '(lambda(a)   
                                                       (if a
                                                               (progn
                                                                       (vla-InsertBlock *MS*(vlax-3D-pointP) a 1. 1. 1. 0.)
                                                                       (setq p(polar p 0 500))
                                                                       (princ "\n\n")
                                                               )
                                                       )      
                                               )
                        (vlax-for obj*BLKS*(setq outlst (cons (vlax-get-property obj 'Name) outlst)))
                )
        )
        (princ)
)

wutao8282 发表于 2022-4-27 12:31:23

本帖最后由 wutao8282 于 2022-4-27 12:35 编辑

xj6019 发表于 2022-4-27 11:58
你再试试基本没变动,应该是没问题的呀
(defun c:NM (/ *acad* *acdocument* *blks* *doc* *docs* *ms*...
可以了,谢谢大神,块间距不够,部分较大的块重叠一起了,能不能每行最多插入10个,超过10个的插入到下一行,行间距和列间距都是1200,万分感谢:victory:

vitalgg 发表于 2022-4-27 12:41:47

wutao8282 发表于 2022-4-27 11:10
这还是得一块一块插入啊?

一次性 插入dwg中的所有块。第一次输入点为起点,第二次输入点为距离 和方向

xj6019 发表于 2022-4-27 12:53:04

wutao8282 发表于 2022-4-27 12:31
可以了,谢谢大神,块间距不够,部分较大的块重叠一起了,能不能每行最多插入10个,超过10个的插入到下一 ...

自己捣鼓吧!!
页: 1 [2] 3 4
查看完整版本: 跪求大神!如何一键插入图纸中所有的块按1000间隔依次整列排好