找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1470|回复: 7

[求助]:点批量替换为块

[复制链接]
发表于 2008-4-8 14:17:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
[问题描述]
将文件中不同图层的点(每个图层一种类型)分别用相应的图块替换(块或块参照),图块由文件读入(一个图块存为一个文件,如同CASS中的图块定义)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 10418个

财富等级: 富甲天下

发表于 2008-4-8 19:48:58 | 显示全部楼层
因为不知道图块名称和图层名称,只能写个小程序做样板。
[php]
;;点换块 晓东 zxq0220 2008.4.8
(defun c:tt ()
(setvar "CMDECHO" 0)
(setq oldos (getvar "OSMODE"))
(setq blknm (getstring "\nBlock Name :"))
(if (setq ss (ssget '((0 . "POINT")))) (progn
  (setvar "OSMODE" 0)
  (setq i -1)
  (repeat (sslength ss)
   (setq en (ssname ss (setq i (1+ i)))
         ent (entget en)
         pt (cdr (assoc 10 ent)))
   (command ".insert" blknm pt "" "" "")
  )
  (command ".erase" ss "")
))
(setvar "OSMODE" oldos)
(setvar "CMDECHO" 1)
(princ)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-4-8 21:15:40 | 显示全部楼层
2楼楼主,这个程序生成块的同时删除了点,能不能在保留原来点的基础上批量插入块呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-8 21:40:52 | 显示全部楼层
2楼楼主,那么怎么读取一个文件中的图形作为块呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10418个

财富等级: 富甲天下

发表于 2008-4-9 08:13:28 | 显示全部楼层
要想不删点将(command ".erase" ss "")去掉或注解就行。
读取一个文件中的图形作块?不太明白。是一个文件中有许多图形,而这些图形都是块呢?还是这些图形不是块要做成块呢?
总之:如果将图形文件本身当成块是可以的;如果一个图形中有许多制作好的块也是可以的。不过要打散插入。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-9 22:14:23 | 显示全部楼层
例如,我要把图层“3421”中的所有点用文件A001.dwg文件来替换,LISP应该怎么写?

(A001.dwg中只包含一个特定的图形,即是说它就是一个块)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-4-9 22:58:17 | 显示全部楼层
(defun c:xgpoint ()
  (setq m (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq m1 (getvar "clayer"))
  (setvar "clayer" "gcd")
  (setq q3 (getvar "osmode"))
  (setvar "osmode" 0)
  
  ......  
  
  (setq i (+ 1 i))
  (command "copy" f1 "" "m" point)
  (while (< i (- b 1))
    (setq c (ssname a i))
    (setq point1 (cdr (assoc 10 (entget c))))
    (command point1)
    (setq i (1+ i))
  )
  (command "")
  
  (setvar "cmdecho" m)
  (setvar "clayer" m1)
  (setvar "osmode" q3)
  (princ "已完成!")
  (princ)
)

该程序已调试成功,注意一点请将您的A001.dwg文件放入d:根目录,其问题联系:ljttjl   @    tom .  com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10418个

财富等级: 富甲天下

发表于 2008-4-10 23:11:34 | 显示全部楼层
[php]
;;点换块 晓东 zxq0220 2008.4.10
(defun c:tt ()
(setvar "CMDECHO" 0)
(setq oldos (getvar "OSMODE"))
(if (setq blknm (findfile "A001.dwg"))
  (if (setq ss (ssget '((0 . "POINT") (8 . "3421"))) (progn
   (setvar "OSMODE" 0)
   (setq i -1)
   (repeat (sslength ss)
    (setq pt (cdr (assoc 10 (entget (ssname ss (setq i (1+ i)))))))
    (command ".insert" blknm pt "" "" "")
   )
;  (command ".erase" ss "")
  ))
)
(setvar "OSMODE" oldos)
(setvar "CMDECHO" 1)
(princ)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 18:47 , Processed in 0.465794 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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