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

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

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

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 эмодзи.

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

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

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

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

    • mme



  • Сообщения

    • maxx2000
      как устранение ошибки оформления меняет смысл извещения? ИМХО вас просто дрочат.
    • SerGuN_78
      Выразился "Инспекция" для общего понимания. А вообще это сторонняя организация, которая проверяет конструкторскую документацию на соответствие ФНП и ЕСКД. Просто исправить нельзя, так как документация уже утверждена. ГОСТ 2.503-2013 п. 4.17 говорит: При необходимости изменения информации, указанной в графах ИИ (кроме графы "Содержание изменения"), к нему выпускают ДИ (приложение Д). Ограничений по изменяемым графам нет. По приложению Д в графе 18 можно указать содержание изменения, соответственно, в данном случае дать указание о внесении номеров ИИ на листы 2, 3, 4. ГОСТ 2.503-2023 п. 4.14 говорит, что перечень граф, изменяемых по ДИ, указать в таблице Г.1, где действительно сказано только о новых значениях задела и внедрения. Поэтому вопрос и родился: Как поступить в описываемом случае?
    • Bot
      2 июля 2024 года компания «АТИМ», официальный авторизованный партнёр компании «Сисофт Девелопмент», приглашает на вебинар для проектировщиков АР и КР, где вы: Узнаете о преимуществах работы с Model Studio CS Строительные решения в сравнении с популярными аналогами; Взвесите все за и против о необходимости перехода на отечественное ПО; Встретите единомышленников и партнеров, с целью обмена опытом и знаниям. Программа вебинара: Model Studio CS — инструмент для разработки сложных промышленных объектов. Обзор возможностей. База стандартных элементов. Ускорение разработки проекта за счёт использования стандартных узлов. Настройка спецификаций. Возможности персонализации проектных требований. Проверка проекта на коллизии. Использование возможностей CADLib для обеспечения точности и качества проектирования. Конкурентный анализ. Сравнение возможностей популярных САПР от ведущих мировых и отечественных производителей. Сессия [...] View the full article
    • LexaZamPoTex
      Добрый день. Нужен совет. Необходимо произвести расчет на устойчивость сжатых стержней. Модель создал, стержень закрепил. По заданию сила должна быть приложена в точке на расстоянии 0,8 от длинны стержня. Не понимаю как это реализовать в данной системе.  
    • Firsol
      Именно, в этом и заключается проблема (все еще не решена кстати). Требуется именно в правильном порядке располагать детали. Контекст заключается в том, что это требуется для раскроя деталей деревянного конструктора. И конечным продуктом являются как раз листы с этим раскроем, в которых детали должны располагаться по порядку (решение сверху), а не по оптимуму расхода. В итоге сейчас тех процесс заключается в том, что после такого нестинга он переправляется в CorelDraw, где все эти детали (зачастую на нескольких листах) вручную перемещаются технологом на требуемые позиции. И это составляет огромное бОльшую часть времени разработки проекта, и это, если найдется решение, можно оптимизировать.
    • Firsol
      Здравствуйте! Появилась такая проблема. При создании спецификации сборки в сборочном чертеже, требуется автоматически подвязать формат чертежа детали. Часто так случается что сборочные чертежи оформляются сильно позже чертежей на детали и подсборки, и иногда спецификация получается довольно большой и не хочется тратить время и труд на то чтобы проваливаться в каждый чертеж детали и смотреть какой у него формат, а потом вручную заполнять эти значения в спецификации сборочного чертежа. Стандартными методами я пока не представляю как это сделать. Возможно есть способ подвязать формат из чертежа к свойству модели и уже оттуда подгружать значение, но как связать модель и чертеж в свойствах в "противоположную сторону" я не представляю. Сразу стоит сказать, что нужно это сделать именно стандартными методами, без макросов, SpecEditor'ов, и т.п.
    • Fixus
      Здравствуйте, подскажите неумному как уменьшить усиление (скорость) по позиционированию? Есть проблема: при обработке стали (проход по плоскости) торцевой фрезой поверхность не гладкая, а полосатая. Большая шероховатость получается. Пусконаладчик говорит, что это из за того что система измерения постоянно пытается поймать размер и шпиндель из-за этого немного гуляет по оси Z. Если уменьшить усиление может этот эффект пропадет, ну или по крайней мере сгладится?   Станок DMU70, стойка TNC 430.
    • Viktor2004
      Автор ничего не сказал о том какая у него система. А почему-то все решили что у него 0i-F Plus
    • Александр1979
      Смотрите руководство B-64695EN, глава "5.4.3 Data batch restore".
    • BSV1
      Надо фрагмент (подсборку) вставить со статусом "Как отдельные тела" или в Параметрах уже вставленного фрагмента для опции "Использовать" выбрать значение "Как отдельные тела".
×
×
  • Создать...