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

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

 

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

 
 
     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 пользователей

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



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