Jump to content

Виртуальные компоненты


Krapivnik

Recommended Posts

malvi.dp
5 часов назад, djrandom сказал:

закрываю солид

Перед закрытием солида вы сохранили сборку, после создания второй детали?

Link to post
Share on other sites


10 часов назад, malvi.dp сказал:

Перед закрытием солида вы сохранили сборку, после создания второй детали?

Конечно!

Работаем как обычно! У нас тут достаточно много компьютеров :)) Так вот на большинстве из них всё отлично. Но на двух из них недавно с нуля накатили систему, поставили солид - и вот такой вот косяк!

Edited by djrandom
Link to post
Share on other sites
malvi.dp

Возможно, у вас какие-то проблемы с правами доступа. Попробуйте проверить есть ли разрешение на запись в папках.

Если с правами все нормально, то попробовать исправление установки самого солида.
 

Link to post
Share on other sites
19 часов назад, Plumber сказал:

Работа с виртуальными компонентами точно такая же, как и с нормальными, для чеготоделания необходимо работать как с нормальным компонентом - Открыть->Сделать->Сохранить, у них свои собственные плоскости-оси, можно редактировать в контексте сборки, вся разница в том, что виртуальные компоненты хранятся внутри файла-сборки и на время работы открываются во временном хранилище типа %TEMP% 

Вообщем вырисовывается такой алгоритм появления/устранения глюка.

1.Создаю сборку. Создаю внутри сборки деталь. Тут же смотрю её свойства - путь виртуальный. Если я, не выходя из редактирования детали, нажму СОХРАНИТЬ, то деталь сохраняется во временную папку и становится НЕвиртуальной, солид ничего пользователю об этом не сообщает. Ессно после перезагрузки компа этой детали нет.

Рассматриваем следующий вариант работы:

1.Создаю сборку. Создаю внутри сборки деталь. Что-то прямо в ней делаю - какие-то элементы. Заканчиваю редактирование детали и "возвращаюсь" к редактированию сборки. Сохраняю. В свойствах детали видим что она виртуальная. Закрываю сборку. Открываю заново - в дереве сборки деталь есть, но в самой детали нет никакой геометрии :((((

Ну и последний вариант, "рабочий" :

1.Создаю сборку. Создаю внутри сборки деталь. Ничего в детали не рисую. Заканчиваю редактирование детали и "возвращаюсь" к редактированию сборки. Сохраняю. В свойствах детали видим что она виртуальная. Закрываю сборку. Открываю заново - в дереве сборки деталь есть, но в самой детали нет никакой геометрии - ну да мы ничего и не рисовали.

2.Перехожу из сборки к редактированию детали - добавляю элементы и т.п., возвращаюсь обратно в сборку. Сохраняю. Закрываю. Открываю - вся геометрия на месте.

Вообщем через опу, но работает. Т.е. нужно вставить в сборку виртуальную деталь, вернутся к редактированию сборки сохранить и обязательно ЗАКРЫТЬ сборку. после этого открыть и тогда уже можно работать. САмый прикол - что сборку обязательно нужно ЗАКРЫТЬ. если просто вставить деталь, вернутся в сборку, сохранить и опять перейти к редактированию детали, то всё равно ничего не сохраняется....

 

 

Link to post
Share on other sites
2 часа назад, djrandom сказал:

2.Перехожу из сборки к редактированию детали - добавляю элементы и т.п., возвращаюсь обратно в сборку. Сохраняю. Закрываю. Открываю ...

Сохранение это наше всё и главное почаще.

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

Вот к примеру:

Создаём пустую сборку ("Файл"->"Новый ..."->выбираем шаблон "Сборка")

Вставляем новый компонент "Деталь" (или "Сборка")  

Clip152.png.9df0d10e0c532626b4f10c54bec9cc8a.png

Hide  
Получаем пустую сборку с пустой деталью  

Clip153.png.0289b82c20317c0df64495036dfa0444.png

Hide  

Наличие квадратных скобок "[...]" вокруг имени свидетельствует о том, что компонент виртуальный, а (ф) - зафиксированный (каждый новый компонент вставленный таким образом будет иметь те же атрибуты).

Теперь осталось сохранить сборку и начинать с ней работу, во время сохранения сборки SW обычно спрашивает (если это не отключено ранее), как сохранять новые компоненты - отдельно или внутри.

Edited by Plumber
Link to post
Share on other sites
2 часа назад, djrandom сказал:

САмый прикол - что сборку обязательно нужно ЗАКРЫТЬ. если просто вставить деталь, вернутся в сборку, сохранить и опять перейти к редактированию детали, то всё равно ничего не сохраняется....

Начните с отображения всех вопросов программы (ну или тех что относятся к сохранению), для которых вы ранее выбрали какое-либо действие с установленной галочкой БОЛЬШЕ НЕ СПРАШИВАТЬ, т.к. велика вероятность что проблема именно в этом после выбора вами на какой-то вопрос не подходящего ответа. Например, один раз утвердительно ответив на вопрос системы НЕ СОХРАНЯТЬ? с галочкой БОЛЬШЕ НЕ СПРАШИВАТЬ приведёт к тому что файлы и изменения в них не будут сохраняться.

Link to post
Share on other sites
  • 3 years later...
peshkoff

При превращении обычного компонента в виртуальный добавляется приставка "Копия".

Можно ли сделать без "Копия", а то некоторые имена оч. длинные?

SW2016SP3

Скрытый текст

image.png

 

Link to post
Share on other sites
Kelny
4 часа назад, peshkoff сказал:

Можно ли сделать без "Копия", а то некоторые имена оч. длинные?

SW2016SP3

Что бы отключить добавку, вроде настроек нет - только что лезть в DLL спецпрограммами, но не хорошо это.

Как вариант после преобразования в виртуальные компоненты с добавкой:

1. Меню Файл-Сохранить как...;

2. Кнопка Ссылки...;

3. Кнопка Дополнителные параметры;

4. Поставить галочку Включить виртуальные компоненты;

5. Выбрать строки требующие переименования (с клавишей SHIFT или CTRL);

6. Кнопка Найти/Заменить... искать "Копия ", второе поле пустое и кнопка Заменить все (будет менять в строках которые выбраны в предыдущем пункте);

7. Сохранить сборку под тем же именем или другим.

А нет, не работает - это при сохранении из сборки в реальные файлы можно переименовать оптом.

 

Можно воспользоваться макросом Renamed Features in FeatureManager:

https://kelnyproject.ucoz.ru/load/renamed_features_in_featuremanager/7-1-0-21

в словаре оставить выделенные строки (остальное закомментировать или удалить):

Цитата

...

Private Sub loadRus2EngDict()
        Set dicListReplace = CreateObject("Scripting.Dictionary")
        'Элементы дерева
        dicListReplace.Add "Копия ", ""

        'dicListReplace.Add "Примечания", "Annotations"
        'dicListReplace.Add "Связь проектов", "LinksProjectsFOLDER"
        'dicListReplace.Add "Твердые тела", "BodyFolder"

...

        'dicListReplace.Add "Триммировать угол", "Break-Corner"
End Sub

в макросе так же проверить потерянные ссылки и снять с них галочки:

http://kelnyproject.ucoz.ru/_pu/0/s26694.jpg

https://kelnyproject.ucoz.ru/publ/1-1-0-1

Edited by Kelny
Link to post
Share on other sites
peshkoff
23 минуты назад, Kelny сказал:

1. Меню Файл-Сохранить как...;

2. Кнопка Ссылки...;

Хм. что-то нет у меня такой кнопки :/

Скрытый текст

image.png

 

Только кнопка "Дополнительно".
При выставлении галочки ее можно сделать активной, там вроде как ссылки, но править имена там не дает

40 минут назад, Kelny сказал:

Можно воспользоваться макросом

Да, я так понял только впрямую в дереве переименовать. 

Ага, попробую макрос

<OFF>В дереве в новых версиях еще не сделали "Найти и заменить?"</OFF>

 

Link to post
Share on other sites
Kelny
28 минут назад, peshkoff сказал:

При выставлении галочки ее можно сделать активной, там вроде как ссылки, но править имена там не дает

А нет, не работает - это при сохранении из сборки в реальные файлы можно переименовать оптом.

 

Можно воспользоваться макросом Renamed Features in FeatureManager:

https://kelnyproject.ucoz.ru/load/renamed_features_in_featuremanager/7-1-0-21

в словаре оставить выделенные строки (остальное закомментировать или удалить):

Цитата

...

Private Sub loadRus2EngDict()
        Set dicListReplace = CreateObject("Scripting.Dictionary")
        'Элементы дерева
        dicListReplace.Add "Копия ", ""

        'dicListReplace.Add "Примечания", "Annotations"
        'dicListReplace.Add "Связь проектов", "LinksProjectsFOLDER"
        'dicListReplace.Add "Твердые тела", "BodyFolder"

...

        'dicListReplace.Add "Триммировать угол", "Break-Corner"
End Sub

в макросе так же проверить потерянные ссылки и снять с них галочки:

image.png

https://kelnyproject.ucoz.ru/publ/1-1-0-1

Edited by Kelny
  • Нравится 1
Link to post
Share on other sites
peshkoff
56 минут назад, Kelny сказал:

Можно воспользоваться макросом Renamed Features in FeatureManager:

Ура, все работает!

Я только добавил форму по типу "найти и заменить" и теперь буду переименовывать что хочу и когда хочу :dirol:

Скрытый текст

image.png

Спасибо!

Link to post
Share on other sites
Kelny
16 часов назад, peshkoff сказал:

Я только добавил форму по типу "найти и заменить" и теперь буду переименовывать что хочу и когда хочу

Ну не совсем всё, т.к. комопненты с реальными файлами не должны переименоваться при наличии галочки:

Цитата

Обновить имена компонентов, когда документы заменяются

 

Данный параметр следует отключать, только если используется диалоговое окно Свойства компонента для назначения имени компонента в дереве конструирования FeatureManager, отличающегося от имени файла компонента.

 

https://help.solidworks.com/2010/russian/solidworks/sldworks/allcontent/solidworks/core/assemblies/hidd_options_external_refs.htm

 

Link to post
Share on other sites
peshkoff
2 часа назад, Kelny сказал:

Ну не совсем всё, т.к. комопненты с реальными файлами не должны переименоваться при наличии галочки:

Ну да, тут надо аккуратнее :) а то у меня стоит разрешение на переименование имени файла.

Но т.к. пока я орудую пока только с текстом "копия", думаю, проблем не будет.

Думаю надо ввести фильтр на то, какие типы элементов в дереве хочешь переименовать, а не тупо все дерево.

Можно же вычислить чем является элемент дерева?

Через swFeat.GetTypeName я так понимаю

Link to post
Share on other sites
peshkoff

Чего то не хватает :\

Стартую скрипт, после него в дереве показывает все ОК, переименовано.

Сохраняю-закрываю-открываю, опять "Копия" в названиях...

Edited by peshkoff
Link to post
Share on other sites
Kelny
3 часа назад, peshkoff сказал:

Чего то не хватает :\

Стартую скрипт, после него в дереве показывает все ОК, переименовано.

Да, так и есть, причём предупреждает об этом, если открыть свойство компонента и попытаться там изменить имя:

image.png

 

Непосредственно в дереве переименовывает как-то иначе - возможно поможет макрос который переименовывает компоненты вместе с именами файлов через дерево PartTreeRename от @streamdown

https://cccp3d.ru/topic/6071-сделай-свою-работу-в-solidworks-эффективнее/?do=findComment&comment=927047

https://cccp3d.ru/topic/6071-сделай-свою-работу-в-solidworks-эффективнее/?do=findComment&comment=999429

https://streamdivision.ru/parttreerename/ (на сайте @streamdownпоследня версия отсутствует)

 

Соответственно, что бы макрос работал отключаем упомянутую галочку выше (Обновить имена компонентов, когда документы заменяются/Update component names when documents are replaced), переименовываем макросом и восстанвливаем галочку:

Цитата

Assemblies - Update component names when documents are replaced

ISldWorks::GetUserPreferenceToggle(swUserPreferenceToggle_e. swExtRefUpdateCompNames)

ISldWorks::SetUserPreferenceToggle(swUserPreferenceToggle_e. swExtRefUpdateCompNames, <OnFlag>)

Boolean value

 

Specifies whether to mate to read-only parts using internal face IDs of the parts or to replace components using surface identifiers to write-access parts

https://help.solidworks.com/2010/english/api/swconst/so_externalreferences.htm

 

Или в SW2016 возможно поможет галочка Разрешить переименование файлов компонента в дереве FeatureManager:

https://help.solidworks.com/2016/russian/WhatsNew/t_rename_components_FM_tree.htm

Edited by Kelny
Link to post
Share on other sites
peshkoff
20.01.2023 в 16:38, Kelny сказал:

Соответственно, что бы макрос работал отключаем упомянутую галочку выше (Обновить имена компонентов, когда документы заменяются/Update component names when documents are replaced), переименовываем макросом и восстанвливаем галочку

 

У меня эта галочка включена. В код пока не встраивал, попробовал просто ее снять.

Сделал такой порядок:

- снимаю галку 

- запускаю скрипт

- сохраняю сборку, закрываю

- открываю сборку

Все хорошо, "Копия" нету.

Но вот если вернуть галочку обратно, то при закрытии-открытии опять "Копия" возвращается.

 

PartTreeRename не совсем понимаю, чем сможет помочь, файлы не нужно переименовывать, они ж виртуальные. И галочка Разрешить переименовывание файлов в дереве конструирования.. никак не влияет, что логично. Разрешает переименовывать даже при снятой галочке.

 

Вот еще что. Если переименовать вручную, то он правит не только Имя, полное имя, но и Описание компонента и Путь к документу

 

Скрытый текст

image.png

 

после скрипта он правит имя, но не правит Описание и Путь

 

Скрытый текст

image.png

 

Может в этом дело?

 

Хотя... я надо ли биться с этой "Копией", уже пришлось кучу сборок переделать вроде почти смирился

Link to post
Share on other sites
Kelny
2 часа назад, peshkoff сказал:

Может в этом дело?

Уговорили - не работает.

 

Есть рабочий пример в справке (меняет так же как ручное переименование с заменой имён файлов во временной папаке, дописанное в конце удаляется, имя сборки восстнавливается при повторной загрузке с галочкой Обновить имена компонентов... ):

Цитата

'Rename Assembly Components Example (VBA)

'This example shows how to rename assembly components.

'---------------------------------------

'

' Preconditions: Assembly document is open.

'

' Postconditions: Assembly component names are changed by

'                 appending 123 to the end of the names.

'

'---------------------------------------

Option Explicit

Public Enum swUserPreferenceToggle_e

    swExtRefUpdateCompNames = 18

End Enum

Sub Main()

    Dim swApp                   As SldWorks.SldWorks

    Dim swModel                 As SldWorks.ModelDoc2

    Dim swConfigMgr             As SldWorks.ConfigurationManager

    Dim swConfig                As SldWorks.Configuration

    Dim swRootComp              As SldWorks.Component2

    Dim Children                As Variant

    Dim swChild                 As SldWorks.Component2

    Dim ChildCount              As Integer

    Dim OldName                 As String

    Dim NewName                 As String

    Dim bOldSetting             As Boolean

    Dim bRet                    As Boolean

    Dim i                       As Long

    
    Set swApp = Application.SldWorks

    Set swModel = swApp.ActiveDoc

    Set swConfigMgr = swModel.ConfigurationManager

    Set swConfig = swConfigMgr.ActiveConfiguration

    Set swRootComp = swConfig.GetRootComponent

    
    bOldSetting = swApp.GetUserPreferenceToggle(swExtRefUpdateCompNames)

    swApp.SetUserPreferenceToggle swExtRefUpdateCompNames, False

    
    Children = swRootComp.GetChildren

    ChildCount = UBound(Children)

    
    For i = 0 To ChildCount

        Set swChild = Children(i)

        
        ' Changing component name requires component to be selected

        bRet = swChild.Select2(False, 0)

        
        OldName = swChild.Name2

        'NewName = OldName & " 123"
        NewName = Replace(OldName, "Копия ", "")

        Debug.Print "OldName = " + OldName

        Debug.Print "NewName = " + NewName

        Debug.Print ""

        
        swChild.Name2 = NewName

    Next i

    swApp.SetUserPreferenceToggle swExtRefUpdateCompNames, bOldSetting

End Sub

'---------------------------------------
 

https://help.solidworks.com/2010/english/api/sldworksapi/rename_assembly_components_example_vb.htm

в конце дописывает номер экземпляра (например, Деталь1^000Сборка1-3) - можно удалять действиями со строкой или будет само откинуто после сохранения с галочкой Обновить имена компонентов... 

Edited by Kelny
Link to post
Share on other sites
brigval

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

@peshkoff , попробуйте, если будет возможность и желание. Программа меняет имя одного виртуального компонента.

Часть имени после крыши ^ программно изменить не удается. Я об этом написал в руководстве пользователя.

Тестировал с SW2018, но может и с 2016 заработает.

 

 

Edited by brigval
Link to post
Share on other sites
brigval
7 часов назад, brigval сказал:

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

@peshkoff

Наверное поспешил с ответом. Надо еще посмотреть код...

Link to post
Share on other sites
Kelny
8 часов назад, brigval сказал:

Часть имени после крыши ^ программно изменить не удается.

Код выше из справки (Rename Assembly Components Example) меняет в том числе то что после крышки (так же называется файл во временной папке с виртуальными компонентами), но после крыши потом восстанавливается программой после повторного открытия файла сборки с виртуальными компонентами при наличии галочки Обновить имена компонентов, когда документы заменяются/Update component names when documents are replaced, а без галочки вроде может оставаться и без добавки с крышей.

 

А вот код предложенный ранее меняет только, то что перед крышей, но восстанавливает исходное имя при открытии файла и наличии галочки в настройках Обновить имена компонентов...

 

8 часов назад, brigval сказал:

Программа меняет имя одного виртуального компонента.

Имя одного компонента можно и ручками поправить, тут задача стояла как раз таки во всех разных виртуальных компонентах убрать приписку "Копия " впереди.

Edited by Kelny
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.




  • Сообщения

    • Slavdos
      интересно . только про саму оснастку на гибку ни слова)
    • The_22nik
      Приветствую! Возникла задача сделать спецификацию по форме 5 (до 3 исполнений). Через макрос такую спецификацию нет возможности сделать? Если кто поделится шаблоном таблицы для такой спецификации буду благодарен.
    • niksasa
      Значит проблема в исходнике. Оптимальный вариант переходить на 2021 инвентор, думаю проблемы исчезнут.
    • Viktor2004
      Не знаю как Вам, а для меня этот форум площадка для общения с единомышленниками. Обмен опытом. Когда сюда заходят новички с вопросами, всегда хочется помочь по быстрому. И когда в ответ читаешь что отвечаю я не в том формате, задаю лишние вопросы, что если мне что-то не нравится, могу проходить лесом, и вообще все мои проблемы в том что я русский, вот тут у меня включается внутренний протест. А какого хрена я ему вообще что-то должен.
    • andrey2147
      Зачем спалили? Будет теперь шифроваться.
    • vad0000
      Только он не дроссельный, а поддерживающий. А так - это обычный предохранительный клапан.
    • Куаныш
      Здравствуйте, Все заработала. Причина - у нас один цилиндр падал вниз постоянно, контроллер сам приподнимал постоянно, оказывается если контроллер много раз приподымает цилиндр то он заблокируется и не реагирует, что бы реагировала на команды, надо перезагружать. А опускания цилиндра самопроизвольно - это дроссельный клапан раскрутился и пропускал масло. Всем спасибо!
    • Pavel92.08
      Нету этих данных 
    • ORG
      она самая
    • vad0000
      Какое у Вас ЧПУ?
×
×
  • Create New...