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

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

15 часов назад, Kelny сказал:

Убрать может и можно, но после перезагрузки файла полное имя разве не восстанавливается?

Связано вероятно с соответствующей галочкой Инструменты-Параметры...-Настройки пользователя-Внешние ссылки:

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

 

Если Вы имеете ввиду это, то не срабатывает. Вручную правится и после перезагрузки имя в дереве остается исправленным, без "крыши".

 

PrecSett.JPG

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


Добрый день, хочу получить значение одного из свойств детали/сборки,

 

Option Explicit

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim config As SldWorks.Configuration
Dim cusPropMgr As ICustomPropertyManager
Dim lRetVal As Long
Dim ValOut As String
Dim ResolvedValOut As String
Dim wasResolved As Boolean

Sub main()

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set config = swModel.GetActiveConfiguration
    
    Set cusPropMgr = config.CustomPropertyManager
    

    lRetVal = cusPropMgr.Get5("L", False, ValOut, ResolvedValOut, wasResolved)
    Debug.Print lRetVal

End Sub

Значения переменной lRetVal в Debug получаю 2, если такой параметр есть и 1, если такого параметра нет.

 

подскажите, что делаю не так? Мне нужно значение параметра L

Ссылка на сообщение
Поделиться на других сайтах
12 минут назад, makarov сказал:

Значения переменной lRetVal в Debug получаю 2, если такой параметр есть

 

12 минут назад, makarov сказал:

Мне нужно значение параметра L

Так смотрите что в ValOut  ( Debug.Print ValOut ), возможно в совокупности с другими данными (ResolvedValOut, wasResolved, хотя если UseCached=False, то это уже не важно, т.к. всё перестроится и выдаст актуальные данные):

http://help.solidworks.com/2020/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.icustompropertymanager~get5.html

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

Круто, так просто, спасибо!

А в чем разница между:

ValOut
Value of the custom property
ResolvedValOut Evaluated value of the custom property  
31 минуту назад, Kelny сказал:

 

Так смотрите что в ValOut  ( Debug.Print ValOut ), возможно в совокупности с другими данными (ResolvedValOut, wasResolved, хотя если UseCached=False, то это уже не важно, т.к. всё перестроится и выдаст актуальные данные):

http://help.solidworks.com/2020/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.icustompropertymanager~get5.html

 

Ссылка на сообщение
Поделиться на других сайтах
41 минуту назад, makarov сказал:

ResolvedValOut Evaluated value of the custom property  

Тут могут быть устаревшие значения, если конфигурация в модели не была обновлена. Так что вероятно должно быть ValOut и:

Цитата

Если вам всегда нужны актуальные данные, вам следует установить для UseCached значение false. [вольный перевод справки]

http://help.solidworks.com/2020/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.icustompropertymanager~get5.html

 

 

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

А в чем разница между:

 
ValOut
Value of the custom property
ResolvedValOut Evaluated value of the custom property  

изображение.png

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

Здравствуйте, еще вопрос. Может ли функция возвращать несколько переменных. Я хотел попробовать массивом, но не пойму как правильно записать. И в  справке про функции массивы ничего не нашел.

 

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

 

Ответ нашел сам, спасибо, можно удалить сообщение. Не понимаю как это сделать самостоятельно.

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

Ответ нашел сам, спасибо, можно удалить сообщение.

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

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

Здравствуйте коллеги.

Прошу помощи у знающих людей

Пишу add on с property manager для автоматического добавления присадки на деталь. И столкнулся с такой проблемой.

Не могу понять как написать процедуру для фантомного отображения будущего элемента на теле детали.

 

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

@Sturmann

Смотрите в сторону IModeler

Ну или ещё есть решение. Нарисовать самому и руками с помощью OpenGL те же кромки-линии превьюшки. Довольно заморочено, но если освоите - будет огромный опыт.

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

@Sturmann

Смотрите в сторону IModeler

Ну или ещё есть решение. Нарисовать самому и руками с помощью OpenGL те же кромки-линии превьюшки. Довольно заморочено, но если освоите - будет огромный опыт.

ок. спасибо за наводку. попробую на досуге

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

Добрый день!

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

1. У меня есть ряд размеров на чертеже, я размещаю эти размеры на определенное расстояние от детали и некоторые из них становятся, какбы, ниже заданой координаты.
Собственно вопрос, как припомощи макроса, правильно разместить размеры на одном расстоянии от тела детали?
На данный момент я это делаю с помощью swAnnotation.SetPosition2

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

Картинка для примерного понимания:
OyZjd8LdTlyuLYaKvT8-Ig.png

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

@Alex_pcbld  картинка не отображается.

(1)По размерам: а почему бы не воспользоваться автовыравниванием выделив все необходимые размеры?

(2)У размеров есть интерфейс IDisplayDimension Там есть и стрелочки и прочее.

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

Ребята, кто знает, поясните где у меня ошибка? вот этой строкой, ищу в текстовой строке символ "|":

If Int(InStr(MatOut, "|", vbTextCompare)) = 0 Then

Выдает ошибку:

изображение.png

Не могу понять почему. InStr же должен выводить 0 если не находит этот символ, а в итоге Type mismatch.

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

Блин, надо было чутка подумать, напишу решение, может кому-то пригодиться. Сработала вот такая строка:

        If InStr(1, MatOut, "|", vbBinaryCompare) = 0 Then

То есть при бинарном сравнении InStr возвращает значение типа long, то бишь число.

ЛИБО

        If InStrRev(MatOut, "|", -1, vbBinaryCompare) = 0 Then

Как оказалось InStrRev всегда возвращает значение типа long

Изменено пользователем Snake 60
Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Snake 60 сказал:

Блин, надо было чутка подумать, напишу решение, может кому-то пригодиться. Сработала вот такая строка:






        If InStr(1, MatOut, "|", vbBinaryCompare) = 0 Then

То есть при бинарном сравнении InStr возвращает значение типа long, то бишь число.

ЛИБО






        If InStrRev(MatOut, "|", -1, vbBinaryCompare) = 0 Then

Как оказалось InStrRev всегда возвращает значение типа long

https://docs.microsoft.com/ru-ru/office/vba/language/reference/user-interface-help/instr-function

Здесь сказано, что если Вы задаёте аргумент сравнения (в Вашем случае vbBinaryCompare), то Вы обязаны задать аргумент начала. Поэтому, когда Вы добавили этот аргумент (1), то всё и заработало.

Ссылка на сообщение
Поделиться на других сайтах
15 часов назад, Snake 60 сказал:

Ребята, кто знает, поясните где у меня ошибка? вот этой строкой, ищу в текстовой строке символ "|":




If Int(InStr(MatOut, "|", vbTextCompare)) = 0 Then

Выдает ошибку:

изображение.png

Не могу понять почему. InStr же должен выводить 0 если не находит этот символ, а в итоге Type mismatch.

В этом случае надо так

 InStr(1,...,...,vbTextCompare)

Когда указываете способ сравнения, надо указывать с какого номера символа осуществлять поиск.

Так как вертикальная черта не имеет верхнего и нижнего регистра, можно записать проще

InStr(MatOut, "|").

 

 

Ой, на сотовом не увидел ответы )

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

Ой, на сотовом не увидел ответы )

Всё равно, всем спасибо )

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

Здравствуйте!

Вроде не некропост, помогите.

В параметрах конфигурации есть галка "использовать в спецификации", чтоб описание конфигурации в BOM попадало. 

Как эту галку поставить средствами vba? Как перебирать конфигурации, я умею.

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

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

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

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

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

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

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

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

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

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

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



  • Сообщения

    • Snake 60
      Скорее всего исправляли в конкретной сборке, для конкретных тел. Насколько я помню, надо в самом эскизе профиля заполнить свойство Description
    • Snake 60
      Делаете дырку в свае - вставляете в нее трубу и 2 человеко-силы крутят сваю ) Дёшево и сердито и не нужен никакой планетарный редуктор ))
    • gudstartup
      вы всегда ищите свой путь или будете делать то что вам советуют? с самого начала прежде чем приступать к экспериментам вам нужно было вынуть носитель и сделать образ. diskcopy делает копию гибкого диска на другой а вам надо сделать образ жесткого диска или карты памяти. делайте как советует @Viktor2004 иначе еще чего нибудь сломаете или вам станок не нужен и вы его приобрели для экспериментов ? вот а печатной машинке из прошлого нельзя а вот на синумерике можно - удивительные вещи в настоящем происходят!! на 100 % уверен что там не модуль а либо писимиси ай либо жд @mircomax81 хотите работать в дос почитайте помощь по командам 
    • PuKoLLleT
      Доброго дня всем. Поделитесь опытом,раньше такое не доводилось делать. На торце фланца нужно сделать  восемь отверстий ф17H7 на токарно-фрезерном станке с осью Y ,имеется ManualGuide.В моем понимании нужно просверлить,а затем торцевой фрезой расточить нужный диаметр.Получится такой фокус,или надо разверткой доводить нужный размер?  Стойка Fanuc 0i-Tf.
    • Snake 60
      Всё верно, я даже русификатор делал для него (ушло на это где-то около года). Хороший софт был, я всех знакомых на него подсадил в свое время :) У меня даже где-то образ на виртуалке лежит с SW2014+MechSoft, Жаль, что автодеск его поглотил, а не DS :( А по сути вопроса, проектировал двухступенчатый планетарный редуктор в свое время. Что было нужно: Справочник по планетаркам (автора не помню, если надо поищу), из софта MathCAD + GearTeq (софтина идет вместе с GearTrax, только рассчитывает и моделирует несколько зацеплений согласно выбранной схеме, в том числе планетарки) Ой и ошибаетесь. Звездочки - не равно зубчатые колеса в планетарке) Мы намучились с малой точностью изготовления на эл.эрозии, а Вы лазером ))) Был собран опытный образец редуктора с незакаленными деталями, чисто проверить геометрию, отладить сборку. Так потом начальство этот редуктор сказало испытать в бою, как я не противился)) Помер за пару дней интенсивных нагрузок ))) Материал, термообработка и точности изготовления решают )
    • Snake 60
      @Тихоход  Ещё один вариант - изучать программирование и писать свою программу/макрос. Вот пример конфигуратора двери: https://www.youtube.com/watch?v=wv4HryWQBSk
    • mircomax81
      Посредством Diskcopy можно сделать адекватную копию на флоппи диск?
    • Andrey_kzn
      Да, ведь советовали автору вытащить жёсткий диск и сделать образ. Неужели самому не интересно, как устроен этот старый промкомпьютер? Там может стоять как жёсткий диск, так и CF-карта, или же Disc-on-chip или Disc-on-module.  Как-то очень давно, на подобном промышленном оборудовании (большая печатная машина) я не смог перенести  ПО с родной CF - карты на другую, такого же размера но другой фирмы. Была также станочная оболочка под досом.  Образ я делал Нортон гостом, развернул его на другую CF-карту без проблем. Машина загрузилась нормально и работала ровно 2 дня, на неродной CF-карте,  потом зависла, и отказалась загружаться. Пришлось вызывать сервисника. От него мы узнали, что нельзя просто так взять и заменить карту  - носитель системного ПО, на другую. А полезли мы туда, так как руководство захотело печатать отчёты по работе машины. В станочном ПО такая функция была. Вот только принтер надо было купить у фирмы - производителя этой самой машины. В попытках заставить работать другой принтер мы редактировали файл  AUTOEXEС.BAT, на предмет загрузки драйвера принтера, ничего не получилось, зато перестали открываться некоторые страницы станочного ПО.  Образ у нас был давно снят, и мы развернули его на другую карту памяти. Родную карту я трогать не стал (как чувствовал, что нельзя ). Сервисник восстановил ПО с архивной дискеты на родную карту памяти, и всё заработало. Дискеты с архивами ПО шли вместе с документацией к машине.  Там были дискеты с Досом, станочной оболочкой, параметрами приводов, программой ПЛК. Он же и предупредил нас о предельно аккуратном обращении с родной картой памяти, и посоветовал немедленно сделать образы с архивных дискет, что мы сразу и проделали.. Вот такой сюрприз от машины эпохи Дос.
    • Борман
    • gudstartup
      а ведь все работало...
×
×
  • Создать...