利用pyautocad在dwg中插入一个块

代码如下:

from pyautocad import Autocad,APoint

acad = Autocad(create_if_not_exists = True)
acad.prompt("hello, cad\n")
p1 = APoint(0,0)
acad.model.InsertBlock(p1,"D:\python\MyPyAutoCADProjects\lightingbox.dwg")
print acad.doc.Name

文件路径没有错,运行错误,错误提示如下:

hello, cad

Traceback (most recent call last):
File "D:\python\MyPyAutoCADProjects\insertBlock.py", line 10, in
acad.model.InsertBlock(p1,"D:\python\MyPyAutoCADProjects\lightingbox.dwg")
File "C:\Python27\lib\site-packages\comtypes\client\lazybind.py", line 163, in caller
return self._comobj._invoke(descr.memid, descr.invkind, 0, *args)
File "C:\Python27\lib\site-packages\comtypes\automation.py", line 664, in _invoke
dp, var, None, argerr)
COMError: (-2147352562, '\xce\xde\xd0\xa7\xb5\xc4\xb2\xce\xca\xfd\xca\xfd\xc4\xbf\xa1\xa3', (None, None, None, 0, None))

弄了一个晚上了,求大神指点迷津。

1个回答

com错误,应该是你传的参数dwg文件可能有问题

解决了,把后面的几个选填的参数补齐就可以了。
acad.model.InsertBlock(p1,"D:\python\MyPyAutoCADProjects\lightingbox.dwg",1,1,1,0)
真是醉了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C# dwg文件插入到另一个dwg块,请教高手
[color=#FF0000]C# dwg文件插入到另一个dwg文件rnrn网上有代码 但没有源码。谁会啊?[/color]rn[color=#FF00FF]以下代码网上搜索的但不知道咋用 谁有没有例子啊?[/color]rn[code=csharp]rn1.在cad2012环境下:rnrn须引用objectarx开发包rnrnPromptPointResult ppr = ed.GetPoint("请选择插入点:"); rn rnPoint3d pt = ppr.Value; //这里获得插入点rn rnutility.WriteToEditor(pt.ToString()); rn rnblockPath = "b_sample.dwg";rnusing (Database blkDb = new Database(false, true)) rn rn rn //read drawing rn rn blkDb.ReadDwgFile(blockPath , System.IO.FileShare.Read, true, null); rn rn blkDb.CloseInput(true); rn rn using (DocumentLock docLock = doc.LockDocument())//多文档要先这样,否则报至命错误 rn rn rn rn using (Transaction t = doc.TransactionManager.StartTransaction()) rn rn rn string name=“aa”;//aa是不与blockPath文件中的任何块重名的字符串rn //insert it as a new block rn rn ObjectId idBTR = doc.Database.Insert(aa, blkDb, false); rn rn //create a ref to the block rn rn BlockTable bt = (BlockTable)t.GetObject(doc.Database.BlockTableId, OpenMode.ForRead); rn rn BlockTableRecord btr = (BlockTableRecord)t.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite); rn rn using (BlockReference bref = new BlockReference(pt, idBTR)) //pt是一个Point3D坐标,这里是插入进当前dwg文件中rn rn rn rn btr.AppendEntity(bref); rn rn t.AddNewlyCreatedDBObject(bref, true); rn rn rn rn t.Commit(); 就是这样 谢谢rn rn rnrnrnrnrnrnrn2.脱离CAD环境下rnrn需引用TDWGNET开发包rnrn using (new Services())rn rn using (Database db = new Database(true, true))rn rn using (Transaction ts = db.TransactionManager.StartTransaction())rn rn using (BlockTable bt = ts.GetObject(db.BlockTableId,OpenMode.ForWrite) as BlockTable)rn rn BlockTableRecord btr1 = new BlockTableRecord();rn Database odb = new Database(false, false);rn odb.ReadDwgFile("aaa.dwg", FileOpenMode.OpenForReadAndAllShare, true, null);rn odb.CloseInput(true);rn ObjectId objid = db.Insert("aa", odb, false);//这里插入进当前的dwg文件了rn BlockTableRecord btr = new BlockTableRecord();//这里是插入另一个块rn btr.Name = "000";rn Circle c = new Circle(new Point3d(0, 0, 0), Vector3d.ZAxis, 100);rn btr.AppendEntity(c);rn ts.AddNewlyCreatedDBObject(c, true);rn bt.Add(btr);rn ts.AddNewlyCreatedDBObject(btr, true);rn rn ts.Commit();rn rnrnrn //using (Transaction ts = db.TransactionManager.StartTransaction())rn //rn // using (BlockTable bt = (BlockTable)ts.GetObject(db.BlockTableId, OpenMode.ForRead))rn // rn // BlockTableRecord btr=ts.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;rn // BlockReference br = new BlockReference(new Point3d(0, 0, 0), bt["aa"]);//这里是插入块于当前的dwg中rn // btr.AppendEntity(br);rn // ts.AddNewlyCreatedDBObject(br, true);rn // rn // ts.Commit();rn //rn db.SaveAs(path + "\\test.dwg", DwgVersion.Current);//保存文件rn rn rn rnrnrnrnrn[/code]
python环境下用pyautocad包调用cad新建一个dwg并且插入2个块,目前是同一个点
python环境下用pyautocad包调用cad新建一个dwg并且插入2个块,目前是同一个点 from pyautocad import Autocad,APoint acad = Autocad(create_if_not_exists = True) acad.prompt("hello, cad\n") p1 = APoint(0,0) acad.model.InsertBlock(...
家具dwg块图
常用家具dwg图集锦,包括沙发、窗帘、桌子、及各种你想要的图块。
如何获取dwg文件中块的标签
?????????????????????
等边角钢动态块.dwg
CAD角钢动态土块,文件中包含了动态图块的使用方法,供有兴趣的朋友学习借鉴
python利用pyautocad绘制岩体产状
1.读取EXCEL表相应数据 2.插入block块 3.根据表格数据旋转block角度 4.增加文字注释 acad.model.InsertBlock(p3,"D:\\python\\dccz.dwg",1,1,1,0)中后续参数的含义:Scale/X/Y/Z/Rotate 并且rotate中为弧度,非度。以下为实现代码: #by helix 94430966@qq.com fro...
利用teigha制作dwg无单位块工具开发
本篇文章是利用teigha这个库来执行cad的dwg文件相关操作。利用该库读取了dwg数据库,然后对数据库复制块,设置块的单位为无。开发这样功能工具的缘由,来源于dwg文件是由arcgis转换过来的,其中带有投影信息,在进行坐标转换的时候出现由于投影信息的缘故,使文件数据库dwg文件的单位为英寸,导致了坐标转换出现了很大的偏差。而我们有相当数量这样的文件,为此急需开发这样的小工具。 而如果是使用...
autocad 插入一个外部块
问题 因为需要,需要在图里指定位置插入外部块rn方法 使用VBA程序rn环境 AUTOCAD 2004rnrn因为量大,需要在图里多个位置一次插入多个外部块
pyautocad,tablib安装以及pyautocad的简单使用
1 Autocad安装 https://jingyan.baidu.com/article/e3c78d6466dc873c4c85f58b.html 2 pyautocad 如果已安装Anaconda,在 Anaconda Prompt 中输入 pip install pyautocad 即可自动完成库的导入。 3tablib 打开cmd,然后输入 python –m pi...
炸开多重插入块
AUTOCAD炸开多重插入块、
CAD软件插入块
●单击菜单栏,“绘图”>“插入块”。 ●单击绘图工具栏”插入块命令”按钮。 ●在命令行中输入Insert,按回车键。 浏览:选择图块文件。 插入点:可以在界面上指定,或者在图面上动态输入。 比例:图块的缩放比例,可以在图面上动态输入,或直接在界面上输入。 旋转:指定图块的旋转角度,可以界面上直接输入,或在图面上动态输入。 ...
用C#读取CAD的DWG文件中引用块的坐标
在C#中,ssetObj.Item(x);是某个选择集里的块引用之一,我想获取块引用的插入坐标X、Y:rnAutoCAD.AcadBlockReference refblock=(AcadBlockReference)ssetObj.Item(x);rnobject point=refblock.InsertionPoint;rn这样为什么出错呢?出错信息:“未将对象引用设置到对象实例”rn另外InsertionPoint返回的是object 类型的,怎么样取出坐标的X、Y值呢?谢谢!rnrn另外现已经知引用块的句柄,能获取它的坐标吗?
python下用pyautocad小试牛刀
python下用pyautocad小试牛刀 画点,线,圆,文字等, 获取对象,插入点,查找特定文字等 # -*- coding: UTF-8 -*- from pyautocad import Autocad,APoint acad = Autocad(create_if_not_exists=True) acad.prompt("Hello, Autocad from Python\n") p...
接pyautocad的实例
import openpyxl from pyautocad import Autocad,APoint import sys reload(sys) sys.setdefaultencoding("utf-8") wb=openpyxl.load_workbook("a.xlsx") sheet=wb.get_sheet_by_name("Sheet1") data=[] px=[] py=[]
在CAD中如何用VBA插入一个外部参照块
在CAD中如何用VBA插入一个外部参照块 VBA 代码
新浪博客插入代码(块)及代码高亮…
新浪博客不能插入代码是一件非常尴尬的事情。 这里将介绍如何在新浪博客中加入代码块及其高亮的方法。 所需工具: (1)XAMPP数据创建软件 (2)wordpress 与 codecolorer (3)CSDN博客 步骤: (1)安装wordpress 与 codecolorer 插件      参考网址:http://jingyan.baidu.com/article/86112f13582848
CAD 解除多重插入块
可以解开锁定的CAD图,具体做法很简单,里面文档有说明
一个关于dwg的问题
1、能打开cad的dwg文件,能放大和缩小rn2、生成一个exe文件,将dwg文件包含在其中rn请指点.
到哪里找能插入.dwg文件的控件呢?
各位朋友:rn 最近我用vc写一个程序,需要一个能在对话框中插入.dwg文件(是AUTOCAD文件)的控件,却久觅不得,盼望您的帮助。rn 如果哪位能告诉我如何在对话框中插入.bmp文件的具体方法,我再三鞠躬了。rn
急!!!如何将dwg文件插入access
本人用odbc将autocad 的dwg文件插入access的ole字段中,总是出错,但插入位图文件却没问题,请高手帮忙,或给个例子,非常感谢!!!
dwg播放器DWG播放器
只为观看DWG文件,特点:绿色·无毒·安全·便捷。。
*.dwg
*.dwg 用什么打开rnrn谢谢
DWG 文件插入 office word 文档工具插件
DWG 图形查入 word 文本文档 工具插件
如何通过OLE在应用程序中插入DWG文件
急..分不够,可另开帖加分
pyautocad提取CAD兴趣点坐标
python利用pyautocad库提取CAD兴趣点坐标;python3.6利用pyautocad库提取CAD兴趣点坐标。
CAD教程|CAD图块全攻略第一期——插入块和定义块
今天 技术邻小编 立志要写一套 全网最全的 CAD图块全攻略! 序章    块是什么 在 AutoCAD 中,块是合并到单个对象的一个集合。 合理的使用块会提高绘图效率,减少运行内存,最主要的是让你看起来更叼! 下面是一些常用作块的例子。 其中的一些块是对象的真实图示,一些是符号,其中之一是 D 尺寸
如何将块中一个变量的计算结果传到块外,
我有一个过程必须用动态sql, rn 如何将块中一个变量的计算结果传到块外,不要用异常或数据库。rnrn 象这样:rn DECLARErn time DATE;rn str VARCHAR2 (200);rn BEGINrn str := 'select sysdate from dual';rn EXECUTE IMMEDIATE strrn INTO time;rn dbms_output.put_line(i);rn END;rnrn 但我的块并不是一句sql;如何办到,多谢。
谁做过提取DWG块属性值的吗?求指教!
最近需要从做一个读取DWG文件中块属性值,但是不打开CAD,用代码修改块属性中某一个值,然后再保存,生成新的DWG文件,最后转换成JPG文件显示,DWGdirect能实现吗?请做过的朋友们指条路!
鹏宇成DWG块属性提取工具.zip
DWG块属性提取工具,由北京鹏宇成软件技术有限公司出品,是一款完全独立运行的,用于提取DWG格式内块属性的应用产品。 声明:运行此产品,无需安装AutoCAD。运行安装包内的安装程序,按照安装向导提示,直到完成安装,桌面会出现产品的快捷方式。 小巧、兼容广泛;支持AutoCAD2006-AutoCAD2012版本DWG图档;无需安装AutoCAD; 更多请访问DWG块属性提取工具用户手册V2.0.0
dwg浏览,看dwg文件
看dwg文件,免费版。
LiteCAD参考文档的学习二(命令接口,命名对象之块、块的引用、块的属性、命令接口块的插入、块的复制)
LiteCAD API reference 五、Command Interface Almost all functionality can be accessed via the lcWndExeCommand function. In contrast to programmatically managing entities, the command interface permits ...
一个try块和两个catch块
一个程序包含一个try块和两个catch块,两个catch子句都有能力捕捉一个try块发出的异常,若两个catch子句次序不同时程序结果会发生变化吗? 一个try块后有两个catch块,这很正常,因为,在try块中包含众多语句,可能抛出多种不同的异常,只有通过多个catch块来捕获不同的异常。而如果两个异常存在继承关系,应该把子类异常放在你类异常的前面来捕获.   Java code
利用SQL语句插入
数据库ACCESSrnrn表table1:rn字段rna b crnrn表table2:rn字段rnb drnrn表table1与表table2中字段b部分内容相同rnrn要求:根据相同字段b将表table2中字段d中的内容插入到table1中,rn 如何用SQL语句实现?rn rn
利用嵌套插入!
我在做一个bbs时,做一个论坛区,然后论坛区也要小区,当我 从数据库中取数据的时候,论坛区我可以从数据库中取出来,但是我要是再在里面嵌套一个循环就会把里面的小区都循环了rnrn问题是:小区的数据传到页面后怎么能判断是属于哪个论坛区的就把它放在该区?
鼠标移动一个块与另一个块进行碰撞检测
jquery,鼠标移动,碰撞检测
如何利用EndNote,在word中插入参考文献
首先在EndNote中选中文献, 接着在word中将光标放在需要插入文字的后面,点击Insert Citation下面的Insert Selected Citation
Typora中利用LaTeX 插入数学公式
LaTeX 插入数学公式 利用Typora进行资料总结时,遇见公式,一般的方法是剪切粘贴,但过于麻烦,因此学习利用LaTeX进行公式编辑,Typora对Latex进行了很好的支持,对Latex插入公式进行简单总结学习 本文内容参考https://blog.csdn.net/baidu_38060633/article/details/79183905 在Typora上进行了实验。 LaTeX 编辑...
利用反射实现 MVC中的 数据插入
最近在学研究反射,感觉功能很强大,闲着没事就写了个小Demo.希望到时候能实现所有页面根据模型生产,所有增删改集成到控制器的一个方法中。   界面如下:很简单的一个Form表单,点击按钮后提交到服务器 页面Html代码:
如何利用asp在字符串中插入空格
例如有个字符串 “中国的人故事”rn插入空格后,就变成了“中 国 人 的 故 事 ”rn请个位多多帮忙!!
CSDN 中利用 LaTex 插入数学公式
LaTex 是一个很强大的数学公式书写工具,最近发现 CSDN 的 markdown 编辑器支持部分 LaTex 功能,很是神奇。这篇文章简单介绍一下了一些比较常用的数学公式和矩阵的书写。
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池