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

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

подскажите пож-ста, как экспортировать в 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 все листы чертежа.
Для выбора нужного элемента массива нужно указать его индекс в качестве аргумента (индекс первого элемента = 0).

А где у Вас массив определяется, не пойму?

см. тут например:

<noindex>http://msdn.microsoft.com/ru-ru/library/ms...89(VS.90).aspx#</noindex>

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


А где массив определяется, не пойму?

в строке

value = instance.SetSheets(Which, Sheets)
где Sheets - массив имён листов, так говорит хэлп.

если я укажу индекс, то получу только ОДИН лист, а мне нужен НАБОР листов в ОДНОМ файле.

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

в строке

value = instance.SetSheets(Which, Sheets)
где Sheets - массив имён листов, так говорит хэлп.

если я укажу индекс, то получу только ОДИН лист, а мне нужен НАБОР листов в ОДНОМ файле.

Так, это что за язык? VB.NET?

Насчет массива - не спорю. Но, чтобы получить какой-то один элемн массива нужен индекс!

В Help-e по AP SW2008 есть пример (про листы).

Выслать или сюда выложить?

У вас ИМХО вижу пропуски :

Dim strSheetName(4) As String <- где это у Вас?

Dim varSheetName As Variant <- где это у Вас?

...

Set swExportPDFData = swApp.GetExportFileData(1)

' Names of the sheets

strSheetName(0) = "Sheet1" <- где это у Вас? - выбор только 1-го листа, остальные - в комменте

' strSheetName(1) = "Sheet2"

' strSheetName(2) = "Sheet3"

' strSheetName(3) = "Sheet4"

varSheetName = strSheetName <- где это у Вас?

If swExportPDFData Is Nothing Then MsgBox "Nothing"

boolstatus = swExportPDFData.SetSheets(swExportData_ExportSpecifiedSheets, varSheetName)

boolstatus = swModelDocExt.SaveAs(filename, 0, 0, swExportPDFData, lErrors, lWarnings)

End Sub

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

VBA в чистом виде.

Я не стал приводить весь текст макроса, ограничился только нужным оператором. Вот полностью текст:

Option Explicit

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swModelDocExt As SldWorks.ModelDocExtension

Dim swExportData As SldWorks.ExportPdfData

Dim swDraw					  As SldWorks.DrawingDoc

Dim boolstatus As Boolean

Dim filename As String

Dim lErrors As Long

Dim lWarnings As Long

Dim swSheet	As SldWorks.Sheet



Sub main()

Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc

Set swDraw = swModel



Set swModelDocExt = swModel.Extension

Set swExportData = swApp.GetExportFileData(swExportPdfData)



Dim sPathName As String

sPathName = swModel.GetPathName

sPathName = Left(sPathName, InStrRev(sPathName, "\"))



'*************************************************************

Dim vSheetNames	 As Variant

vSheetNames = swDraw.GetSheetNames()

Dim SheetsExport(10)   As Variant

Dim vName   As Variant

dim i	 as integer

i = 0

For Each vName In vSheetNames

	If Right(vName, 3) <> "DXF" Then

	SheetsExport(i) = vName

	i = i + 1

	Else

	End If

Next vName

filename = swModel.CustomInfo("PartNo") & " " & swModel.CustomInfo("Description")

filename = sPathName & filename & ".PDF"

boolstatus = swExportData.SetSheets(swExportData_ExportSpecifiedSheets, SheetsExport())

boolstatus = swModelDocExt.SaveAs(filename, 0, 0, swExportData, lErrors, lWarnings)

End Sub
насчёт индекса я понимаю, но ведь это будет только один лист, а не набор. Или я заблуждаюсь? не отрицаю и этого:)

Можете ТЫкать, я не обижусь:)

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

Всем привет!!

Есть ли на форуме люди, изучающие/знающие API solidworks на C# (кроме уважаемого Shvg)?

Есть много мелких вопросов, которые не в полной мере раскрыты в хелпе (точней ответы есть, но скрыты разве что в редких примерах)

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

Есть много мелких вопросов, которые не в полной мере раскрыты в хелпе (точней ответы есть, но скрыты разве что в редких примерах)

Так задавайте. Может и ответы найдутся.
Ссылка на сообщение
Поделиться на других сайтах

2 'Maze'

...

Так вот же перебор всез листов:

"vSheetNames = swDraw.GetSheetNames

For i = 0 To UBound(vSheetNames)

Debug.Print " SheetName[" & i & "] = " & vSheetNames(i)

Next i

"

Т.е. `vSheetNames` тут является массивом!

PS. советую смотреть HELP API от SW2008. Масса примеров на VBА.

В высших версиях слишком все уж намешано(ИМХО)....

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

PS. советую смотреть HELP API от SW2008. Масса примеров на VBА.

В высших версиях слишком все уж намешано(ИМХО)....

+1024

До сих пор не могу привыкнуть к этим новым справкам. Уже третью версию. Вроде то же самое, а не то... :wallbash: Особенно С++ :sad:

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

+1024

До сих пор не могу привыкнуть к этим новым справкам. Уже третью версию. Вроде то же самое, а не то... :wallbash: Особенно С++ :sad:

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

ssv22

я уже разобрался :smile: макрос работает как было задумано.

советуют юзать он-лайн справку

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

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

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

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

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)

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

Видимо это:

[b`]Right Function`[/b]

Returns a specified number of characters from the right side of a string.

Syntax:

Right(string, length)

This example uses the Right function to return a specified number of characters from the right side of a string.

AnyString = "Hello World" ' Define string.

MyStr = Right(AnyString, 1) ' Returns "d".

MyStr = Right(AnyString, 6) ' Returns " World".

MyStr = Right(AnyString, 20) ' Returns "Hello World".

В разных комбинацмях....

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

ssv22

про индекс "-1" я примерно понял (но это ещё та засада), а вот смысл Right в контексте команды я не понял. К тому же в хэлпе отсутствует упоминание о доп. символах после индекса. Пока что этот вопрос отошёл на второй план.

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

ssv22

про индекс "-1" я примерно понял (но это ещё та засада), а вот смысл Right в контексте команды я не понял. К тому же в хэлпе отсутствует упоминание о доп. символах после индекса. Пока что этот вопрос отошёл на второй план.

Cмысл Right в обрезании срава какой-то строки.

сначала "обрезаем" n-ое кол-во символов с правой строны имеющейся строки, прибавляем другую строку(возможно обрезанную слева - это фунция `Left`, также на n-ое кол-во симвлов), и потом складывакм эти строки оператором `&` или `+`.

Например: получить имя файлa SW без расширения:

допустим имеем имя файла : "Втулка.sldprt".

Функцией `Right`, обрезаем 7 символов с правой строный фразы:

ret1= `Right("Втулка.sldprt", 7) и получаем строку - "Втулка". Т.е строковая переменна `ret1` уже равна "Втулка.

Это чистый Help по VB (не по API SW) ! Есть и руский Help`ы.

PS. немного спутал:

NameOnly = Left(NameFile, Len(NameFile) - 7) ' отсекаем расширение trim ext

ExtName = Right(NameFile, 6) ' выдляем только расширение

NameDRW = NameOnly + ".SLDDRW" ` голое имя файла + расширение

Эти функции как-бы "зеркально работают"...

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

Уважаемый ssv22, сообщение от Maze аж 28 января, он потом ещё кучу всего по своему макросу написал))) я думаю, знач разобрался сам.

А вот с чем не разобрался он

К тому же в хэлпе отсутствует упоминание о доп. символах после индекса

- мне вот тоже это интересно.
Ссылка на сообщение
Поделиться на других сайтах

Уважаемый ssv22, сообщение от Maze аж 28 января, он потом ещё кучу всего по своему макросу написал))) я думаю, знач разобрался сам.

А вот с чем не разобрался он - мне вот тоже это интересно.

Да я число не посмотрел...

Насчет "доп. символах после индекса" - где это, откуда? Я не понял, что за "доп. символы после индекса"?

Уважаемый ssv22, сообщение от Maze аж 28 января, он потом ещё кучу всего по своему макросу написал))) я думаю, знач разобрался сам.

А вот с чем не разобрался он - мне вот тоже это интересно.

Вроде насчет `Right` - недавно `Maze`спрашивал ....

Насчет "доп. символах после индекса" - где это, откуда? Я не понял, что за "доп. символы после индекса"?

Примерчик...

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

Left(swmodel.GetTitle, Len(swmodel.GetTitle) - 7) & "-1" & Right(flatview.Name, 1) &

Вот этот индекс "1". Если програмно выделять другие виды на чертеже - это число меняется, но оно статично (в большинстве случаев). Есть подозрения, что это константа номера вида. Может не прав. ssv22 что думаете?

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

Всем привет!!

Есть ли на форуме люди, изучающие/знающие API solidworks на C#

Пойдем другим путем, кто-нибудь делает какие-либо аддончики на Visual Studio в виде exe проектов ?

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Ninja
      @AlexArt что ты несёшь? Чтоб у тебя Ютуб забанили! и тебя персонально в Гугле ... вот тогда посмотрим как ты запоешь, фраерок   https://ru.ruwiki.ru/w/index.php?title=Фраер
    • Viktor2004
      Это я не пробовал. Утверждать не буду. При случае проверю Но думаю если его правильно записать, все должно запуститься. Софт ведь одинаковый Чем это отличается от замены платы FROM/SRAM? Ничем. Там только OPRMINF и отличается. Ну может еще ID контроллера GBDriver
    • gudstartup
      и не только из за того что вы думаете. чужой oprm просто не может прочитаться на другом чпу
    • paull3
      Принято, спасибо! буду шевелить платы
    • Nastyrnuy
      Теперь понятно! Вы шли не в том направлении, и помощеиков не туда завели!!! у Вас Проц и комп оператора тоже 3 платы( но совсем другие (еще Мультибас 1 чисто Интеловский) SBC08, 80/10 KCB 01/04, но диск у Вас электронный( который состоит из 12 или 14 ЕПРОМОВ и при всем желании и старании с дискет Вы ничего не сможете туда загрузить! Скорее всего  у Вас просто неконтакт, в пред постах там тоже на эту же тему многго что написано. Просто на SBC 08 херов туча наездников( и эл диск, и контроллер флоповода, и мат сопроцессор..!
    • paull3
      да, стойка CD, чуть позже прикреплю фото, ... получилось добавить , вот чт он показывает при загрузке и дальше не идёт...
    • Nastyrnuy
      Где то тут путаница идет... не совпадние (жесткий диск (он жесткий или элетронный диск?)), есл жесткий диск то флоппик  точно 1.44 и эмулятор можно на 1ю44, Но если вы используете эмулятор на 720 то это как правило серия станка не CF а CD....и.т.д поэтому фотки давай и станка серию и тип, и плат, и ошибку на экране где Биос кажет и флорри и диск, а то мы все тут будем по разному понимать..!
    • Viktor2004
      Вы же лучше меня знаете что запрсто записать на машину не только чужой, но и свой OPRMINF не получится
    • gudstartup
      полная чушь если ид меняется ошибка 5523 гарантирована иначе чужо ой oprminf запросто можно было бы записать на любую машину
    • paull3
      Всем добрый день! докладываю - 1) батарейка живая и после отключения от сети на сутки показала 3,63в, 2) записал файлы из архива на юсб флешку размеролм 720кБ - вставил в эмулятор, затем включил станок- станок никак не отреагировал, флешка вроде как считалась( индикация светодиодом на ней) 3) сделал загрузочную дискету дос, удалил файлы те что там записались и записал из архива - вставил в дисковод, включил станок- реакции не последовало, ...индикации и характерных звуков считывания не было, возможно неисправен дисковод, хотя когда переключал его на эмулятор он был исправен....   Добрый день, посмотрю, напишу  
×
×
  • Создать...