Tim Riley wrote:
> Has anyone come up with a way to add AutoCAD points using Python and 
> win32? Do I have to use Makepy on the type library? For example adding a 
> line to Modelspace requires you to call the AddLine method that accepts 
> two arrays of doubles.
> 
> Any help/tips would be greatly appreciated.

AutoCAD underspecifies the type of variant it's expecting for such 
functions -- the type library requests only a variant instead of an 
array of doubles (whereas the documentation is quite clear about what is 
needed.)

I've been sitting for **way too long** on a patch that allows you to 
specify the type of variant you'd like, permitting something like:

<code>
import pythoncom
import win32com.client
from win32com.client.variant import MakeVariant
acad = win32com.client.Dispatch('autocad.application')
dwg = acad.ActiveDocument
ms = dwg.ModelSpace
point1 = (0,0,0)
point2 = (1,1,0)
point1 = MakeVariant(pythoncom.VT_ARRAY | pythoncom.VT_R4, point1)
point2 = MakeVariant(pythoncom.VT_ARRAY | pythoncom.VT_R4, point2)

line = ms.AddLine(point1, point2)
</code>

Since I'd last looked at this, AutoCAD 2007 got released and the issue 
wasn't resolved on their end.  Unfortunately, Open Design Alliance' 
DWGDirectX library duplicates that bug.

I *finally* started looking at this again just last week and am in the 
process of writing a test suite for it.   I'll be emailing Mark Hammond 
with my progress (initial efforts way back when were overly rigid and 
testing wasn't up to snuff).  I'll copy you on that update when I send 
it tomorrow.  It's so nice to have a break from CAD work.  :)

Mark and I had taken that discussion off the list way back in February, 
and I'll leave it to him if he wants it back on the list.

Cheers!
-drg
_______________________________________________
Python-win32 mailing list
Python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to