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

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

ой, сорри,.Стоило только написать вопрос- как решение далось, наконец.

ModelDocExtension^ ext = detal->Extension;
ICustomPropertyManager^ propMan = ext->CustomPropertyManager[L""];
Ссылка на сообщение
Поделиться на других сайтах


Добрый день! Подскажите  пожалуйста как правильно пересохранить файлы текущего открытого документа? Делаю вот так:

swModel.SaveAs4("d:\1.SLDASM", 0, 4, errors1, warnings1)
            swComp.GetModelDoc2.SaveAs4("d:\12.SLDprt", 0, 4, errors1, warnings1)
            swComp2.GetModelDoc2.SaveAs4("d:\123.SLDprt", 0, 4, errors1, warnings1)

и так далее...

 

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

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

Добрый день! Подскажите  пожалуйста как правильно пересохранить файлы текущего открытого документа? Делаю вот так:

swModel.SaveAs4("d:\1.SLDASM", 0, 4, errors1, warnings1)
            swComp.GetModelDoc2.SaveAs4("d:\12.SLDprt", 0, 4, errors1, warnings1)
            swComp2.GetModelDoc2.SaveAs4("d:\123.SLDprt", 0, 4, errors1, warnings1)

и так далее...

 

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

Использовать интерфейс IPackAndGo.

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

Товарищи, снова прошу помощи!

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

SW->SetUserPreferenceToggle((int)swUserPreferenceToggle_e::swAddDimensionsToSketchEntity, true);
	SW->SetUserPreferenceToggle((int)swUserPreferenceToggle_e::swAddDimensionsToLineEntity, true);
	SW->SetUserPreferenceToggle((int)swUserPreferenceToggle_e::swAddDimensionsToRectangleEntity, true);
	SW->SetUserPreferenceToggle((int)swUserPreferenceToggle_e::swAddDrivenDimensions, true);

подскажите, кто в курсе, как тут действовать.

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

Здравствуйте! Подскажите пожалуйста, как определить количество вхождений одного компонента в другой. В справке смотрел, нашел пример:

 count = Document.EModelViewControl.ComponentCount("Level1_Config2")

Делаю так

 Debug.Print Comp.GetModelDoc2.EModelViewControl.ComponentCount("Default")

пишет, что нет такого свойства или метода у обьекта

 

Или еще пример нашел, где получают кол-во через аннотации таблицы BOM, но где эта таблица я не понял

swBOMTableAnn.GetComponentsCount2(J, ConfigName, ItemNumber, PartNumber)

Я конечно могу посчитать кол-во пробегом по всем компонентам, а там сравнить их Comp.GetPathName и если совпадают, то суммировать, но наверно есть какой-то человеческий способ?) Не сильно знаком с объектной моделью солида.

 

И еще, подскажите пожалуйста, если не сложно, как расположить аннотацию в центре определенного вида на чертеже... При вставке аннотации я указываю ее координаты относительно листа, но вид может распологаться где угодно, получается мне нужно ее вставлять относительно координат вида. Координаты вида я получу, но мне нужно расположить ее именно в центре, значит нужно знать размер вида. Как узнать какой размер у вида? Или есть другой способ осуществить такую вставку?

 

Ссылка на сообщение
Поделиться на других сайтах
EModelViewControl
 Это eDrawings. Вы хотите открыть документ сборки на своей форме и там посчитать детали?
Как узнать какой размер у вида?
 

ТАК

Вычислить центр уже не проблема. только учтите, что при вставке аннотации у вас вид должен быть активным.


Про количество.

1) пробежкой с поиском по совпадению имён (GetComponents). есть сложность, ибо модель называется, к примеру, "Бобышка", то в сборке она станет "Бобышка-1". В подсборке она станет "Подсборка-2/Бобышка-1". Алгоритм отсеивания не сложный.

2) Посчитать уникальность можно получив ссылки на все компоненты сборки/

3) Можно и с помощью BOM, только его предварительно нужно создать. ТУТ подробнее про получение.

4) С помощью DocumentManager так же, получив ссылки на все зависимые документы.

Ссылка на сообщение
Поделиться на других сайтах
Это eDrawings. Вы хотите открыть документ сборки на своей форме и там посчитать детали?

не, именно в сборе...

Похоже надо пробегаться по компонентам сравнивая их уникальность, если не заморачиваться созданием бом таблицы... Странно, вот в инвенторе как-то с этим попроще, получаешь компонент и сразу ссылку на его кол-во в определенном документе oCompDef.Occurrences.AllReferencedOccurrences(oDoc).Count... Думал, что и в солиде как-то, примерно, так)

 

ТАК Вычислить центр уже не проблема. только учтите, что при вставке аннотации у вас вид должен быть активным.

Спасибо)

Изменено пользователем Pabloa
Ссылка на сообщение
Поделиться на других сайтах
4) С помощью DocumentManager так же, получив ссылки на все зависимые документы.

Я правильно понял, это вот этот класс ISwDMDocument? Но там не ясно как получить зависимые документы, не нашел такого метода... Но даже если получить зависимые документы, мне же нужно подсчитать кол-во вхождений компонентов, то есть с учетом из состояния погашения

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

Вы, лучше скажите, что конкретно не получается  :smile:  

Я вам дал несколько способов. Комбинируйте. Посмотрите API Help.

 

как получить зависимые документы

 

http://help.solidworks.com/2015/english/api/sldworksapi/get_dependencies_for_open_and_unopened_documents_example_vb.htm

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

Вы, лучше скажите, что конкретно не получается  :smile:  

Я вам дал несколько способов. Комбинируйте. Посмотрите API Help.

 

 

http://help.solidworks.com/2015/english/api/sldworksapi/get_dependencies_for_open_and_unopened_documents_example_vb.htm

Спасибо, я попробую)

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

Здравствуйте! Подскажите пожалуйста, как получить имя кромки на чертеже?

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

Можно так :

swModel.Extension.SelectByID2 "Кромка1", "EDGE", 0, 0, 0, False, 0, Nothing, 0

Нужно мне это для вставки обозначения шероховатости (после выделения вставляю так)

swModel.Extension.InsertSurfaceFinishSymbol3 0, 0, 0, 0, 0, 0, 7, "", "", "ПВХ 04", "", "", "", ""
Ссылка на сообщение
Поделиться на других сайтах

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

Part.WindowRedraw
Part.EditRebuild3
Part.ForceRebuild3 (False)
Part.EditRebuild

Если ставить все, то занимает определенное время. Если я обновляю модель, то использую Part.ForceRebuild3 (False) всегда, а тут как-то призадумался.

Например, myAnnotation.SetPosition(0.1, 0.1, 0), вообще не требует обновления.

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

Rebuild с параметрами


Добавлено:
ForceRebuild3 это для сборки.
EditRebuild3 это для перестроения модельного. Не работает если у вас EXE, ибо "This method only works in-context of the active document."

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

Rebuild с параметрами

Добавлено:

ForceRebuild3 это для сборки.

EditRebuild3 это для перестроения модельного. Не работает если у вас EXE, ибо "This method only works in-context of the active document."

То есть я правильно понимаю, что для обновления позиции вида, аннотаций и т.п., если мы не трогаем геометрию модели, то достаточно использовать

Part.WindowRedraw

Part.EditRebuild

А, я понял, EditRebuild это устаревший EditRebuild3.... то есть для чертежа нужен только Part.WindowRedraw... Смотрю справку и не пойму до конца

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

Я же написал, используйте в вашем случае 

ret = modelDocExt.Rebuild((int)swRebuildOptions_e.swUpdateDirtyOnly);

или 

ret = modelDocExt.Rebuild((int)swRebuildOptions_e.swCurrentSheetDisp);
Ссылка на сообщение
Поделиться на других сайтах

И еще вопрос небольшой. Пытаюсь работать в скрытом режиме, а солид не скрывается, почему-то, но почему?

Sub mainlkluflf()
Dim swApp As SldWorks.SldWorks
Dim Part As ModelDoc2
Set swApp = _
Application.SldWorks
swApp.Visible = False
Ссылка на сообщение
Поделиться на других сайтах
Part.WindowRedraw

 

Эта штука редко когда требуется. Она касается некоторых видов отрисовки, а так же, если вы замораживали графику.

 

 

Пытаюсь работать в скрытом режиме

 

Keep SOLIDWORKS Invisible

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

 

Я же написал, используйте в вашем случае 

ret = modelDocExt.Rebuild((int)swRebuildOptions_e.swUpdateDirtyOnly);

или 

ret = modelDocExt.Rebuild((int)swRebuildOptions_e.swCurrentSheetDisp);

А, понял) спасибо за ответ)

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • malvi.dp
      Удалось таки воспроизвести этот диалог если в параметрах тела сетки установить одну или обе галочки Если же галочки снять, то макрос отрабатывает без диалога, а вот если вручную открыть файл, то выскакивает такое окно: В этом случае нужно просто установить отметку "Больше не отображать сообщение" и оно больше не будет донимать.
    • kinovari
      Приветствую благородных господ данного форума.   Возникла непреодолимая проблема в работе связки манупулятора и станка на sinumerik one.  Срочно требуется добыть SINUMERIK STEP 7 TOOLBOX V18.1 для tia portal. Может кто поделиться? Заранее благодарю! Заодно хотелось бы узнать, можно ли как либо из NC обратиться в программе ко входу PLC? например вход I014.4, написать скрипт проверки готовности данного входа. Спасибо!
    • Александр1979
      Вам вручную нужно создать текстовый файл optiondata.txt такого формата:  
    • Александр1979
      Сигнал пропуска, обычно подключается ко входу PMC X4.7, но можно настроить и на другой вход. Используется для подключения сигнала с датчиков привязки заготовки, инструмента. 
    • maxx2000
      чего тебе тут непонятно?
    • maxx2000
      а какие ещё варианты отрезков бывают, разве что в форме котика  можно образмерить все участки и наложить на них ограничение равенства, если частей больше чем две то задать через формулу "размер= общая длина/число частей"
    • mamomot
      Совершенно верно! Наработки "Гербария" легли в часть разработок RGK.
    • binco
      SprutCAM Robot X 16, но не уверен насчёт модулей. В мануале были скрины где в этом генераторе отчётов под окном симуляции были разные настройки, но у меня там только выбор шаблона и всё.   
    • Harley
      @mannul Есть подозрение, что в данном случае тоже "так вставил"(ось). Ставлю на то, что в реальной программе #16=[#5-#6]/2. Но посмотрим, что автор скажет. @Vomkin А что конкретно хоть работает не так? А то "по глубине, что то я не так делаю, или я сам себя замкнул уже, не понимаю" - слишком расплывчатое объяснение :) Опечатки есть, как уже выяснилось, поэтому вопрос спорный, но если реально нет инициализации #1 внутри DO1-END1 - работать не будет.
    • Богоманшин Игорь
      Точнее, Гербарий был как бы одним из этапов развития RGK На том же сайте RGK
×
×
  • Создать...