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

Помогите разобраться в коде


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

Всем добрый день. Нашел на просторах инета код который по идее должен выводить перечень деталей борки.
Однако он не работает, и я непойму почему.
Вод код:
 

Option Explicit
Sub main()
Dim swApp                                 As SldWorks.SldWorks
Dim swModel                              As SldWorks.ModelDoc2
Dim swModDocExt                     As SldWorks.ModelDocExtension
Dim swSelMgr                            As SldWorks.SelectionMgr
Dim swFeat                                As SldWorks.Feature
Dim swComp                              As SldWorks.Component2
Dim vModelPathName               As Variant
Dim vComponentPathName      As Variant
Dim vFeature                             As Variant
Dim vDataType                          As Variant
Dim vStatus                               As Variant
Dim vRefEntity                          As Variant
Dim vFeatComp                       As Variant
Dim nConfigOpt                       As Long
Dim sConfigName                   As String
Dim nRefCount                       As Long
Dim nSelType                         As Long
Dim i                                       As Long
   Set swApp = CreateObject("SldWorks.Application")
   Set swModel = swApp.ActiveDoc
   Set swModDocExt = swModel.Extension
   
    nRefCount = swModDocExt.ListExternalFileReferencesCount
    swModDocExt.ListExternalFileReferences vModelPathName, vComponentPathName, vFeature,vDataType, vStatus, vRefEntity, vFeatComp, nConfigOpt,sConfigName


    Debug.Print "Имя модели = " + swModel.GetPathName
    Debug.Print "    Количество ссылок        = " + Str(nRefCount)
    Debug.Print ""
    For i = 0 To nRefCount - 1
        Debug.Print "    Model path + name      = " + vModelPathName(i)
        Debug.Print "    Component path + name  = " + vComponentPathName(i)
        Debug.Print "    Feature                = " + vFeature(i)
        Debug.Print "    Data type              = " + vDataType(i)
        Debug.Print "    Status                 = " + Str(vStatus(i))
        Debug.Print "    Reference entity       = " + vRefEntity(i)
        Debug.Print "    Feature component      = " + vFeatComp(i)
        Debug.Print "    Configuration option   = " & nConfigOpt
        Debug.Print "    Configuration name     = " & sConfigName
        Debug.Print " "
    Next i
 End Sub

 
 

 
После запуска объект создается из активного приложения
Выводится имя модели, а вот количество ссылок всегда выводится 0 какая бы модель не была активна в Солиде, то ли деталь то ли сборка.
И соответственно дальше ничего не выводится.
Ошибка где то в строках 23, 24, 25.
Кому не лень помогите разобраться.

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


Set swApp = CreateObject("SldWorks.Application")

Возможно стоит заменить на: 

Set swApp = GetObject(, "SldWorks.Application")

 

 

GetObject используется для присоединения к выполняющемуся экземпляру сервера автоматизации. 

...

 CreateObject используется для запуска нового экземпляра сервера автоматизации.

...

 

https://support.microsoft.com/ru-ru/kb/288902
Изменено пользователем Kelny
Ссылка на сообщение
Поделиться на других сайтах

Подскажите, что означает эта строка?

 

Set swModDocExt = swModel.Extension

 

А конкретно что это за метод .Extension?

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

Не помогло

 а должно было.

 

 

что это за метод

Это не метод, это свойство http://help.solidworks.com/2015/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.imodeldoc2~extension.html

 

 

что означает эта строка?

Получение интерфейса для работы с расширениями ModelDoc http://help.solidworks.com/2015/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.imodeldocextension_members.html

 

 

Ошибка где то

 

Ошибок нет. Всё выводит как надо.

 

 

который по идее должен выводить перечень деталей борки

Нет, этот макрос выводит список внешних ссылок    этим методом

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

Метод ModelDocExtension::ListExternalFileReferences возвращает все внешние ссылки у документа (например, если эскиз находится в контексте другой детали).

 

Чтобы получить все компоненты в сборке наиболее простым способом будет воспользоваться методом IModelDoc2::GetDependencies2.

 

Пример ниже:

 

Артем

Option Explicit

Sub main()
    
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim i As Long

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
       
    Dim vDeps As Variant
    vDeps = swModel.GetDependencies2(True, True, False)
    For i = 1 To UBound(vDeps) Step 2
        Debug.Print vDeps(i)
    Next
    
 End Sub

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

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

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

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

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

  Разрешено не более 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, если не более.
×
×
  • Создать...