mrazzzb

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

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

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

 

Изменено пользователем mrazzzb

Поделиться сообщением


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


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

1 пользователю понравилось это

Поделиться сообщением


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

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

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

swComponent = (Component2)swAssemblyDoc.AddComponent5(strCompModelname, (int)swAddComponentConfigOptions_e.swAddComponentConfigOptions_CurrentSelectedConfig, "", false, "", /*Вместо этих координат*/-1, -1, -1);
Изменено пользователем mrazzzb

Поделиться сообщением


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

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

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

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

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

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

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

Изменено пользователем streamdown
1 пользователю понравилось это

Поделиться сообщением


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

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

 

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

Поделиться сообщением


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

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

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

1 пользователю понравилось это

Поделиться сообщением


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

@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) и туда вставляет компонент с координатами.

1 пользователю понравилось это

Поделиться сообщением


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

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

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

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

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

Изменено пользователем mrazzzb

Поделиться сообщением


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

Скажите пожалуйста как получить имя вставленного эскиза? (Трехмерный эскиз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)));

Поделиться сообщением


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

ID: 13   Опубликовано: (изменено)

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

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

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

 

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

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

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

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

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

Изменено пользователем streamdown
1 пользователю понравилось это

Поделиться сообщением


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

ID: 14   Опубликовано: (изменено)

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

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

 

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

double a;

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

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

 

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

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

Изменено пользователем mrazzzb

Поделиться сообщением


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

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

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

 

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

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

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

1 пользователю понравилось это

Поделиться сообщением


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

ID: 16   Опубликовано: (изменено)

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

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

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

 

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

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

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

 

Изменено пользователем mrazzzb

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

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