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

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

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

У Solidworks есть проблема порядка отображения окон макросов, возможно, это так же зависит от операционной системы, например, Windows7. Так окно не всегда появляется наверху, а может запуститься под другими окнами. Для поиска окна макроса используйте клавиши Alt+Tab.

Или в текст активации окна добавлять WinAPI для отображения поверх всех окон, например:

Const SWP_NOMOVE = 2

Const SWP_NOSIZE = 1

Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE

Const HWND_TOPMOST = -1

Const HWND_NOTOPMOST = -2

Private Declare Function FindWindowExW& Lib "user32" (ByVal hParent&, ByVal hChildAfter&, _

ByVal lpClassW&, ByVal lpTitleW&)

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _

ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long



Private Sub UserForm_Activate()

Dim windowHWND As Long

Dim meCap As String

meCap = Me.Caption

Me.Caption = Me.Caption & Hex$(Now) & Hex$(Timer)

Debug.Print Hex$(Now) & Hex$(Timer)

windowHWND = FindWindowExW(0, 0, StrPtr("ThunderDFrame"), StrPtr(Me.Caption))

Me.Caption = meCap

Debug.Print "Window.HWND = " & windowHWND

SetWindowPos windowHWND, HWND_TOPMOST, 0, 0, 0, 0, FLAGS

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


Всем привет.Срочно нужна помощь. Пишу программу на делфи работающею с Solid Works API . И появился вопрос как выбрать определенную плоскость для построения эскиза.

единственное что знаю надо просканировать featuremaneger(дерево конструирования) и найти в нем плоскость.

С помощью этих функций:

GetNextFeature

GetFirstSubFeature();

GetTypeName;

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

ModelDoc2 swModel;

ModelDocExtension swExt;

bool boolstatus;



swModel = (ModelDoc2)swApp.ActiveDoc;

swExt = (ModelDocExtension)swModel.Extension;

boolstatus = swExt.SelectByID2("Front Plane", "PLANE", 0, 0, 0, false, 0, null, 0);

Русский вариант:

boolstatus = swExt.SelectByID2("Спереди", "PLANE", 0, 0, 0, false, 0, null, 0);
Ссылка на сообщение
Поделиться на других сайтах

streamdown. Спс.

boolstatus = swExt.SelectByID2("Спереди", "PLANE", 0, 0, 0, false, 0, null, 0);

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

есть вроде метод пройтись по дереву можно проверить каждый элемент, на Feature Types и если этот элемент окажется плоскостью, проверить та ли это плоскость которая нас интересует.

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

azzzazzzelDEAN

Я же ссылку на справку дал, там как раз то что нужно. Искомый индекс плоскости "Const ReqPlane", как только траверс попадает на неё, происходит выделение. Далее, insertSketch() и рисуйте)))

Пишу программу на делфи

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

azzzazzzelDEAN

Я же ссылку на справку дал, там как раз то что нужно. Искомый индекс плоскости "Const ReqPlane", как только траверс попадает на неё, происходит выделение. Далее, insertSketch() и рисуйте)))

Похвально, только вот вам мало кто поможет, если полезут ошибки во время дебага. Непопулярный язык для API SW.

СПС. к сожалению другого языка не знаю :(

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

СПС. к сожалению другого языка не знаю :(

Чем не повод выучить? ;)

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

Чем не повод выучить? ;)

Уже сам задумывался об этом:) но нет времени а по учебе мы все на дельфе делаем:)
Ссылка на сообщение
Поделиться на других сайтах

программирование под CAD на delphi?

Ну да:) если честно дурдом полный ни методичек ни книг, все инфа на английском а примеры си или бейсик. Разбираемся как можем:)

кстати посмотрел примерчик тот который вы скинули на бейсике, там как я понял просто считают количество плоскостей и мы заранее должны знать какая по счету плоскость которая нам нужна? Просто как мне объясняли в разных версиях этот порядок может быть разным.Но начало верное нужно так же выбрать плоскости а потом каким то макаром по нормали этой плоскости понять та ли это плоскость, (там еще какаето матрица есть где все параметры плоскости углы поворота и т.д)

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

Ну да:) если честно дурдом полный ни методичек ни книг, все инфа на английском а примеры си или бейсик. Разбираемся как можем:)

Скорее всего - лучше не будет. :) Но если уже в чем то да и разбираться, то не в delphi.

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

там еще какаето матрица есть

ой есть))) да непростая. Можно и по ней, но это уже хитрый способ. Проще надо быть с этим API)))
Ссылка на сообщение
Поделиться на других сайтах

ой есть))) да непростая. Можно и по ней, но это уже хитрый способ. Проще надо быть с этим API)))

ну если проще то это:

boolstatus = swExt.SelectByID2("Спереди", "PLANE", 0, 0, 0, false, 0, null, 0);
по мне так приемлемый вариант:) ток с языками может запара быть но мне не на продажу:) вот не знаю устроит ли препада этот вариант:)

Если знаете как сделать с помощью матрицы подскажите если не сложно:)

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

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

Угу. В принципе - этого достаточно, ибо "спереди-сверху-справа" это как бы основа. Даже если вы переименуете плоскости , ориентация по матрице останется той же.

А дальше...хитрости))) Выделив нужную делаем ориентацию перпендикулярно плоскости. Повторный запуск команды - обратная сторона.

C#

swModel.Extension.RunCommand((int)swCommands_e.swCommands_NormalTo, "");

VBA

swModel.Extension.RunCommand swCommands_e.swCommands_NormalTo, ””

И без всяких матриц.

Ссылка на сообщение
Поделиться на других сайтах
Угу. В принципе - этого достаточно, ибо "спереди-сверху-справа" это как бы основа. Даже если вы переименуете плоскости , ориентация по матрице останется той же.

А дальше...хитрости))) Выделив нужную делаем ориентацию перпендикулярно плоскости. Повторный запуск команды - обратная сторона.

C#

procedure FindPlanes(Model_doc: IModelDoc2; var PlaneXY, PlaneYZ, PlaneXZ, Point: IFeature; var PointName: WideString);var  CurFeature: IFeature;  FeatureName: WideString;  CurPlane: IRefPlane;  CurPlaneParams: Variant;begin  CurFeature:= Model_doc.IFirstFeature;  while CurFeature <> nil do  begin     FeatureName:= CurFeature.GetTypeName;     if FeatureName = 'RefPlane' then     begin        CurPlane:= (CurFeature.GetSpecificFeature) as IRefPlane;        if CurPlane <> nil then        begin           CurPlaneParams:= CurPlane.GetRefPlaneParams;           if (CurPlaneParams[0]=0) and (CurPlaneParams[1]=0) and (CurPlaneParams[2]=0) then           begin              if (CurPlaneParams[6]=0) and (CurPlaneParams[7]=0) and (CurPlaneParams[8]<>0) then                PlaneXY:= CurFeature;              if (CurPlaneParams[6]<>0) and (CurPlaneParams[7]=0) and (CurPlaneParams[8]=0) then                PlaneYZ:= CurFeature;              if (CurPlaneParams[6]=0) and (CurPlaneParams[7]<>0) and (CurPlaneParams[8]=0) then                PlaneXZ:= CurFeature;           end;        end;     end;     if FeatureName = 'OriginProfileFeature' then     begin       PointName := CurFeature.Name;       Point:= CurFeature;     end;     CurFeature:= CurFeature.IGetNextFeature;  end;end;
Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

Иногда при запуске программы (отладке) solidworks вывешивает окошко о сборе данных и виснет - программа не запускается. Решение:

32bit machine:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

x64 machine:

C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727

and type the following command:

ngen.exe executeQueueditems

This should cause .NET to compile all .NET components that have been queued up as soon as possible instead of in the background when the machine is idle.

The .NET components in the queue may come from SolidWorks, 3rd party applications based on .NET, and the .NET framework itself.

On a 64-bit machine, please invoke the above command from both a 32-bit and a 64-bit DOS command prompt.

Апдейт. Такое нужно проделать не только когда происходит отладка DLL, но и просто SW всё время вывешивает окно

Изображение

Ну и батничек для исправления этого дела.

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

Очень интересная работа с .NET

Позднее связывание и отвязка своей программы от версии SW.

<noindex>http://streamdown.blogspot.ru/2013/03/blog-post.html</noindex>

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

Подскажите пожалуйста, мне необходимо написать макрос, который в зависимости от свойств модели будет отображать те или иные виды на чертеже. Как свойства модели прописываются в бэйсике? Там где стоит Х мне нужно прописать свойство модели:

Dim swApp As Object

Dim Part As Object

Dim boolstatus As Boolean

Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = _

Application.SldWorks

Set Part = swApp.ActiveDoc

boolstatus = Part.Extension.SelectByID2("Чертежный вид1", "DRAWINGVIEW", 0, 0, 0, False, 0, Nothing, 0)

If X = 1 Then

Part.UnsuppressView

Else

Part.SuppressView

End IF

End Sub

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

Свойства из модели или чертежа?

В справке не то? <noindex>http://help.solidworks.com/2012/english/ap..._example_vb.htm</noindex>

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

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

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

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

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

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

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

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

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

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

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



  • Сообщения

    • Aurifer
      Редактировал отдельно подсборку открывая через Windows. Потом открываю главную сборку, выходит сообщение "модели изменились, перестроить?", соглашаюсь, ошибка.  Редактировал прямо из основной сборки, кнопкой "редактировать сборку" в дереве построений. Эффект тот же.  Из ограничений, каркас на котором крепятся валы, выбираю ПКМ - "зафиксированный". Чтобы остальные детали (подсборки) двигались относительно валов. И в то же время в "свойства компонента" - "решить как" - ставлю "свободно". Чтобы валы можно было сдвигать/раздвигать между собой. Если решить как, ставлю "точно", то опять же ошибка перестроения.  P.s: Картинку мою видно? Как то криво у меня отображает. 
    • maxx2000
      редактировать можно по-разному, в контексте сборки, либо сделав подсборку активной и редактируется уже в контексте подсборки. А так всё что понятно что ты в сборке наложил ограничения, потом открыл подсборку и в ней наложил ограничения и у тебя естественно возник конфликт.
    • Aurifer
      Добрый день, подскажите что я делаю не так.  Имеется такая сборка: Расстояние между валами не фиксировал, чтобы потом сопряжения сделать по факту. Сборку сделал. Теперь задача сохранить деталь (подсборку) с зафиксированными валами. Но вот не задача.Редактирую подсборку прямо из сборки, делаю валы зафиксированными. Но при открытии файла вне сборки, валы фиксированны, но не в тех местах как в сборке, а в тех где они были до вставки в сборку.  Ладно, опять открываю эту подсборку, делаю в ней сопряжение "граничащее расстояние" . Расстояние оставляю, то которое программа автоматически подставила. Сохраняю. Основная сборка пытается перестроиться и выпадают ошибки, что нельзя решить данные сопряжения!  Пробовал измерить расстояние на ответной части и вбить вручную, ошибки перестроения.  Любые попытки зафиксировать эти валы или их кронштейны приводят к ошибкам перестроения. 
    • SAVASTEEV
      Всем привет, у фанука есть цикл G72 очень удобный цикл когда нужно отрезным резцом сделать какие-либо проточки контура, а как можно задать такую же обработку на сиеменсе? Стойка siemens 808d ? То есть создаю нужный контур, но какой вариант обработки нужно указать? Либо как правильно нужно задать контур, попробовал разные варианты у меня резец выходит либо в заготовку (по симуляции), либо идет как проходной резец (типа как по тому же циклу G71 фанучному)   Буду благодарен за помощь, так-как вручную прописывать и рассчитывать все контуры такое себе.... В 840 и в 828 стойки вроде можно выбрать вариант проточки продольная либо поперечная, но вот как сделать это в 808.... 
    • maxx2000
      установить сверхкомпактные противовесы из обеднённого урана  а если серьёзно, то рассмотреть верньерный механизм
    • gudstartup
      а вы на манометр при резке посмотреть не пробовали?
    • Guhl
      Ха, точно. Я почему-то был уверен, что это только для аналоговых шпинделей. Спасибо! Это согласование датчика
    • Tad
      Делал не раз и не два. Более десячти лет тому назад рекомендовал эту схему с соответствующей картинкой на одном техническом форуме для проверки насоса. Там она была уместна. А теперь хотел бы услышать от вас, в чем я неправ - если выдаете себя за специалиста - аргументы в студию, дабы не прослыть простым трепачем.  
    • Иван1987
    • Maik812
      автоматиче5ская рольставня сама все сделает ей хватает мощности
×
×
  • Создать...