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

Сделай свою работу в Solidworks эффективнее


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

И я не совсем понял))) Я вам показал где в справке метод, которым можно сохранить файл под любым другим именем, отличным от того, который сейчас у него в заголовке. Вам что надо то? Конкретнее.

я пишу код:

 

Dim boolstatus As Boolean
Dim lErrors As Integer
Dim lWarnings As Integer
Dim instance As IModelDocExtension
Dim Version As Integer
Dim Options As Integer
Dim ExportData As Object

..........................................

boolstatus = instance.SaveAs(oNameView, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, lErrors, lWarnings)

 

получаю это - post-22221-0-25158800-1479113931.png

 

где затык?

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


где затык?
Если это весь ваш код, то много чего не хватает.
Ссылка на сообщение
Поделиться на других сайтах

где затык?

 

Ну вероятно вот этого не хватает

Dim boolstatus As Boolean

Dim lErrors As Integer

Dim lWarnings As Integer

Dim instance As IModelDocExtension

Dim Version As Integer

Dim Options As Integer

Dim ExportData As Object

..........................................

Set App = Application.SldWorks

Set instance = App.ActiveDoc

boolstatus = instance.SaveAs(oNameView, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, lErrors, lWarnings)

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

камрады, это все там есть

имя файла тоже задано

ошибка именно в этой строке

 

может надо присвоить какие-то значения переменным lErrors, lWarnings?

или это необязательно?

или что-то еще?

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

изначально код был таким:

---------------------------------------

Sub ShowDialog()
 
Erclose = 0
TestLbl = 1
NullMass = 0
 
Dim boolstatus As Boolean
 
Set swApp = CreateObject("SldWorks.Application")
Set oDoc = swApp.ActiveDoc
FileTyp = oDoc.GetType
If FileTyp = swDocDRAWING Then
If oDoc.GetPathName = "" Then
 
SheetFormat
Dim oNameView
oNameView = oDoc.GetTitle
 
Dim tmpNameF
Dim intNameF
 
    intNameF = InStr(1, oNameView, "-")
        If intNameF <> 0 Then
            tmpNameF = Left(oNameView, intNameF - 2)
        End If
 
oNameView = tmpNameF & oSizeFormatTemp
 
boolstatus = oDoc.SaveAs(oNameView)
 
oNameView = ""
'Else
'oDoc.Save
'End If
'Lerror:
'Exit Sub
End If
'If Erclose = 0 Then
'oDoc.Save
End If
TestDoc
End Sub

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

камрады, подскажите код вызова окна сохранения файла, причем, в строке должно быть определенное, заданное имя файла

если тебе вот прям вот такое вот вындоусовское диалоговое окошко сохранения файла

af21b106964c67daba805c7188374f3f.png

и при этом всенепременно на VBA, тогда копай в сторону элемента ActiveX - Microsoft Common Dialog Control. что и как с этим элементом делать можно глянуть тут:

http://vbzero.narod.ru/chapter1/page_15.htm

https://msdn.microsoft.com/en-us/library/aa259317(v=vs.60).aspx

https://msdn.microsoft.com/ru-ru/library/256tssz7(v=vs.90).aspx

https://www.microsoft.com/en-us/download/details.aspx?id=10019

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

если тебе вот прям вот такое вот вындоусовское диалоговое окошко сохранения файла

 

и при этом всенепременно на VBA, тогда копай в сторону элемента ActiveX - Microsoft Common Dialog Control. что и как с этим элементом делать можно глянуть тут:

http://vbzero.narod.ru/chapter1/page_15.htm

https://msdn.microsoft.com/en-us/library/aa259317(v=vs.60).aspx

https://msdn.microsoft.com/ru-ru/library/256tssz7(v=vs.90).aspx

https://www.microsoft.com/en-us/download/details.aspx?id=10019

 

спасибо, но мне не нужен виндовский проводник

когда я вместо:

boolstatus = oDoc.SaveAs(oNameView)

пишу:

oDoc.Save

появляется это окно

post-22221-0-10041600-1479119503.png

с названием файла, соответствующим размещенной на листе модели

мне нужно это же окно, но со своим, другим названием файла

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

по-моему вот это:

мне не нужен виндовский проводник
 

противоречит вот этому:

мне нужно это же окно

 

это окошко появляется потому что чертеж не сохранен. в API SOLIDWORKS такие диалоговые окна не предусмотрены.

Ссылка на сообщение
Поделиться на других сайтах
с названием файла, соответствующим размещенной на листе модели мне нужно это же окно, но со своим, другим названием файла
Поменяйте имя (заголовок) окна и будет нужное имя в появляющемся окне: 

...

oDoc.SetTitle2 oNameView

oDoc.Save

...

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

Поменяйте имя (заголовок) окна и будет нужное имя в появляющемся окне: 

...

oDoc.SetTitle2 oNameView

oDoc.Save

...

спасибо, именно то, что надо

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

Во вложении макрос для быстрого создания в сборке новой детали.   В два клика создаёт в сборке виртуальную деталь с сопряжением по исходным точкам (выровнено по осям). Там же задаётся имя новой детали. Третьим кликом можно отменить виртуализацию (сохранив в каталоге с самой сборкой) либо сделать деталь свободной от сопряжений.   Подключать стандартно (main.main)

Исправил ошибки в макросе для создания новой детали "NewPart2Asm".

Кому он показался интересным - пристёгиваю:

 

Куда-то отвалился свежий файл. Выкидываю заново: NewPart2Asm_v2.rar

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

У меня вопрос про материалы. 

Есть макрос, переписывающий свойства пользователя материала в свойства детали.

Вопрос: как можно автоматом запускать этот макрос после назначения нового материала?

Сейчас я жму кнопку макроса.

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

А можно проще: сравнивать во время перестроения имена материалов, и если изменилось, то переназначить.

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

А можно поподробнее как это сделать? Просто в справке есть пример, как написано в модели выбирается эскиз в дереве и запускается макрос (иконка обозначенная иконка имеется), запускается процедура CreateSampleFeature, но функция не создаётся и останавливается с ошибкой 91 на строке (в самом низу):

boolstatus = feat.MakeSubFeature(selFeat)

 

Текст примера из справки:


'Create Macro Feature Subfeature Example (VBA)

'This example shows how to create a macro feature subfeature.

 

'------------------------------------------------

'

' Preconditions: Model document is open and a sketch is selected.

'

' Postconditions: The sketch becomes a subfeature of the newly

'                 created macro feature named EmptyFeature.

'

' NOTE: A bitmap named FeatureIcon.bmp for the macro feature must exist.

'

'-------------------------------------------------

'Macro feature Rebuild routine

Function swmRebuild(varApp As Variant, varDoc As Variant, varFeat As Variant) As Variant

    Dim App As SldWorks.SldWorks

    Dim Doc As SldWorks.ModelDoc2

    Dim feat As SldWorks.Feature

    Dim FeatData As SldWorks.MacroFeatureData

    Dim Rebuild As Boolean

    

    Set App = varApp

    Set Doc = varDoc

    Set feat = varFeat

    

    'MsgBox "Rebuild called"

    

    Rebuild = True

    'If an error occurs

    'Rebuild = "Error message"

End Function

 

'Macro feature Edit definition routine

Function swmEditDefinition(varApp As Variant, varDoc As Variant, varFeat As Variant) As Variant

    Dim App As SldWorks.SldWorks

    Dim Doc As SldWorks.ModelDoc2

    Dim feat As SldWorks.Feature

    Dim FeatData As SldWorks.MacroFeatureData

    

    Set App = varApp

    Set Doc = varDoc

    Set feat = varFeat

    

    MsgBox "Edit Definition called"

    

    Set FeatData = varFeat.GetDefinition

    varFeat.ModifyDefinition FeatData, varDoc, Nothing

    EditDefinition = True

End Function

 

'Macro feature Security routine

Function swmSecurity(varApp As Variant, varDoc As Variant, varFeat As Variant) As Variant

    Dim App As SldWorks.SldWorks

    Dim Doc As SldWorks.ModelDoc2

    Dim feat As SldWorks.Feature

    Dim FeatData As SldWorks.MacroFeatureData

    

    Set App = varApp

    Set Doc = varDoc

    Set feat = varFeat

    

    swmSecutity = SwConst.swMacroFeatureSecurityOptions_e.swMacroFeatureSecurityByDefault

End Function

 

'Base routine to create the macro feature

Sub CreateSampleFeature()

    Dim swApp As SldWorks.SldWorks

    Dim Doc As SldWorks.ModelDoc2

    Dim feat As Feature

    Dim SelMan As SelectionMgr

    

    Set swApp = Application.SldWorks

    Set Doc = swApp.ActiveDoc

    Set SelMan = Doc.SelectionManager

    

    Dim ThisFile As String

    Dim Methods(8) As String

    Dim Names As Variant

    Dim Types As Variant

    Dim Values As Variant

    Dim vEditBodies As Variant

    Dim options As Long

    Dim dimTypes As Variant

    Dim dimValue As Variant

    Dim icons(2) As String

    

    'Define the routines to call

    ThisFile = swApp.GetCurrentMacroPathName

    Methods(0) = ThisFile: Methods(1) = "FeatureModule": Methods(2) = "swmRebuild"

    Methods(3) = ThisFile: Methods(4) = "FeatureModule": Methods(5) = "swmEditDefinition"

    Methods(6) = "": Methods(7) = "": Methods(8) = ""  'A security routine is optional

    

    Dim pathname As String

    pathname = swApp.GetCurrentMacroPathFolder

    icons(0) = pathname + "\FeatureIcon.bmp"

    icons(1) = pathname + "\FeatureIcon.bmp"

    icons(2) = pathname + "\FeatureIcon.bmp"

    

    Names = Empty

    Types = Empty

    Values = Empty

    

    options = swMacroFeatureByDefault

    

    Dim selFeat As Feature

    Dim swFeatMgr As SldWorks.FeatureManager

    Set selFeat = SelMan.GetSelectedObject(1)

    Set swFeatMgr = Doc.FeatureManager

 

    Set feat = swFeatMgr.InsertMacroFeature3("EmptyFeature", "", (Methods), Names, Types, Values, dimTypes, dimValue, vEditBodies, (icons), options)

    

    Dim boolstatus As Boolean

    boolstatus = feat.MakeSubFeature(selFeat)

End Sub

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

@@Kelny, так как это связано именно с VBA (ибо в дерево (невизуально) можно запихнуть только макрос) то в этом направлении я никогда не работал. С этим мог бы помочь Shvg  :smile: 

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

О, есть же макро. Как раз с такой фичей CenterOfGravity

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Anat2015
      Какой станок, какое ЧПУ, какой магазин, и т.д. и т.п.? Задаете вопросы, как будто здесь все экстрасенсы.
    • Fedor
      верхняя линия это если не учитываем давления воздуха, а нижняя если учитываем.  То есть если не учитываем то считаем грунт более прочным чем на самом деле ...  
    • maxx2000
      @asd выводит нормально, с постпроцессором что-то  
    • Orchestra2603
      Это уже больше похоже на конструктивный разговор.   Я это понимаю. Мой тезис заключается в том, что когда мы ищем собственные вектора, мы вообще не решение ищем. Ну, не совсем решение, если хотите. В терминах СЛАУ можно сказать, что мы ищем базисные вектора фундаментальной системы решений. Нам не нужно что-то фиксировать и вводить какие-то точки отсчета. Нам нужно установить все пространство возможных решений однородной системы целиком, и потом из него просто выделить некоторый базис. Это не то же самое, что найти решение СЛАУ.   Про факторизацию... В моем понимании факторизация (в частоности, матрицы) - это разложение на множители (здесь на матричные множители), так чтобы получились какие-то другие матрицы, которые обладают какими-то выгодными свойствами (разложение Холецкого для положительно определенных матриц, LU, QR, QZ, сингулярное разложение и т.д.) В моем понимании это обычно нужно для повышении эффективности последующих операций, ускорения работы алгоритмов, для лучшей сходимости итерационных методов, где-то для эффективной параллелизации и т.д. Ничего не слышал раньше о ситуациях, когда факторизация жизненно необходима, и без нее задача не решается. Как я это вижу, существует много различных способов факторизации матрицы. Я просто не могу понять про какую конкретно факторизацию вы говорите и не могу понять, как она должна помочь, и почему ее невозможно сделать для вырожденной матрицы? Я бы, честно говорю, хотел разобраться в этом. Возможно, я что-то вообще неправильно понимаю.
    • asd
      Надеюсь, это то, что вы имели в виду.   TOOL PATH/THREAD_MILLING_1_COPY,TOOL,STD_DRILL TLDATA/TCUTTER,10.0000,0.0000,0.0000,80.0000,10.0000,8.0000 MSYS/0.0000,0.0000,0.0000,1.0000000,0.0000000,0.0000000,0.0000000,1.0000000,0.0000000 $$ centerline data PAINT/PATH PAINT/FEED PAINT/SPEED,10 PAINT/COLOR,186 FROM/0.0000,0.0000,50.0000,0.0000000,0.0000000,1.0000000 LOAD/TOOL,1 RAPID GOTO/0.0000,0.0000,3.0000 PAINT/COLOR,181 FEDRAT/MMPM,500.0000 GOTO/0.0000,0.0000,-33.0211 PAINT/COLOR,6 FEDRAT/250.0000 GOTO/21.6792,-1.2470,-33.0211 CIRCLE/21.7509,0.0000,-33.0000,0.0000000,0.0000000,-1.0000000,1.2491,0.0100,0.5000,10.0000,0.0000 GOTO/23.0000,0.0000,-33.0000 PAINT/COLOR,31 CIRCLE/0.0000,0.0000,-4.5000,0.0000000,0.0000000,-1.0000000,23.0000,0.0100,0.5000,10.0000,0.0000,TIMES,19 GOTO/23.0000,0.0000,-4.5000 PAINT/COLOR,1 CIRCLE/21.7509,0.0000,-4.4789,0.0000000,0.0000000,-1.0000000,1.2491,0.0100,0.5000,10.0000,0.0000 GOTO/21.6792,1.2470,-4.4789 GOTO/0.0000,0.0000,-4.4789 PAINT/COLOR,103 RAPID GOTO/0.0000,0.0000,50.0000 PAINT/FEED,NOMORE PAINT/SPEED,10 PAINT/TOOL,NOMORE END-OF-PATH  
    • gudstartup
      @Aiche если у вас осталасть на столе привязанная деталь  то можете выставить нули так чтобы значения совпали и ничего снимать не придется к тому же от того что вы снимите ничего не поменяется ведь под кожухами у вас нет никаких 0 меток ни направляющих ни на станине очень неприятные. надо было оставить режим принудительного обнуления @Aiche и срочно сделайте нормальный бэкап в вашем кроме программ ничего нет. хотябы копию памяти надо иметь а то может и в чпу батарейка сесть и тогда будет очень плохо
    • Fedor
      То есть грунт физически находится в сжатом состоянии на поверхности земли. И при вычислении связности грунта логично бы учесть это при построении предельного графика сигма - тау... 
    • maxx2000
    • gudstartup
      нет ранее абсолютные можно было обнулять в любом месте и не надо было никуда ехать а сейчасбывает что система выдает ошибку о невозможности установить 0 пока не сделаешь оборот датчика. особенно это достает при обнулении рев.головки приходится датчик снимать и крутить
    • nicomed
      @alek77 Если еще интересно, то вот код, который рисует два сегмента эскиза поверх выбранной кромки. Первый сегмент от начальной точки кромки до точки выбора, второй сегмент - от конечной точки выбранной кромки до точки выбора. При этом учитывается: положение компонента в сборке; поворот чертежного вида относительно пространства модели. Код как обычно - лишь бы работало - все в одном методе.   Вот что не пробовал, так это многоуровневые сборки. Боюсь что бы не приходилось делать  пересчет положения выбранного компонента столько раз, на каком уровне вложения находится выбранный компонент.   Upd: Нашел глюк (точнее свою недоработку с которой еще предстоит разбираться) - если вид с разрывом - то точка выбора смещается ...
×
×
  • Создать...