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

Замена ссылок документа


Pit-Bul

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

Здрасти всем.

С помошью какой солидовкой функции можно заменить ссылки документа на другие файлы, например как это делает SolidWorksExploier

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


AssemblyDoc::ReplaceComponents

See Also:

Example

Description:

This method replaces one or more selected components with another model.

Syntax (OLE Automation)

retval = AssemblyDoc.ReplaceComponents ( fileName, configName, replaceAllInstance, reAttachMates )

Syntax (COM)

status = AssemblyDoc->ReplaceComponents ( fileName, configName, replaceAllInstance, reAttachMates, &retval )

...

Надо бы почитать справку по AIPI SW:

XXX:\Program Files\SolidWorks\api\sldworksapi.chm

PS. в версии SW до 2007

была другая функция:

swApp.ReplaceReferencedDocument(NewNameASM, OldName, NewName)

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

Этот пример показывает как заменять компонент другим компонентом. А мне надо програмно переименовать документ и поправить ссылки на него.

а справку по AIPI SW я перерыл вдоль и поперек

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

и всетаки я нашол как это делать правильно

Dim swApp   As SldWorks.SldWorks

	Dim bRet	  As Boolean



	Set swApp = CreateObject("SldWorks.Application")

	bRet = swApp.ReplaceReferencedDocument(sReferencingDoc, sOldDoc, sNewDoc)

	Debug.Assert bRet

правда с одним ньюансом, надо создать переименованную модель, потом поменять ссылки, потом уже мочить старую модель

:clap_1:

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

Прям как по заказу

http://fsapr2000.ru/index.php?show...11506&st=40

:clap_1:

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

и всетаки я нашол как это делать правильно...

<{POST_SNAPBACK}>

Посмотри еще мою прогу на :

<noindex>http://www.pogruzka.com/julio/swprog/multi...wtools2/faq.php</noindex>

Если что пиши в ПМ.

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

Посмотри еще мою прогу на :

<noindex>http://www.pogruzka.com/julio/swprog/multi...wtools2/faq.php</noindex>

Если что пиши в ПМ.

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

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

Так сказать к слову…

При переименовании проектов, как правило, происходит ещё и некоторое упорядочение индексов. Как-то: заполнение пропущенных ранее или «почивших» строк в спецификациях, присвоение отдельным «кускам» изделия особых обозначений, а то и просто копирование чужого агрегата. То есть, если наше изделие АБВГ.00.00.000 переименовывается в ДЕЖЗ.00.00.000 то это вовсе не значит, что можно будет просто сделать SolidWorks Explorer копию с заменой АБВГ на ДЕЖЗ. То есть, потребен и инструмент копирования с замещением, и массового переименования с наследованием свойств. Ещё лучше иметь возможность последовательно применить и тот и другой инструменты по некоторой, заданной пользователем программе. Очень жаль, что ребята из DS и SW упорно делают вид, что этого не понимают.

И ещё, никакие СТП и санкции не заставят инженера-конструктора перебивать «ручками» многочисленные свойства файлов, из серии «Обозначение» и «Первичное применение», тем более нельзя это поручать людям не представляющим себе структуру изделия.

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

я примерно это и пытаюсь сделать :rolleyes:

в 2007 солиде уж сильно извратились над SolidWorks Explorer'ом. Вот пытаюсь вернуть старый и обогащенными функциями, одна из которых и есть автоматическое переименование узлов и изделий

З.Ы.: Ручное переименование заработало :sport_box::boxed:

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

и всетаки я нашол как это делать правильно

Dim swApp   As SldWorks.SldWorks

	Dim bRet	  As Boolean



	Set swApp = CreateObject("SldWorks.Application")

	bRet = swApp.ReplaceReferencedDocument(sReferencingDoc, sOldDoc, sNewDoc)

	Debug.Assert bRet

<{POST_SNAPBACK}>

Интересно долго искали ведь во втором (#2) посте о ней и написано, в последней строчке она и есть.

правда с одним ньюансом, надо создать переименованную модель, потом поменять ссылки, потом уже мочить старую модель

<{POST_SNAPBACK}>

А не проще тогда использовать ModelDocExtension.SaveAs , а потом удалить старую модель, в таком варианте оно даже уменьшит размер файла (только перед удалением неплохо проверить действительно ли файл такойже). На сколько я понимаю в таком случае ссылка должна поменяться на файл с новым имененем в открытом документе, если в "Options" не задано значение swSaveAsOptions_Copy, если этот параметр задан в таком случае будет просто скопирован документ и ему присвоено новое имя.

Я правда не знаю, но может это использовать (или это только для PDM работает?)

pVal = PDMWDocument.Name (VB Get property)

PDMWDocument.Name = pVal (VB Set property)
Ссылка на сообщение
Поделиться на других сайтах

в 2007 солиде уж сильно извратились над SolidWorks Explorer'ом.

<{POST_SNAPBACK}>

Что есть, то есть... ребята из SW зря время не теряли.

И прибавили и подгадили, всё по полной программе.

Интересно, чем они в самом деле руководствуются в своей политике развития системы. Хотя это ужо лирика.

Успехов.

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

А не проще тогда использовать ModelDocExtension.SaveAs , а потом удалить старую модель, в таком варианте оно даже уменьшит размер файла (только перед удалением неплохо проверить действительно ли файл такойже). На сколько я понимаю в таком случае ссылка должна поменяться на файл с новым имененем в открытом документе, если в "Options" не задано значение swSaveAsOptions_Copy, если этот параметр задан в таком случае будет просто скопирован документ и ему присвоено новое имя.

Kelny, в этом случае придется открывать модель сборки либо чертежа и после уже переименовывать входящие в них элементы, а это существенно замедлит работу программы. А swApp.ReplaceReferencedDocument позволяет все делать без открытия файла у которого меняешь ссылки(правда солид должен быть запущен), а насчет ньюанса это в хелпе было написанно, на самом деле можно менять ссылки без существования обоих файлов на которые делаешь ссылку. Если нет старого файла все прокатывает, а соответсвенно на отсутствие файла на который ты указал солид естественно обидится и попросит уточнить его местоположение, соответственно требуется только новый переименованный файл(проверенно by Pit-Bul) :velho:

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

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

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

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

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

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

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

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

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

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

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




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