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

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

1 минуту назад, malvi.dp сказал:

На этой строчке затык

Добавь

Set ModView = swModel.ActiveView

swModel = активный документ

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


День добрый.

Может кто подскажет такую информацию:

Надо где-то в свойства вида (IView), либо в элементах типа IProjectionArrow, DrSection и т.п.( в общем, в каком-то любом интерфейсе описывающем дочерний вид), внести свои данные (пока видится данные типа ТЕКСТ). Есть какое-нибудь информационное поле позволяющее это?

З.Ы. Поясняю для чего:  хочу переработать макрос SetLabels, с добавлением возможности игнорирования некоторых видов( исключить их из автоматического переименования при наличии нескольких обозначений и только одном виде). Я в курсе что можно обойтись проверкой на то, находится ли вид в пределах чертежного листа. Хочется что бы сохранялась связь между видом и обозначениями при переименовании вида.

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

внести свои данные (пока видится данные типа ТЕКСТ). Есть какое-нибудь информационное поле позволяющее это?

З.Ы. Поясняю для чего:  хочу переработать макрос SetLabels, с добавлением возможности игнорирования некоторых видов

Как вариант добавить скрытую текст заметку (можно и не скрытую, если вид за бортом) в которой прописать ключевой текст для проверки статуса. Что бы упростить поиск такой заметки ей можно присвоить именной индификатор.

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

Как вариант добавить скрытую текст заметку (можно и не скрытую, если вид за бортом) в которой прописать ключевой текст для проверки статуса. Что бы упростить поиск такой заметки ей можно присвоить именной индификатор.

Спасибо. У самого такие мысли были, но надеялся, что можно обойтись без дополнительных объектов.

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

День добрый.

Есть такой вопрос:

При вызове команды "Редактировать текст в окне" из контекстного меню на метке вида, видна информация типа: <VLNAME><VLLABEL> и т.п.

Теперь сам вопрос:

 Как эту информацию можно получить с помощью SW API ? (  интерфейс INote.GetText(), то, что внутри угловых скобок, не видит )

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

Как эту информацию можно получить с помощью SW API ? (  интерфейс INote.GetText(), то, что внутри угловых скобок, не видит )

Возможно: swNote.PropertyLinkedText

http://help.solidworks.com/2010/english/api/sldworksapi/get_and_set_format_of_note_example_vb.htm

 

 

 

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

Супер! Именно то что надо ....

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

Кто-то пользуется надстройкой Rubberduck при написании макросов? Отпишитесь пожалуйста.

Полезная вещь?

Ссылку не даю, гуглится на раз

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

Rubberduck

Да, это ВЕЩЬ!!!

Офигенно понравилось!

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

Как устанавливается сие чудо?

Двойным щелчком :)

Все очень просто, ставишь, он интегрируется как аддон в MVBA.

Становится виден в аддон-менеджере, можно включать, отключать.

Убогая IDE для VBA стала напоминать хоть что-то немного стоящее.

На сайте есть подробное описание функций.

Одна автоматическая табуляция кода чего стоит.

Пока не нашел подсветку синтаксиса, может и нет, а то бы цены не было.

Но есть другие функции для быстрой навигации по коду и много всяких других плюшек.

Попробуйте, мне понравилось, ставил последнюю версию

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

Столкнулся с проблемой при написании автономного приложения на C#.

Происходит необратимый рост ресурсов Solidworks если окно скрыто. При видимом окне все нормально.

Идет простой перебор большого количества чертежей с сохранением в PDF и если есть сама функция сохранения : 

boolstatus = swModExt.SaveAs(patchNew, (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, swExportPDFData, ref errors, ref warnings);

то после закрытия чертежа:

swApp.CloseDoc(nameDoc);  //(swApp.QuitDoc(nameDoc));

Ресурсы потребления SolidWorks не падают пока его не закроешь. При переборе 50+ файлов чертежей, потребление видеопамяти улетает за 16 Gb и оперативной за 40 Gb.

 

 

Примерный код C#:

 

class Class1
    {
        static void Main(string[] args)
        {
            List<string> patch; //Список чертежей
            using (SLD1 solid = new SLD1())
            {
                for (int i = 0; i < patch.Count; i++)
                {
                    solid.SavePDF(patch[i])
                }
            }
        }
    }

    class SLD1: IDisposable
    {
        public SLD1()
        {
            swApp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));
            swApp.CommandInProgress = (bool)true;
            swApp.UserControl = (bool)false;
            swApp.Visible = (bool)false;
        }

        public void Dispose()
        {
            swApp.CommandInProgress = (bool)false;
            swApp.ExitApp();
            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(swApp);
            GC.Collect();
            GC.WaitForPendingFinalizers();
        }

        public void SavePDF(string patch)
        {
            swModel = ((ModelDoc2)(swApp.ActiveDoc));
            swModel = ((ModelDoc2)(swApp.OpenDoc6(patch, swDocumentTypes_e, 0, "", ref errors, ref warnings)));
            boolstatus = swModel.EditRebuild3();
            swModel.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swViewReverseWheelZoomDirection, true);
            swModExt = (ModelDocExtension)swModel.Extension;
            //Некоторый код подготовки листов в PDF
            boolstatus = swModExt.SaveAs(patchNew, (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, swExportPDFData, ref errors, ref warnings);
            swApp.QuitDoc(swModel.GetTitle());
            swModel = null;
        }
    }

 

При создании окна Solidworks через Running Object Table (ROT) все тоже самое.

Если убрать само сохранение SaveAs, то роста потребления нет...

 

Может есть методы у Solidworks на очистку мусора и т.п.?

 

 

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

Может есть методы у Solidworks на очистку мусора и т.п.?

Скорее всего рост памяти связан с тем, что чертёж требуется обязательно отобразить. Память тут очищать бессмысленно, ибо если при обычном показе окна всё норм.

 

Так же, изучите зачем нужен DispatchWrapper

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

У меня нормально работает следующий код (упрощенно):

 

'===============================================================

Public Function DrawDocIsOpen(ByVal ffnDraw As String, _
                              ByRef bWasClosed As Boolean, _
                              ByVal swOpenDocOpt As swOpenDocOptions_e) As Boolean
   Dim oModelDoc As SldWorks.ModelDoc2
   Set oModelDoc = Nothing
   DrawDocIsOpen = False
   If moSW Is Nothing Then Exit Function
   Set oModelDoc = moSW.GetOpenDocument(ffnDraw)
   bWasClosed = oModelDoc Is Nothing
   If bWasClosed Then
      Set oModelDoc = moSW.OpenDoc6(ffnDraw, swDocDRAWING, swOpenDocOpt, vbNullString, 0, 0)
   End If
   DrawDocIsOpen = Not oModelDoc Is Nothing
   If DrawDocIsOpen Then moSW.ActivateDoc2 oModelDoc.GetTitle, False, 0

   Set oModelDoc = Nothing
End Function

'===========================================================

Public Function CreatePDF(ByRef ffnPDF As String ) As Boolean
   Dim oModelDoc  As SldWorks.ModelDoc2
   Dim w          As Long
   Dim e          As Long

   Set oModelDoc = moSW.ActiveDoc

   CreatePDF = oModelDoc.SaveAs4(ffnPDF, swSaveAsCurrentVersion, swSaveAsOptions_Silent, e, w)

   Set oModelDoc = Nothing

End Function

'============================================================

Public Sub CloseActiveDoc()
   Dim oModelDoc As ModelDoc2
   On Error Resume Next
   Set oModelDoc = moSW.ActiveDoc
   moSW.CloseDoc oModelDoc.GetTitle

   Set oModelDoc = Nothing
End Sub

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

Спасибо всем ответившим.

 

Может кому пригодится, пока смог реализовать такой костыль:

swApp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));
swApp.Visible = false;
swApp.CommandInProgress = true;
swModel = (ModelDoc2)swApp.OpenDoc6();
swApp.RunMacro(); //Проводим сохранение макросом VBA
swApp.QuitDoc();
swApp.CommandInProgress = false;
swApp.ExitApp();

Как результат роста ресурсов потребления не наблюдается, быстродействие не пострадало, окно Solidworks скрыто.

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

Как изменить текст программно в обведенном окошке?

Может, кто сталкивался...

 

как изменить текст программно.JPG

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

Категорически не советую не разобравшись со структурой имен пытаться вольно менять их. Разорванные связи это еще самое легкое, что может произойти. У одной и той же детали как минимум три имени: имя в дереве, имя в свойствах, и имя-описание в общих свойствах. Я думаю, что разработчики уже сами запутались в этих именах. В вашем случае надо объявить деталь как компонент и далее:  swComp.Name2 = "ваше новое имя". Ну и да, с виртуальными компонентами вообще нет смысла делать какие-то операции с именами, пока не выведите их из этого статуса

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

В вашем случае надо объявить деталь как компонент и далее:  swComp.Name2 = "ваше новое имя".

Вручную приставку после крыши у виртуального компонента можно убрать.

swComp.Name2 приставку после крыши у виртуального компонента не убирает.

В принципе, она не мешает, но хотелось бы "чего-то светлого, чистого"... )

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

swApp.RunMacro();

Этим кодом вы проводите In-Process выполнение. Оно по умолчанию будет быстрее чем Stanalone программкой.

Кстати, в этом случае 

swApp.CommandInProgress 

не имеет смысла. Попробуйте убрать эту строку и всё останется на той же скорости.

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

Вручную приставку после крыши у виртуального компонента можно убрать.

swComp.Name2 приставку после крыши у виртуального компонента не убирает.

В принципе, она не мешает, но хотелось бы "чего-то светлого, чистого"... )

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

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

Цитата
Обновить имена компонентов, когда документы заменяются

Данный параметр следует отключать, только если используется диалоговое окно Свойства компонента для назначения имени компонента в дереве конструирования FeatureManager, отличающегося от имени файла компонента.

 

http://help.solidworks.com/2010/russian/solidworks/sldworks/allcontent/solidworks/core/assemblies/hidd_options_external_refs.htm

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

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

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

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

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

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

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