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

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

Или посовременнее Solidworks GearTrax.

Но это приложение, вроде, только для элементов трансмиссий (то бишь зубьев)???

Для данной темы сойдёт...

А MechSoft немного по-разнообразнее (и крепежи, и другие расчёты) - жалко, что такого уже не делают...

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


ЭЭЭЭЭЭ!!!!!

ИГРАЕМ В ТУПИЛКУ ЧТО-ЛИ?!?!?!??!?

читай вопрос!

Там нее как ПОСТРОИТЬ ЭВОЛЬВЕНТУ.

Там вопрос как сделать макрос, автоматизирующий сей процесс.

У тебя есть мысли как применить VBA в этом деле?

Зачем изобретать велосипед - если все уже изобретено. Макрос я не писал но формулами эвольвенту получал(поищу файл если надо и скину).

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

streamdown

Чудеса просто - снес все под чистую почистил ручками реестр. Поставил Solid2009SP0, установил с того же диска API SDK - в результате в разделе VB появился Workflow а в VC++ так ничего и не появилось. Антивирей вообще нету(Доменная сеть) ставил под админом все.

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

alyaska

Ну, как говорится, вангую)))

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

- У меня стояла 2010 студия. Решил посмотреть на 2012. Поставил. Удалил. 2012 студия, устанавливаясь, переписала кучу библиотек на новые версии, в результате после сноса - 2010 студия ссылалась на библиотеки будущих версий и вываливалась (либы системные - не солидовские, у меня например валился редактор Entity Framework).

Попробуйте <noindex>так</noindex>. Потому что проблема именно локального характера.

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

SW 2012, win7x32

Учусь программировать на vba. Задача слудующая: есть чертеж сборки состоящей из узлов и деталей, расставляю позиции вручную, затем хочу макросом в текст этих позиций втавить свойство пользователя деталей и узлов. С деталями все впорядке нужное свойство вставляется, а вот в узлах вставляется свойство детали узла к которой прикреплена позиция, а не всего узла , а хотелось бы вставить свойство узла в целом.

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

Ребята может кто может скинуть примеры кода с сайта(пароль некий просит...)? а то у меня нет туда доступа :) буду благодарен.

Напишите в личку дам мыло.

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

Приветствую всех. 

 

С названием темы конечно опростоволосился, и не поменять. Прошу пардона.

"Массовая смена конфигураций деталей в сборке"

 

Обычно стараюсь решить все свои проблемы чтением мануалов, но тут что-то совсем застрял.

Подсобите пожалуйста если есть идеи.

Задача - в пределах открытой сборки необходимо для всех подсборок и деталей сменить связанную конфигурацию. 

В интерфейсе перепривязывать конфигурации сотен и тысяч деталей - не вариант (пальцы устают :))

В сборке 2500 деталей в нескольких подсборках. Режим большой сборки включен.

 

Мне как программисту, написать макрос не сложно

Решение в хелпе есть : 



Dim vChildCompArr As Variant
Dim vChildComp As Variant
Dim swChildComp As SldWorks.Component2


vChildCompArr = swComp.GetChildren

For Each vChildComp In vChildCompArr
 Set swChildComp = vChildComp
 swChildComp.ReferencedConfiguration = "такая сякая конфигурация"
Next

Решение работает - делает то что мне надо, однако делает это не то что медленно, а очень медленно. Ждать надо часы. 

Причина явно в том что после каждой итерации солид перерисовывает/перестраивает внешний вид сборки, визуально на экране детали меняются в процессе работы. 

Пытался воспользоваться инструкцией:

Dim Assem As SldWorks.AssemblyDoc
Set Assem = swModel
Assem.EnableAssemblyRebuild = False

но не помогло ни капельки.

 

Окошко "конфигурация компонента" эту операцию делает без тормозов, перестраивая сборку лишь при закрытии. 

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

 

Куда копать?

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

Попробуйте переключать настройки http://help.solidworks.com/2012/english/api/sldworksapi/rebuild_document_on_activation_example_csharp.htm


А можно ещё попробовать изменять свойства детали

 

Option Explicit 


Dim swApp As SldWorks.SldWorks 
Dim Part As SldWorks.ModelDoc2 
Dim assy As SldWorks.AssemblyDoc 
Dim boolstatus As Boolean 
Sub main() 


Set swApp = Application.SldWorks 


Set Part = swApp.ActiveDoc 
Set assy = Part 
boolstatus = Part.Extension.SelectByID2("Part1-1@Assem1", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) 
'Part.CompConfigProperties4 2, 0, True, "Conf1", False 
assy.CompConfigProperties4 2, 0, True, True, "Conf2", False 
Part.ClearSelection2 True 
boolstatus = Part.EditRebuild3 End Sub 
Ссылка на сообщение
Поделиться на других сайтах

Спасибо! К сожалению не помогает. Во всех вариантах - одинаковая скорость обработки.

Инструкции EnableGraphicsUpdate и скрытие документа тоже эффекта не дают. Видимо придется смирится. 

Единственный вариант, который отрабатывает быстро 

boolstatus = Part.Extension.SelectAll
Part.CompConfigProperties4 2, 0, True, "Conf1", False 

Но он по логике не подходит. 

Есть подозрение что все-таки это сборка такая тормозная (сам виноват, на основе файла уравнений все), правда как работает окошко "конфигурация компонента" остается загадкой :)

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

 

Кстати

Extension.SelectAll

как-то странно, не лучше ли пробегаться по деталям сборки?

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

Решение работает - делает то что мне надо, однако делает это не то что медленно, а очень медленно. Ждать надо часы. 

Причина явно в том что после каждой итерации солид перерисовывает/перестраивает внешний вид сборки, визуально на экране детали меняются в процессе работы. 

Пытался воспользоваться инструкцией:

Dim Assem As SldWorks.AssemblyDoc
Set Assem = swModel
Assem.EnableAssemblyRebuild = False

но не помогло ни капельки.

 

Окошко "конфигурация компонента" эту операцию делает без тормозов, перестраивая сборку лишь при закрытии. 

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

 

Куда копать?

Работа с компонентами в сборке у SW довольно трудоемкая операция даже стандартными методами, например, замена компонента или замена конфигурации. Наилучшая скорость достигается, когда приложение реализовано в виде addins-а (dll), то есть работает в одном адресном пространстве с SW. Разница может достигать двух порядков по сравнению, например, с приложением, реализованным в виде *.exe или макросом... Попробовал сделать смену конфигураций у компонентов через addins, и вот что получилось.

post-3876-0-77616300-1378410740.jpg

 

Быстрее, если менять конфигурацию у каждого компонента, вряд ли получится....

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

Потому что конфигураций более чем две, и надо переключать их интеллектуально. 

грубо говоря, если выбрана Conf1, то подменить на ConfAlt1, Conf на ConfAlt, и т.д. 


Наилучшая скорость достигается, когда приложение реализовано в виде addins-а (dll),

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

Задача - в пределах открытой сборки необходимо для всех подсборок и деталей сменить связанную конфигурацию.

 

Ждать надо часы.

 

 

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

 

Для этого понадобится библиотека SWDocumentManager, которая позволяет считывать инфу о файлах (а в большинстве случаев еще и редактировать) не загружая в солиде. Поскольку графику обрабатывать не приходится, такой способ работает в разы быстрее.

Чтобы ее подключить для VBA заходим в Tools->References, там ставим галку напротив "SWDocumentMgr 2012 Type Library"

Справка лежит в "...\SolidWorks\api\swdocmgrapi.chm"

Public swClass As SwDMClassFactory
Public SDM As SwDMApplication
Public MainAsm As SwDMDocument14
Public Part As SwDMComponent8
Public ConfMng As SwDMConfigurationMgr
Public Conf As SwDMConfiguration13
Public CList As Variant
Public PList As Variant

Sub main()

Set fs = CreateObject("Scripting.FileSystemObject")
Set swClass = CreateObject("SwDocumentMgr.SwDMClassFactory")
Set SDM = swClass.GetApplication("")  ' СМ. ПРИМЕЧАНИЕ ПОСЛЕ КОДА!!!!!!

stemp = "C:\TST\Сборка1.SLDASM" ' имя сборки в которой необходимо заменить конфигурации

Set MainAsm = SDM.GetDocument(stemp, swDmDocumentUnknown, False, 0)

Set ConfMng = MainAsm.ConfigurationManager
CList = ConfMng.GetConfigurationNames
Set Conf = ConfMng.GetConfigurationByName(CList(0))

PList = Conf.GetComponents  ' список всех компонентов сборки

For i = 0 To UBound(PList) ' тут нужен необходимый алгоритм замены конфигураци (в данном примере замена поголовная)
    Set Part = PList(i)
    ok = Part.Replace(Part.PathName, "00", False)
Next i

MainAsm.Save
MainAsm.CloseDoc

End Sub

ПРИМЕЧАНИЕ

 

Для инициализации переменной SDM функции GetApplication() необходимо передать лицензионный код.

Этот код можно бесплатно получить у SWR, если у вас есть лиценция на сам солид.

Необходимость данной лиценнзии солидовцы объясняют тем, что данная библиотека "при неправильном использовании, может привести к повреждению данных".

Таким образом вводя лицензионный код вы соглашаетель на добровольное использование библиотеки, снимая с Dassault Systemes ответственность за ваши потенциально кривые руки :)

От себя могу присоединится  к Dassault и посоветовать делать бэкапы перед использованием данной либы.

 

PS если по каким то причинам вы не хотите запрашивать код у официалов, то можно почитать другие ветки форма, напиример  пост №27 вот здесь

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

:happy:  так можно всё переопределить. Вопрос был задан конкретно.

Ссылка на сообщение
Поделиться на других сайтах
:happy: так можно всё переопределить. Вопрос был задан конкретно.

 

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

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

Всем добрый день! У меня банальная, но неразрешимая(я пока не нашел) проблема. Пишу я на C#. Задача простая, открыт SolidWorks, запускаем прогу, жмем кнопку - создается новый документ сборки и должна вставится в нее деталь. Все бы прекрасно, но addComponent() возвращает false. Смотрел справку, искал на форумах, писал в тех.поддержку - отдача ноль. Помогите, как правильно?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using SolidWorks.Interop.sldworks;

namespace SW_assembly_example
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SldWorks swApp = new SldWorks();

            swApp.NewAssembly();

            ModelDoc2 swDoc = null;
            AssemblyDoc swAssembly = null;
            bool boolstatus = false;
            swDoc = ((ModelDoc2)(swApp.ActiveDoc));
            swAssembly = ((AssemblyDoc)(swDoc));
            boolstatus = swAssembly.AddComponent("D:\\Part1.SLDPRT", 0, 0, 0);
            if (boolstatus == false)
                System.Windows.Forms.MessageBox.Show("AddComponent() is false");
        }
    }
}

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

 

Всем добрый день! У меня банальная, но неразрешимая(я пока не нашел) проблема. Пишу я на C#. Задача простая, открыт SolidWorks, запускаем прогу, жмем кнопку - создается новый документ сборки и должна вставится в нее деталь. Все бы прекрасно, но addComponent() возвращает false. Смотрел справку, искал на форумах, писал в тех.поддержку - отдача ноль. Помогите, как правильно?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using SolidWorks.Interop.sldworks;

namespace SW_assembly_example
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SldWorks swApp = new SldWorks();

            swApp.NewAssembly();

            ModelDoc2 swDoc = null;
            AssemblyDoc swAssembly = null;
            bool boolstatus = false;
            swDoc = ((ModelDoc2)(swApp.ActiveDoc));
            swAssembly = ((AssemblyDoc)(swDoc));
            boolstatus = swAssembly.AddComponent("D:\\Part1.SLDPRT", 0, 0, 0);
            if (boolstatus == false)
                System.Windows.Forms.MessageBox.Show("AddComponent() is false");
        }
    }
}

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

SldWorks swApp = new SldWorks();

            swApp.NewAssembly();

            ModelDoc2 swDoc = null;
            AssemblyDoc swAssembly = null;
            swDoc = ((ModelDoc2)(swApp.ActiveDoc));
            swAssembly = ((AssemblyDoc)(swDoc));
            Component2 comp = default(Component2);
            swApp.OpenDoc6("C:\\Temp\\Part1.sldprt", 1, 2, "", 0, 0);
            comp = swAssembly.AddComponent4("C:\\Temp\\Part1.SLDPRT", "Default", 0, 0, 0);
            if (comp == null)
                System.Windows.Forms.MessageBox.Show("AddComponent() is false");
            swApp.ActivateDoc(swDoc.GetTitle());
Ссылка на сообщение
Поделиться на других сайтах
верным будет такой код
 

А вы пробовали (согласно справке) сначала открыть деталь и только после этого добавлять компонент? И после открытия запускать AddComponent (без цифры на конце функции)

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • Viktor2004
      Но ведь в NCGUIDE если запустить 0i-MFPlus там уже есть какое-то кастомное PMC Скачать его, открыть в FLader3 посмотреть все что надо, сравнить с реальным PMC
    • Guhl
      Ошибка в теме Какой надо выбрать тип РМС в NCGUIDE для FS0iF+ (и как это сделать), чтобы нормально импортировался файл карты памяти от реальной ЧПУ? В FLADDER 3 при импорте тип РМС определяется как FS0iF+ PMC/L. После копирования этого файла в эмулятор получаю ошибку ER04 PMC TYPE UNMATCH В эмуляторе вообще вижу только типы памяти РМС А/В/С. Ни с одним из них реальный файл не работает    
    • may1on
      Как мне повторить вот эту строчку ? G83 Z-20. R-4. Q4000 F0.07
    • куркуль
      у нас 802 трёх осевая сверлилка. вторая ссылка. там всё расписано.
    • Sabadash
      Подскажите стратегию обработки в 4 осях, когда деталь обрабатывается спирально при этом инструмент ориентирован всегда по нормали к поверхности обрабатываемой детали? Роторная всегда ориентирует инструмент на ось вращения, не подходит в случаях когда деталь выходит за пределы оси вращения. Пока пробую 5Х с заблокированной 4 осью.    
    • may1on
      Посмотрел , но ничего не понял , потому что не знаю английский, а через Яндекс перевод не доходит суть его слов .
    • куркуль
      https://ya.ru/video/preview/6063553017898622447          https://bstudy.net/865175/tehnika/glubokoe_sverlenie_cycle83?ysclid=lzfqywr8k4650207379     посмотри это. 
    • may1on
      Привет , столкнулся с такой проблемой что не понимаю как работает CYCLE83 на стойке 808D токарного станка. Прощу помочь мне и указать какие параметры вбивать на Сименсе что бы получить похожий код как на FANUC .    %  O2244 G28 U0. G28 W0. G40 G80 G90 G21 G97 G18 G95 G50s2500 G54 N1 (SV D18.) T0303 G54 G97M03S800 G00 Z20. G00 X0. Z20. M08 G83 Z-20. R-4. Q4000  F0.07 G80 G00 X0. Z20.  M09 G28U0. G28W0. M05 M01 M30 %   И если есть возможность опишите русским языком что делает каждый параметр, прочитав инструкцию к  циклу я ничего не понял)    
    • gudstartup
      g96 хаас совместим по g кодам с fanuc @gunilla G96 Постоянная скорость резания включена G-код на токарный станок HAAS G96 дает команду системе управления поддерживать постоянную скорость резания на кончике инструмента. Скорость вращения шпинделя зависит от диаметра детали, в которой выполняется рез, и заданного значения S (об/мин = 3,82xSFM/DIA). Это означает, что скорость шпинделя увеличивается по мере приближения инструмента к X0. Когда для настройки 9 установлено значение ДЮЙМЫ, значение S указывает количество футов в минуту. Когда для параметра 9 установлено значение MM, значение S указывает количество поверхностных метров в минуту. ПРЕДУПРЕЖДЕНИЕ Безопаснее всего указать максимальную скорость шпинделя для функции «Постоянная скорость поверхности». Используйте G50, чтобы установить максимальное число оборотов шпинделя. Отсутствие ограничения позволяет увеличить скорость вращения шпинделя по мере того, как инструмент достигает центра детали. Чрезмерная скорость может повредить детали и инструменты. посмотрите здесь https://cnc-maniac.ru/g-kod-na-tokarnyj-stanok-haas/
    • gunilla
      Ни в книге, ни в списке G кодов на станке не значится G69. Не знаю, что это. Видимо, это что-то более новое. Нашему Haas-у лет 15, если не более.
×
×
  • Создать...