明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4011|回复: 14

[求助]哪位大师能帮我写一个替换图块的LISP程序吗?

  [复制链接]
发表于 2002-11-14 16:51:00 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2002-11-14 17:10:00 | 显示全部楼层

也许会有点帮助

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2002-11-14 18:01:00 | 显示全部楼层

CAD本身就有这个功能用不着写程序。重定义块就行了。

 楼主| 发表于 2002-11-14 18:25:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2002-11-14 23:43:00 | 显示全部楼层

用选择集函数SSGET得到要替换A块的实体名

用选择集函数SSGET得到要替换A块的实体名,逐一获取A块的插入点,
(可用表的形式表示),然后再从上述表中逐一读取插入点插入B块
即可。
发表于 2002-11-15 11:39:00 | 显示全部楼层

呵呵,你太懒了

 楼主| 发表于 2002-11-16 15:38:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2002-11-16 23:22:00 | 显示全部楼层

XDCAD.NET

XDCAD。NET 有,不过昨天晚上又黑了
发表于 2002-11-19 08:00:00 | 显示全部楼层

Try this example

本帖最后由 作者 于 2002-11-19 8:00:48 编辑

(defun C:RB (/ SE1 N A0 BN E0 E1)
  (prompt "\n选择要替换的图块: ")
  (setq        SE1 (ssget '((0 . "INSERT")))
  )
  (if SE1
    (progn
      (setq BN (getstring "\n来源图块名称/<Enter选取来源图块>: "))
      (if (= BN "")
        (progn
          (while (= A0 NIL)
            (prompt "\n选取来源图块: ")
            (setq A0 (ssget ":S" '((0 . "INSERT"))))
          )
          (setq BN (cdr (assoc 2 (entget (ssname A0 0)))))
        )
      )
      (command "_.insert" BN (command))
      (setq N 0)
      (repeat (sslength SE1)
        (setq E0 (ssname SE1 N)
              E1 (entget E0)
        )
        (setq E1 (subst (cons 2 BN) (assoc 2 E1) E1))
        (entmod E1)
        (entupd E0)
        (setq N (1+ N))
      )
    )
  )
  (princ)
)
发表于 2002-11-18 19:22:00 | 显示全部楼层

直接换dxf2码,对含属性时不替换,否则要在程序里面定义attrib,

本帖最后由 作者 于 2002-11-18 19:22:03 编辑

用insert更要考虑属性的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 21:34 , Processed in 0.155082 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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