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

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


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

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




  • Сообщения

    • arsenev
      Первый свободный номер инструмента   int list $toolnumblist = extract(folder('TOOL'), 'Tool.Number.Value') int $newToolNumb = 1 while member( $toolnumblist, $newToolNumb) {     $newToolNumb = $newToolNumb + 1 } Message Info 'Первый свободный номер инструмента - ' + $newToolNumb     Инструменты с повторяющимися номерами   int list $toolnumbers = extract(folder('tool'),'Number.Value') int $i = remove_duplicates($toolnumbers) string $op = '' foreach $n in $toolnumbers {     string list $names = extract(filter(folder('tool'),'this.Number.Value == "' + $n + '"'),'Name')     if size($names) > 1 {         $op = $op + 'Инструменты с повторяющимся номером T ' + $n + CRLF         foreach $name in $names {             $op = $op + $name + CRLF         }         $op = $op + CRLF     } } message info $op
    • PETR_1
      Можно переназначить правую и центральную (колесо) кнопки с помощью бесплатной программы X-Mouse Button Control (есть портабельная версия). Это переназначение будет работать только для компаса.
    • Kelny
      Может изменяемый вами размер импортирован из модели?  Обычно переносилось удержанием левой кнопки мыши, а если сделать двойной клик, то нужно потом выбрать новый объект уже без удержания кнопок мыши.
    • Kelny
      Отключить галочки режима большой сборки. Инструменты-Параметры...-Настройки пользователя-Сборки
    • brigval
      Если не прописали, значит считается, что производственный процесс их изготовления гарантирует качество, достаточное для присвоения литеры. Можно и так посмотреть.   Между прочим, пред вынесением Решения о присвоении литеры проходит "испытания" весь комплект  КД. Разрешат вам не предъявлять часть КД на проверку? Спросите у НК.   И все-таки, если есть Решение о присвоении литеры, надо прочитать, что там сказано. Как сформулировано. Возможно, это снимет все вопросы.
    • cepr
      Есть в Компасе возможность построения зубчатого колеса с углом профиля не 20гр., а 25гр?
    • shishov32
      В ТУ не прописали про испытания КМЧ и упаковки, отсюда все пошло. 
    • clavr
      подскажите: как в солиде 2024 в чертеже перепривязать точку размера к другому элементу? раньше достаточно было выделить размер, точку привязке и удерживая ПКМ перенести к другому элементу. теперь это не работает   По справке сделать не получается( просто быстрые привязке не подсвечиваются https://help.solidworks.com/2024/russian/SolidWorks/sldworks/c_moving_dimension_leadersOH.htm  
    • BSV1
      КМЧ бывают разные. Если КМЧ состоит из одних стандартных болтов, например, то может испытания и не требуются. Если же КМЧ состоит из изделий собственной разработки, то почему их не надо испытывать? Что касается упаковки, то есть ГОСты на тару. Например: 80071.pdf ГОСТ Р 53775-2010 Упаковка. Испытание на штабелирование при статической нагрузке ГОСТ 18211-2018. Упаковка транспортная. Метод испытания на сжатие  gost-9142-2014.pdf  Есть еще испытания изделий в упаковке, которые подразумевают, в том числе, и испытание самой упаковки. Проверяться изделия в упаковке могут на транспортную тряску, удары, падения, климат. При этом упаковка должна обеспечить сохранность изделия. Есть еще вопросы консервации. Как же без испытаний?   Странный у вас нормоконтролер.    
    • brigval
      Ответом на ваш вопрос будет противоречит. А вообще, надо читать Решение о присвоении литеры. Интересно, что там указано?   Интересный вопрос. Если есть указания испытывать экпл. документацию в форме книг, то надо испытывать Я, правда, с этим не сталкивался.
×
×
  • Создать...