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

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


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 пользователей

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




  • Сообщения

    • 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
      Отключить галочки режима большой сборки. Инструменты-Параметры...-Настройки пользователя-Сборки
    • brigval
      Если не прописали, значит считается, что производственный процесс их изготовления гарантирует качество, достаточное для присвоения литеры. Можно и так посмотреть.   Между прочим, пред вынесением Решения о присвоении литеры проходит "испытания" весь комплект  КД. Разрешат вам не предъявлять часть КД на проверку? Спросите у НК.   И все-таки, если есть Решение о присвоении литеры, надо прочитать, что там сказано. Как сформулировано. Возможно, это снимет все вопросы.
    • cepr
      Есть в Компасе возможность построения зубчатого колеса с углом профиля не 20гр., а 25гр?
    • shishov32
      В ТУ не прописали про испытания КМЧ и упаковки, отсюда все пошло. 
    • clavr
      подскажите: как в солиде 2024 в чертеже перепривязать точку размера к другому элементу? раньше достаточно было выделить размер, точку привязке и удерживая ПКМ перенести к другому элементу. теперь это не работает   По справке сделать не получается( просто быстрые привязке не подсвечиваются https://help.solidworks.com/2024/russian/SolidWorks/sldworks/c_moving_dimension_leadersOH.htm  
    • BSV1
      КМЧ бывают разные. Если КМЧ состоит из одних стандартных болтов, например, то может испытания и не требуются. Если же КМЧ состоит из изделий собственной разработки, то почему их не надо испытывать? Что касается упаковки, то есть ГОСты на тару. Например: 80071.pdf ГОСТ Р 53775-2010 Упаковка. Испытание на штабелирование при статической нагрузке ГОСТ 18211-2018. Упаковка транспортная. Метод испытания на сжатие  gost-9142-2014.pdf  Есть еще испытания изделий в упаковке, которые подразумевают, в том числе, и испытание самой упаковки. Проверяться изделия в упаковке могут на транспортную тряску, удары, падения, климат. При этом упаковка должна обеспечить сохранность изделия. Есть еще вопросы консервации. Как же без испытаний?   Странный у вас нормоконтролер.    
    • brigval
      Ответом на ваш вопрос будет противоречит. А вообще, надо читать Решение о присвоении литеры. Интересно, что там указано?   Интересный вопрос. Если есть указания испытывать экпл. документацию в форме книг, то надо испытывать Я, правда, с этим не сталкивался.
×
×
  • Создать...