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

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

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

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

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




  • Сообщения

    • Maik812
      с какой версии сам модуль.
    • Павлуха
      Отстали от жизни? В солиде уже давно кам-модуль вшит.
    • Ветерок
      В Солиде не получится. Солид - это КАД - в нем строится геометрия. И только. Потому в каком-нибудь КАМ строятся траектории, задаются скорости, направления и прочее. И только потом всё это преобразуется в Ж-коды при помощи постпроцессора именно под конкретную стойку. Нужны все три составляющие - КАД-КАМ-постпроцессор.
    • bubl leg
      Всем доброго, друзья!   Вопрос такой: по причине того, что собираю свой ЧПУ станочек настольный с довольно простыми для ЧПУ задачами (супержесткой рамы и прочего - не сильно обязательно) - рисование маркером печатных плат и сверловка их же - требуется какой то более менее подробный гайд на русском языке, по подготовке G-CODE в Solidworks. На youtube я нашел кучу конечно...Смотрю...Но, хоть и понимаю англицкий неплохо, всё равно не так "на лету", как хотелось бы.   Из этого вопрос: может ли кто то порекомендовать имеющийся тут, на форуме или ещё где то - русскоязычный более менее подробный гайд или видео - по моей задаче? Именно в Solidworks (не во FreeCAD и прочем).   Заранее спасибо!   P.S. Как собрать электронику для станка, как прошить - это всё не важно, это всё знаю. Интересует именно подготовка G-CODE в среде Solidworks,с примерами и (желательно) последующей отправкой на ЧПУ.
    • grayve
      Нет этого пункта в меню((( Вопрос решен. Нужно нажать кнопку Применить представление структуры изделия...
    • BSV1
      С наступающим!  
    • grayve
      Народ, Добрый вечер! Подскажите, у меня в сборке несколько сотен кирпичей. Печь собираю. Многие из них стандартные изделия, но поскольку в библиотеке таких кирпичей нет мне пришлось их делать в виде деталей. Соответственно сейчас в спецификации они попали в сборочные единицы. Знаю, что можно по одной детали через окно структуры поменять Раздел... Но несколько сотен раз очень не хочется. Помогите решить проблему? T-Flex 17
    • grayve
      Нужно разорвать проекционную связь с проекцией и переходить на другую страницу.
    • Viktor2004
      наверное для этого и сделали переменную #8501 но она только для MDI клавиш. Цифр и букв там нет. Я когда пробовал на C-Executor писать, тоже не смог реализовать перехват нажатия кнопок во время загрузки ЧПУ. Там тоже фиксируется момент нажатия, а если она уже нажата во время загрузки, инструментами СИ это перехватить не получится
    • gudstartup
      клавиатурные события очень медленные и куда из переменной девается код  если он не замещается другим я не понимаю. если в цикле программы есть опрос и никто более ничего не нажимал и не опрашивал  код должен лежать где положено иначе вся эта катавасия никуда не годится. 
×
×
  • Создать...