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

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


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

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

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

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

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


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

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

Конечно!

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

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

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

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

Ссылка на сообщение
Поделиться на других сайтах
19 часов назад, Plumber сказал:

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

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

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

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

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

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

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

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

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

 

 

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, djrandom сказал:

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

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

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

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

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

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

Clip152.png.9df0d10e0c532626b4f10c54bec9cc8a.png

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

Clip153.png.0289b82c20317c0df64495036dfa0444.png

Hide  

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

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

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

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

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

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

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

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

SW2016SP3

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

image.png

 

Ссылка на сообщение
Поделиться на других сайтах
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

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

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

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

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

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

image.png

 

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

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

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

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

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

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

 

Ссылка на сообщение
Поделиться на других сайтах
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

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

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

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

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

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

image.png

Спасибо!

Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, peshkoff сказал:

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

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

Цитата

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

 

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

 

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

 

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Kelny сказал:

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

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

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

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

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

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

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

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

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

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

Изменено пользователем peshkoff
Ссылка на сообщение
Поделиться на других сайтах
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

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

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

 

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

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

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

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

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

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

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

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

 

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

 

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

 

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

image.png

 

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

 

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

image.png

 

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

 

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

Ссылка на сообщение
Поделиться на других сайтах
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) - можно удалять действиями со строкой или будет само откинуто после сохранения с галочкой Обновить имена компонентов... 

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

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

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

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

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

 

 

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

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

@peshkoff

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

Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, brigval сказал:

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

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

 

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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




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