Witam
Aby uzyskać mocną integrację z MYCAD, jak reaktywować drukarkę dla jednej z warstw
Zrobiłem funkcję aktywacji warstwy formatu
Aktywowałem *
ale nic nie działa
Aby wyświetlić ukrycie warstwy:
Z drugiej strony, drukować czy nie drukować żadnej funkcji w widoczny sposób.
Problem w tym, że już zdałem sobie z tego sprawę
wyświetla oko, ale nie drukarkę => w formacie PDF, więc nie pojawia się żadna linia, ponieważ nie jest drukowana.
na obrazie w PJ jest to format, który nie jest drukowany
Myślę, że " plakat " to +, aby pokazać kalkę kreślarską, ale nie wydruk
Tak, to jest to, co mówiłem, aby pokazać, ukryć, jest to możliwe, ale nie ma opcji drukowania lub braku drukowania.
Z drugiej strony możesz uruchomić makro poprzez integrację:
Zaczynasz od utworzenia makra:
Narzędzie do makr, nowe, nazwij je, jak chcesz.
Następnie wklejasz ten kod w:
Option Explicit
'Changer ci-dessous le nom du calque à rendre invisible à la place de NomDuCalque
Public Const layerName As String = "NomDuCalque"
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swLayerMgr As SldWorks.LayerMgr
Dim swLayer As SldWorks.Layer
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swLayerMgr = swModel.GetLayerManager
Set swLayer = swLayerMgr.GetLayer(layerName)
swLayer.Printable = False 'Pour rendre le calque visible mettre True
End Sub
Bądź ostrożny, aby uruchamiać tylko na MEP, które mają utworzoną warstwę, w przeciwnym razie na pewno wystąpi błąd, ponieważ nie zintegrowałem obsługi błędów z kodem.
hum nie pamiętam programu uruchamiającego makra ...
Jeśli umieścimy warunek warstwy w Integracji, może to pomóc w uniknięciu obsługi błędów
Tak, ale w tym momencie równie dobrze możesz umieścić to w makrze:
Option Explicit
'Changer ci-dessous le nom du calque à rendre invisible à la place de NomDuCalque
Public Const layerName As String = "NomDuCalque"
Sub main2()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swLayerMgr As SldWorks.LayerMgr
Dim vLayerArr As Variant
Dim vLayer As Variant
Dim swLayer As SldWorks.Layer
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
'Vérification si un modèle est chargé
If swModel Is Nothing Then
Exit Sub
End If
'Vérification si le document chargé est une MEP
If (swModel.GetType <> swDocDRAWING) Then
Exit Sub
End If
Set swLayerMgr = swModel.GetLayerManager
vLayerArr = swLayerMgr.GetLayerList
For Each vLayer In vLayerArr
Set swLayer = swLayerMgr.GetLayer(vLayer)
'Vérification du nom du calque
If swLayer.Name = layerName Then
swvLayer.Printable = False 'Pour rendre le calque visible mettre True
End If
Next
End Sub