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

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

Имеется сборочный чертеж с проставленными позициями (позиции как текст).

Необходимо изменить текст позиции в зависимости от того, к какой детали прикреплена позиция.

Вопрос: как узнать к какой детали (сборке) прикреплена позиция?

Желательно VBA.

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


Из VBA выжал все, что мог. Хочу перейти на Add-in.

@@streamdown,  подскажите, пожалуйста, что я делаю не так?

Пытаюсь запустить пример из SW API для С#. 

 

При попытке собрать решение, на строчке:

IModelView mView;
            mView = (IModelView)document.GetFirstModelView();

Возникает ошибка:

1>..........EventHandling.cs(38,33,38,61): error CS0656: Отсутствует обязательный для компилятора член Microsoft.CSharp.RuntimeBinder.Binder.Convert"

И еще с десяток аналогичных ошибок по всем файлам *.cs . Все на операции приведения типов.

Visual Studio 2015 Express. В настройках проекта стоит NetFramework4. SW2015 SP1.1 . x64

Прикрепляю проект к сообщению.

---

добавлено: нормально собранный проект можно найти в следующем сообщении.

 

 

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

@@streamdown, спасибо. Вот я поражаюсь дубовости C# - на каждый чих подключите библиотеку. Кто бы мог подумать, что для выполнения операции приведения типов нужно отдельно подключать библиотеку. Кажется, я начинаю понимать почему SUN с Microsoft разругались.

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

CSharpAddinSample.rar

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

Всем доброго времени суток!

Есть компонент и мне его нужно повернуть в пространстве. Есть вектор нормали компонента, но вот кода Solidworks в API для поворота именно по вектору нормали (а не по углам), нет.

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

 

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

Доброго времени суток форумчане) не решу задачу с получением name например точки на чертеже

boolstatus = Part.Extension.SelectByID2(name, "SKETCHPOINT", 0.098299016, 0.20044156, 0, False, 0, Nothing, 0)
где например mame = "Point3" 

пробывал так

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim obj As Object
Dim reference As Variant
Dim docext As SldWorks.ModelDocExtension
Dim swfeat As SldWorks.Feature

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc

Dim skPoint As Object
Set skPoint = Part.SketchManager.CreatePoint(0.009842, 0.008392, 0#)

Set obj = Part.SketchManager.GetSelectedObject6(1, -1)
Set swfeat = obj.GetSketch

Open "c:\temp\1.txt" For Output As #1
Print #1, sefeat.Name
Close #1
End Sub

или так получить уникальный идентификатор

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
Set docext = Part.Extension

Dim skPoint As Object
Set skPoint = Part.SketchManager.CreatePoint(0.009842, 0.008392, 0#)

Set obj = Part.SelectionManager.GetSelectedObject5(1)
reference = docext.GetPersistReference3(obj)

Open "c:\temp\1.txt" For Output As #1
Print #1, reference
Close #1
End Sub

ошибка

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

Получаете объект SketchPoint, как показано здесь:

http://help.solidworks.com/2015/english/api/sldworksapi/Get_Sketch_Points_Selection_Mark_Example_VB.htm

 

Получаете из объекта SketchPoint нужную вам информацию. Вот все методы и свойства этого объекта:

http://help.solidworks.com/2015/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.ISketchPoint_members.html?id=1c931320e3e84d5ea969fc649c8ab4aa#Pg0

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

Спасибо    Солнцеворот   за ответ! реализовал вот только не пойму где ошибся

Dim swApp                       As SldWorks.SldWorks
Dim swModel                     As SldWorks.ModelDoc2
Dim swSelMgr                    As SldWorks.SelectionMgr
Dim swFeat                      As SldWorks.Feature
Dim swSketch                    As Sketch
Dim sketchPoints                As Variant
Dim swSketchPoint               As SldWorks.SketchPoint
Dim swSelData                   As SldWorks.SelectData
Dim status                      As Boolean
Dim Part                        As Object

Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Dim skPoint As Object
Set skPoint = Part.SketchManager.CreatePoint(0.034982, 0.035489, 0#)


Set swSelMgr = Part.SelectionManager
Set swFeat = swSelMgr.GetSelectedObject6(1, -1)
Set swSketch = swFeat.GetSpecificFeature2
sketchPoints = swSketch.GetSketchPoints2
Set swSketchPoint = sketchPoints(0)  

'запись в файл
Open "E:\1.txt" For Output As #1
	Print #1, "Point" & swSketchPoint.GetID(1)
	Close #1

'снимаем активность точки
Part.SetPickMode
Part.ClearSelection2 True
End Sub

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

ругается на эту строчку

Set swFeat = swSelMgr.GetSelectedObject6(1, -1)
Изменено пользователем denchikk
Ссылка на сообщение
Поделиться на других сайтах

заработало так

Dim swApp As Object

Dim Part As Object
Dim obj As Object
Dim reference As Variant
Dim docext As SldWorks.ModelDocExtension

Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
Set docext = Part.Extension

Dim skPoint As Object
Set skPoint = Part.SketchManager.CreatePoint(0.03401, 0.038612, 0#)
Set obj = Part.SelectionManager.GetSelectedObject5(1)
'получение id объекта
reference = docext.GetPersistReference3(obj)


Open "E:\1.txt" For Output As #1
Print #1, reference
Close #1

End Sub

он выдает кракозябры открыв в notepad++ менял кодировки штирлиц на сайте Артема Лебедева  кодировка не определилась

 

сам файл полученный

 

 

1.txt

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

) нашел это - https://forum.solidworks.com/thread/67749все сделал как там

    Set obj = swModel.SelectionManager.GetSelectedObject5(1)
    Dim vIds As Variant
    Dim i As Integer
    vIds = docext.GetPersistReference3(obj)
    For i = 0 To UBound(vIds)
        Debug.Print vIds(i) & " ";
    Next

получил значение= 0 там не должен быть 0

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

@@denchikk, Запись в файл координат x,y,z выбранной точки

Dim swApp                       As SldWorks.SldWorks
Dim swModel                     As SldWorks.ModelDoc2
Dim swSelMgr                    As SldWorks.SelectionMgr
Dim swSketch                    As Sketch
Dim sketchPoints                As Variant
Dim swSketchPoint               As SldWorks.SketchPoint

Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Dim skPoint As Object
Set skPoint = swModel.SketchManager.CreatePoint(0.034982, 0.035489, 0#)

Set swSelMgr = swModel.SelectionManager
Set swSketchPoint = swSelMgr.GetSelectedObject6(1, -1)

Debug.Print swSketchPoint.IGetID
Debug.Print swSketchPoint.GetCoords

'запись в файл
Open "C:\1.txt" For Output As #1
    Print #1, "Point " & swSketchPoint.IGetID & ": " & swSketchPoint.X & "; " & swSketchPoint.Y & "; " & swSketchPoint.Z
    Close #1

'снимаем активность точки
swModel.SetPickMode
swModel.ClearSelection2 True
End Sub
В текстовый файл нужно записывать String. А вы записали объект reference. Конечно там будут непонятные символы.
Функция GetPersistReference3  возвращает не String, а объект.
Ссылка на сообщение
Поделиться на других сайтах

@@Солнцеворот, спасибо! :)

 

swSketchPoint.IGetID - получить номер относительно количества элементов

 

 swSketchPoint.GetID(1) - получить номер относительно чертежа -отсюда теперь можно привязываться к нему

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

@@denchikk, нет. ID - это уникальный идентификатор объекта в конкретной области видимости (в данном случае в эскизе). Поставите в эскизе 10 точек подряд, и их ID будут от 0 до 9 просто потому что алгоритм выдачи идентификаторов прост, как двери - каждому новому объекту выдаем следующее по счету число, начиная с нуля.

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

@@Солнцеворот, почему при записи макроса первая созданная точка получает имя "Point3"? и например после удаления вспомогательной точки то нумерация продолжается не затирая индексы точек созданных после вспомогательной точки? в любом случае swSketchPoint.GetID(1) выдает индекс равный индексу при записи макроса

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

@@denchikk, откуда я знаю почему?. Вы сейчас говорите о точке в эскизе или о точке справочной геометрии?

Я не понимаю.

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

о точке в эскизе которая далее удаляется а нумерация продолжается без вычета количества удаленных элементов (тех же точек)

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

@@denchikk, а нумерация продолжается, потому что ID используется для того, чтобы однозначно идентифицировать объекты, а не для подсчета их количества.

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

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Sivolap36
      Добрый день. Прошу подсказать в каком мануале есть описание энкодеров моторов, где-то видел, сейчас нем могу вспомнить.  Вот например два энкодера по ним ищу инфу  
    • Рома калужский
      это код подключения шпинделя как ось "С" но при этом он не перемещает револьверку, т.е. не работает по программе
    • Горыныч
      Еще совет: строить нужно только половину, если модель симметричная, тогда Солид меньше "косячит". И соглашусь с коллегами, идеальный вариант для гладкого построения - два сечения и две направляющие кривые, т.е. 4 управляющие кривые (кромки). При необходимости можно добавлять не только промежуточное сечение, но и направление. Не нужно пятаться построить всю поверхность одним фичером.  Пусть поверхности будут лоскутами, но соединяются по касанию или кривизне. 
    • ДОБРЯК
      Откуда появится смещение центра масс колеса, если колесо сбалансировано.  Жесткий сбалансированный вал, это условие данной задачи. На 4000 оборотах эти силы будут минимальны. Это разговор ни о чем в данной задаче. :=) Но даже если вы абсолютно точно определите эти частоты, с учетом всех сил. Что дальше с этими частотами делать? На основании чего делать вывод о работоспособности изделия? Это в учебной работе получили число, работу приняли и сдали в архив. Какая практическая ценность всех этих уточнений в данном случае?:=)  
    • Борман
      Если еще не поздно... я и сам погрузился бы. Физика такая, для вала с одним колесом... F - это понятно, центробежное смещение центра масс колеса M - момент от центробежных сил, который не появится, если колесо не повернется при изгибе вала. Обрати внимание, что BW-момент выворачивает ось в сторону действия силы F, т.е. при обратной прецессии они действуют сообща, и в этом опасность.   Отсюда будут разные собственные частоты при прямой и обратной прецессиях.  Теперь осталось понять, что такое прямая и обратная прецессии :), и почему момент при них направлен в разные стороны. По первой части вопроса см. мою картинку в этой теме от 27 августа 2013. По второй части вопроса - нужно включать воображение и усердно рисовать на бумажке. Мне пока сложно.    Физика именно такая. Нужно как то оценить величину этого момента и приложить его в софте, который не умеет ДК. А с тестовыми значениями можно и так порешать, и на выходе должна быть вилка. Т.е. F - задает типа "биссектрису" вилки (престресс-модальник), а момент - угол вилки.  
    • boomeeeer
      @anykeyto Я не оператор. Настраивал работу этой функции на токарно-фрезерном, где нужно было позиционировать шпиндель, для нарезания пазов. Что такое G07 не знаю. Вот такой пример для фрезерного станка нашёл   G108 B0; переключение на ось B для управления положением; G68.2 X10 Y10 Z20 I0 J90 K0 Положение заготовки (10,10,20) Угол Эйлера для определения характеристической системы координат; G53.2 Управление направлением инструмента   G109 B0 - отключит режим
    • anykeyto
      Ага, спасибо... А в связке с G07.1 это как работает? Есть детали ,кольца, на которых надо делать по 4 паза. Сейчас программист написал прогу под шаровую фрезу. Там рабочие движеня происходят через одновременное смещение по оси Х и Z... фреза убивается буквально на третьем кольце, да и обработка получаестя фиговой.. На сколько я понимаю надо стремиться к тому, чтобы на 5ти осном станке фреза всегда была перпендикулярна касательной ли самой поверхности. Мне посоветовал как раз цилндрческую интерполяцию, когда ось С преобразуется в плоскость. В мануале к HNC описано эт криво, но в примерах программ как раз сначала включается CTOS и потом G07.1. но дальше как запрограммировать понимания пока нет...  P.S. хочу добавить, что на 5-снике раньше работал только как оператор по готовым программам  на Хенденхайне. А сейчас на новом предприятии на новой для меня стойке нужно все делать с нуля и самостоятельно. С одной стороны интересно, с другой стороны спросить не у кого, в инете инфы по стойке нет от слова совсем, уж тем более видео....  чем это отличается от просто G0 C180? Или это уже будет шпиндель позиционироваться, а не стол?
    • AlexKaz
      Различают жёсткие и гибкие ротора. В данном случае вал жёсткий. Для него соответствуюшая формула. 4000 об/мин = 66.67 Гц, это ни о чём, эффекты для такой частоты почти не скажутся на жёстком роторе. Но проблема в том, что в лопаточных машинах (а насос на скрине наверное лопаточная?) собственные кратны числу лопаток. Я не разбирался в вопросе чтобы что-то здесь советовать. Лучше не спешить и внимательно почитать про модальный в лопаточных. Заодно проверить, а какое нагружение идёт в деталях насоса чтобы корректно выполнить престресс.
    • ДОБРЯК
      Хотите еще и матрицу масс изменить. :=) И сколько килограмм воды будете присоединять?  Опыт правильного моделирования, опыт расчета таких конструкций накапливается десятилетиями. Маловероятно, что кто-то на форуме будет вам объяснять как правильно моделировать, какие КЭ использовать, какие граничные условия задавать и т. д. Вы же всегда уклоняетесь от разговора на эти темы, даже для простых моделей.  Даже если перейдете на Ансис и не разберётесь в том, что он считает это не поможет вам написать грамотный отчет и объяснить грамотному заказчику, что вы там насчитали. Считает расчетчик, а программа это инструмент. Это только в рекламе пишут, что купите программу трехмерного моделирования, сделайте трехмерную модель, потом нажмите одну кнопку и на обычном игровом компьютере все посчитаете. Только в жизни все немножко иначе...:=)
    • Jesse
      Вот что у Биргера: Центробежные силы и индуцированный гироскопический момент зависят от квадрата частоты вращения вала   Хотя уже сама критическая частота зависит только от момента инерции колеса (альфа, бэта, гамма - это прогибы, углы поворота и прочая шелуха), т.е. частота вращения в формулу не входит, а всё определяется только моментом инерции Jm Ну у него рассматривается простая одномассовая система (фактически грузик на пружинке). Думаю поискать публикации.. мб где то раскопали аналитическую зависимость первой и высшей СЧ от частоты вращения для сложных систем. Хотя если выяснится что зависит,  всё равно обоснование придумывать придётся.  Эхх...
×
×
  • Создать...