Cześć,
Mam makro, które wstawia części i tworzy ograniczenia, działa świetnie, gdy chcę tworzyć ograniczenia suwaka za pomocą dwustronnego suwaka równoległego, ale nie z okrągłym suwakiem. Robiąc to ręcznie, nie stanowi to problemu, więc aby zobaczyć, skąd pochodzi problem, stworzyłem uproszczony model z okrągłym suwakiem i równoległym oraz dwoma odpowiadającymi mu ograniczeniami slajdów stworzonymi ręcznie.
Kiedy chcę odtworzyć nowe ograniczenie z tym, które wcześniej stworzyłem ręcznie, wszystko działa poprawnie, ale nie wtedy, gdy tworzę je od zera.
Po zbadaniu okazuje się, że obiekt WidthMateFeatureData użyty do utworzenia nowego ograniczenia domyślnie akceptuje tylko 2 ściany (przy tworzeniu za pomocą createMateData(11)) i " odmawia" modyfikacji za pomocą jednostronnego przesuwu.
Natomiast gdy jest wykonywany ręcznie za pomocą jednostronnego suwaka, " odmawia" przerobienia na dwustronny zamek.
Wiesz, jak sprawić, by obiekt WidthMateFeatureData akceptował suwak okrągły od zera? (Atrybut TabSelection o rozmiarze 1)
Albo trik, żeby utworzyć ograniczenie szerokości za pomocą suwaka okrągłego?
Dokładniej, oto fragment mojego kodu skomentowanego
'swCircularMateData : objet WidthMateFeatureData d’une contrainte glissière avec un coulisseau rond (créée à la main)
'swOldMateData : objet WidthMateFeatureData d’une contrainte glissière avec un coulisseau à deux faces parallèles (créée à la main)
Set swTestMateData = swCircularMateData 'récupère l'objet WidthMateFeatureData créé à la main
swAssembly.CreateMate swTestMateData 'crée la contrainte sans problème
Set swTestMateData = swAssembly.CreateMateData(11) 'crée un objet WidthMateFeatureData vide
'Recopie l'intégralité des attributs de l'objet
swTestMateData.ConstraintType = swCircularMateData.ConstraintType
swTestMateData.DistanceFromEnd = swCircularMateData.DistanceFromEnd
swTestMateData.FlipDimension = swCircularMateData.FlipDimension
swTestMateData.PercentDistanceFromEnd = swCircularMateData.PercentDistanceFromEnd
swTestMateData.TabSelection = swCircularMateData.TabSelection
swTestMateData.WidthSelection = swCircularMateData.WidthSelection
swAssembly.CreateMate swTestMateData 'la contrainte ne se crée pas
vTest = swTestMateData.TabSelection 'en inspectant l'attribut TabSelection, il s'avère être vide
swTestMateData.TabSelection = swParalleleMateData.TabSelection 'recopie l'attribut TabSelection de la contrainte avec le coulisseau parallele
swAssembly.CreateMate swTestMateData 'crée la contrainte sans problème