2012-02-17 2 views
1

Com 인터페이스를 통해 AutoCAD를 연결하고 제어해야합니다. 이를 위해 Python을 사용합니다. 매우 기본적인 스 니펫을 사용한 첫 번째 시험에서 오류가 발생했습니다. 코드는Python을 통해 Autocad에 Win32Com 연결이 실패했습니다.

import win32com.client 
acad = win32com.client.Dispatch("AutoCAD.Application") 
doc = acad.ActiveDocument 
doc.Utility.Prompt("Hello from Python\n") 

하고 내가 그것을 실행하려고하면,이 얻을 :

Traceback (most recent call last): 
    File "C:\Users\SBYSMR10\Desktop\recipe-440493-1.py", line 2, in <module> 
    acad = win32com.client.Dispatch("AutoCAD.Application") 
    File "C:\Python26\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch 
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx) 
    File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 108, in _GetGoodDispatchAndUserName 
    return (_GetGoodDispatch(IDispatch, clsctx), userName) 
    File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 85, in _GetGoodDispatch 
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch) 
com_error: (-2147221005, 'Invalid class string', None, None) 

내가 파이썬 2.6 및 AutoCAD LT 2009가 설치되어 있습니다. 나는 그물을 통해 해결책을 찾았지만 couldnt는 무엇이든 찾아 낸다. 이 문제를 해결하도록 도와 줄 수 있습니까? 사전

+1

안녕하세요! :-) 내 블로그의 AutoCAD-Python 연결 코드입니까? 시원한! –

+0

내가 기억할 수있는 한, 예 : – Shansal

답변

5

의 AutoCAD LT 버전

덕분에 자동화 (discussion in Autodesk group)를 지원하지 않습니다.

전체 AutoCAD 버전을 설치할 수 있다면 comtypes 패키지를 사용하는 것이 좋습니다. win32com을 사용하면 AutoCAD에서 유형 코드가 VT_ARRAY | VT_I2 or VT_ARRAY | VT_R8 인 VARIANT가 매개 변수에 필요하므로 문서에 엔티티를 추가 할 수 없습니다. InsertionPoint.

+0

이것이 작동하면 정말 대단합니다. 나는 그것을 시도하고보고하기를 바랍니다. –

+0

사실, win32com은 (Acad2010과 함께) 작동하지만 약간의 추가 작업이 필요했습니다. VARIANT가 문제를 일으키지 만, win32com이 문제를 처리하는 방법을 알지 못하기 때문에 문제가 발생하지는 않습니다. 문제는 (필자의 경우) makepy/genpy가 모든 * insert * 프록시를 잘못 정의하는 것 (나는 손으로 고심하게 수정했다)이었다. AutoCAD는 VARIANTS의 VARIANT_ARRAY를 예상했지만 makepy는 입력 된 변형의 배열 인 VARIANT_ARRAY를 다소 중복 정의하지 않았습니다. 일단 내가 여분의 배열로 모든 함수 인자를 감싸고 나면, INSERT ENTITY는 훌륭하게 작동했습니다! – user2097818

관련 문제