|
发表于 2007-2-15 23:58:00
|
显示全部楼层
我从前用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;
|
|