|
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim Part As ModelDoc2
Dim CorelCurVer As String
Dim Original_DisplayMode As Integer
Dim Original_backgroundmode As Integer
Dim Original_backgroundColor As Double
Dim strTargetFileName As String
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
'save the original SW setting
Original_DisplayMode = Part.ActiveView.DisplayMode
Original_backgroundmode = swApp.GetUserPreferenceIntegerValue(swColorsBackgroundAppearance)
Original_backgroundColor = swApp.GetUserPreferenceIntegerValue(swSystemColorsViewportBackground)
'Optimize SW setting for Bmp
Part.ActiveView.DisplayMode = 4
swApp.SetUserPreferenceIntegerValue swColorsBackgroundAppearance, 0
swApp.SetUserPreferenceIntegerValue swSystemColorsViewportBackground, 16777215
'output bmp
strTargetFileName = Environ("tmp") & "$$$$$$.bmp"
Part.SaveBMP strTargetFileName, 2048, 1690
'retore the original SW setting
Part.ActiveView.DisplayMode = Original_DisplayMode
swApp.SetUserPreferenceIntegerValue swSystemColorsViewportBackground, Original_backgroundColor
swApp.SetUserPreferenceIntegerValue swColorsBackgroundAppearance, Original_backgroundmode
Dim cdrapp As CorelDRAW.Application
Dim cdrdoc As CorelDRAW.Document
Dim impflt As CorelDRAW.ImportFilter
Dim CdrBmp As BITMAP
Dim TraceObj As TraceSettings
Set cdrapp = CreateObject("CorelDraw.Application")
cdrapp.Visible = True
'create coreldraw new file
Set cdrdoc = cdrapp.CreateDocument
'import bmp
Set impflt = cdrdoc.ActiveLayer.ImportEx(strTargetFileName)
impflt.Finish
Set CdrBmp = cdrdoc.ActiveShape.BITMAP
CdrBmp.Resample 2048, 1690, True, 300, 300
CdrBmp.ApplyBitmapEffect "Gaussian Blur", "GaussianBlurEffect GaussianBlurRadius=50,GaussianBlurResampled=10"
CdrBmp.ApplyBitmapEffect "Find Edges", "FindEdgesEffect FindEdgesEdge=0,FindEdgesLevel=100"
CdrBmp.ConvertToBW cdrRenderLineArt, Threshold:=200
Set TraceObj = CdrBmp.Trace(5, 10, 90, 8, 0, 2, True, True, True)
TraceObj.Finish
Kill strTargetFileName
End Sub
复制代码 |
|