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

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

 

Хочу посмотреть значение размера эскиза таким кодом:

 
 
     For i = 1 To swSelMgr.GetSelectedObjectCount2(-1)
 
        If swSelMgr.GetSelectedObjectType3(i, -1) = swSelectType_e.swSelDIMENSIONS Then
            Dim swDispDim As SldWorks.DisplayDimension
            Set swDispDim = swSelMgr.GetSelectedObject6(i, -1)
 
            Dim swDim As SldWorks.Dimension
            Set swDim = swDispDim.GetDimension2(Empty)
 
            MsgBox swDim.GetValue3(swThisConfiguration, Empty)
       
        End If
    Next i
 
А он вместо значения размера показывает ошибку. Где я накосячил?

 

 

Вместо

 

Set swDim = swDispDim.GetDimension2(Empty)

 

должно быть:

 

 Set swDim = swDispDim.GetDimension2(0)

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


@@artem_cad, как человек, причастный (или когда-то) к SW Corp, расскажи пожалуйста:

http://cccp3d.ru/topic/27048-solidworks-api/page-24#entry705509

Так ли это? Получается что сам топик API SW - пиратство  :smile:

 

Да, это очень интересная «находка». Выражу тут свое мнение о том, как я это трактую. Но я не гарантирую, что это есть правильное трактование.
 
  1. Я, все-таки, предполагаю, что это относится к программам с закрытым кодом, так как сдесь не сказано об исходном коде. Т.е., думаю, что к макросам это не относится, так как Вы перекладываете всю ответственность на конечного пользователя.
  2. Если же программа с закрытым кодом (особенно это относится к аддинам), то пользователь не знает (не может узнать), что программа делает на самом деле. Более того программа может нарушить работопособность SolidWorks вцелом. И, казалось бы, это должны быть проблемы пользователя и непосредственно поставщика софта, если бы не одно НО. Пользователи на подписке обращаются к тех. саппорту реселлеров и, непосредсвенно, к самому SolidWorks. И таким образом возможно будут потрачены время и деньги, а также возможно репутация «по вине» такого приложения.
  3. Насчет документации, это может быть устарелым пунктом, так как она сейчас доступна онлайн.
В общем, чтобы понимать лицензии и лицензионные соглашения нужно иметь хорошее юридическое образование (у меня такого к сожалению нет). Если прочитать такие в других софтах, то можно найти много похожих пунктов. Но во многих случаях EULA используется больше для того, чтобы защитить разработчика, а не ограничить пользователя IMHO.
Ссылка на сообщение
Поделиться на других сайтах

Со вторым пунктом согласен почти полностью)) Ибо есть и некое соглашение при установке не "родного" аддона. Да те же SW про свой Simulation пишут что результаты расчёта - это на ответственности расчётчика. Мутно всё.

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

Со вторым пунктом согласен почти полностью)) Ибо есть и некое соглашение при установке не "родного" аддона. Да те же SW про свой Simulation пишут что результаты расчёта - это на ответственности расчётчика. Мутно всё.

То есть писать аддоны и exe-шниики- это пиратство? Бред какой то... Ведь SW тем и подкупил много лет назад, что одним из первых предоставил cвой, довольно мощный, API.

Изменено пользователем Shvg
Ссылка на сообщение
Поделиться на других сайтах
это пиратство?
 Да, если ты не зареган у них как Partner или по крайней мере как Research Assiciate. Ну, писать то можешь, но ТОЛЬКО для внутреннего пользования.
Ссылка на сообщение
Поделиться на других сайтах
Ну, писать то можешь, но ТОЛЬКО для внутреннего пользования.

...или не попадайся :ph34r:  

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

Здравствуйте, Артем!

 

Вместо

 

Set swDim = swDispDim.GetDimension2(Empty)

 

должно быть:

 

 Set swDim = swDispDim.GetDimension2(0)

 

Спасибо, но это не помогло. 

 

post-10257-0-66458100-1449598725.jpg

 

Может быть есть ещё варианты?

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

Попробуйте устаревшую функцию  Set swDim = swDispDim.GetDimension() ;

Аналогично. 

То есть вместо значения размера выставляет сообщение об ошибке. :sad:

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

Аналогично. 

То есть вместо значения размера выставляет сообщение об ошибке. :sad:

Option Explicit

Dim swApp As SldWorks.SldWorks

Sub main()



Set swApp = Application.SldWorks



    Dim swModel As SldWorks.ModelDoc2

    Set swModel = swApp.ActiveDoc

    If swModel Is Nothing Then Exit Sub

    

    Dim docType As Integer

    docType = swModel.GetType()

    

    If docType <> swDocDRAWING Then Exit Sub

    

    Dim swSelMgr As SldWorks.SelectionMgr

    Set swSelMgr = swModel.SelectionManager

    

    Dim countObj As Integer

    countObj = swSelMgr.GetSelectedObjectCount

    Dim i As Integer

    

    For i = 1 To countObj

        Dim selType As Integer

        selType = swSelMgr.GetSelectedObjectType2(i)

        If selType = swSelDIMENSIONS Then

            Dim swDispDim As SldWorks.DisplayDimension

            Set swDispDim = swSelMgr.GetSelectedObject5(i)

 

            Dim swDim As SldWorks.Dimension

            Set swDim = swDispDim.GetDimension2(Empty)

            

            Dim varValDim As Variant

            varValDim = swDim.GetValue3(swThisConfiguration, Empty)

            

            Dim valDim As Double

            valDim = varValDim(0)

            

            MsgBox valDim

        End If

        

    

    Next i

    



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

Shvg, СПАСИБО!!!

Заработало! :biggrin:

 

Только пришлось эту строчку 

 

 

...
If docType <> swDocDRAWING Then Exit Sub

...

 

 

 

закомментировать, без неё лучше  :smile:

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

Цель макроса, перенести все данніе из свойства списка вырезов листового материала и сварной конструкции в свойства файла в закладку конфигурация. Дабы потом все эти данные использовать в спецификации.

Вот образец спецификации:

 

Попробуйте сделать, как в этом примере: http://cccp3d.ru/topic/76894-%D0%BA%D0%B0%D0%BA-%D0%BF%D1%80%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0-%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0-%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%BE%D0%B2/

 

 

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

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

Попробуйте сделать, как в этом примере: http://cccp3d.ru/topic/76894-%D0%BA%D0%B0%D0%BA-%D0%BF%D1%80%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0-%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0-%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%BE%D0%B2/

 

 

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

У меня данный пример не работает. В условный оператор If не может зайти. То есть не может найти CutListFolder.

Я подозреваю что это из за того, что у меня стоит руссифицированый Solid. Хотя проба замены CutListFolder на Список вырезов(1) или на Sheet<1> или на Solid Bodies тоже ни чего ни дал.

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

У меня данный пример не работает. В условный оператор If не может зайти. То есть не может найти CutListFolder.

Я подозреваю что это из за того, что у меня стоит руссифицированый Solid. Хотя проба замены CutListFolder на Список вырезов(1) или на Sheet<1> или на Solid Bodies тоже ни чего ни дал.

Можете прикрепить пример модели? Тип элемента не локализируется, т.е. макрос должен работать на любой локале.

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

Можете прикрепить пример модели? Тип элемента не локализируется, т.е. макрос должен работать на любой локале.

Да конечно. Вот архив

Пробная сборка1.rar

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

Спасибо за деталь. Написал макрос, который переносит  свойства из списков вырезов активной моделе (сборка или деталь) в свойства конфигурации. Скачать можно здесь: http://cloud.ic3d.com.au/macros/CopyPropertiesFromCutListToConf.swp

 

~A.

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

@@artem_cad, как, кстати, поживает ваш проект на MyIntercad? Где была панелька с макросами, загружаемыми через интернет.

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

@@artem_cad, как, кстати, поживает ваш проект на MyIntercad? Где была панелька с макросами, загружаемыми через интернет.

 

Неплохо, спасибо :-). Скоро выходит очередная версия. Кстати, буквально на днях выпускаем бета-версию нового тула (некий апп стор с макросами), который позволит пропускать макрос на выбранных папках, автоматически перезапускать SolidWorks, если тот завис или закрошился.

 

Приложение будет полуоблачным, т.е. можно автоматом обновлять до новой версии + пополняемая библиотека макросов. Также можно будет писать собственные макросы и передавать в них аргументы. Будет поддерживаться локализация (изначально русская и английская версии).

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

  :clap_1:

только лишь макросы?

Добавлено: по-моему, я уже спрашивал про такой "магазин"  :rolleyes:  он до сих пор в планах? Или вот прям работа уже ведётся?

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

  :clap_1:

только лишь макросы?

Добавлено: по-моему, я уже спрашивал про такой "магазин"  :rolleyes:  он до сих пор в планах? Или вот прям работа уже ведётся?

 

На этой неделе выпуск Бета-версии. Я их называю "задачи" (т.е. это макросы VBA/VSTA + пару новых форматов скрипты с поддержкой аргументов и .NET модули). Но на начальном этапе не будет возможности добавлять пользовательские макросы в онлайн библиотеку, но возможно будет использовать свои задачи-макросы локально.

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • jtok
      Он сильно зависит от марки PP, от расчетной температуры и от расчетного срока службы (количества циклов нагружения). Поищите стандарт DVS 2205, части 1 и 2. В нем есть номограммы долговременной прочности. Он на немецком, но ничего лучше нет. Номограммы эти приведены по ссылке, внизу страницы, раздел "Список приложений".  Например, диаграмма для PP type 1 по ссылке: В оригинале же выглядят они вот так (для PP type 1): Также был древний документ на русском по этой теме, прицеплен к сообщению. _raschet_emkosti DVS 2205-2.pdf
    • Andrey_kzn
      - тут возможно смысл сообщения в том, что оси не синхронизированы, только вот зачем синхронизировать  оси X и Y не понятно. В случае двух шпинделей например,  coupled будет означать синхронизацию.
    • niagara39
      Правильно ХУ на этом станке не перпендекулярны. Тормоз оси У включен постоянно, отключается только при перемещении самой оси У. Координаты не  меняются... Знать бы что за параметры, пока ничего подобного не нашли
    • nicomed
      Поднял старые записи. Из того что было максимально похоже на то, что можно было назвать "получалось" :   Самому не совсем понятно поведение СкетчМенеджера при отрисовке линии от координат 0,0,0 - частенько слетает в произвольное место на виде. 
    • maxx2000
      на втором  скрине PLC сообщает что-то типа "старт программы запрещён потому что оси ХУ не связаны". Возможно станок в режиме точения должен заблокировать перемещение У, включить тормоз или что-то ещё для произвольного смещения под нагрузкой. Возможно косяк в тексте программы.
    • maxx2000
      @sneg0vik как это? Если ХУ не перпендикулярны то это уже не У, а скажем ось В. Нет, конечно в теории можно построить станок с неперпендикулярными ХУ. Вопрос зачем? Gildemeister CTX 420 это же токарно-фрезерный с осью У
    • sneg0vik
      На станке ось "X" является наклонной по отношению к оси "Y" (т. е. они не перпендикулярны). Поэтому надо полагать (учитывая текст ошибки) у вас отключена связь оси "Y" с осью "X".   Проверьте меняются ли координаты оси "X", когда вы двигаете ось "Y". И наоборот. Если - нет, то ищите как включить (наверное через параметры) взаимосвязь оси "Y" с осью "X".
    • ДОБРЯК
      Если ваш Заказчик и такую работу примет, то необходимо в шпоночное отверстие добавить и массу воды. Примерно 1/4 от той массы которую вы будете добавлять.  Да и еще и не забыть добавить момент инерции от воды.
    • Soprin
      В функции MOVE по F7.3 должно же из R270 переносить в R278?
    • niagara39
      Причина все еще не найдена... Но заметил, что сразу после включения в меню диагностики появляется следующее предупреждающее сообщение: 10155 M: Y-axis: Y-axis and X-axis not coupled , но причина его появления и его смысл неизвестны
×
×
  • Создать...