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

Api Sw


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

Уважаемые спецы! Просьба объяснить в чем моя ошибка?

Код на VB6

Dim swApp As SldWorks.SldWorks

Dim Model As SldWorks.ModelDoc2

Dim Drawing As SldWorks.DrawingDoc

Dim SelMgr As SldWorks.SelectionMgr

Dim Note As SldWorks.Note

Sub Main()

Set swApp = CreateObject("SldWorks.Application")

Set Model = swApp.ActiveDoc

Set Drawing = Model

Set SelMgr = Model.SelectionManager

Dim SelType As Long, PickPoint As Variant

SelType = SelMgr.GetSelectedObjectType2(1)

PickPoint = SelMgr.GetSelectionPoint(1)

If IsEmpty(PickPoint) Then Exit sub

Dim X1, Y1 As Double

' получаем координаты точки щелчка мыши в Drawing

X1 = PickPoint(0) ' Set line startpoint

Y1 = PickPoint(1)

' дальше рабочий код

End Sub

Код на VB работает нормально, начиная с SW99

Код на VC++, EXE-file

void CMaingDlg::OnOK()

{

HRESULT hres;

CoInitialize(NULL); //Initialize COM

CComPtr<ISldWorks> swApp; //Use ATL smart pointers

hres = swApp.CoCreateInstance(__uuidof(SldWorks), NULL, CLSCTX_LOCAL_SERVER); //Create an instance of SolidWorks

CComPtr<IModelDoc2> pModel;

hres = swApp->get_IActiveDoc2(&pModel);

long SelType;

hres = pModel->GetType(&SelType);

CComQIPtr<IDrawingDoc>pDrawing(pModel);

CComQIPtr<ISelectionMgr> pSelMgr(pDrawing);

hres = pModel->get_ISelectionManager(&pSelMgr);

long CountObj = 0;

hres = pSelMgr->GetSelectedObjectCount(&CountObj);

if (CountObj != 1)

return;

double PickPoint[3];

double *pPoint;

pPoint = PickPoint;

// пока проходит нормально

hres = pSelMgr->GetSelectionPoint(CountObj, pPoint); // вот здесь ошибка

// hres не равен 0, значения элементов массива какие-то дурные

// даже близко нет к значеним на VB

// дальше код

pModel = NULL; //release COM references

swApp = NULL;

CoUninitialize();

return;

}

Прошу извинений, если это моя тупость, но в VC++ я не очень давно сижу

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


double PickPoint[3] = {0};

hres = pSelMgr->IGetSelectionPoint(CountObj,PickPoint);

так попробуй

<{POST_SNAPBACK}>

Не проходит. hres = -2147023898. Значения элементов массива равны 0

В VB6 я использую дальше функцию:

retval = DrawingDoc.CreateText2 ( textString, textX, textY, textZ, textHeight, textAngle )

для вставки текста, все проходит

В VC++

status = DrawingDoc->ICreateText2 ( textString, textX, textY, textZ, textHeight, textAngle, &retval )

она тоже вставляет текст, только в левый нижний угол Drawing_а, а не там, где я щелкнул мышкой

За совет спасибо!

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

Здрям

---SW help

The COM interface is recommended for all add-in DLL projects. For separate executable (.exe) implementations, you can use the COM interface unless the method or property passes an array. In this case, use the equivalent Dispatch method that uses a VARIANT to encapsulate the array.

---

чтобы не путаться - используйте только IDispatch

VARIANT vPt;

::VariantInit(&vPt);

if(FAILED(pSelMgr->GetSelectionPoint(1, &vPt)))

return;

...

::VariantClear(vPt);

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • ANT0N1DZE
      Упрощенный план действий: Начните со стр. 155 https://www.utgt73.ru/uploads/biblioteka/fizika 10.pdf Если будет вращаться быстро и не в вакууме, то надо будет учесть "парус" этого тела, там сопротивление газа зависит от скорости движения. Это уже примерно 1 курс университета (тоже гуглится спокойно). 
    • MagicNight
      Заметил такую особенность, что в PowerMill v6 (возможно и в других тоже) происходит следующее... Создаю NC-файл и туда сбрасываю траектории (около 10-15 на разные фрезы), на выходе некоторые траектории не прописывает вкл охлаждения. То есть в графе Охлаждение на одну из 10-15 траекторий пишет НЕТ, на всех остальных -Стандартное (то есть да) Получается, что из, условно десяти траекторий, одна или две прописываются без включения СОЖ. Но что интересно по отдельности программы выходят с включенной СОЖ, всегда! Не могу понять зависимость с этим. Кто-нибудь сталкивался с этим?
    • ЮрЮрыч
      Вам нужно просто общее количество или оптимальную раскладку для резки наподобии нестинга?
    • Jesse
      да. Забыл добавить. Я там в тестовом примере ещё сверху шум накинул небольшой амплитуды, в 10 раз меньше чем основной сигнал. Если шум убрать, то получится что амплитуда дискретного фурье спектра растёт примерно в sqrt(N2/N1) раз, где N2 - число отсчётов для правого графика, а N1 - для левого. Но не суть.. Мой главный вопрос как получить "рабочую", правильную амплитуду DFT, которую можно было бы вбить в прогу?   не, у меня более простой второй вариант) вот когда скажут заморочиться с ансамблем и случайными процессами, тогда и будуда и комиссии если что-то подобное пробубнить, то мне точно прилетит..   Harmonic Response. На резонанс проверить.   вот сейчас только в голову пришло! Там ведь поправочные коэффы в DFT используются! Типа 1/sqrt(2*Pi) чё т такое. Пойду курить вольфрам
    • Orchestra2603
      Я, честно скажу, не знаю как на практике это проходит, что в нормах пишут и т.д. Стоит задача провести вероятностный анализ (вероятност ьпревышения пределеа текучести, например), или надо просто посчитать динамику на одну вот эту вот историю ускорений, и все? Второй вариант проще, но по-правильному, наверное надо, как в первом варианте.   а какой анализ вы хотите делать?   Если больше отсчетов по частоте, то повышается разрешение в частотной области, и просто пик становится более резким. В предельном случае будет просто одно значение в районе частоты действия силы, а вокруг него везде нули. Но, когда разрешение падает, то амплитуда с пика "сползает" и "растекается" на соседние частоты. Но сама сумма в силу равенства Парсеваля, как вы правильно сказали,  должна быть такой же.   Это очень странно. Впечатление такое, что как будто где-то какой-то косяк с БПФ. Если в начале во времени был синус с амплитудой 1, то на спектр еможет быть 1 (если однсторонний спектр), либо 1/2, если двухстронний спектр. Может, оконная функция какая-то странная? Надо разбираться...  Так а если он задаст на уровне земли как кинематическое возбуждение опорного контура? Вроде же норм... Или речб о том, чтобы убрать из модели опорную конструкцию, на которой держится оборудовнаие?
    • Борман
      и не только. При отсутствии отраслевого ГОСТа, пользуйтесь СП 14.13330.2018. Там найдете нужные коэффициенты.
    • Jesse
      у нас по НП-068-05 в отсутствие акселерограмм и спектров ответа и на 3g трясут.. мне тоже один мужик с испытательного центра посоветовал типа "бери максимум с акселерограммы да и всё". Максимум в районе 0.5g и получается   имеете в виду, что если оборудование расположено выше, то там и ускорение больше будет?
    • serg-nn
      Подскажите новичку что не так в этой программе. Деталь простая, на выходе получается полная ерунда- фасок нет, качество поверхности жуткое, самый малый диаметр вообще накатан. В симуляции , что в станке, что в программе все хорошо. Считаю по формулам- подачи сходятся... УП https://cloud.mail.ru/public/XUNu/xwkFybupZ https://ibb.co/zfZVSsL
    • Борман
      Вот вам 0,4 Надо задавать с графика выше в этом посте. Но это ускорение на поверхности земли. Надо его превратить в расчетное ускорение.
    • Fedor
      Без доверия не построить нормального капиталистического государства . Доверие это важнейший социальный капитал. Кинуть можно один раз, сотрудничать можно много. Это как цикл в двс.   Маркса стоит почитать.  Нет доверия - нет циклов, нет и полезной работы. Такова социальная термодинамика  :)
×
×
  • Создать...