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

Не всегда работает превью с помощью SW_ExtractBitmap.dll


brigval

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

Да, реальный. И функция возвращает 0 и oThumbnail не пуст.

Может, что-то в редакторе VB? В нем что-то может быть причиной?

Вот Ваш код:

'===

Private Sub ShowThumbnail(ByRef oPic As PictureBox, ByVal ffn As String)

Dim extractBmpObject As New SW_EXTRACTBITMAPLib.SolidWorks_ExtractBitmap

Dim oThumbnail As stdole.IPictureDisp

'

oPic.ToolTipText = NS

If Len(ffn) > 0 Then

extractBmpObject.ExtractBitmapByNameToIPicture ffn, "Preview", oPic.Width, oPic.Height, oThumbnail

oPic.Picture = oThumbnail

If Not oThumbnail Is Nothing Then oPic.ToolTipText = ffn

End If

'

End Sub

'===

Вот мой:

`===

Private Sub previewBmp_Click()

Dim extractBmpObject As New SW_EXTRACTBITMAPLib.SolidWorks_ExtractBitmap

Dim result As Long

Dim iPicture As IPictureDisp

If previewList.Text = "" Then '''''''''''''''''''''''' '''by ssv22

previewList.Text = "Preview"

End If

If Not (previewList.Text = "") Then

If Not (filename.Text = "") Then

If Not (outputFileName.Text = "") Then

''' extractBmpObject.ExtractBitmapByNameToIPicture filename.Text, _

''' previewList.Text, previewBox.Width, previewBox.Height, iPicture

extractBmpObject.ExtractBitmapByNameToIPicture filename.Text, _

previewList.Text, 350, 300, iPicture ''''''''''' '''by ssv22

End If

End If

End If

previewBox.Picture = iPicture

End Sub

'===

Не вижу в Вашем коде строки:

previewBox.Picture = iPicture (ну или аналогичную, в соответствии с вашими переменными) - это же загрузка извлеченной картинки в контрол !

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


Не вижу в Вашем коде строки:

previewBox.Picture = iPicture (ну или аналогичную, в соответствии с вашими переменными) - это же загрузка извлеченной картинки в контрол !

oPic.Picture = oThumbnail

В таком варианте у меня и VBA работает, в C# посложнее, нужно конвертировать в Image

stdole.StdPicture picture = (stdole.StdPicture)pictureDisp;

			Image image = ImageConverter2.IPictureToImage(picture);

			picBox.Image = image;
Ссылка на сообщение
Поделиться на других сайтах

oPic.Picture = oThumbnail

В таком варианте у меня и VBA работает, в C# посложнее, нужно конвертировать в Image

...

Ну в VBA я практически не работаю, а этот пример подправил и сделал exe-шник. Теперь с SW2009 работает, а старый почему-то перестал работать.

Так что я попутно решил свою задачку :-)

А у `brigval` я вообще не вижу такой строки:

oPic.Picture = oThumbnail

???

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

А у `brigval` я вообще не вижу такой строки:

oPic.Picture = oThumbnail

???

Вот Ваш код:

'===

Private Sub ShowThumbnail(ByRef oPic As PictureBox, ByVal ffn As String)

Dim extractBmpObject As New SW_EXTRACTBITMAPLib.SolidWorks_ExtractBitmap

Dim oThumbnail As stdole.IPictureDisp

'

oPic.ToolTipText = NS

If Len(ffn) > 0 Then

extractBmpObject.ExtractBitmapByNameToIPicture ffn, "Preview", oPic.Width, oPic.Height, oThumbnail

oPic.Picture = oThumbnail

If Not oThumbnail Is Nothing Then oPic.ToolTipText = ffn

End If

'

End Sub

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

Да, реальный. И функция возвращает 0 и oThumbnail не пуст.

Может, что-то в редакторе VB? В нем что-то может быть причиной?

Если функция возвращает ноль, то вероятно так оно и есть. Возможно ошибки в объявлениях тех или иных переменных и перекрывания их в результате вы получаете не то что было задумано. Возможно объект вывода изображения картинки перекрывается другим объектом, тут можно попробовать просто сдвинуть объект в сторону и попробовать снова, не припомню, что бы в VB6 отслеживания всех объектов на форме, если речь о нём конечно. Возможно объект в который передаётся картинка, в момент передачи находится в отрицательной области формы.

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

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

Создал новый проект и поэкспериментировал на нем.

Выяснил, что в PictureBox вставляется картинка очень больших размеров. И в тех размерах PictureBox, что на форме, виден только левый верхний край картинки (кусок серого фона).

Оказывается размер картинки для PictureBox не зависит от размеров PictureBox, указанных в Properties и передаваемых в функцию ExtractBitmapByNameToIPicture, а завист от ScaleMode формы (!).

По некоторым причинам, надо, чтоб было ScaleMode = Twip.

В общем, хорошо заработал такой код

ret = extractBmpObject.ExtractBitmapByNameToIPicture(ffn, "Preview", _

						   CLng(oPic.Width / Screen.TwipsPerPixelX), _

						   CLng(oPic.Height / Screen.TwipsPerPixelY), oThumbnail)

Благодарю всех откликнувшися и принявших учстие в обсуждении. Это обсуждение способствовало решению проблемы.

Хотел загрузить скриншот, но получил сообщение:

Неудачная загрузка. Директория загрузок файлов не доступна. Пожалуйста, сообщите об этом администрации.

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

Рекомендую код для просмотра превью любых файлов, в том числе и файлов SolidWorks

<noindex>http://vbaccelerator.com/home/VB/Code/Libr...ion/article.asp</noindex>

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

Как программно сделать превью для последних версий SW? 2018, например.

SW_ExtractBitmap.dll хорошо отображает старые версии, а последние не хочет показывать... :no:

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

а что из последнего есть , можешь  скинуть?

а то у меня 2014

В 2012 сейчас могу тестировать. В нем и работает. Других нету. Могу скинуть, если подойдет.

Может из установленного SW что-то можно использовать? Хотя бы и при открытом SW.

Может, макросами можно организовать превью?

Поискал, но пока без результата. ((

Bitmap.jpg

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

22.5.0.0077


у меня есть такая версия

SW_ExtractBitmap.dll

SW_ExtractBitmap64.dll

Еще есть один.. не по нятный.

1.0.0.1  тоже есть.

Есть еще код в раре архиве, можно прикрутить экстрактор картинок новый , у меня плагин к Тоталу 2014 видит а с 2015 нет и выше.

202SW_ExtractBitmap.dll src.rar

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

Посидел-подумал и сделал превью при открытом Солиде.

Немного не быстро происходит, но, как единственный вариант, устраивает пока.

Превью КП.JPG

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

Я же нашел

давно просил.. так как превью экскизов и файлов для просмотра в плагине есть для Тотала..

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

давно просил.. так как превью экскизов и файлов для просмотра в плагине есть для Тотала..

Если это мне, то превью Тотала хорошо. Но эти превью не вставишь в свою программу.

А последние версии Тотала не используют DLL для превью файлов SW.

 

 

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

А последние версии Тотала не используют DLL для превью файлов SW.

совершенно верно, автор интегрировал ее в сам плагин, так как регистрацию длл-ки делать нужно и тд.

но версия  1.1.4.1 юзает внешнию  длл... так что почему не поюзать путем подмены.

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • MagicNight
    • clavr
      что за столбы такие: "марка" и "типоразмер"?  
    • Guhl
      А откуда ж ты про Пермь заговорил, если ты там не появляешься? это наводит на кое-какие мысли, так как тут  я не упоминал про Пермь Я вообще в разных местах бываю: Пермь, СПБ, Крым, Карелия И как тебе чипок мешал зарабатывать? А "король саркастических ужимок" - этот очень метко, на мой взгляд. Я даже запомнил вот.
    • clavr
      Делюсь: 1. профили для металлоконструкций. собирал из всей солянке которая тут на форуме есть. что-то добавлял свое. для части элементов добавил дополнительные опорные точки для позиционирования профиля: - если кому-то нужны доп. точки для выравниванивания  профиля, то открываем исходник, в эскизе добавляем нужные точки, сохраняем   2. Также таблица для вырезов   Профили сварных деталей.rar Спецификация для профилей.sldwldtbt
    • Guhl
      Здесь вы наверно были, но все же приведу ссылку Там народ рассказывает что-то  https://support.industry.siemens.com/forum/WW/en/posts/how-to-adjust-encoder-position-on-shaft/274353
    • lem_on
      Ага, одной рукой стихи строчил, другой ... яростно ....   Опять приплетаешь чего не было, летописец. Я на этой помойке, где полым полно таких как ты даже появлятся не хочу. Сами обсуждайте как почистить и закалить ведро ржавых гвоздей из печи. Как 8 лет ушел оттуда, так и пошли дела в гору. А всего лишь следовало ограничить себя от общения с тупицами. Вот и помогаю теперь другим, а ты говоришь оскорбляю. Это как посмотреть.  Странно, но статистически это у тебя больше цитат и скринов. Взять даже короля ужимок, даже развил эту тему.  Так что так с тебя летописец. Просто пИсец.
    • arsenev
      https://forums.autodesk.com/t5/powermill-forum/amd-graphics-bug/td-p/11601674     https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/Picking-issues-with-non-Nvidia-Quadro-graphics-cards-in-PowerMILL.html    
    • Guhl
      Ну, королем не я назначил Андрея. Поэтому никакого отношения к этому термину не имею. Но мне настолько понравился этот термин, что я решил умозрительно немного продолжить династию в своем воображении. Я сторонний наблюдатель, так сказать, летописец. Как впрочем, и ты. Ты же все записываешь, скринишь, сохраняешь. Ты даже, наверное, архивариус в нашем королевстве.   Вот ты, думаешь, мне нравится с тобой ругаться, оскорблять тебя в ответ на твои оскорбления? Нет, не нравится, а что поделать? На чипке построже с этим делом, кстати, там ты не распоясываешься  Я вот оскорбляю тебя, а сам грущу как Блок С каких это пор твои взгляды стали консервировативными? Не замечал А на пикабу занимаются кто во что горазд. Есть там и полезные вещи, особенно по юриспруденции, а есть и придурки откровенные.   Я вообще заметил, что на наших форумах люди готовы за неточность или ошибку сожрать человека. Но и человек, бывает, готов быть жертвой. Это, наверное, последствие советской карательной системы образования К нас ведь все боятся ошибиться. Почему? Это обычное дело. Помню, в Африке негр подходит к механику и говорит  - "дай мне новый ключ", а тот ему - " я ж тебе только что дал, где он, куда ты его дел? " - "сломал, что тут такого? Дай новый" Наш аж закипает, а тот реально не понимает что в этом такого. И это нормально, ну сломал ну и что, бери другой, мало их что ли?
    • lem_on
      Да у тебя я смотрю тут целое королевство, и король ужимок есть и принц. Интересно кто же ты в этой палате?    Хоть узнал что за пикабу и чем там занимаются. А то с моими консервативными взглядами, даже не думал о таком, о великий. 
    • AlexKaz
      Разрабатывали сами или реверс-инжинирингом? Хотя, что так, что так. Жаль, таких задач с эпик-фейлами во фриланс и на подряды не передают. Приходится переводить 400 страниц зарубежных отчётов для одной промконторки чтобы  моск размять... А так бы взялся.
×
×
  • Создать...