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

Возможные функции солида.


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

To Mak82

Попробуйте заменить строки:

swSketchMgr.AddToDB = True
на строку

swModel.SetAddToDB True
а

swSketchMgr.AddToDB = False
на строку

swModel.SetAddToDB False

P.S. В API SW2007 заменяемых функций просто нет. По всей видимости происходит ошибка. У меня то SW2008. Проверить не могу. Попробуйте пройтись дебаггером.

Замена кодов ничего не дало.

А как называется кнопочка которая проверяет код на ошибки?

Может для работы с макросом надо установить какойнибудь дополнительный транслятор?

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


Замена кодов ничего не дало.

А как называется кнопочка которая проверяет код на ошибки?

Может для работы с макросом надо установить какойнибудь дополнительный транслятор?

Там не "кнопочка" а оператор: `

Option Explicit Statement называется

Including the Option Explicit statement at the beginning of a Visual Basic program forces you to declare variables

before they are used and assists in detecting errors in your code.

Example

In the following example, the Option Explicit statement forces you to declare swApp and retVal.

Additionally, early binding is used when declaring swApp.

'-------------------------------------------------------

Option Explicit

Dim swApp As SldWorks.SldWorks

Dim retVal As Long

Sub main()

Set swApp = Application.SldWorks

'retVal = swApp.CopyDocument("d:\samples\hotrod.sldprt", "c:\temp\hotrod.sldprt", "", "", swMoveCopyOptionsOverwriteExistingDocs)

Debug.Print retVal

End Sub

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

Замена кодов ничего не дало.

Жаль, конечно, но отрицательный результат - тоже результат.

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

Загружаете свой файл детали. Далее Tools->Macro->Edit, выбираете макрос. Появится окно редактора. Ставите курсор мыши на функцию

countPoint = swSketch.GetSketchPointsCount2()
и жмете F9, или на серенькой полоске напротив этой функции просто щелчок левой кнопки мыши. Должна появится коричневая точка (точка останова или Breakpoint)

Тоже свамое проделываем со строкой

typePoint = swSketchPoint.Type()
Далее Run->Run Sub/User Form или F5

Если все условия соблюдены, загружен документ детали и выбран эскиз в дереве, код выполнения должен остановится на первой точке останова (появится желтая полоска на строке). Далее жмем F8 (режим пошаговой отладки). Подводим мышь на переменную countPoint. На всплывающей подсказке должно появится значение этой переменной. Или на этой же переменной правая кнопка мыши и выбор Add Watch. В появившемся диадоговом окне жмем OK. В окне Watche (внизу редактора) появится эта переменная и ее значение. Если значение меньше или равно 0, то, увы, макрос ничего не сделает. Если же значение больше 0, то идем дальше до следующей точки останова (F8 или F5). То что мы делали раньше с переменной countPoint проделываем и с переменной typePoint. Она у меня настроена на значение 1 (swSketchPointType_User). Если же нет, то код не заходит в цикл и у вас ничего не строится. В этом случае правая кнопка мыши на swSketchPointType_User -> Definition и смотрите какая константа соответсвует вашему значению. И вместо swSketchPointType_User, поставте ваше значение или просто цифру или ее имя константы

Желаю удачи.

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

Немного разобрался насчет дебагера (если я прав) нашол вкладку в отладчике Debug->Step Into (F8). Ставлю курсор на функции Sub main () и начинаю давить F8 прохожу несколько строк дохожу до строки

Set swSketch = swSketchMgr.ActiveSketch

и потом курсор перескакивает на строку

End sub

пропуская все остальные строки.

Он даже не проходит логику которая должна высветить сообщение о том что не выбран эскиза в дереве конструирования.

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

и потом курсор перескакивает на строку

Да, у вас так и получится. К сожалению, это разница между API SW2008 и API SW2007. Поэтому замените эту строки:

Set swSketch = swSketchMgr.ActiveSketch
строкой
Set swSketch = swModel.GetActiveSketch2()
А еще ниже встретятся две строки
Set swSegmentFirst = swSketchMgr.CreateCircleByRadius(swSketchPoint.X, swSketchPoint.Y, 0#, dDim)

.....

Set swSegmentRest = swSketchMgr.CreateCircleByRadius(swSketchPoint.X, swSketchPoint.Y, 0#, dDim)
замените их соответсвенно на

Set swSegmentFirst = swModel.CreateCircleByRadius2(swSketchPoint.X, swSketchPoint.Y, 0#, dDim)

.....

Set swSegmentRest = swModel.CreateCircleByRadius2(swSketchPoint.X, swSketchPoint.Y, 0#, dDim)
Остальные функции в SW2007, вроде существуют. Но также пройдитесь дебагером.
Ссылка на сообщение
Поделиться на других сайтах

Приветствую всех форумчан.

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

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

....

Добрый день!

Очень глупый и дурацкий способ решения этой задачи имеется :unsure: . Но…. работает :smile: .

1. Создаем на плоскости эскиз с точками.

2. В сторонке от этого эскиза создаем на той же плоскости эскиз с окружностью нужного диаметра. Из этого эскиза создаем круглую поверхность при помощи «заполнить поверхность» или вытягиваем цилиндр (если не привыкли к поверхностям).

3. Из поверхности или цилиндра создаем «массив управляемый эскизом», в качестве управляющего эскиза выбирается эскиз с точками, а для копирования выбираем «копировать тела» и отмечаем круглую поверхность или цилиндр. Нажимаем ОК. Получается массив поверхностей или цилиндров (МНОГОТЕЛ!!!).

4. На все той же плоскости открываем эскиз. Открываем панель инструментов «Выбор элементов», нажимаем кнопку «фильтр для кромок». Рамкой выбираем поверхности или основания цилиндров (лучше сделать цилиндра подлиннее и повернуть графобласть так, чтобы рамкой захватились только по одному ребру с каждого цилиндра). Нажать «преобразование объектов». В эскиз будут скопированы все ребра-окружности центрами точнехонько в каждую тку.

5. Удалить все поверхности или тела «Удалить тело». Останутся только 2 эскиза – с точками и окружностями.

Okr_v_eskize.rar

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

Добрый день!

Очень глупый и дурацкий способ решения этой задачи имеется :unsure: . Но…. работает :smile: .

1. Создаем на плоскости эскиз с точками.

2. В сторонке от этого эскиза создаем на той же плоскости эскиз с окружностью нужного диаметра. Из этого эскиза создаем круглую поверхность при помощи «заполнить поверхность» или вытягиваем цилиндр (если не привыкли к поверхностям).

3. Из поверхности или цилиндра создаем «массив управляемый эскизом», в качестве управляющего эскиза выбирается эскиз с точками, а для копирования выбираем «копировать тела» и отмечаем круглую поверхность или цилиндр. Нажимаем ОК. Получается массив поверхностей или цилиндров (МНОГОТЕЛ!!!).

4. На все той же плоскости открываем эскиз. Открываем панель инструментов «Выбор элементов», нажимаем кнопку «фильтр для кромок». Рамкой выбираем поверхности или основания цилиндров (лучше сделать цилиндра подлиннее и повернуть графобласть так, чтобы рамкой захватились только по одному ребру с каждого цилиндра). Нажать «преобразование объектов». В эскиз будут скопированы все ребра-окружности центрами точнехонько в каждую тку.

5. Удалить все поверхности или тела «Удалить тело». Останутся только 2 эскиза – с точками и окружностями.

Этот метод предлагал один форумчанин в случайно дублировано мною теме.

То же вариант но когда много точек , вследствии большое количество объектов, комп начинает тармозить.

Да, у вас так и получится. К сожалению, это разница между API SW2008 и API SW2007. Поэтому замените эту строки:

Set swSketch = swSketchMgr.ActiveSketch
строкой
Set swSketch = swModel.GetActiveSketch2()
А еще ниже встретятся две строки
Set swSegmentFirst = swSketchMgr.CreateCircleByRadius(swSketchPoint.X, swSketchPoint.Y, 0#, dDim)

.....

Set swSegmentRest = swSketchMgr.CreateCircleByRadius(swSketchPoint.X, swSketchPoint.Y, 0#, dDim)
замените их соответсвенно на

Set swSegmentFirst = swModel.CreateCircleByRadius2(swSketchPoint.X, swSketchPoint.Y, 0#, dDim)

.....

Set swSegmentRest = swModel.CreateCircleByRadius2(swSketchPoint.X, swSketchPoint.Y, 0#, dDim)
Остальные функции в SW2007, вроде существуют. Но также пройдитесь дебагером.

Благодорю вас за помощь.

Все внесенные изменения дали положительный резульнат. Макрос работает как надо :clap_1:

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • maxx2000
      Подушную малость. Чё там. Уже в упор научились резьбу резать без выходной канавки?
    • ispite
      Здравствуйте, не могу построить стандартную сетку, что не позволяет дальше провести расчёт. Получается сделать сетку "на основе кривизны", но солид отказывается считать, после нажатия кнопки "запустить исследование" происходит сбой. https://disk.yandex.ru/d/D8wvRbYMW1lWjQ
    • ddm
      изготовить по чертежу с последующим покрытием,цинкование ,по 1000 шт каждой позиции ,предложение отправить на почту qwer463@yandex.ru
    • sklide008
      И еще можно ли задать горчие клавиши на кнопки открыть, скрыть и тд?
    • sklide008
      Подскажите, пожалуйста, в инвенторе есть такой пункт упорядочи по алфавиту дерево. Здесь найти такого не могу, пытался treesorter ставить но он добавляет просто в папку а не сортирует в дереве. Есть ли такой макрос чтобы все детали в дереве по порядку и алфавиту шли?
    • stanislavz
      Есть станок с данным контроллером. Все работает. Недавно была проблема с передачей данных - установил запасной контроллер. А запасной контроллер сказал нет работе. Проблема была в программе компьютера для передачи данных. Грустно, досадно, контроллер был куплен как рабочий. Как бы и не горит, но необходимо поправить. Плата управления с процессором mc68020, память hm628128-10. Память буферным питанием от 3 батареек + 0,5 Фарада на плате как буфер для замены батареек на 1 сутки. Лежало долго, без батареек. Симптомы: После первого включения, в памяти были и программы и параметры (0 странность). Честно, удивило. Но - система жутко тормозит, отклик на нажатие кнопки 3-5 секунд. В таком режиме сумел закачать машинные параметры под свой станок. Но это заняло час.. 4 строки и ждет секунд 10 итд. Есть видео. Перекинул с рабочего контроллера, БП, плату плц, ээпром плц - все то же. Проверил осциллографом кварцы живые , частота есть, амплитуда хорошая. 1 странность - после манипуляций по замене батарейки, старые записи из памяти исчезли. Ничего не коротнул. Возможно 0,5 Ф был не заряжен. Там тоже необходимы сутки для зарядки. Но как оно было запечатоно до этого - мистика. 2 странность. Если плата лежит ночь без питания, только с буфером - потом 2-3 минуты работает хорошо. 3 аналогично работает 2-3 минуты если питание отключить и очистить питание памяти (выпаял 0,5 Ф буфер с платы) Проверка памяти на старте есть. Проходит хорошо. На зависает, на холодную пайку не похоже. Шевелил / двигал все. Да и не виснет, именно тормозит. При том если оставить на час - тоже все стабильно плохо. Если набрать быстро 5 символей- экран сразу пуст, но после задержки символы будут на экране. Заказал второй процессор и память. 10 штук. Подавал прямо 5 вольт на память - все так же. Токи потребления между плохой и хорошей платой смогу проверит.    
    • brigval
    • Ветерок
      "увеличение оптимизации". Оптимизацию невозможно ни увеличить, ни уменьшить.
    • gudstartup
      @boomeeeer может от страны зависит
    • david1920
      нет время нет заниматься да и информации новой нет Это я на других станках делал
×
×
  • Создать...