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

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

подскажите пож-ста, как экспортировать в 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 пользователей

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




  • Сообщения

    • mrVladimir
      @wega7777 Спасибо большое. Чувствую, еще изучать и изучать .     Но эмулятор примерно  для этого и сделан - я так понимаю.
    • Killerchik
      Я чувствую подкол :) Если ось может интерполироваться сама по-себе, или вместе с какими-то другими осями - она "полноценная". Если ось может работать только в режиме "как-то идём из точки А в точку В и потом переходим к следующей строке", то она индексная. Индексируется она.
    • wega7777
      Для вывода сообщений надо вроде вот это ещё прописывать 
    • Viktor2004
      а что такое индексная ось? Индексный патрон видел, ось нет
    • Killerchik
      Вот несколько первых попавшихся из Байду: https://www.douyin.com/note/7320915691958242601 https://www.sk1z.com/43666.html И с Тао: https://item.taobao.com/item.htm?abbucket=7&id=746850326860&ns=1&spm=a21n57.1.item.13.5e1c523cLucFBa https://item.taobao.com/item.htm?abbucket=7&id=772777046275&ns=1&spm=a21n57.1.item.5.5e1c523cLucFBa https://item.taobao.com/item.htm?abbucket=7&id=768561496901&ns=1&spm=a21n57.1.item.8.5e1c523cLucFBa https://item.taobao.com/item.htm?abbucket=7&id=777857103087&ns=1&spm=a21n57.1.item.9.5e1c523cLucFBa https://item.taobao.com/item.htm?abbucket=7&id=771205901264&ns=1&spm=a21n57.1.item.12.5e1c523cLucFBa https://item.taobao.com/item.htm?abbucket=7&id=752188950698&ns=1&spm=a21n57.1.item.11.5e1c523cLucFBa
    • SAPRonOff
      Та фиг их знает, может он задачу Турты решает (облачный кибертехнолог :) ) - понашдепал пользовательских операций, а они автоматически техпроцесс написали с выдачей маршрутной карты… PS: извиняюсь, тут Т9 много что за меня дописал/переписал :)
    • maxx2000
      меня терзает смутное сомнение, что ему (Онизуке)не нужен никакой внутренний эскиз. Он хочет просто набор операций, чтобы потом для них определить элементы
    • BASH_HD
      У меня есть оригинальная книга к станку с полным листом всех параметров под каждый возможный мотор.  Ладдер уже пятиосевой.   Он универсальный и под непрерывные и под индексные. Про осевую карту интересно, надо изучить. 
    • Александр 36
      Я купил такой без инструкции теперь пытаюсь разобраться
    • SAPRonOff
      Адаптивный фрагмент можно сделать независимым от мастер-модели адаптивного фрагмента. Сценарий такой : вставили в сборку адаптивку, рядом с документов, в который вставили фрагмент появился независимый фрагмент, можно его независимо от мастер модели модифицировать. Набор операций адаптивного фрагмента магическим образом растворенных в дереве построения вышестоящего документа получить адаптивным фрагментом нельзя, это можно сделать только макросом/плагином - который автоматизирует действии и сам формирует за несколько кликов множество операций(добро пожаловать в C#)     Адаптивный фрагменты,  вставленный в вышестоящий документ, не запрещает менять геометрию: задавать свои переменный и переуказыать родительскую геометри, в этом суть это параметрической технологии.     идея адаптивного фрагмента(АФ) в том, чтобы в дереве вышестоящего фрагмента не видеть лишних построений, а видеть лишь одну операцию вставки адаптивного фрагмента и уже её модифицировать. Вся магия должна происходить внутри фрагмента по законам пользователя. Можно настроить адаптивный фрагмент так, чтобы он формировал имя в дереве построения не просто «фрагмент», а например «отверстие м40x2, глубина 50, способ получения ….», при этом имя будет параметрически меняться в зависимости от типоразмеров/переменных АФ. АФ можно настроить так, чтобы эскиз был заранее заложен внутрь АФ, и при вставки фрагмент в вышестоящий документ работало так : выбрал произвольную грань система сама на ней нарисовала нужный эскиз, выдавила его и автоматически приклеила/вычла полученную бабышку, таким образом нет потребности каждый раз готовить эскиз, АФ сам всё сделает по заранее заложенным правила(без программирования) Все тоже самое, только в ТФ для построение шлицов нужно выбрать только кромку, Дейв на видео замудрил как-то :  и кромки и грани и тела надо выбирать для UDF.
×
×
  • Создать...