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

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

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

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 пользователей

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




  • Сообщения

    • Orchestra2603
      Ну, предлагаю такой подход... Не знаю, может это все слишком очевидно, ну хотя бы это по полочкам разложить - тоже полезно.   Вот допустим, есть у вас электродинамический вибровозбудитель. Он как устроен? Есть генератор переменного тока. Он встроен в электрическую цепь, и там есть свои электрические элементы. Но главное, там есть катушка индутивности намонтанная на трубу, а внутри нее подвижная масса. На подвижной массе еще одна катушка, и у той по обмотке течет еще какой-то свой постоянный ток. Когда ток проходит по обмотке трубы, то внутри возникает магнитное поле, а оно действует на ток внутри трубы протекающий по подвижной катушке, и возникает сила Ампера, котоая приводит в движение массу. Сила эта пропорциональна магнитной индукция, а та в свою очередь силе тока (как в подвижной, таки неподвижной катушке, но нас интересует ток в конутре, который переменный). Т.е. ток в контуре, где стоит катушка, выступает в роли внешней возбуждающей силы для подвижной массы. Возможны конечно нюансы и некоторые вариации, но суть вроде как такая.   Если электрическая цепь сложная с кучей контуров, и там натыкано много конденсаторов, резисторов и инудктивностей в каждом контуре, то распределение токов по контурам находится через решение системы линенынх дифференциальных уравнений второго порядка.  Ну, т.е. там по сути тоже куча собственных частот, каждая из которых описывает свой электрический резонансов. Можно также решать задачу на СЗ, и будут собственные вектора, которые описывают соотношения амплитуд и фаз токов в раных контурах, и собственные значения, которые соотвтетсвуют каким-то резонансам. Тогда ЭДС на генераторе выступает в роли внешней силы. В зависимости от распределения элементов и контуров в цепи коэффициент усиления между ЭДС на генераторе и перемещением подвижной массы в трубе в определенном контуре будет меняться. Типа как АЧХ получается, только чисто "электрическая". Это АЧХ чистемы ЭМС, если в вашей терминологии. В параметры этой АЧХ будут входить только параметры электрических элементов схемы.   Можно дальше представить себе, что в каждом контуре цепи воткнут свой генератор, и у каждого своя амплитуда тока и фазовый сдвиг, но всех у всех одна частота. И пускай в каждом контуре есть своя подвижная масса внутри какой-то своей неподвижной катушки. Получается, что есть некоторый вектор правых частей, собранный из ЭДС генераторов в разных контурах, а перемещения подвижных масс в разных контурах - это вектор отклика. Т.е. будет уже матрица частотных харкатеристик (системы ЭМС, если в вашей терминологии), а отклик подвижных масс и внешние возбуждения, будет описываться соотвтетсвующими векторами. В зависимости от того, как распределены амплитуды и фазы ЭДС генераторов по контурам, и какая выбрана частота возбуждения, могут проявляться или не проявляться какие-то резонансы (точно также будет какой-то коэффициент участия, коэффициент динамичности и т.д.). Если в каком-то контуре проявляется резонанс, то в этом контуре на этой частоте будет большой коффициент динамичности по амплитуде тока в этом контуре, и будет пропорционально увеличиваться амплитуда отклика по перемещениям соотвтетсвующей подвижной массы.   Теперь представим, что каждая i-я из этих подвижных масс соединяется с контрукцией - системой МС. Тогда получается так, что да, ток в i-м контуре зависит от электрической АЧХ системы ЭМС, и это влияет на механическую силу, действующую на пожвижную массу в i-м контуре, но вместе с этим свойства механической системы МС могут быть такими, что на этой частоте даже такая увеличенная амплитуда силы в не возбуждает большого механичского оклика (перемещения) в этой конкртеной i-й точке крепления с конструкцией. Т.е. в данном случае, получается, что вы задаете вектор ЭДС генераторво на входе, это все дело умножается на электрическую АЧХ системы ЭМС, и получается вектор механических сил Ампера, действующих на каждую из точек крепления. А дальше этот вектор сил умножается на АЧХ системы МС, чтобы получить вектор отклика конструкции.   Т.е. получается так, что две системы вообще соединяются последвательно: выход из первой служит входом для второй, и их АЧХ разделяются спокойно. В итоге, выходит, что АЧХ можно просто переменожить, чтобы получить итоговую АЧХ суммарной системы ЭМС+МС. Так получается из-за того, что электромагнитное взаимодействие создает механическую силу и влияет на механическое движение, но механическое движение не влиет на электромагнитные взаимодействия в цепи. Так ведь?   Такие, вот, мысли. Сам вообше не спец ни разу по электромагнитизму, так что поправьте, если где-то ошибаюсь.
    • zedowl
      все, разобрался сам, просто поставил глубокое сверление, а не простое, поменял цикл, вместо 81 стал 83, и там Q добавилось, я так понял с размеров диаметра сверла(но это не точно), и в 83 цикле cld17 умножил на 1000
    • gudstartup
      @Malsev прежде чем куда то что то ставить сравнивайте даташит или maininf.txt чтобы понять насколько перед вами аналогичная система.
    • zedowl
      разобрался какой параметр должен поменяться, у меня 81 цикл, но мне нужен другой, как выбрать другой цикл? мне подсказали, что нужно его выбрать в настройках операции, но я не знаю где это  
    • zedowl
      нет, не новость я даже не знаю какой параметр в коде должен меняться, у меня задание, либо из мм в микроны, либо наоборот   как понять какой цикл у меня выводится в программе? я найду этот цикл в EXTCYCLE и добавлю умножение или деление на 1000
    • maxx2000
      для тебя будет новостью что 1 мм это 1000микрон(0,001мм)? Т.е. если у тебя после запятой 3 знака то это уже в микронах.   
    • zedowl
      Я сделал в sprutcam простецкую модель, добавил траекторию сверления и не могу разобраться с циклами. Я совсем в этом не разбираюсь, у меня дипломный проект, помогите пожалуйста) У меня в коде выводится не тот цикл, я не могу найти тот параметр в циклах с 81 по 87
    • astire721
    • maxx2000
      @davidovka только макросы кнопок стандартных видов, но они были всегда. В 11 версии макросы вынесли в отдельный файл, понаблюдаю.  так то я все настройки сразу сохраняю в стартовый config.pro
    • Anatlijj8
      Добрый день хочу автоматизировать больше кд на лестницы и балконные ограждения.
×
×
  • Создать...