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

Вставка детали в сборку


andreymr

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

Добрый день всем. Нужна помощь гуру по API SolidWorks. :surrender:

Пишу дополнение для SW (в виде DLL), встала задача реализовать вставку в сборку детали с предпросмотром через API.

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

Буду рад, если кто-то подскажет хотя бы примерные команды API для этого дела.

Или хотя бы примерно как это можно реализовать.

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


На вскидку (допускаю, что вскидка может быть не верной), отслеживать положение курсора и использоватьследующий пример из справки:

Rotate Assembly Component on Axis Example (VB)

This example shows how to rotate an assembly component about an assembly axis using DragOperator::Drag.

'------------------------------------------------------------------



' 



' Problem:



'	   This code shows how to use the MathUtility object



'	   to directly create a transformation matrix (object)



'	   that represents rotation about a point and an axis,



'	   without having to know details of the OpenGL transformations.



'



' Preconditions:



'	   (1) Assembly is open and fully resolved.



'	   (2) Assembly component is selected.



'



' Postconditions: Selected component is rotated 90° about assembly X axis.



'



'------------------------------------------------------------------



 



Option Explicit



 



Const PI				As Double = 3.14159



Const RadPerDeg		 As Double = PI / 180#



'   DragOperator::TransformType



'	   Translation	 0



'	   Transform is translation only



'



'	   Axial rotation  1



'	   Transform is rotation only



'



'	   General		 2



'	   Transform can be translation or rotation or both



'   DragOperator::DragMode



'	   Minimum Move	0



'	   Move smallest number of geometries



'



'	   Maximum Move	1



'	   Move geometries rigidly if possible



'



'	   Relaxation	  2



'	   Solve geometries using relaxation



Sub main()



 



	Dim swApp				   As SldWorks.SldWorks



	Dim swModel				 As SldWorks.ModelDoc2



	Dim swAssy				  As SldWorks.AssemblyDoc



	Dim swDragOp				As SldWorks.DragOperator



	Dim swSelMgr				As SldWorks.SelectionMgr



	Dim swComp				  As SldWorks.Component2



	Dim swXform				 As SldWorks.MathTransform



	Dim swMathUtil			  As SldWorks.MathUtility



	Dim swOriginPt			  As SldWorks.MathPoint



	Dim swX_Axis				As SldWorks.MathVector



	Dim nPts(2)				 As Double



	Dim vData				   As Variant



	Dim nNow					As Single



	Dim i					   As Long



	Dim bRet					As Boolean



	



	



	Set swApp = CreateObject("SldWorks.Application")



	Set swModel = swApp.ActiveDoc



	Set swAssy = swModel



	Set swDragOp = swAssy.GetDragOperator



	Set swSelMgr = swModel.SelectionManager



	Set swComp = swSelMgr.GetSelectedObjectsComponent2(1)



	Set swMathUtil = swApp.GetMathUtility



	



	nPts(0) = 0#



	nPts(1) = 0#



	nPts(2) = 0#



	vData = nPts



	Set swOriginPt = swMathUtil.CreatePoint(vData)



	



	nPts(0) = 1#



	nPts(1) = 0#



	nPts(2) = 0#



	vData = nPts



	Set swX_Axis = swMathUtil.CreateVector(vData)



	' This is an incremental rotation,



	' so angle is always the same



	Set swXform = swMathUtil.CreateTransformRotateAxis( _



						swOriginPt, swX_Axis, 1# * RadPerDeg)



	



	



	bRet = swDragOp.AddComponent(swComp, False)



	Debug.Assert bRet



	



	swDragOp.CollisionDetectionEnabled = False



	swDragOp.DynamicClearanceEnabled = False



	



	' Axial rotation



	swDragOp.TransformType = 1



	



	' Solve by relaxation



	swDragOp.DragMode = 2



	



	bRet = swDragOp.BeginDrag



	Debug.Assert bRet



	For i = 0 To 90



		' Returns false if drag fails, for example, because of a collision



		bRet = swDragOp.Drag(swXform)



		



		' Wait for 0.1 secs



		nNow = Timer



		While Timer < nNow + 0.1



			' Process event loop



			DoEvents



		Wend



	Next i



	bRet = swDragOp.EndDrag



	Debug.Assert bRet



End Sub



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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • maxx2000
      Автора темы не было с 2 мая. Я такого звзидунка давно не встречал
    • Dimetil Gidrozin Dnepr
      куда пропал твой парень? с ним в паре вы замечательно смотрелись и ты был гораздо круче спасибо. я уже с автором темы связался он мне ссылок дал и где качать и как ставить. понту мне смотреть то чего у меня нет)) я поставлю то что он мне дал и посмотрю по нему. он видеоуроки пишет. норм чувак кста
    • IgorT
      Да че там хорошего? По мне уже то, что нет возможности выбрать плоскость симметрии напряг.
    • AlexKaz
      А если сделать такой финт: есть два тела, на телах две площадки с одинаковой сеткой. Что будет, если создать много RBE2 от площадки к площадке, но каждый RBE2 связывает только 1 узел на первой площадке с 1 узлом на второй (а не несколько узлов с одним узлом)? По логике вещей, получается аналог нескольких простых MPC узел в узел, т.е. для каждой пары узлов с разных площадок имеем Ux1-Ux2=0, Uy1-Uy2=0, Uz1-Uz2=0. Т.е. получим деформируемые границы площадок (вместо абсл. жёстких), но "сшитые" попарно по площадкам узлы, и попарные узлы на площадках должны перемещаться на одинаковое расстояние. Или нет?
    • Anat2015
      Не путайте модель станка и модель ЧПУ. Синумерик - это ЧПУ, у вас точно ЧПУ Sinumerik SN-770, или это все таки название станка, не встречал, чтобы Сименс станки делал. Определитесь с точным названием УЧПУ.   Теоретически, да, но можно и с внешнего инструмента (ноутбука) а процесс восстановления привязан к модели ЧПУ. Только arc. (архив) бывает разный, могут быть отдельно архивы NCU, PLC, HMI, а может быть объединенный. Где батарейка, какие настройки вы имеете ввиду? Может и архивы не надо восстановливать? Подробнее опишите свои проблемы.
    • ID_Hacker
      Бывает на пульте кнопка, бывает М командами откидывается. Если заходите в меню измерения инструмента в режиме Jog, возможно надо выбрать параметры измерения и нажать "Цикл старт" Вариантов реализации много, и без осмотра подсказать практически нереально. Вы вообще уверены, что у вас моторизированная рука, а не откидываемая руками? Правильно вам пишут - необходимо смотреть в руководстве пользователя станка. Если нет руководства, просить поставщика, производителя. Ну а если уже совсем край, искать специалиста, готового провести исследование и возможно пусконаладку.
    • Мрачный
      Компас напоминает в своих способностях SW 2001-2006 г. Очень во многих местах. А вот с зеркальными деталями-сборками там вроде бы все весьма неплохо, гораздо лучше чем в SW. Вот такое неоднозначие...
    • maxx2000
      там посыл скорее про оформление чертежей согласно ГОСТ Айтишники и манагеры. Что с них взять. 1 семестр начерталки и 1 семестр инженерной графики, если не всё вместе, на отстань в каком нить педагогическом или аграрном вузе
    • brigval
      Заложено, но на усмотрение пользователя. К сожалению.
    • Ветерок
      Хочешь сказать, что разработчики Компаса не знают начерталку? Это же должно быть заложено в программу.
×
×
  • Создать...