#Include <Array.au3>
Local $flag
Local $filename,$spit,$i
Global $single
$flag=1 ;图纸为A3则选择flag=1;图纸为A4则选择flag=0
$filename=FileOpenDialog("请选择需要转换的CAD文件","","图形 (*.dwg)",4) ;弹出选择文件对话框
If @error Then Exit ;如果没有选择或选择错误,则退出
$spit=StringSplit($filename,"|") ;分割文件变成数组
If @error Then
$single=$filename ;说明选择的是单个文件
Else
For $i=2 To $spit[0] ;一个一个的转换PDF,直到结束。
$single=$spit[1]&""&$spit[$i]
Next
EndIf
;_ArrayDisplay($spit,"") ;可以显示数组,做检查用
AdlibRegister("wenti")
CADtoPDF($single)
Func CADtoPDF($single) ;自定义函数。
Local $pid=ProcessExists("acad.exe") ;检测CAD是否已经在运行。
If $PID Then ProcessClose($PID) ;如果存在则终止进程
ShellExecute($single) ;运行文件
WinWait("AutoCAD 2011","正在重生成模型") ;等待AutoCAD加载完成
ControlSend("AutoCAD 2011","",2,"z e pagesetup ") ;使页面最大化并打开页面设置管理器
WinWait("页面设置管理器") ;暂停直到打开页面设置管理器
ControlSend("页面设置管理器","",4696,"!m") ;按“ALT+M”
WinWait("页面设置 - 模型") ;暂停直到打开页面设置 - 模型
ControlCommand("页面设置 - 模型","",1020,"SetCurrentSelection", 4) ;设置打印机为“Adobe PDF”
If $flag=1 Then
ControlCommand("页面设置 - 模型","",1040,"SelectString", 'A3') ;设置图纸尺寸为“A3”
ControlCommand("页面设置 - 模型","",1037,"Check","") ;设置图形方形为“横向”,匹配A3
Else
ControlCommand("页面设置 - 模型","",1040,"SelectString", 'A4') ;设置图纸尺寸为“A4”
ControlCommand("页面设置 - 模型","",1036,"Check","") ;设置图形方形为“纵向”,匹配A4
EndIf
ControlCommand("页面设置 - 模型","",1043,"SelectString", '范围') ;设置打印范围为“范围”
ControlCommand("页面设置 - 模型","",1030,"UnCheck","") ;设置按打印样式打印为“否”
ControlCommand("页面设置 - 模型","",1030,"Check","") ;设置按打印样式打印为“是”---防止没有勾上“打印对象线宽”
ControlCommand("页面设置 - 模型","",1053,"Check","") ;勾上“布满图纸”
ControlCommand("页面设置 - 模型","",1006,"SelectString", 'monochrome') ;设置打印样式表为mochrome.ctb---------------------------------------------------------------------------------------未解决弹窗问题
ControlClick("页面设置 - 模型","",1) ;关闭页面设置
ControlClick("页面设置管理器","",2) ;关闭页面设置管理器
ControlSend("AutoCAD 2011","",2,"plot ") ;打开打印对话框
WinWait("打印 - 模型") ;暂停直到打开"打印 - 模型"
ControlClick("打印 - 模型","",1) ;关闭"打印 - 模型"
WinWait("另存 PDF 文件为") ;暂停直到打开“另存 PDF 文件为”
ControlSend("另存 PDF 文件为","",1001,@YEAR&@MON&@MDAY&@HOUR&@MIN&@SEC) ;输入文件名称为日期时间
AutoItSetOption ("MouseCoordMode",2) ;相对窗口的坐标
MouseClick("left",450,13)
Send("D:\ziliao\其他\PDF_out")
ControlClick("另存 PDF 文件为","",1) ;关闭“另存 PDF 文件为”
AutoItSetOption("WinTitleMatchMode",2) ;设置标题匹配模式为“任意匹配”
WinWait("Adobe Acrobat Pro") ;暂停直到打开“Adobe Acrobat Pro”
Sleep(500)
WinClose("Adobe Acrobat Pro") ;关闭“Adobe Acrobat Pro”
ControlSend("AutoCAD 2011","",2,"qsave ") ;保存CAD
Sleep(500)
WinClose("AutoCAD 2011") ;关闭CAD
EndFunc
ShellExecute("D:\ziliao\其他\PDF_out","","","",@SW_MAXIMIZE)
Func wenti()
If WinExists("问题") Then
ControlClick("问题","",6) ;这个还是无法执行
EndIf
EndFunc