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

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

Да можно конечно, даже думал так сделать, но пока я думал - уже все переименовали и в дальнейшем так делать не будут :)

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


Добрый день. Просьба помочь с методом SelectByID2 .

1.Вопросы можно ли выделить поверхность без использования координат ?

2. Как работает метод при совмещенных гранях. Почему приоритет на выделение отдается конкретному телу? В случае указания точки , которая двояко подходит как к одной так и к другой  грани?

 

форум.jpg

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

1.

Да. Как? Надо больше данных.

2 часа назад, Sla_68 сказал:

2.

Точка не может "подходить" и к одной грани и к другой. Иначе она лежит на кромке. Исключение 3D эскиз и 2 поверхности (НЕ ГРАНИ).

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

1. Например по имени тела и по номеру плоскости. (Если подобное вообще существует)

2.  Там на картинке грани твердых тел совмещены. Я вношу координаты  точки касания т.образом. что точка лежит на совмещенных  плоскостях обоих твердых  тел. И одновременно эта точка лежит внутри контуров граней. (На кромках не лежит). То программа приоритет отдает одному из тел. Там где пустые скобки я попробовал вставить имя другого тела. но и это не помогло. Действует только в том случае,  когда тело скрываю.

 

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

Например по имени тела

Выделить грань по имени тела? :g:У тела может быть n-дофига граней. Как узнать какая подходит для выделения?

16 часов назад, Sla_68 сказал:

по номеру плоскости

Можно.

По имени1

По имени2

По уникальному ID не привязанному к сессии

 

22 часа назад, Sla_68 сказал:

Почему приоритет на выделение отдается конкретному телу?

Если точка "принадлежит" (типа 3D эскиз и есть сопряжения к двум граням) обоим телам, то надо найти с какими телами она имеет контакт и выбрать понравившееся. Или каким образом (на основе какой логики) вы думали вообще SW будет выбирать тело?

SketchPoint->GetRelations->GetEntities->GetBodies. В справке можно найти все этапы.

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

По уникальному ID не привязанному к сессии

А вот этого не знал. Мерси!

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

И одновременно эта точка лежит внутри контуров граней

Кстати, это ещё проверять надо.

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

Доброй ночи. Вот такая задачка. Назвал ее "Эскиз "пятна" сопряжения". Поскольку словами описывать трудно выкладываю пример. Я выделяю 2 поверхности на одной из которых нужно построить эскиз пятна прилегания тел. Вообщем по точкам я подбное построил. Но существует проблема с круглыми деталями не имеющих точек . Вторая проблема в том что некоторые эскизы не определены, из-за того что точки пересечения лежат не на точках граней , а на их кромках... Как такие привязки делать??

пятно.jpg

пятно.SLDPRT

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

@Sla_68 Где вопрос то по API? )))

 

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

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

Это нужно для автоматизации расстановки крепежных отверстий. Плюс изучение возможностей SW API. А вопрос по API cледующий: Какими методам воспользоваться, чтобы подобный эскиз построить? Например. для извлечения точек контуров я воспользовался  http://help.solidworks.com/2013/english/api/sldworksapi/Get_Vertex_Example_VB.htm этим примером. (Можно извлечь 3d координаты вершин плоскостей).

Или для получения 2d точек преобразовываем грань эскизом а затем извлекаем точки вот так http://help.solidworks.com/2016/English/api/sldworksapi/Get_Sketch_Points_and_Their_Persistent_IDs_Example_VB.htm

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

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

Это нужно для автоматизации расстановки крепежных отверстий

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

2 часа назад, Sla_68 сказал:

я воспользовался

Зря)) есть Outer Loop

2 часа назад, Sla_68 сказал:

Можно извлечь 3d координаты вершин плоскостей

Координаты...вершин....плоскостей.

Какая будет "координата вершины" вот у  такой плоскости?

Скрытый текст

b008a7fa0cf7fc2c386345f4053c52f3.png

 

 

2 часа назад, Sla_68 сказал:

возможность рас читать пятно имеется

Точно?

Скрытый текст

 

e6f2bbe843d2884df17276b6efcc9426.png

642b0879139147e13334f350b3aec63e.png

 

 

Может ещё раз поточнее сформулируете задачу? В том смысле что не как там у вас в задании или ещё где, а как её видите вы.

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

С окружностью не проблема , если точки брать из треугольков. http://help.solidworks.com/2013/english/api/sldworksapi/get_part_bounding_box_example_vb.htm

Вообщем добился я того , что пятно расчитывалось и рисовался эскиз как неопределенный. (Точки которые лежали не на вершинах , а на пересечениях кромок никак не хотят привязываться к геометрии модели. Но чтобы рассчитать пятно, процедуры писал для 2D точек. Точки извлек из эскизов, который предварительно нарисовал инструментом "преобразовать поверхность". Причем точки по X одного из массивов координат пришлось ставить со знаком "-". Дело в том что координаты 2D берутся sw в зависимости от того куда смотрит камера на плоскость модели. Далее алгоритм следующий . Делаем 2 -ной цикл с перебором точки одного массива, и контура 2 массива. Если точка внутри -она входит в эскиз контура пятна. Если нет то проверяем пересечение 2х отрезков с выводом точки их пересечения. Если она есть, то добавляем ее в массив точек пятна.

Вчера как назло вылетел солид и макрос был запущен в пошаговом режиме. В итоге макрос умер и код невозможно посмотреть. Сейчас я код восстанавливаю.Теперь у меня головняк в том, что не хочу использовать эскизы для извлечения точек(поскольку дуги не учитываются). Нужно как то преобразовать 3D массив точек в 2D. Эта задача больше для тех кто с математикой дружит. Не пойму , по каким правилам SW разворачивает 2Dэскиз на грани модели. Почему оси 2 D стоят так и никак иначе? Есть ли математическая возможность пересчитать точки в 2D так как их показывает солид если на грани ты развернул построение эскиза? У меня есть процедуры которые точки пересчитывают в 2D, но они нифига не совпадают с солидовскими..

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

А вот скрин моего головняка599b33bda0e7b__.jpg.dd423c5596ec370f946bd9bbd6e9eb56.jpg

API_битый.swp

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

нарисовал инструментом "преобразовать поверхность"

Ох жуть... есть же всякие RayIntersections, математика :sad: Я в своё время элементарные векторы сам считал кодом, чтоб проверить правильно ли солидовские работают. Да и не доверял я солидовским либам. Как результат я напрочь и навсегда разобрался со своим кодом и что я там понакосячил. До сих пор свои классы точки, вектора использую.

Лучше когда сам всё понимаешь что происходит - а не программа за тебя думает. Ибо результат может быть неожиданный а ты и не поймёшь почему.

33 минуты назад, Sla_68 сказал:

куда смотрит камера на плоскость модели

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

 

43 минуты назад, Sla_68 сказал:

Если сможете извлечь из него код.

Уже. Какая у вас версия SW?

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

2016

Давайте я вам новый недописанный код вышлю.... Там первый модуль в работе. Остальное просто для изучения. Только сильно не пинайте.

!API_wood.swp

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

Можно еще один вопрос..? Меня не покидает ощущение, что спецов по api sw на всю нашу страну несколько человек. И вы один из них. Как то от этой мысли немного жутковато. Или я ошибаюсь? Просто такой интересной теме можно целый ресурс посвятить с форумом, примерами. Неужели это у нас не востребовано?

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

Тема эта и жила на данном форуме. Посмотрите сколько исписано страниц SWPlus.

Несколько человек - нет. Много. Просто многие останавливаются написав пару макросов или курсовых. Или "старички" становятся уже не те)))

 

55 минут назад, Sla_68 сказал:

целый ресурс посвятить с форумом, примерами

У меня есть ссылка в подписи. Омериканский форум. Справка. А дальше, на что фантазии хватит.

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

Прикладываю битый файл.. Если сможете извлечь из него код.


 

17 часов назад, streamdown сказал:

Уже.


Не так:

 

В 14 июня 2017 г. в 20:17, ILL сказал:

Нашел решение тут:

http://forum.dwg.ru/showthread.php?t=138400
 

 

?

16 часов назад, Sla_68 сказал:

Меня не покидает ощущение, что спецов по api sw на всю нашу страну несколько человек.

Среди конструкторов не так много умеющих программирвать.. А отсутствие русской справки (хотя бы) и нормальной книги, как по другим языкам, еще уменьшает количество желающих писать макросы и аддоны к солиду.. Я вот, например, в школе немецкий учил, и тот забыл..

Ссылка на сообщение
Поделиться на других сайтах
В 22.08.2017 в 17:27, ILL сказал:

Среди конструкторов не так много умеющих программирвать..

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

В 22.08.2017 в 17:27, ILL сказал:

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

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

Про какие другие языки речь? VBA, VB, C, C# о каких языках нет книжек и справки на русском языке?

В Solidworks  не язык, а лишь интерфейс (API) для доступа к начинке.

В 22.08.2017 в 17:27, ILL сказал:

Я вот, например, в школе немецкий учил, и тот забыл..

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

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

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

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

А тухло всё это, потому что у нас в стране, коммерчески невыгодно. Процесс нелегкий, а платить за него никто не хочет.

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

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

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

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

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

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

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

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

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

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

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




×
×
  • Создать...