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

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

Похоже, не совсем то, этот метод задаёт состояние отображения, которое должно быть включено при последующем открытии документа по сформированной спецификации.

Исходно оно ничему не присвоено, возвращается пустое значение:

Debug.Print "display state = " & swApp.GetOpenDocSpec(swApp.ActiveDoc.GetPathName).DisplayState
А надо получить активное состояние уже открытого документа...
Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...


И снова здравствуйте :)
Опять натолкнулся на момент которой никак не хочет решаться...

Есть много деталей в сборке, каждая с несколькими конфигурациями. У одной (знаем какой) конфигурации добавлена текстура. 
Задача, поменять цвет детали во всех  конфигурациях, кроме как в той, что с текстурой. 

Делал так:
 

  var bodyes = part.GetBodies2(0, false);
            foreach (var body in bodyes)
            {
                var vMatProp = body.MaterialPropertyValues2();        
                double[] color = new double[9] { 255, 128, 128, 1, 1, 1, 0.3, 0, 0 };
                body.MaterialPropertyValues2 = color;
            }

В доке к MaterialPropertyValues2  написано что действует только на активную конфигурацию, однако он почти всегда добавляет цвет во всех конфигурациях. Изредка, ту, где есть текстура пропускает. С чем это связано не пойму... Настройки конфигураций-внешних видов вроде как идентичные у деталей... 

 

Нет идей как такое поведение побороть, и назначать цвет только на указанные конфигурации деталей? 

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

PS. Если применять, на уровне модели -  IModelDoc2.MaterialPropertyValues то применяется только  на произвольные детали...  А некоторым деталям в текстуре цвет подменяет... не поверх текстуры, а именно внутри, вчера зеленый дуб получил таким образом на двух деталях :)

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

Так если метод действует на Body, то материал вы им назначаете или в дереве "материал"?

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

Детали не имеют установленного материала. Мне это в общем то не надо. Стоит попробовать с установленным материалом? Хотя вот я пробовал его устанавливать - идет стирание текстуры, а мне это не надо :(

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

Ага. Причем примените материал к телам (телу).

Ну так...для тестов.

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

Ну с этим подходом ничего так и не получилось - солид ведет себя крайне непредсказуемо. 
Однако поборол следующим образом :
В цикле открываю(OpenDoc7) все детали в невидимом режиме,

Переключаю конфигурацию принудительно к нужной, меняю конфигурацию на уровне IModelDoc2

так работает как надо, хоть имхо и через ж__у.

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

Появился очередной вопрос, на который не смог ответа найти. 
Есть открытый лист чертежа. Задача, перетянуть из своей боковой панели объект  и поместить в указанной точке листа чертежа чертежный вид или заметку. То есть реализовать DragAndDrop. В сборке подобное делается достаточно просто с помощью
 DoDragDrop(dataObj, DragDropEffects.Link | DragDropEffects.Copy);

 

А как быть в чертеже? Как заметку разместить... 
Можно как то отследить скажем координаты последнего клика по листу, и уже вставка кнопочкой... ?

Подвис я немного, не знаю даже куда копать...  

Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, Krokogen сказал:

координаты последнего клика по листу

GetSelectionPoint2

не забудьте про трансформацию.

Ссылка на сообщение
Поделиться на других сайтах
13 часа назад, streamdown сказал:

GetSelectionPoint2

не забудьте про трансформацию.

Я немного неверно сформулировал, имел в виду не точку, а координаты на пустом листе. GetSelectionPoint2 вернет точку на модели.

Т.е. надо заметку или вид разместить на пустом листе указав мышью место.

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Krokogen сказал:

не точку, а координаты

Так она и возвращает координаты.

Можно ещё это попробовать http://help.solidworks.com/2015/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.idrawingdoc~getinsertionpoint.html

Или подписаться на событие http://help.solidworks.com/2015/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.dmouseevents_mouselbtndownnotifyeventhandler.html

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

А есть возможность пользоваться полем фильтра графического вида (тот который над деревом проекта в сборке)? Все что нахожу - связано с выделением, а тут хотелось бы тупо с помощью апи вбивать буковки в это поле. 

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

@Krokogen уже не первый месяц с API, а всё справкой никак не научитесь))) FeatureManagerFilterString

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, streamdown сказал:

@Krokogen уже не первый месяц с API, а всё справкой никак не научитесь))) FeatureManagerFilterString

Блин... :)
Ведь искал... ;)

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

@streamdown Есть вопрос. Когда открываю SolidWorks вручную, ошибки нет при выполнении действия, но когда запускаю SolidWorks  программно по GUID, и выполняю действие, выскакивает ошибка, не знаете случайно в чем проблема?

 

fdf.PNG

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

выскакивает ошибка, не знаете случайно в чем проблема?

GET не чего брать, т.к. приложение не запущено.

Вероятно: CreateObject("SldWorks.Application")

Ссылка на сообщение
Поделиться на других сайтах
12 минуты назад, Kelny сказал:

GET не чего брать, т.к. приложение не запущено.

Вероятно: CreateObject("SldWorks.Application")

Пишет что Marshal не содержит метод CreateObject.

Я ведь написал когда SolidWorks запускается по GUID программно, далее по кнопке должно выполняться действие , но выскакивает такая ошибка. А когда запускаю SolidWorks вручную (ярлык на рабочем столе) то ошибки нет при выполнении действия.

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

SolidWorks запускается по GUID программно

Раз запускается, то уже не надо GetActiveObject.

Покажите код запуска процесса (Solidworks).

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

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

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

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

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

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

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

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

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

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

    • Valedol



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