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

Как тут писать?


Peace‡Keeper

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

Люди добрые, подскажите пожалуйста о макросах ! Я конечно понимаю что было уже разобрано много тем на данную специфику,но почитав их как то я не удовлетворил своего желания или просто пока глуп =(.

Ну вот например. Писать с нуля их я не умею, посему запускаю запись макроса делаю нехитрые действия и смотрю чего и как.Только вот черчю окружность радиусом 20, а в макросе хрень какая-то а не 20, вот "Set SkCircle = Part.SketchManager.CreateCircle(0, 0, 0, 0.02477540983607, 0.02442147540984, 0)".Как быть-то?

И ещё.Видел как-то открывают прогу, на делфи, задают параметры и ОПА запускается солид и строится там балочка по размерам. Как так сделать? Я понимаю что это долго и муторно, может есть у кого ссылочка на сайт или книженцию где нормально-русским языком описан процесс?

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


месяц назад долго искал книгу, так ничего и не нашел. пришлось самому разбираться.

кароче, в меню справка есть help по API. но он на английском. я переводил...

у меня было так: запускаю запись макроса, сохраняю его, потом Инструменты -> Макрос -> Редактировать. открывалась встроенная урезанная версия вижуал студии, там и работал. тогда при компиляции проекта сразу шло выполнение в солиде.

НО: я писал на C#...

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

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

Придется пользоваться встроенной справкой по API на английском языке, руссифицировать ее пока никто не взялся.

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

CreateCircle(0, 0, 0, 0.02477540983607, 0.02442147540984, 0) - здесь первые три нуля это координаты центра, а потом идут координаты точки на окружности.

Для простоты построения лучше пользоваться следующем форматом записи:

CreateCircle(0, 0, 0, 0, 0.02, 0) где 0,02 - это и есть твои 20 мм (0.02м).

Я думаю тебе больше подойдет функция CreateCircleByRadius2.

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

Придется пользоваться встроенной справкой по API на английском языке, руссифицировать ее пока никто не взялся.

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

CreateCircle(0, 0, 0, 0.02477540983607, 0.02442147540984, 0) - здесь первые три нуля это координаты центра, а потом идут координаты точки на окружности.

Для простоты построения лучше пользоваться следующем форматом записи:

CreateCircle(0, 0, 0, 0, 0.02, 0) где 0,02 - это и есть твои 20 мм (0.02м).

Я думаю тебе больше подойдет функция CreateCircleByRadius2.

ИМХО Вы ошибаетесь:

первые три точки(в метрах) - онгозначно координаты центра;

вторые три точки(в метрах) - координаты на линии окружности(любые);

Ни о какой бесконечности тут речи нет.

Функция : Public Function CreateCircle( _

ByVal P1x As Double, _

ByVal P1y As Double, _

ByVal P1z As Double, _

ByVal P2x As Double, _

ByVal P2y As Double, _

ByVal P2z As Double _

to `Peace‡Keeper`

"

Окружность строиттся по 4-м точкам: точки центра(три координаты) и три любые точки на линиии. В результе функуция имеет = 6 параметров.

тут есть некоторая специфика: сначала вычисляются(задаются) параметры, а потом вызывается функция ли построения.

PS. советую пользоваться (иногда) API SW Help от SW 2008--го - лично для меня более понятно.

Вот примеры:

SW 2008:

Syntax (OLE Automation)

Retval = SketchManager.CreateCircle ( XC, YC, ZC, XP, YP, ZP)

Input: (double) XC X coordinate of the circle center point, in meters

Input: (double) YC Y coordinate of the circle center point, in meters

Input: (double) ZC Z coordinate of the circle center point, in meters

Input: (double) XP X coordinate of the point on the circle, in meters

Input: (double) YP Y coordinate of the point on the circle, in meters

Input: (double) ZP Z coordinate of the point on the circle, in meters

Output: (LPSKETCHSEGMENT) Retval Sketch segment for the circle

***

SW 2010:

Visual Basic for Applications (VBA)

Public Function CreateCircle( _

ByVal P1x As Double, _

ByVal P1y As Double, _

ByVal P1z As Double, _

ByVal P2x As Double, _

ByVal P2y As Double, _

ByVal P2z As Double _

) As Boolean

***

ИМХО в API SW Help 2008 - более понятно...

Но надо проверять соответствие, а то можно попасть в переделку ... :-)

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

Благодарю, насчёт отсутствия внятных книжек и как обычно, руля гайда я понял =)) А вот насчёт связи какой-нибудь проги и макросов солида? Я так предполагаю сначала создаётся макрос а прога просто редактирует в нем те или иные параметры?

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

Я так предполагаю сначала создаётся макрос а прога просто редактирует в нем те или иные параметры?

Неверно. Внешняя программа, написанная например на VB, обращается к процессу солида через API-функции и передает в него команды. По своей сути эти команды - те же, что и в макросе.

Всё это так - по-делитантски, за подробной информацией по теме читать apihelp.chm и sldworksapi.chm.

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

Окружность строиттся по 4-м точкам: точки центра(три координаты) и три любые точки на линиии. В результе функуция имеет = 6 параметров.

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

Вывод верный. Программирование в SW нахрапом не взять.

а где его нахрапом-то взять?

ИМХО нигде... тут хоть прикладное, про системное я уж молчу....

Блин всё таки от гайда никуда =) Спасибо,буду учить мат часть

Повторюсь еще раз: лучше изучать API SW 2008. В высших версиях - все всмешали - надо же 4 языка т с ну овчень кратким описанием....
Ссылка на сообщение
Поделиться на других сайтах

а где его нахрапом-то взять?

ИМХО нигде... тут хоть прикладное, про системное я уж молчу....

Если интересно, из своего опыта расположил бы приложения в порядке возрастания сложности изучения программирования на VB6 вот так:

MS Office -> AutoCAD -> Inventor -> CATIA -> SolidWorks -> Pro/Engineer.

Причем, разница между Pro/Engineer и SolidWorks такая же как между SolidWorks и MS Office. Это образно.

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

а где его нахрапом-то взять?

В Автокаде вопрос о сложности программирования снимается через команду бейсика SendCommand. В результате программист просто передаёт в AC те же команды, какие прописывает в командной строке автокада. Это очень просто.
Ссылка на сообщение
Поделиться на других сайтах

ИМХО Вы ошибаетесь:

первые три точки(в метрах) - онгозначно координаты центра;

вторые три точки(в метрах) - координаты на линии окружности(любые);

Ни о какой бесконечности тут речи нет.

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

Set skSegment = Part.SketchManager.CreateCircle(0#, 0#, 0#, 0.02, 0#, 0#)

Set skSegment = Part.SketchManager.CreateCircle(0#, 0#, 0#, 0#, 0.02, 0#)

и вы получите две одиныковых окружности с центом в начале координат и радиусом 20мм.

так же аналогичные окружности можно построить:

Set skSegment = Part.SketchManager.CreateCircle(0#, 0#, 0#, X, Y, 0#)

где Х^2+Y^2=R^2, R-требуемый радиус, который в примере равен 20мм.

Тоесть одну и туже окружность можно строить вводя разные входные параметры.

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

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

Set skSegment = Part.SketchManager.CreateCircle(0#, 0#, 0#, 0.02, 0#, 0#)

Set skSegment = Part.SketchManager.CreateCircle(0#, 0#, 0#, 0#, 0.02, 0#)

и вы получите две одиныковых окружности с центом в начале координат и радиусом 20мм.

так же аналогичные окружности можно построить:

Set skSegment = Part.SketchManager.CreateCircle(0#, 0#, 0#, X, Y, 0#)

где Х^2+Y^2=R^2, R-требуемый радиус, который в примере равен 20мм.

Тоесть одну и туже окружность можно строить вводя разные входные параметры.

Ваши примеры напоминают инженерный подход типа: "Два делится на два, четыре делится на два, шесть делится на два, восемь делится на два... Вывод - все числа делятся на два"

Вам же ведь привели описание функции из хелпа.

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

Ваши примеры напоминают инженерный подход типа: "Два делится на два, четыре делится на два, шесть делится на два, восемь делится на два... Вывод - все числа делятся на два"

Вам же ведь привели описание функции из хелпа.

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

Вы тоже считаете что это не правильное описание:

CreateCircle(0, 0, 0, 0.02477540983607, 0.02442147540984, 0) - здесь первые три нуля это координаты центра, а потом идут координаты точки на окружности.

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

Для простоты построения лучше пользоваться следующем форматом записи:

CreateCircle(0, 0, 0, 0, 0.02, 0) где 0,02 - это и есть твои 20 мм (0.02м).

По моему тоже, такой совет может ввести в заблуждение. Как только надо будет построить окружность не в точке (0,0,0), а это часто и бывает, то 0.02 уже не будет радиусом. И говорить о радиусе в этом случае, и есть ошибка. Я когда читал, тоже подумал об ошибке.
Ссылка на сообщение
Поделиться на других сайтах

Если интересно, из своего опыта расположил бы приложения в порядке возрастания сложности изучения программирования на VB6 вот так:

MS Office -> AutoCAD -> Inventor -> CATIA -> SolidWorks -> Pro/Engineer.

Причем, разница между Pro/Engineer и SolidWorks такая же как между SolidWorks и MS Office. Это образно.

А какже различия в объектных моделях данных ПО ?

И почему надо начинать именно м MS Office (в таком порядке-то) ???

Я вот наоборот, сначала освоил API SW, а потом в по другим ПО и совсем в другом порядке, по мере необходимости...

А насчет порядка возрастания сложности изучения программирования на VB6 вот так, перевернул-бы задом-наперед, и поменял бы SW и CATIA.

Неужели API MS Office сложнее API SW или CATIA или Pro/Engineer????

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

По моему тоже, такой совет может ввести в заблуждение. Как только надо будет построить окружность не в точке (0,0,0), а это часто и бывает, то 0.02 уже не будет радиусом. И говорить о радиусе в этом случае, и есть ошибка. Я когда читал, тоже подумал об ошибке.

Прчитайте мой post №5, там ясно написано, что первые три параметра есть ЦЕНТР окуржности.
Ссылка на сообщение
Поделиться на других сайтах

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

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

вот меня например волнует вопрос почему например при построении окружности или просто линии нельзя в функции указать параметр 0.001 (1 мм). функция просто не срабатывает... тоесть линия не строится. параметр 0.0011 работает...

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Alexey8107
      Всем доброго дня. Имеется ивановский обрабатывающий центр ИС-800, в нем установлены: PSM-45HVi A06B-6120-H045 SPM-30HVi A06B-6121-H030#H550 Возникла авария 9030 Overcurrent in the converter input circuit. Если смотреть В-65285 в этом случае на PSM должна отображаться 1, а на SPM - 30. Так оно и есть на самом деле. Документ ссылается на пункт 3.1.1, в свою очередь этот пункт говорит о неисправности PSM и следует проверить Входящее питание. Скорее всего здесь имеется ввиду питание управления, оно 240 В и стабильно Рекомендуют проверить реактор. Сразу откидываем, т.к. дело до включения силового питания еще даже не доходит, МСС отключен. Да и реактор штатный, всю жизнь работал с этим реактором. Проверить IGBT. Проверить проверил как мог, на КЗ, но дело до силовухи еще не доходит, ее питания еще нет и физически включиться не может из за MCC(ну это естественно, блок в аварии). Принципиально все рекомендации. На LEADWELL была похожая ситуация, на торможении шпинделя на PSM помнится выпадала авария 1, а на шпинделе не помню уже что. Тоже думали на PSM, а судя по всему мозг вынимал рекуператор в SPM. Т.к. на шине 500 вольт на торможении шпинделя напряжение вылетало далеко за 500 вольт выше. Здесь тоже нечто подобное, SPM опрокидывает PSM в аварию. Вобщем при включении питания станка, запитывается только управление на PSM, а он в свою очередь раздает 24 вольта на все остальные блоки по CXA2A, если все нормально и ЧПУ включена, замыкается контакт МСС, разрешая подачу силового питания на PSM. Шаги загрузки на полностью исправном станке PSM    SPM   -          A   -         50   -         12(или 18)   -         -- После включения ЧПУ и подачи силового питания   0         0 У нас PSM    SPM   -          A   -         50   -         12(или 18)   1         30 Включение силовухи невозможно. Что было сделано: 1. Проверены все питания, 240 СХ1А, 24 СХА2А, силовое питание, везде порядок. 2. Проверены IGBT на PSM и SPM, явного замыкания нет. 3. Проверены обмотки серво двигателя шпинделя. На всех 0,4 ома(сопротивление щупов 0,2 + обмотки 0,2 ома). Сравнил с заведомо исправным таким же двигателем(он стоит в другом таком же станке и работает), все тоже самое, На массу КЗ нет. Да и силовухи тоже нет, так что это бессмысленно. 4. Откинул от PSM разъем СХА2А(тупо обесточил остальные блоки от 24 вольт), включил питание управления, PSM перестал опрокидываться в ошибку, на дисплее "-". Ждал долго, не опрокидывается. Силовое питание подавать не стал, ибо чревато для остальных блоков, а скидывать шинку постоянного тока честно говоря поленился. 5. С соседнего станка снял плату управления SPM и переставил в неисправный станок, по номерам они идентичные. Станок включился и даже подал силовое питание на PSM без всяких аварий. Гонял пару минут в холостую, все было нормально, но после опрокинулся с той же ошибкой 1 и 30 на PSM и SPM соответственно. 6. Взял плату управления SPM с неисправного станка и установил в исправный. Станок включился и сколько бы не гонял, и даже шпинделем крутил, не опрокидывается. Т.е. к обоим платам претензий ноль. После вернул все обратно. Исправный станок работает как ни в чем не бывало, неисправный сразу опрокидывается в аварию почти сразу после включения управляющего питания. На ЧПУ ошибка 9030 и какие то еще по осям, но они связаны с отсутствием питания на шине постоянного тока если не ошибаюсь, так что это нормально. Итого, силовуха явных признаков неисправности не имеет, и даже на какое то время с другой платой включает силовое питание(скорее всего это связано с разбросом параметров защит на разных платах). К самому PSM тоже вроде претензий не должно быть, хотя В-65285 указывает именно на него. В истории с LEADWELL точно помню, что тоже все указывало на PSM(в том числе 1 на дисплее), и даже сервисный инженер FANUC был уверен в неисправности именно PSM. По факту, неисправен был как раз SPM. К платам управления тоже никаких претензий, обе работают в исправном станке. Единственное логическое объяснение, неисправность силовухи SPM. НО!!! Шина постоянного тока даже не думает запитываться, так что и тут с опрокидыванием сразу после включения есть засада! Ну не тестирует же SPM и PSM силовую часть напряжением 24 вольта??? Ведь до включения силового питания в этом случае даже не доходит из-за аварии! Может у кого есть еще идеи или опыт устранения таких дефектов? Помнится у фанука была типовуха на платах А16В-2203-0623 с датчиками тока, они отгорали и привод отваливался в аварию по одной из фаз. Это были привода шпинделя и двух осей в одном корпусе, были такие у нас на токарных. Сервисники фанука тогда их тучами меняли... Хотя тут я думаю не наш случай
    • Kelny
      Даже при всём при этом оно не всегда корректно работало, так что даже в старых версиях было быстрее удалить размер и потом вставить заново, чем искать эти точки размеров, а потом пытаться их привязать к новому месту.   Возможно это всего лишь глюк новой версии, в последних версиях они похоже штатно закладываются.
    • maxx2000
      @davidovka я их сразу ссыпаю в TEMP,  в тех что живы нет отметок о создании current_session.pro. Интересно что сам current_session.pro создаётся, но не обновляется дата в отличии от даты модели. Может быть и вправду менял какие нить настройки и забывал сохранить
    • Ahito
    • maxx2000
      т.е. доверять разработчикам оснований нет. Ясно-понятно
    • clavr
      все так и было до 2024 версии. размеры не импортировались. теперь вот в 2024 так нельзя. может где-то в настройках поменять что нужно? все перерыл, пока не нашел
    • arsenev
      Первый свободный номер инструмента   int list $toolnumblist = extract(folder('TOOL'), 'Tool.Number.Value') int $newToolNumb = 1 while member( $toolnumblist, $newToolNumb) {     $newToolNumb = $newToolNumb + 1 } Message Info 'Первый свободный номер инструмента - ' + $newToolNumb     Инструменты с повторяющимися номерами   int list $toolnumbers = extract(folder('tool'),'Number.Value') int $i = remove_duplicates($toolnumbers) string $op = '' foreach $n in $toolnumbers {     string list $names = extract(filter(folder('tool'),'this.Number.Value == "' + $n + '"'),'Name')     if size($names) > 1 {         $op = $op + 'Инструменты с повторяющимся номером T ' + $n + CRLF         foreach $name in $names {             $op = $op + $name + CRLF         }         $op = $op + CRLF     } } message info $op     Удаление выбранного   Макрос, который проверяет тип объекта, а затем позволяет выбрать один и удалять выбранные части. Я связал это с ctrl+d.   string list $rootTypes = {'toolpath','featureset','pattern','boundary','model'} string list $selectedTypes = {} foreach $rt in $rootTypes {     if entity_exists(entity($rt,'')) {         entity $ent = entity($rt,'')         if number_selected($ent.RootType, $ent.Name) > 0 {             int $i = add_last($selectedTypes,$rt)         }     } } if size($selectedTypes) <= 0 {     return } int $index = -1 if size($selectedTypes) == 1 {     $index = 0 } else {     $index = input choice $selectedTypes 'Wich Type to remove?' } if $index != -1 {     String $cmd = 'DELETE ' + $selectedTypes[$index] + ' "' + entity($selectedTypes[$index],'').Name + '" SELECTED'         DoCommand $cmd }
    • PETR_1
      Можно переназначить правую и центральную (колесо) кнопки с помощью бесплатной программы X-Mouse Button Control (есть портабельная версия). Это переназначение будет работать только для компаса.
    • Kelny
      Может изменяемый вами размер импортирован из модели?  Обычно переносилось удержанием левой кнопки мыши, а если сделать двойной клик, то нужно потом выбрать новый объект уже без удержания кнопок мыши.
    • Kelny
      Отключить галочки режима большой сборки. Инструменты-Параметры...-Настройки пользователя-Сборки
×
×
  • Создать...