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

Не всегда работает превью с помощью 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 пользователей

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




×
×
  • Создать...