我从前用LISP,快把我搞疯了。所以我想办法将Perl在Cad上搞起来,并响应Cad的对象事件,管理对象。 我用Perl控制Excel、word,ODBC将各个程序联系起来互通信息。 我用Perl写动态网页。我的目标是只用Perl就包打天下。用Perl写起程序来是如此顺手。 例程: use Tk; use strict; use Win32::OLE qw(EVENTS); use Win32::OLE::Variant; $|=1; package MyEvent; use strict; use Win32::OLE::Variant; $|=1; my $status = 0; my $Handle = 0; sub ObjectModified { if ($status == 1){ return(0)} $status = 1; my ($Obj,$arg) = @_; my $ModifyObj = $arg->Value(); print $ModifyObj->{'ObjectName'} . "\n"; $Handle = $ModifyObj->Handle(); } sub EndCommand{ my ($Obj,$arg) = @_; my $one = Variant(VT_ARRAY|VT_R8,3); $one-> ut([1, 1, 0]); my $two = Variant(VT_ARRAY|VT_R8,3); $two-> ut([1, 20, 0]); my $ModifyObj = $Obj->HandleToObject($Handle); $ModifyObj -> Move($one,$two); } package main; $Win32::OLE::Warn = 3; my $acad = Win32::OLE->GetActiveObject('AutoCAD.Application.16') || Win32::OLE->new('AutoCAD.Application.16'); $acad->{'visible'}=1; my $Documents = $acad->{'Documents'}; my $Document1 = $Documents->Item(0); $Document1->Activate(); my $moduspace=$Document1->ModelSpace; Win32::OLE->WithEvents($Document1,"MyEvent","_DAcadDocumentEvents"); Win32::OLE->MessageLoop;
|