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

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

Как повернуть деталь в сборке? В смысле как это сделать через API?

Думаю, достаточно, чтоб разобраться дальше самому:

arr = NewMatrix(dXc, dYc, dZc, dA_rad)

oComp.Transform2 = oMathUtil.CreateTransform(arr)

moAsse.EditRebuild ' Rebuild to see updated transform

Private Function NewMatrix(ByVal dX_m As Double, ByVal dY_m As Double, _

						   ByVal dZ_m As Double, ByVal dA_rad As Double) As Double()

   Dim arr(15) As Double

 

   ' Поворот вектора OX

   arr(0) = Cos(dA_rad)

   arr(1) = Sin(dA_rad)

   arr(2) = 0#

   ' Поворот вектора OY

   arr(3) = -Sin(dA_rad)

   arr(4) = Cos(dA_rad)

   arr(5) = 0#

   ' Поворот вектора OZ

   arr(6) = 0#

   arr(7) = 0#

   arr(8) = 1#

   '

   ' Точка вставки

   arr(9) = dX_m

   arr(10) = dY_m

   arr(11) = dZ_m

   '

   ' Unit scaling

   arr(12) = 1

   ' No used so pad with zeros

   arr(13) = 0#

   arr(14) = 0#

   arr(15) = 0#

   '

   NewMatrix = arr

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


Думаю, достаточно, чтоб разобраться дальше самому:

...

Все правильно!

Т.е. все преобразования(перемещение/вращение/масштабирование) над объектами сводятся к матричным операциям.

Это, кстати, основа и OpenGL и DirectX.

PS. вернее, наоборот, OpenGL и DirectX - основа, а API SW - это уже следствие из них.

...Расскажите подробнее. Я слушаю очень внимательно...

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

Иначе уже при наложении 2-го сопряжения на пару объектов возникнут ошибки. А для полного определения положения объекта необходимо три сопряжения.

Отсюда вопрос: как программа будет определять эти параметры без участия пользователя?

Хотя, в принципе, это возможно решить и программно и без ошибок, но в 98% случаях это никак не будет соответствовать тому, что хотел пользователь.

Ответа у меня до сих пор нет, хотя этот вопрос у меня возник еще ~ в 2005-м году...

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

Можно ли управлять дизайном PropertyManagerPage (та, которая появляется слева при жмакании кнопочки гденить в меню/в панели/в табе)

в шаблоне аддона есть тока класс UserPMPAge - дизайнера нет.

Если используются контролы самого SW (PropertyManagerPageButton, PropertyManagerPageCombobox и т.д), то только програмно. Но можно сотворить свой UserControl и запихнуть его в PropertyManagerPage. На скриншоте DataGridView создан таким образом.

post-3876-1296139196_thumb.jpg

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

Если используются контролы самого SW (PropertyManagerPageButton, PropertyManagerPageCombobox и т.д), то только програмно. Но можно сотворить свой UserControl и запихнуть его в PropertyManagerPage. На скриншоте DataGridView создан таким образом.

Т.е. визуально нельзя располагать контролы, управлять их размерами и т.д. , как это обычно делается в средах разработки VB, VS... (конструктор форм)?
Ссылка на сообщение
Поделиться на других сайтах

подскажите пож-ста, как правильно выбрать элемент (эскиз "Bounding-Box1") в дереве чертежного вида детали?

я делаю так

Dim swModExt			As SldWorks.ModelDocExtension

Set swModExt = swModel.Extension

...

ViewName = swView.GetName2									 ' получил имя вида

bRetActiveView = swDraw.ActivateView(ViewName)		  ' активировал вид

bRetViewBoundary = swModExt.Extension.SelectByID2("Bounding-Box1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)

swDraw.UnblankSketch												   ' отобразить эскиз
Ссылка на сообщение
Поделиться на других сайтах

подскажите пож-ста, как правильно выбрать элемент (эскиз "Bounding-Box1") в дереве чертежного вида детали?

я делаю так

Dim swModExt			As SldWorks.ModelDocExtension

Set swModExt = swModel.Extension

...

ViewName = swView.GetName2									 ' получил имя вида

bRetActiveView = swDraw.ActivateView(ViewName)		  ' активировал вид

bRetViewBoundary = swModExt.Extension.SelectByID2("Bounding-Box1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)

swDraw.UnblankSketch												   ' отобразить эскиз
Первый аргумент функции SelectByID2 в этом случае должен иметь вид: "Имя эскиза@Имя детали@Имя вида", примерно так "Sketch1@Part1-2@Drawing View2". Особо обратите внимание на имя детали. Индекс и дефис обязательны.

Т.е. визуально нельзя располагать контролы, управлять их размерами и т.д. , как это обычно делается в средах разработки VB, VS... (конструктор форм)?

Визуально нельзя. В SW нет конструктора форм, насколько мне известно.
Ссылка на сообщение
Поделиться на других сайтах

...

Визуально нельзя. В SW нет конструктора форм, насколько мне известно.

Что значит: "в SW - нет"

Когда я макрос на C# редактирую, все там есть...

Пока вот не смог разобраться:

- как сделать, чтобы стартовал не макрос, а форма, на ней, ессенно, копочки, а вот к кнопочкам уже привязать сам макрос?

Пускай для начала это будет обычная форма - не "PropertyManagerPage".

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

ssv22

Вы тоже перешли на шарп? (ну или диез - для особо любящих точность названия)

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

ssv22

Вы тоже перешли на шарп? (ну или диез - для особо любящих точность названия)

Ага. Но только в начале пути...
Ссылка на сообщение
Поделиться на других сайтах

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

с такой функцией отлично справляется dll. Там хоть на панельке хоть в менюшке...кнопка - по которой стартует макрос

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

Что значит: "в SW - нет"

Когда я макрос на C# редактирую, все там есть...

Это VSTA (Visual Studio Tools for Application), под .NET. Там конструктор форм есть. А streamdown спрашивал о PropertyManagerPage и его контролах. Вот для него и нет дизайнера.
Ссылка на сообщение
Поделиться на других сайтах

Это VSTA (Visual Studio Tools for Application), под .NET. Там конструктор форм есть. А streamdown спрашивал о PropertyManagerPage и его контролах. Вот для него и нет дизайнера.

Это печально :unsure: ...
Ссылка на сообщение
Поделиться на других сайтах

ssv22

ничего печального)))))

можно сотворить свой UserControl и запихнуть его в PropertyManagerPage

Осталось только разложить объявления в addin-е и вроде всё. Я прально понял, Shvg?

Или функции, выполняемые контролом в таскпейне тоже нужно где-то прописывать помимо класса этого таскпейна?

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

вот встретил проблему на ровном месте

ViewName = swView.GetName2

bRetActiveView = swDraw.ActivateView(ViewName)

FileName = Left(MyDir, Len(MyDir) - 7) & "-1"

bRetViewBoundary = swModel.Extension.SelectByID2("Bounding-Box1@FileName@ViewName", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)

swModel.UnblankSketch
не хочет отображать эскиз габаритной рамки листовой детали.

Встретил на офф. форуме следующую запись:

retval = swApp.ActiveDoc.Extension.SelectByID2(swsubfeat.Name & "@" & Left(swmodel.GetTitle, Len(swmodel.GetTitle) - 7) & "-1" & Right(flatview.Name, 1) & "@" & flatview.Name, "SKETCH", 0, 0, 0, False, 0, Nothing, 0)

что значат выделенные символы в контексте команды?

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

shvg

Вы были правы насчёт индексов.... ну оооооочень надо быть внимательным

Сложнее получить его, индекс, из вида. Особенно, если это разрез. :confused_1:
Ссылка на сообщение
Поделиться на других сайтах

Такой вопрос, как получить путь dll аддона?

Пример: Я создаю проект dll в visual studio. В dll есть форма с кнопкой. Кнопка открывает текстовый документ, находящийся в папке проекта. Как в таком случае динамически узнать путь к dll?

Нашел только GetModuleFileName - но он почему-то не работает.

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

Сам нашел, и коменты добавил))) всё на шарпе

using Microsoft.Win32;



private void CmdEdit_Click(object sender, EventArgs e) //Открываем для редактирования файл TT.txt находящийся рядом с нашей dll

	   {

			/**

			 * Тут смысл вот в чем, наша ДЛЛ регистрируется в реестре

			 * а значит нам достаточно получить её CLSID (который берется из SwAddin)

			 * и взять из него имя параметра

			 **/

			Microsoft.Win32.RegistryKey RegKey =

										   Microsoft.Win32.Registry.LocalMachine.OpenSubKey

										   ("SOFTWARE\\Classes\\CLSID\\{04966BA8-3F59-4CB3-A227-A1604EC8CEB7}\\InprocServer32", true);

			try

			{

				Object o1 = RegKey.GetValue("CodeBase");

				string loadstring = o1.ToString();

				string subloadstring = (loadstring.Substring(8)); //Удаляем всякую хрень в начале ключа

				int leight = subloadstring.Length; //Узнаем теперь длину всего параметра

				string subloadstring1 = (subloadstring.Remove(leight - 13, 13)) +"TT.txt"; //Удаляем имя нашей DLL с конца строки, прибавляем имя текстовика

				System.Diagnostics.Process.Start("notepad", subloadstring1); //Запускаем блокнот с путем, который получили

			}

			catch (Exception ex) { MessageBox.Show(ex.ToString()); }		   

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

подскажите пож-ста, как экспортировать в pdf определённый набор листов чертежа?

в хэлпе упоминается массив Sheets типа Object:

Dim instance As IExportPdfData

Dim Which As Integer

Dim Sheets As Object

Dim value As Boolean

value = instance.SetSheets(Which, Sheets)

сделал массив (Variant) нужных имён листов, как его правильно указать в операторе?

из хэлпа:

boolstatus = swExportPDFData.SetSheets(swExportData_ExportSpecifiedSheets, varSheetName)
но тут varSheetName - имя листа, а мне нужен список. В итоге получаю в pdf все листы чертежа.
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • PARADOX.NC
      здравствуйте, такая проблема, магазин начал проскакивать позицию, немного смещаясь от положенного места,горит ошибка на датчик, суть в том что при вращении кулачка который взаимодействует с датчиками, он останавливается не на том датчике и из за этого горит ошибка о неисправности датчика, если вручную совершить правильный порядок включения датчиков то ошибки нет, но когда все собираешь на место и система отрабатывает опять происходит тот же эффект, приезжало много специалистов , поменяли все  датчика- результата ноль, все датчики система видит в полном объеме как положено, есть предположение (одного из мастеров) что сбился параметр отвечающий на время срабатывания датчика, но ни кто не знает где этот параметр находится... если может кто помочь огромная просьба помогите, станок уже долго стоит и ни кто не может решить проблему.
    • Борман
      Так свойства грунта получены при действии атм. давления. Вы же не нагреваете конструкцию на 273 градуса при решении ?
    • maxx2000
      @Snake 60 а почему не использовать  ректальное сегментное кольцо, оно же жесты мыши, для того чтобы навесить нужные команды на него?
    • Fedor
      Тут другой вопрос вырисовывается.  По идее действует на грунт атмосферное давление и , следовательно ,  надо бы его учитывать при анализе прочности грунтов. Но нигде не видел, чтобы это учитывалось, например, при устойчивости склонов... 
    • Snake 60
      Нано-макросы :) https://boosty.to/snake.nest/posts/a7056a15-49b7-4f80-9de4-194e9dbf3404
    • Борман
      Ну значит ваша температура замерзания ниже -25гр.С. 
    • bri
      Вы правы, фрезеровка далеко не самый лучший метод. Но да, радиатор это грубо говоря часть какого-то корпуса. Уж не знаю насколько эффективны другие способы при небольших обьемах . Ну а при обработке глубоких и тонкостенных ребер делаем их за раз, без всяких подчисток. Равномерно опуская все ребра.  второй раз прикасаться к ним инструментом нельзя  Ну и для примера. 4мм на глубину 40 делаю в 2-3 фрезы разного вылета. Первая на 20мм.  по геометрии хорошо показали себя однозубые фрезы, гребут за раз довольно глубоко.  Мне лично понравились seco jabro. Но с Европой нынче туго(( у Китая пока не нашел достойной замены
    • maxx2000
      @vik300001 "сохранить как" не  предлагает вариантов?
    • vik300001
      Помогите, не могу разобраться. Как карту раскроя в лантек экспортировать в DXF? Получается что импорт есть, а экспорта не вижу.
    • Yaroslav_
      @hlibhlib @hlibhlib Доброго дня, поделитесь русификатором пожалуйста.
×
×
  • Создать...