У вас ссылка на рабочую плоскость создается не из того определения. Им должно быть не определение главной сборки, а определение её компонента. Вот корректный пример:Спасибо за ответ, просто мне нужно создать прокси объект именно плоскости в главной сборке, иначе как использовать AddMateConstraint делая зависимость плоскости подсборки с плоскостью основной сборки?Код - Visual Basic [Выбрать]Обратите внимание, что напечатанные имена совпадают. Прокси-объекты имеют тот же набор свойств, что и их родители.
Sub Proxy_Test_1() Dim oAsmDoc As AssemblyDocument Set oAsmDoc = ThisApplication.ActiveDocument Dim oAsmDef As AssemblyComponentDefinition Set oAsmDef = oAsmDoc.ComponentDefinition 'ссылка на вхождение Dim oOcc As ComponentOccurrence Set oOcc = oAsmDef.Occurrences.Item(1) 'ссылка на "настоящую" плоскость в документе детали/подсборки Dim oWP As WorkPlane Set oWP = oOcc.Definition.WorkPlanes.Item(4) Debug.Print oWP.Name 'создание прокси-объекта рабочей плоскости Dim oWP_proxy As WorkPlaneProxy Set oWP_proxy = Nothing Call oOcc.CreateGeometryProxy(oWP, oWP_proxy) Debug.Print oWP_proxy.Name End Sub
Прокси-плоскость создается объектом ComponentOccurrence на его уровне иерархии в главной сборке. Собственно, именно это и нужно для создания сборочных зависимостей.я просто так и не понял, что именно должно стоять заместо "oOcc" в этой строчке:
Кое-что о прокси-объектах есть тут: http://ru.wikibooks.org/wiki/Autodesk_Inventor_API._%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B5_%D1%88%D0%B0%D0%B3%D0%B8/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82_Assembly#.D0.9F.D1.80.D0.BE.D0.BA.D1.81.D0.B8-.D0.BE.D0.B1.D1.8A.D0.B5.D0.BA.D1.82.D1.8B_.28Proxy.29 (http://ru.wikibooks.org/wiki/Autodesk_Inventor_API._%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B5_%D1%88%D0%B0%D0%B3%D0%B8/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82_Assembly#.D0.9F.D1.80.D0.BE.D0.BA.D1.81.D0.B8-.D0.BE.D0.B1.D1.8A.D0.B5.D0.BA.D1.82.D1.8B_.28Proxy.29)
Компонент (деталь) имеет рабочую плоскость, которая определена в контексте документа детали. Сборка ничего не знает о внутреннем устройстве детали. Чтобы эту рабочую плоскость использовать для создания сборочной зависимости, следует у данного компонента вызвать метод ComponentOccurrence.CreateGeometryProxy() с соответствующими аргументами. Результатом будет прокси-плоскость, определенная в контексте сборки. Именно эта прокси-плоскость и используется для создания зависимости.Это я понимаю, я совмещаю две прокси плоскости, ПЕРВАЯ прокси плоскость создается из плоскости детали, но ВТОРАЯ прокси плоскость - плоскость основной(текущей) сборки, с которой мне необходимо совместить первую прокси плоскость, вот ее как создать?
ВТОРАЯ прокси плоскость - плоскость основной(текущей) сборки, с которой мне необходимо совместить первую прокси плоскость, вот ее как создать?Если эта вторая плоскость создана непосредственно в сборке (скажем, это одна из ее базовых плоскостей), то прокси объект создавать и не надо. Пользуйтесь непосредственно объектом WorkPlane.
ааа)... теперь я понял)... а я то думал что всегда прокси объект нужно создавать для создания зависимостей)... Спасибо за консультацию))ЦитироватьВТОРАЯ прокси плоскость - плоскость основной(текущей) сборки, с которой мне необходимо совместить первую прокси плоскость, вот ее как создать?Если эта вторая плоскость создана непосредственно в сборке (скажем, это одна из ее базовых плоскостей), то прокси объект создавать и не надо. Пользуйтесь непосредственно объектом WorkPlane.
AddMateConstraint предполагает ориентацию нормалей навстречу друг другу - "морда к морде".я понял) Спасибо большое)
Если нужно получить сонаправленные нормали, используется метод AddFlushConstraint.