Перейти к публикации

Рекомендованные сообщения

Добрый вечер. Возникла проблема при разрыве детали.

Использую BreakView. В 50% случаев деталь режет нормально а в 50% ставить только линии разрыва а деталь не режет.

Вопрос это Солид глючит или у меня руки не оттуда растут.

Вот скрин шот.

 

И второй вопрос. Как запустить стороннее преложение из VBA знаю. Но теперь хочется в запущенном преложении (2D-Plase) открыть определенный файл. Это вообще возможно???

post-50968-0-17598600-1456347972_thumb.png

Изменено пользователем science
Ссылка на сообщение
Поделиться на других сайтах


Добрый вечер. Возникла небольшая проблемка с которой не знаю что делать. Помогите пожалуйста.

Проблема:

При читывании свойств списка вырезов с помощью

 

vNames = swCustPropMgr.GetNames

 

все считывается превосходно но вот только одна проблемка назначенный детали материал в свойства списка вырезов записывается из конфигурации развертки DefaultSM-FLAT-PATTERN. При изменении материала в конфигурации Default материал детали в конфигурации  DefaultSM-FLAT-PATTERN остается старым и соответственно считывается не тот материал. Приходится при переназначении материала заходить в конфигурацию  DefaultSM-FLAT-PATTERN и там менять материал а потом еще и менять материал в конфигуации  Default. И из за этого по недосмотру проскакивают ошибки.

Вопрос как заставить Solid или материалы в обоих конфигурациях ставить одинаковыми или считывать материал в свойства списка вырезов из конфигурации Default.


И второй вопрос. Подскажите как в сборке найти программно вставленную в область заметок спецификацию?

Задача такова если спецификация есть продолжать выполнение программы если нет прекращать.

Ссылка на сообщение
Поделиться на других сайтах

Спасибо огромное. Но это я находил в хелпе. Однако GetFirstTableAnnotation получает таблицу аннотаций только для вида в чертеже. А мне нужно ее получить в общей сборке, т.е. в assembly.

Ссылка на сообщение
Поделиться на других сайтах

А она там вставлена?


А мне нужно ее получить в общей сборке, т.е. в assembly.
 

Пройтись по дереву и найти таблицу. 

https://yadi.sk/i/4BvXLclkpfTXp

Ссылка на сообщение
Поделиться на других сайтах

Спасибо огромное. Но это я находил в хелпе. Однако GetFirstTableAnnotation получает таблицу аннотаций только для вида в чертеже. А мне нужно ее получить в общей сборке, т.е. в assembly.

я делал нечто похожее, но для спецификаций, посмотри код, там комментов много, может чем и будет полезен. Правда я не профессионал, а так, для себя.

BOM to EXCEL.rar

Ссылка на сообщение
Поделиться на других сайтах

Добрый день уважаемые форумчане! Подскажите пожалуйста, как мне программно убрать эту галочку при задании материала? 390e0710bd26.jpg

Ссылка на сообщение
Поделиться на других сайтах

как мне программно убрать эту галочку

 

В теории так

Dim swApp As Object

Dim Part As PartDoc

Dim ok As Boolean

Dim MatVisProps As SldWorks.MaterialVisualPropertiesData

Sub main()

    Set swApp = Application.SldWorks

   Set Part = swApp.ActiveDoc

   Set MatVisProps = Part.GetMaterialVisualProperties

   MatVisProps.ApplyMaterialColorToPart = False

   er = Part.SetMaterialVisualProperties(MatVisProps, swThisConfiguration, "00")

End Sub

Информация для вдохновения: раз два

Ссылка на сообщение
Поделиться на других сайтах

 

В теории так

Dim swApp As Object

Dim Part As PartDoc

Dim ok As Boolean

Dim MatVisProps As SldWorks.MaterialVisualPropertiesData

Sub main()

    Set swApp = Application.SldWorks

   Set Part = swApp.ActiveDoc

   Set MatVisProps = Part.GetMaterialVisualProperties

   MatVisProps.ApplyMaterialColorToPart = False

   er = Part.SetMaterialVisualProperties(MatVisProps, swThisConfiguration, "00")

End Sub

Информация для вдохновения: раз два

Спасибо за ответ! Вообще у меня стоит задача изменить материал с помощью SetMaterialPropertyName2, но при этом, я не хочу чтобы менялось то визуальное отображение, которое стоит сейчас у детали (ее цвет и текстура) ... а метод SetMaterialVisualProperties стирает текстуру и цвет, которые сейчас у детали... а метод SetMaterialPropertyName2 устанавливает цвет и текстуру в соответствии с новым материалом....

Ссылка на сообщение
Поделиться на других сайтах

Спасибо за ответ! Вообще у меня стоит задача изменить материал с помощью SetMaterialPropertyName2, но при этом, я не хочу чтобы менялось то визуальное отображение, которое стоит сейчас у детали (ее цвет и текстура) ... а метод SetMaterialVisualProperties стирает текстуру и цвет, которые сейчас у детали... а метод SetMaterialPropertyName2 устанавливает цвет и текстуру в соответствии с новым материалом....

В принципе нашел способ установить материал детали не меняя ее визуальное отображение.

 Dim part As PartDoc
Dim texture As Texture
Dim swModelDocExt As ModelDocExtension
Dim MatVisProps As MaterialVisualPropertiesData
 Dim pp_color As Object
Dim boolstatus As Boolean

                'получение текстуры у детали
                swModelDocExt = part .Extension
                texture = swModelDocExt.GetTexture("моя конфигурация")
                'получение цвета у детали
                swModelDocExt.GetRenderMaterials()
                pp_color = swModelDocExt.GetMaterialPropertyValues(1, part .GetConfigurationNames)
'установить материал
part.SetMaterialPropertyName2("моя конфигурация", IO.Directory.GetCurrentDirectory & "\Материал.sldmat", "мой материал")
'если у детали была текстура
    If Not texture Is Nothing Then
                    texture = swModelDocExt.CreateTexture(texture.MaterialName, 5, 45, False)
                    'возвратить детали ее прежнюю текстуру
                    boolstatus = swModelDocExt.SetTexture("моя конфигурация", texture)
                   'возвратить детали ее прежний цвет
                  swModelDocExt.SetMaterialPropertyValues(pp_color, 1, part .GetConfigurationNames)
     Else 'если у детали не было текстуры
                    'установить материал
                  'возвратить детали ее прежний цвет
                  swModelDocExt.SetMaterialPropertyValues(pp_color, 1, part.GetConfigurationNames)
 End If
модераторам - ссори)
Изменено пользователем Pabloa
Ссылка на сообщение
Поделиться на других сайтах

Господа!

Задача состоит в извлечении координат из  "ConnectionPoint"(CPoint), "AssemblyConnectionPoint"(ACPoint),  "RoutePoint"(RPoint) и "AssemblyRoutePoint"(ARPoint).

Прохожу по дереву, получаю координаты всех ключевых точек из библиотеки элементов.
С "ConnectionPoint"(CPoint) и "AssemblyConnectionPoint"(ACPoint) проблем нет,
IModelDoc2 _swModelDoc;
...
IFeature feat;
...
ConnectionPointFeatureData cPoint = (ConnectionPointFeatureData) feat.GetDefinition();
double[] location = cPoint.Location;
pointX = location[0];
pointY = location[1];
pointZ = location[2];
а вот "RoutePoint"(RPoint) и "AssemblyRoutePoint"(ARPoint) не даются, может кто сталкивался с такой проблемой или есть идеи по поводу ее решения?

Может есть какой класс типа "ConnectionPointFeatureData", а я его не нашел?

Пробовал выделять "фичу" и на ее место поверх вставлять ReferencePoint, чтобы хоть из него извлекать координаты,

feat.Select(true);
_swModelDoc.InsertRefPoint(); 

вылазит "System.NotImplementedException".

Изменено пользователем Aleh
Ссылка на сообщение
Поделиться на других сайтах

Всем добрый день! 

 

Может кто сталкивался с изменением отдельных экземпляров линейного массива

Вручную у меня это сделать получилось.

Но реализовать программно не получается (

 

Система Solidworks 2014, язык - C#

 

Как это реализовано вручную:

 

1.  Есть линейный массив (МассивОтвСтупеней), который состоит из n-экземпляров (в данном случае n=4). Поставлена задача изменять некоторые размеры ("Угол поворота эскиза" и "смещение относительно оси") отдельно у каждого экземпляра массива. Нажимаем "Редактировать определение"

1652c18175cf.png

 

2. В настройках выбираем галочку "Экземпляр для изменения", выбираем в эскизе размеры, которые планируем менять и далее щелкаем на экземпляры правой кнопкой мыши, которые необходимо изменить и выбираем "Изменить экземпляр" или "Редактировать измененный экземпляр".

c0af8347cb8b.png

 

3. Вводим необходимые размеры

bce72f969568.png

 

4. И применяем изменения. Как видно - экземпляры перестраиваются в соответствии с введенными размерами

452a35c31c4e.png

 

Реализовывать вручную удается и весьма успешно., но хотелось бы сделать это автоматически. 

 

Запись макроса ничего толкового не дает:

"

Sub main()
 
Set swApp = _
Application.SldWorks
 
Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("МассивОтвСтупеней", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("", "EDGE", -0.075, 0.195, 0.0735, True, 0, Nothing, 0)
Part.ActivateSelectedFeature
End Sub
 

"

 

Поиски по форуму solidworks привели к вот этой функции: InsertVaryInstanceOverride Method (IFeatureManager)

http://help.solidworks.com/2013/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IFeatureManager~InsertVaryInstanceOverride.html

 

есть пример создания: http://help.solidworks.com/2013/English/api/sldworksapi/Create_Linear_Pattern_Example_VB.htm

но из него как-то не удалось вытащить нужную информацию. либо программа просто не реагировала.

 

также есть пример изменения: http://help.solidworks.com/2015/English/api/sldworksapi/Insert_Advanced_Variable_Pattern_Feature_Example_CSharp.htm

но там есть функции и имена видимо из solidworks 2015 и у меня ничего толкового тоже не вышло. 

 

Может быть кто сталкивался и у кого есть идеи как это реализовать?

Заранее спасибо

Ссылка на сообщение
Поделиться на других сайтах
Может быть кто сталкивался и у кого есть идеи как это реализовать?
 

Ничего себе, я такое даже вручную никогда не делал. думаю надо копать параметры массива.

ILinearPatternFeatureData или что то в этом духе.

Ссылка на сообщение
Поделиться на других сайтах

Добрый день! Возникла следующая проблема со стандартным шаблоном add-in приложения на С++.

Суть проблемы в том что код компилируется нормально без ошибок, но в солиде, в добавлениях отсутствует и намек на добавленное расширение.

С шаблоном для С# подобного не наблюдается, все работает нормально.

 

О ПО: VS2010Ultimate, SolidWorks2015SP5, WIN7 x64.

Ссылка на сообщение
Поделиться на других сайтах

Добрый день! Возникла следующая проблема со стандартным шаблоном add-in приложения на С++.

Суть проблемы в том что код компилируется нормально без ошибок, но в солиде, в добавлениях отсутствует и намек на добавленное расширение.

С шаблоном для С# подобного не наблюдается, все работает нормально.

О ПО: VS2010Ultimate, SolidWorks2015SP5, WIN7 x64.

А можно вас попросить выложить эти шаблоны?

 

 

 

 

 

У меня тоже есть вопрос:

реализовывал ли кто-нибудь задачу по сохранению информации, прикреплённой непосредственно к фейсам детали? Чтобы для каждого фейса была своя ячейка данных? Какие есть варианты?

Мне вроде бы вполне подходил бы метод AddPropertyExtension, у класса IFace2, но у меня почему то не получается перезаписать данные. Т.е., есть возможность записать 1 раз, и всё.

Ссылка на сообщение
Поделиться на других сайтах
вполне подходил бы метод
 там в хелпе же прям написано, что не рекомендуется использовать этот метод. А лучше http://help.solidworks.com/2012/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IAttribute.html
Ссылка на сообщение
Поделиться на других сайтах

А можно вас попросить выложить эти шаблоны?

 

http://rghost.ru/8ly7SdLSq  http://rghost.ru/8q88JtBtx

 

Вот шаблоны, только похоже дело не в них. Пытался запустить проект созданный на другой машине (на ней все норм запускается), результат аналогичен описанному выше.

Ссылка на сообщение
Поделиться на других сайтах

http://rghost.ru/8ly7SdLSq  http://rghost.ru/8q88JtBtx

 

Вот шаблоны, только похоже дело не в них. Пытался запустить проект созданный на другой машине (на ней все норм запускается), результат аналогичен описанному выше.

 

К сожалению не нашел как отредактировать пост.

 

Забыл добавить, первоначально при попытке запустить проект VS выдавал такое сообщение:

 

244eddf4794fc9f596442774682ea2db.png

Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

Приветствую всех!

Столкнулся с проблемой при работе с вырезами по геометрии.

вырез создаю такой командой: IFeature^ myCut =  manager->FeatureCut3(........);

сам вырез создаётся без проблем. А вот затык получается при дальнейшей работе с ним. Вопрос в том: как получить список текущих параметров выреза? Когда вырез создаётся, надо ввести более десятка разных параметров, и большинство из них- битовые флаги. Размеры то можно потом получить и поменять, а вот как быть с остальными параметрами?

Когда пользователь хочет поменять что то из параметров, то заходит в определение выреза и меняет что захочет. Но в справке написано, что объекта "Cut" .т.е выреза, в API, нет.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...