python - pyautocad 给出不可谷歌的错误

标签 python python-3.6 autocad

OSError: [WinError -2147221005] Invalid class string

完整的回溯

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/MONSTR/Desktop/Ванжые/Yusuf bey/GUI/test1.py", line 10, in <module>
    for text in acad.iter_objects('Text'):
  File "C:\Users\MONSTR\AppData\Local\Programs\Python\Python36\lib\site-packages\pyautocad\api.py", line 111, in iter_objects
    block = self.doc.ActiveLayout.Block
  File "C:\Users\MONSTR\AppData\Local\Programs\Python\Python36\lib\site-packages\pyautocad\api.py", line 74, in doc
    return self.app.ActiveDocument
  File "C:\Users\MONSTR\AppData\Local\Programs\Python\Python36\lib\site-packages\pyautocad\api.py", line 67, in app
    self._app = comtypes.client.CreateObject('AutoCAD.Application', dynamic=True)
  File "C:\Users\MONSTR\AppData\Local\Programs\Python\Python36\lib\site-packages\comtypes\client\__init__.py", line 227, in CreateObject
    clsid = comtypes.GUID.from_progid(progid)
  File "C:\Users\MONSTR\AppData\Local\Programs\Python\Python36\lib\site-packages\comtypes\GUID.py", line 78, in from_progid
    _CLSIDFromProgID(str(progid), byref(inst))
  File "_ctypes/callproc.c", line 918, in GetResult
OSError: [WinError -2147221005] Invalid class string

当我尝试从 here 编译此代码时,出现此错误

from pyautocad import Autocad, APoint

acad = Autocad()
acad.prompt("Hello, Autocad from Python\n")
print(acad.doc.Name)

p1 = APoint(0, 0)
p2 = APoint(50, 25)
for i in range(5):
    text = acad.model.AddText('Hi %s!' % i, p1, 2.5)
    acad.model.AddLine(p1, p2)
    acad.model.AddCircle(p1, 10)
    p1.y += 10

dp = APoint(10, 0)
for text in acad.iter_objects('Text'):
    print('text: %s at: %s' % (text.TextString, text.InsertionPoint))
    text.InsertionPoint = APoint(text.InsertionPoint) + dp

for obj in acad.iter_objects(['Circle', 'Line']):
    print(obj.ObjectName)

在谷歌上搜索了几个小时后,我决定在这里思考
可能是什么原因?

最佳答案

发生该特定错误是因为您的程序无法正确打开 AutoCAD;但是当我自己打开AutoCAD然后运行你的代码时,出现以下错误:

_ctypes.COMError: (-2147467262, 'No compatible interface', (None, None, None, 0, None))

根据我的经验,COMError 经常由于与所使用的程序的连接不良而出现。我通过将 win32compyautocad 结合起来解决了此类问题。对于这个特殊情况,它会是这样的:

from pyautocad import Autocad, APoint
import win32com.client

AutoCAD = win32com.client.Dispatch("AutoCAD.Application")
acad = Autocad(create_if_not_exists = False)

p1 = APoint(0, 0)
p2 = APoint(50, 25)

for i in range(5):
    text = acad.model.AddText('Hi %s!' % i, p1, 2.5)
    acad.model.AddLine(p1, p2)
    acad.model.AddCircle(p1, 10)
    p1.y += 10

dp = APoint(10, 0)
for text in acad.iter_objects(['Hi']):
    print('text: %s at: %s' % (text.TextString, text.InsertionPoint))
    text.InsertionPoint = APoint(text.InsertionPoint) + dp

for line in acad.iter_objects(dont_cast = True):
    print(line.ObjectName)

AutoCAD.Visible = True

关于python - pyautocad 给出不可谷歌的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48826570/

相关文章:

python - 将 `__str__` 方法添加到 Boost Python C++ 类时的构建问题

python - 如何使用 Django Streaming HTTPS Response 正确渲染图像?

excel - 如何在 Pandas 数据框列中插入逗号作为千位分隔符?

python - 如何在 pyautocad 中访问 block 引用属性

c# - 如何通过 Lambda 表达式创建 AutoCAD 对象并返回它

python - HTTP header 被 `urllib3.exceptions.HeaderParsingError: [MissingHeaderBodySeparatorDefect()], unparsed data` 切成两半

python - child 大小改变后缩小 parent 小部件

python - 如何在 tkinter text =""属性中包含变量名称?

python 3.6 和 ValueError : loop argument must agree with Future

excel - AutoCad VBA 查找现有 block 的 X 和 Y 位置