找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1363|回复: 17

[分享]:基点跟随的多重复制程序

[复制链接]
发表于 2004-7-4 16:40:34 | 显示全部楼层 |阅读模式

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

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

×
copy + m 方式进行复制时,复制的基点总是不变的,大家试试这个基点自动跟随的多重复制方式。
[PHP]
(defun c:tt ()  
  (defun ss:get_after        (ent / ss sub_ent)
    (setq sub_ent '("VERTEX" "SEQEND" "ATTRIB"))
    (setq ss  (ssadd))
    (while (setq ent (entnext ent))
      (if (member (cdr (assoc 0 (entget ent))) sub_ent)
        ()
        (setq ss (ssadd ent ss))
      )
    )
    ss
  )
  (setq ss (ssget))
  (setq p1 (getpoint))
  (while (not (equal p1 pt 1e-4))
    (setq last-ob (entlast))
    (setq pt p1)
    (vl-cmdf "._copy" ss "" "non" pt)
    (while
      (/= 0 (getvar "cmdactive"))
       (vl-cmdf PAUSE)
    )
    (setq ss (ss:get_after last-ob))
    (setq p1 (getvar "lastpoint"))
  )
  (princ)
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-7-4 22:06:21 | 显示全部楼层
最后回车退出会多出一个拷贝
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-7-4 23:06:11 | 显示全部楼层
漏了一句:
(defun c:tt ()   
  (defun ss:get_after    (ent / ss sub_ent)
    (setq sub_ent '("VERTEX" "SEQEND" "ATTRIB"))
    (setq ss  (ssadd))
    (while (setq ent (entnext ent))
      (if (member (cdr (assoc 0 (entget ent))) sub_ent)
    ()
    (setq ss (ssadd ent ss))
      )
    )
    ss
  )
  (setq ss (ssget))
  (setq p1 (getpoint))
  (while (not (equal p1 pt 1e-4))
    (setq last-ob (entlast))
    (setq pt p1)
    (vl-cmdf "._copy" ss "" "non" pt)
    (while
      (/= 0 (getvar "cmdactive"))
       (vl-cmdf PAUSE)
    )
    (setq ss (ss:get_after last-ob))
    (setq p1 (getvar "lastpoint"))
  )
  (command "._erase" ss "")[/COLOR]   (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-6 15:43:07 | 显示全部楼层
[php]
;; mcp = 带基点连续拷贝------陌生人.2004.7
(defun c:mcp ( / ss pt pt2)
  (if (vl-cmdf ".copy" (setq ss (ssget)) "" (setq pt (getpoint "\n复制基点:")) "@")
    (progn
      (while (and (vl-cmdf ".move" ss "" pt pause)
                  (not(equal pt (setq pt2 (getvar "lastpoint")))))
             (vl-cmdf "@" ".copy" ss "" (setq pt pt2) "@")
      )
      (vl-cmdf ".erase" ss "" )
    )
  )
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-6 23:05:15 | 显示全部楼层
最初由 陌生人 发布
[B][php]
;; mcp = 带基点连续拷贝------陌生人.2004.7
(defun c:mcp ( / ss pt pt2)
  (if (vl-cmdf ".copy" (setq ss (ssget)) "" (setq pt (getpoint "\n复制基点:")) "@")
    (progn
      (while (an... [/B]

不错,更简洁。但是,(vl-cmdf "@" ".copy" ss "" (setq pt pt2) "@") 这一句里面第一个"@" 好像是多余的。在2005里面提示“未知命令@"。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-7 12:22:33 | 显示全部楼层
谢谢提出。这是调试的时候不小心剩下的遗留物,邪门,没有影响程序进程。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-7-12 22:34:27 | 显示全部楼层
楼上的代码运行起来停顿很明显,不爽!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-7-13 00:39:43 | 显示全部楼层
最初由 wkai 发布
[B]楼上的代码运行起来停顿很明显,不爽! [/B]


他相当于4次命令.

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

使用道具 举报

发表于 2004-7-13 19:38:46 | 显示全部楼层
(vl-cmdf "._copy" ss "" "non" pt)
    (while
      (/= 0 (getvar "cmdactive"))
       (vl-cmdf PAUSE)
    )
这里只有一个pause,用(getvar "cmdactive") 判断没有必要,这个用法只有当需要响应不定量的pause才有必要用,如copy ss "" "m" ...

且(vl-cmdf "._copy" ss "" "non" pt) 的必然结果是(/=  0(getvar "cmdactive")) ,因此直接pause就可以了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-7-8 08:44:01 | 显示全部楼层
最初由 wkai 发布
[B]漏了一句:
(defun c:tt ()   
  (defun ss:get_after    (ent / ss sub_ent)
    (setq sub_ent '("VERTEX" "SEQEND" "ATTRIB"))
    (setq ss  (ssadd))
    (while (setq ent (entnext ent))
      (if... [/B]

一个不太影响使用的小bug,tt后直接空回车应退出程序,不应还要求选择基点
吹毛求疵了
这是目前为止最好的多重复制了,可以看作ET工具中copym的加强版(可定距离)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-1 19:43:24 | 显示全部楼层
民工今天跟eachy说起acad自带的复制在多重复制时由于基点始终是第一点而不是“上一点”以至于很不好用时才得知wkai一早已经写了这个程序了而且是两年前的时候真的是很懊恼自己的失败(这句话有3~4个逗号1个句号你们自己加了)

另外,也要批评一下wkai,你当时不应该悄悄的发这个帖子,应该是提着一只火腿2只龙虾来找民工帮你测试测试的......
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-1 22:25:20 | 显示全部楼层
:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-2 14:00:52 | 显示全部楼层
我怎麼在網業上面打不了字
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-6-2 14:25:16 | 显示全部楼层
最初由 陌生人 发布
[B][php]
;; mcp = 带基点连续拷贝------陌生人.2004.7
(defun c:mcp ( / ss pt pt2)
  (if (vl-cmdf ".copy" (setq ss (ssget)) "" (setq pt (getpoint "\n复制基点:")) "@")
    (progn
      (while (an... [/B]


速度只是次要的!
如果有个带了与有关联的东东比如dim。hatch等什么的有联系的话
用你这个可是要出错的哦!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-2 19:09:28 | 显示全部楼层
一个是构造新实体选集再拷贝,一个是先原地拷贝,再移动。
后者多了一个命令,所以速度慢一些,选集内容多的时候会有迟钝。
楼上说的,如果出现这样的问题,那两个程序都会出现(我理解是,都用了cad的基本命令)。
不知道,出错是指怎么个出错法?
另给wkai版主提一条改进意见:
当拷贝的第一次不选基点或不指定拷贝点,而是回车退出的话,没有能干净的退出。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 19:58 , Processed in 0.202165 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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