找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 647|回复: 9

[LISP程序]:多图档文件克隆实体

[复制链接]
发表于 2004-9-10 07:36:14 | 显示全部楼层 |阅读模式

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

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

×
下面程序点击当前图形中的圆, 自动在其他所有图形文件中生成相同圆心半径的圆:
[php]
(defun c:test ()
  (vl-load-com)
  (setq doc (vla-get-Documents (vlax-get-acad-object)))
  (setq cir (car (entsel "\nSelect Circle: ")))
  (setq  pc (cdr (assoc 10 (entget cir))))
  (setq   r (cdr (assoc 40 (entget cir))))
  (vlax-for i doc
    (setq ms (vla-get-modelspace i))
    (vla-addcircle ms (vlax-3d-point pc) r)
  )
  (princ)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-9-10 19:08:09 | 显示全部楼层
这好像不是克隆, 只是绘制  以为实现 跨文档的copy命令 呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2004-9-10 21:31:58 | 显示全部楼层
同意

  1. (defun c:test ()
  2.   (vl-load-com)
  3.   (setq acadobj (vlax-get-acad-object)
  4.         docs (vla-get-Documents acadobj)
  5.         doc (vla-get-activedocument acadobj)
  6.         ss (ssget)
  7.         i -1
  8.         count (sslength ss)
  9.         objs (vlax-make-safearray vlax-vbObject (cons 0 (1- count)))
  10.   )
  11.   (repeat count
  12.     (setq obj (vlax-ename->vla-object (ssname ss (setq i (1+ i)))))
  13.     (vlax-safearray-put-element objs i obj)
  14.   )
  15.   (vlax-for j docs
  16.     (if (not (= (vla-get-hwnd doc) (vla-get-hwnd j)))
  17.       (vla-copyobjects doc objs (vla-get-modelspace j))
  18.     )
  19.   )
  20.   (princ)
  21. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-9-11 10:30:24 | 显示全部楼层
2楼3楼4楼:
如果copyobjects我就说拷贝了. 我说的是:...自动在其他所有图形文件中生成相同...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-9-11 11:39:30 | 显示全部楼层
是麽,要是圆就AddCircle,要是直线就AddLine,。。。。。。
这样你要写多少代码呀,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-9-11 14:41:41 | 显示全部楼层
仅仅用add方法不能有效的保持实体的扩展数据,如果有的话

lzh,谢谢你昨天的指点,不过我下面的代码还是有问题,你帮看看


  1. Sub clone()
  2.    ThisDrawing.SendCommand "(command ""_.copyclip"" (ssget) """") " '这一句还没完成就进入循环了.
  3.    Dim drawing As AcadDocument
  4.     For Each drawing In ThisDrawing.Application.Documents
  5.        drawing.Activate
  6.        ThisDrawing.SendCommand "_.pasteorig" & vbCr
  7.     Next drawing
  8. End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-9-11 23:39:22 | 显示全部楼层
VBA的SendCommand是最头疼的,一般少用,调用CopyObjects方法吧

可以试试
Sub clone()
On Error Resume Next
    Dim ss As AcadSelectionSet
    ThisDrawing.SelectionSets("*Test*").Delete
    Set ss = ThisDrawing.SelectionSets.Add("*Test*")
    ss.SelectOnScreen
    If ss.Count = 0 Then GoTo ErrHandle
    ThisDrawing.SendCommand "_.copyclip" & vbCr & "p" & vbCr & vbCr   
    Dim drawing As AcadDocument
    For Each drawing In ThisDrawing.Application.Documents
        If ThisDrawing.hwnd <> drawing.hwnd Then
            drawing.Activate
            ThisDrawing.SendCommand "_.pasteorig" & vbCr
        End If
    Next drawing
ErrHandle:
End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8644个

财富等级: 富甲天下

发表于 2004-9-13 17:01:33 | 显示全部楼层
感觉还是不很方便:第一,不能决定哪张图需要复制;第二,复制到图中时不能选择基点。还是用粘贴吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 11:58 , Processed in 0.183508 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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