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
|