AutoCAD中的Deep Clone

摘要:
AutoCAD中的Deepclone所谓的Deepclone是指通过在单个dwg文件Retval=obj中输入命令“copy”,将实体从一个dwg文件复制到另一个dw文件。CopyObjects(objects[,this owner1将调用CopyObjects的obj(文档或数据库),并仅在当前文件中复制(2)此方法在读写模式下执行。
AutoCAD中的Deep Clone

所谓Deep clone是指将实体从一个dwg文件拷贝至另一个dwg文件,类似于Ctr+C,CtrV,而普通的实体的Copy()方法,是在单个dwg文件中输入命令'copy',

在Pycomcad中,实现deep colone是通过Document的CopyObjects方法实现的,语法如下:

Retval=obj.CopyObjects(objects[,Owner][,IDPairs])

Retval:新创建的复制的对象组,在pycomcad中,返回的是包含复制后的对象的元组。
obj:Document,Database
objects:需要被deep clone的对象组(变体),该对象组必须在同一个owner1中,这个owner1就是调用CopyObjects的obj(Document或者Database),在pyccomcad中,可通过VtObject()函数转换。
Owner:可选参数,单个对象(变体),其他文件的ModeSpace。
IDPairs:可选参数。Input:an empty variant,在pycomcad中,为idp=win32com.client.VARIANT(pythoncom.VT_VARIANT, ()) .
Output:IDPair objects组.

需要说明的有2点:(1)当不输入owner,IDParis时,仅在当前文件内复制(2)该方法在读-写模式下进行,所以在迭代完成后,再调用该方法,否则迭代进行中,文件是仅读模型,该操作将失败。

import sys 
sys.path.append(r'G:PycharmProjectPycomCADPycomCAD')
from pycomcad import *
acad=Autocad()
acad.CurrentFilename
'Drawing1.dwg'
obj=acad.AddCircle(Apoint(0,0,0),10)
acad.CreateNewFile()
acad.ActivateFile('Drawing1.dwg')
acad.OpenedFilenames
['Drawing1.dwg', 'Drawing2.dwg']
acad.CurrentFilename
'Drawing1.dwg'
objs=VtObject(obj)
owner=acad.GetOpenedFile('Drawing2.dwg').ModelSpace  #新文档的ModelSpace
type(owner)
win32com.gen_py.4E3F492A-FB57-4439-9BF0-1567ED84A3A9x0x1x0.IAcadModelSpace
import win32com,pythoncom
acad.IsEarlyBind
True
idp=win32com.client.VARIANT(pythoncom.VT_VARIANT, ()) # IDPairs:Empty Variant 
test2=acad.acad.ActiveDocument.CopyObjects(objs,owner,idp)
test2[0][0].Move(Apoint(0,0,0),Apoint(10,10,0))

Try Deep clone mutiple objects using GetSelectionSets

slt=acad.GetSelectionSets('slt')
slt.SelectOnScreen()
objss=VtObject(slt.Item(0),slt.Item(1),slt.Item(2))
test3=acad.acad.ActiveDocument.CopyObjects(objss,owner,idp)
len(test3[0])
1
len(test3[1])
35
test3[0][0].Move(Apoint(0,0,0),Apoint(10,10,0))  # Move the  cloned circle in the new file.
len(test3[0])
3

免责声明:文章转载自《AutoCAD中的Deep Clone》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇K8S踩坑篇-master节点作为node节点加入集群MVC+EF Core 完整教程20--tag helper详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python之字符编码与文件操作

目录 字符编码 Python2和Python3中字符串类型的差别 文件操作 文件操作的方式 文件内光标的移动 文件修改 字符编码 什么是字符编码? ''' 字符编码就是制定的一个将人类的语言的字符与二进制数据一一对应地翻译过来的标准。 ''' 字符编码的发展史与分类: 计算机最早的字符编码为ASCII,只规定了英文字母、数字和一些特殊字符与数字一一...

git查看某个文件的修改历史

<转自 http://www.cnblogs.com/flyme/archive/2011/11/28/2265899.html> 有时候在比对代码时,看到某些改动,但不清楚这个改动的作者和原因,也不知道对应的BUG号,也就是说无从查到这些改动的具体原因了~ 【注】:某个文件的改动是有限次的,而且每次代码修改的提交都会有commit描述,我们可...

Linux下MySQL安装及配置

Linux下MySQL安装及配置 安装MySQL   Ubuntu系统中,直接使用apt install的方式去安装MySQL的服务端和客户端,MySQL的客户端必须安装,否则无法通过命令连接并操作MySQL。安装命令如下:   apt install -y mysql-server mysql-client   管理MySQL服务   启动、停止和重启服...

记CentOs服务器内存使用满的解决办法

使用的一个应用服务器,weblogic部署,nginx分配,在使用了半个月的时间里,服务器内存达到杀掉服务器进程之后查看被删除但是仍然被应用程序占用的文件列表由于我删掉了日志里所以东西,所以导致后来我又得使用了一个命令由于我删了日志里的ngnix.pid 但是我删除的只是结尾log日志呀,不知道怎么就把pid结尾文件删除了,奇怪反正就报这个错“/usr/l...

flowplayer网页视频播放器事例详解--包含各种参数说明(自译)

flowplayer网页视频播放器事例详解--包含各种参数说明(自译) <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">     <title></title>     <meta http-eq...

Windows 7文件权限工具 v1.0

  不少Windows 7用户会发现就算是管理员权限也无法顺利完成对系统文件的修改,这个主要是由于Windows 7中改进了对系统文件的保护,这也使得替换和修改Windows 7的文件远没有XP方便的一个重要原因。   Windows 7文件权限工具 很早之前就开始制作的一个小工具,原理很 简单,基于注册表的修改来获得对系统文件的修改权限。可能那些使用...