Używamy makra, które sprawia, że rozwinięty DXF części arkusza blachy jest częścią. Działa to dobrze, ale krawędzie blachy są rozdrobnione na DXF przy każdym zagięciu (patrz załączony obraz). Ten problem utrudnia programowanie naszej wykrawarki.
Kiedy jesteś w pokoju i wdrażasz rozłożoną funkcję, masz drugą funkcję, a na tej klikasz prawym przyciskiem myszy i sprawdzasz, czy pole scalania się zatrzymuje (coś w tym stylu, ponieważ nie jestem przed komputerem) i odznacz. W takim przypadku zaznacz to pole i wykonaj test, a jeśli będzie on rozstrzygający, będziesz musiał ponownie zarejestrować swoje modele części z tymi parametrami.
To rozwiązanie działa dobrze, ale konieczne będzie ponowne wykonanie obsługi dla każdej istniejącej części. Czy istnieją bardziej systematyczne rozwiązania? (Parametr w opcjach ; funkcja na makrze generowania DXF ; zbiorcza modyfikacja tego parametru ; ... ?)
W rzeczywistości, jeśli zapiszesz swój model części, będzie on dobry dla nowych kreacji, ale dla starych części, zwykle twój dział programistyczny powinien mieć stare pliki, które zmodyfikował, aby można było z nich korzystać.
Ok, ale jeśli odbierzesz istniejące części, będziesz musiał wykonać jeszcze dwa kliknięcia, aby je zmodyfikować, aby dxf nie stanowił zbyt dużego problemu dla działu programowania.
Możesz dodać modyfikację tego parametru na początku makra, zajrzyj TUTAJ , powinieneś znaleźć to, czego potrzebujesz (IModelDocExtension::SetUserPreference...) z przykładami, które dobrze pasują.
Dzięki Waszym odpowiedziom, odrobinie researchu i załamywaniu się nad głową stworzyłem makro, które modyfikuje wartość 'merge faces' stanu rozwiniętego (lub swFlatPatternFeatureData.MergeFace).
Dziękuję za pomoc
Sub main()
Dim SwApp As SldWorks.SldWorks
Dim Part As SldWorks.ModelDoc2
Dim boolstatus As Boolean
Dim swFeature As SldWorks.Feature
Dim swFlatPatternFeatureData As SldWorks.FlatPatternFeatureData
Set SwApp = Application.SldWorks
Set Part = SwApp.ActiveDoc
Set swFeature = Part.FirstFeature
While Not swFeature Is Nothing
If swFeature.GetTypeName = "FlatPattern" Then
Set swFlatPatternFeatureData = swFeature.GetDefinition
If swFlatPatternFeatureData.MergeFace = 1 Then
swFlatPatternFeatureData.MergeFace = False
Else
swFlatPatternFeatureData.MergeFace = True
End If
boolstatus = swFeature.ModifyDefinition(swFlatPatternFeatureData, Part, Nothing)
End If
Set swFeature = swFeature.GetNextFeature
Wend
End Sub