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

Координаты детали(объекта) API SolidWorks


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

Как получить координаты детали? При добавлении детали в сборку прописываю координаты х=-1, y=-1, z =-1 (Оставил с примера).

swComponent = (Component2)swAssemblyDoc.AddComponent5(strCompModelname, (int)swAddComponentConfigOptions_e.swAddComponentConfigOptions_CurrentSelectedConfig, "", false, "", -1, -1, -1);

 

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


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

А что вы с ними делать будете? С координатами.

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

swComponent = (Component2)swAssemblyDoc.AddComponent5(strCompModelname, (int)swAddComponentConfigOptions_e.swAddComponentConfigOptions_CurrentSelectedConfig, "", false, "", /*Вместо этих координат*/-1, -1, -1);
Изменено пользователем mrazzzb
Ссылка на сообщение
Поделиться на других сайтах
20 часов назад, mrazzzb сказал:

так чтобы они оказались на "своем" месте, где были созданы ранее

Не понял. Ранее детали были созданы в "Деталях". Как они вообще узнают своё место в сборке если они туда не вставлены? А если вставлены, то как узнают куда вставать кроме как в центр?

"Может быть вопрос надо задавать иначе? Как расположить детали в сборке при вставке?"

Add Components (с матрицей поворота)

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

Лан, ваше дело - ваша логика)))

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

Не понял. Ранее детали были созданы в "Деталях". Как они вообще узнают своё место в сборке если они туда не вставлены? А если вставлены, то как узнают куда вставать кроме как в центр?

 

Пишу то чтобы они встали на свое место, потому что я создал две детали на расстоянии друг от друга, так примерно на глаз, (1 деталь сфера, 2 деталь куб примерно правее сферы). Добавляю сферу в сборку в самом SolidWorks, далее куб, и они располагаются на том расстоянии на котором я их как бы расположил, поэтому и возникает вопрос, как получить точку расположения детали... Я в SolidWorks не мастер, поэтому тяжело поставить правильно вопрос,  извиняюсь..

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

как получить точку расположения детали

http://help.solidworks.com/2015/english/api/sldworksapi/Get_Transforms_of_Assembly_Components_Example_VB.htm

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

@streamdown

Вот хочу показать пример, записал макрос на добавление деталей. Вот от куда он берет эти координаты при добавлении?? 

ModelDoc2 swDoc = null;
            PartDoc swPart = null;
            DrawingDoc swDrawing = null;
            AssemblyDoc swAssembly = null;
            bool boolstatus = false;
            int longstatus = 0;
            int longwarnings = 0;
            swDoc = ((ModelDoc2)(swApp.ActiveDoc));
            swAssembly = ((AssemblyDoc)(swDoc));
            boolstatus = swAssembly.AddComponent("C:\\Users\\1.SLDPRT", -0.02809191675006055, -0.0059169945175620263, 0.1448468300600689);//вот эти координаты
            swAssembly = ((AssemblyDoc)(swDoc));
            boolstatus = swAssembly.AddComponent("C:\\Users\\2.SLDPRT", -0.037101475792303377, -0.0077559709361343689, 0.19000035693083528);//вот эти координаты
        

 

А по примеру который Вы предложили, получаются совсем не понятные цифры..

Для детали 1 (-168,446807450396, -40,3112468835756, -45)

Для 2 (5,50898468606606, -7,62599594862625, -65)

http://help.solidworks.com/2015/english/api/sldworksapi/transform_point_from_component_space_to_assembly_space_example_csharp.htm 

            
           

 

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

Вот от куда он берет эти координаты при добавлении?? 

Когда добавляете компонент в сборку, куда тыкаете мышкой - туда SW детальку и вставляет. Т.е. он получает тыкотельно_мышковую_точку (PickPoint) и туда вставляет компонент с координатами.

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

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

Проблема нарисовалась уже в другом:wallbash:Я попытался добавить детали по этим координатам, полученным в макросе, они какого-то хрена добавились друг на друга, по макросу координаты (-0.02809191675006055, -0.0059169945175620263, 0.1448468300600689)

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

Хотя добавляю в самом солиде детали, они отдельно друг от друга по таким координатам , те что по макросу записаны :g:

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

добавляю деталь программно по этому примеру 

http://help.solidworks.com/2013/english/api/sldworksapi/add_component_and_mate_example_csharp.htm

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

Скажите пожалуйста как получить имя вставленного эскиза? (Трехмерный эскиз1)

swModel.Insert3DSketch2(true);

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

 

16 минут назад, mrazzzb сказал:

Скажите пожалуйста как получить имя вставленного эскиза? (Трехмерный эскиз1)

swModel.Insert3DSketch2(true);

Это уже не нужно, спасибо!

 

Не знаете случайно как получить само число (расстояние) после применения функции автоматического нанесения размера от точки к точке?

 

     boolstatus = swDoc.Extension.SelectByID2("", "EXTSKETCHPOINT", 0.083367884232203898, -0.017832911539664553, 0.080000178465417654, false, 0, null, 0);
     boolstatus = swDoc.Extension.SelectByID2("", "EXTSKETCHPOINT", 0.083367884232203898, -0.017832911539664553, 0.0099998215345823687, true, 0, null, 0);
     DisplayDimension myDisplayDim = null;
            myDisplayDim = ((DisplayDimension)(swDoc.AddDimension2(0.033042450357179565, 0.03939650122615436, 0.013347520751937264)));
Ссылка на сообщение
Поделиться на других сайтах
23 минуты назад, mrazzzb сказал:

получить имя вставленного эскиза

http://help.solidworks.com/2011/English/api/sldworksapi/Rename_Active_Sketch_Example_VB.htm

 

5 минут назад, mrazzzb сказал:

как получить само число (расстояние)

А вы считает что до вставки размера само "расстояние" не существовало? :smile:

Для размеров: 
GetDimension2, потом GetSystemValue3

@mrazzzb  намёк: когда все вопросы валятся в кучу - это блог ... или твиттер. Этот форум ни то ни другое.

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

А вы считает что до вставки размера само "расстояние" не существовало? :smile:

 

Спасибо большое за подсказку, использовал старый добрый GetLength(); :smile:

double a;

a =  swSketchSeg[1].GetLength() * 1000;

41 минуту назад, streamdown сказал:

 

@mrazzzb  намёк: когда все вопросы валятся в кучу - это блог ... или твиттер. Этот форум ни то ни другое.

Есть просто тема SolidWorks Api, где очень много страниц и много разных вопросов, поэтому и решил что так можно)) 

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

Спасибо большое за подсказку

Вооот))) вот для этого и нужен форум)))) Сами всё додумали. А ща ещё удивлю - есть еще IMeasure

 

20 минут назад, mrazzzb сказал:

где очень много страниц и много разных вопросов,

Ну так вы то же самое делаете. Так делайте в одном месте.

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

 А ща ещё удивлю - есть еще IMeasure

Где же Вы раньше были)) Спасибо буду знать!!

 

4 минуты назад, streamdown сказал:

Ну так вы то же самое делаете. Так делайте в одном месте.

Хорошо, понял)

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Eng.Destructor
      Сделал так: Добавил новый формат fs2 25 0 4 0 3t #No decimal, absolute, 3 поменял  result = newfs (25, thddepth$) # изменил 16 на 25 result = newfs (25, thdfirst$) # изменил 16 на 25 result = newfs (25, thdlast$) # изменил 16 на 25 result = newfs (25, thdfinish$) # изменил 16 на 25 Спасибо за наводку
    • arsenev
    • teqn1c
      Есть динозавр stratos plus на io mb -  В нем всего 256 КБ памяти  есть ли возможность через режим rtm подгружать программу с ПК через rs 232 ? В шкафу ещё есть разъем под карту но с нее получается только считать и опять таки сохранить на память станка. Соединение ПК-станок настроил ,есть возможность отправлять на него через альфакам программы ,но они сохраняются в память станка. В альфакам есть непрерывная отправка - она отправляет - но в режиме rtm ничего не происходит 
    • Metal_Cutter
      @arsenev В FC такого нет.
    • Bot
      HCL CAMWorks 2024, новая версия программного обеспечения CAM, полностью интегрированного с SOLIDWORKS и Solid Edge включает в себя передовые технологии, позволяющие сократить время программирования, уменьшить время цикла обработки и увеличить срок службы инструмента. Смотреть полностью
    • Александр1979
      Руководство для дусь взял здесь: https://www.cnczone.com/forums/daewoo-doosan/413426-every-doosan-service-manual-currently-auto-updated.html
    • ss_162
      Может есть у кого оригинальные резцы на продажу? Нужен резец SFCC 50 - это маркировка D`Andrea, или Искаровский, он такой же, только маркировка у него другая.
    • Aveovar
      Подскажи, как ты сделал несколько экранов с разных ракурсов
    • Kaktusito
      Всем доброго времени суток! Только начал заниматься редактированием постпроцессоров и сразу же столкнулся с проблемой. Суть в том что я нашел по форумам постпроцессоры с SolidCAM 2015 года, ибо у меня в версии 2022 года их почти нет, а мне нужен был более менее адекватный пост под токарку.  Закинул все файлы Gpptool 2015 года в свою папку, выбрал подходящий мне станок и начал генерировать УП.  Как вы поняли ничего мне не сгенерировало. Пишет ошибку "please change the name "Bore" in the VMID. This name is reserved for use in the GPP"  Сделал то что просит ошибка и был уверен что это не поможет, так оно и вышло. По итогу начало долбить другие ошибки. Очень еще не понятно с файлами которые я кидал в папку Gpptool потому что вместо стандартных двух у меня их аж 4 штуки.: gpp с циклами, gpp обычный, PRP и vmid. Хотя я знаю что в версиях вроде после 2017 уже идет по 2 файла. Что я только не пробовал кидал только 2 файла, кидал все 4, кидал содержимое файла с циклами в основной gpp, шёл по пути ошибок и исправлял что меня просили. В общем ничего не помогает  От безисходности пишу сюда, вы моя последняя надежда понять что происходит и почему ничего не работает. Заранее благодарю за ответы!
    • Krusnik
×
×
  • Создать...