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

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

Нет я понимал что это коментарии. Но что б так много. Вот я как раз и спрашивал о этих клирселекшн'энебл контур. Селекшбай-ИД никак не влияет. То есть проблема в первых двох. Но фигура очень проста. Да и макрос странно работает: сперва появляется отверствие потом гладкая грань диска и потом эскиз выреза. То есть порядок такой-3-1-2. Ну а что с сборкой? Можете написать код: если бы это были двома пирамидами и спрягались основаниями через соприкосновение?

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


Да там ошибка возникает когда рисуется первый контур, и через сброс выделение контура(clear selection), идет выбор этого контура снова.. То есть здесь програмА не может выделить этого контура ибо я так понимаю под идентификатором понимается имя этой дуги (но как програма перед этим это определяет-ARC1-никак? Разве по типу и тем что контур круга есть на этот момент один. То есть после закоментиров. трех строк-после создание контура сразу идет его вытяжение вверх. То есть в этом случае логика макроса понятна: но что делать если контура два? И как это селекшн-ид работает ибо имя назначается уже в момент выделение, но оно должно уже быть на то время. Например во втором случае меньший круг тоже имеет имя ARC1-хотя идентификатор должен быть уникальный, да и первый контур как бы никуда не идет. Хотя здесь и понято почему не идет вырез. Ведь в этом случае идет выделение того же контура, хотя это уже другой контур. То есть как там имена выбираются, работает ли реально этот selectionID?

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

Ну все таки как эти грани именовать. Через свойства-но это надо задать через API. Вот если я вставляю в это ответствие какой то стержень или болт. Как проименовать эти цилиндрические концентрические грани для соответствующего спорящение и и сопряжение уже плоскими гранями. Хотя смотрел в Справку по API, там только три варианта сопряжение через Align, Anti-Align в методе Addmate?

Ну все таки как эти грани именовать. Через свойства-но это надо задать через API. Вот если я вставляю в это ответствие какой то стержень или болт. Как проименовать эти цилиндрические концентрические грани для соответствующего спорящение и и сопряжение уже плоскими гранями. Хотя смотрел в Справку по API, там только три варианта сопряжение через Align, Anti-Align в методе Addmate?

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

Подскажите что значок '@' в opendoc6(@"D:\...), и в других случаях в дименшн например. Также не могу найти swopendocoptions_e enumerationg интересует также если открыть три детали. Чтобы сделать сопряжение. То сперва надо создать сборку. Потом выделить грани или детали и исполнить ADDmate? Ну создалась сборка. Но тогда надо еще одну деталь присоединить. Тогда надо еще одну сборку создавать чтобы чтобы присоединить к первой третью деталь? И интересно как делать ручной выбор граней: возможно ли при создание детали вручную назвать грань в свойствах а потом уже использовать это при выборе граней для создание сборки?

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

@@stu, гугл забанил?  :smile:
http://msdn.microsoft.com/ru-ru/library/362314fe(VS.90).aspx
Мало вы книжек по программированию прочитали. Я всё же напомню вам - дайте ТЗ кому-нибудь кто в теме, заплатите ему денег, а потом разбирайтесь с полученным кодом, вооружившись книжками.
Сам по себе API солида - это просто набор интерфейсов, классов и прочей лабуды. Вы не сможете их применить, если не понимаете что они делают, а тем более как. Это же касается и общеязыковой среды. Попробуйте зайти с другого конца: понабрать всевозможных примеров и с ними поразбираться. Попробуйте посмотреть ответы на все ваши вопросы, по непосредственно программированию, в гугле. Вы не уникальный))) до вас кто-то уже по-любому ваш вопрос спрашивал.
Упорность, с которой вы тут спрашиваете, похвальна))) но направлена она не туда. Попробуйте поизучать хотя бы общие вопросы тут 

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

Таких моментов возникает десятки. Но спросил лиш те на которые нету времени. Хотя вопрос о выборе граней то я действительнозадавал не единожды. Ибо это наверное единственная проблемная задача. Например как выбрать боковую грань цилиндра и концентр. грань отверстия выреза? Это по вашему какая то китайская грамота? Чтоли написать сперва Фейс1 а потом Фейс2 в аргументац, и все. Если граней там десяток и насчет мейта. Если его создать то это как обязлс получается или что. Или один раз адд мейт, потом еще раз чтобы и третья деталь добавилась к сппряжению первых двух?

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

Вот книгу Хорошую прочитал luck malpass-Solidworks 2008 automation and programming. Там есть паралельные примеры на шарпе и вба. И касательно спряжение там предельно этом сказано. Но там выходят с того что две грани уже выбраны. И там указан selection manager. Но как там делается не указано. Да и вообще непонятно с этим С-менеджером?

Ссылка на сообщение
Поделиться на других сайтах
http://help.solidworks.com/2013/English/api/sldworksapi/Add_Component_and_Mate_Example_CSharp.htm--ну в этом примере выбираются плоскости. А что это за плоскости (стандармые Х,Y?). Почему они относятся к сопряжению. Ведь надо вытирать грани или ребра, вершины?
Ссылка на сообщение
Поделиться на других сайтах


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

 

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

Dim swApp As Object

Dim Part As Object

Dim SelMgr As Object

Dim boolstatus As Boolean

Dim longstatus As Long, longwarnings As Long

Dim Feature As Object

Sub main()

 

Set swApp = Application.SldWorks

 

Set Part = swApp.ActiveDoc

Set SelMgr = Part.SelectionManager

boolstatus = Part.Extension.SelectByID2("Спереди", "PLANE", 0, 0, 0, False, 0, Nothing, 0)

Part.ClearSelection2 True

Part.SketchRectangle -0.1297436792453, 0.08024962264151, 0, 0.1163008490566, -0.06925094339623, 0, 1

Part.ShowNamedView2 "*Триметрия", 8

'Part.ClearSelection2 True

'boolstatus = Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)

'boolstatus = Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)

'boolstatus = Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)

'boolstatus = Part.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)

Part.FeatureManager.FeatureExtrusion2 True, False, False, 0, 0, 0.01, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, 1, 1, 1, 0, 0, False

Part.SelectionManager.EnableContourSelection = 0

boolstatus = Part.Extension.SelectByID2("", "FACE", -0.07217222819696, 0.02996276689998, 0.009999999999991, False, 0, Nothing, 0)

Part.ClearSelection2 True

Part.SketchRectangle -0.03254527694509, 0.04159246612477, 0, 0.01711381386411, -0.02729081529577, 0, 1

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)

Part.FeatureManager.FeatureCut True, False, False, 0, 0, 0.01, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, 0, 1, 1

Part.SelectionManager.EnableContourSelection = 0

boolstatus = Part.Extension.SelectByID2("", "FACE", -0.1077863236258, 0.02877431886884, 0.01000000000005, False, 0, Nothing, 0)

Part.ClearSelection2 True

Part.CreateCircle -0.1037734678029, 0.02575916800237, 0, -0.09725257709056, 0.01568400859065, 0

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)

Part.FeatureManager.FeatureCut True, False, False, 0, 0, 0.01, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, 0, 1, 1

Part.SelectionManager.EnableContourSelection = 0

boolstatus = Part.Extension.SelectByID2("", "FACE", 0.06677290467337, 0.03683726210738, 0.009999999999934, False, 0, Nothing, 0)

Part.ClearSelection2 True

Part.CreateCircle 0.08131950703176, 0.03781108050043, 0, 0.08934521867764, 0.02815790128983, 0

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)

Part.FeatureManager.FeatureCut True, False, False, 0, 0, 0.01, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, 0, 1, 1

Part.SelectionManager.EnableContourSelection = 0

End Sub


 

В этом коде (щиток с двумя круглыми и прямоугольным вырезом) что возможно исправить, ибо отверствия не отображаются при запуске макроса. Так понимаю здесь уже линию прямоугольного контура надо выбирать, в то время как в примере на предыдущей странице круговый эскиз создавался, и потом надо было его сразу вытянуть или вырезать. Здесь я вижу надо каждую линию выбирать?

Изменено пользователем streamdown
Ещё раз вам напоминаю - большие куски текста вставляйте в спойлер!
Ссылка на сообщение
Поделиться на других сайтах
Так понимаю здесь уже линию прямоугольного контура надо выбирать, в то время как в примере на предыдущей странице круговый эскиз создавался, и потом надо было его сразу вытянуть или вырезать.

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

 

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

 

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

 

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

 

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

 

После получения представления того, что вы хотите видеть и делать с помощью программы можно приступать к реализации и поиска оптимальных инструментов.

Запись макросов и последующий их анализ штука интересная, но данная функция программы за частую не все действия пишет в этот код и поэтому этот путь тупиковый для полного освоения и создания программы для Solidworks. Поэтому нужно сначала поставить задачу, что существенно сузит границы поиска всего и вся, до более понятных задач, а потом изучать набор представленных функций/процедур/примеров в Solidworks-API .

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

Господа, добрый день!

 

Помогите разобраться  с высвечиванием SubFeatures. Проблема состоит в том что помимо высвечивание SubFeatures в "Развертка1" высвечивает ненужные мне "Вытянуть1"  с "Ребро-кромка2 и Ребро-кромка3". Я смею предположить что мне надо указать что SubFeatures должны высвечиваться именно в "Развертка1" ?

 

Sub GetFlatten()

 swApp = CreateObject("SldWorks.Application")
 swModel = swApp.ActiveDoc

  If swModel Is Nothing Then Exit Sub

    Dim typeDoc As Integer
    typeDoc = swModel.GetType()

    If typeDoc <> swDocumentTypes_e.swDocPART Then Exit Sub

    Dim arrNamesConfig As Object
    arrNamesConfig = swModel.GetConfigurationNames()

    Dim swFeature As Feature
    swFeature = swModel.FirstFeature

    While Not swFeature Is Nothing
    Dim nameTypeFeature As String
    nameTypeFeature = swFeature.GetTypeName()

    Dim swSubFeature As Feature
    swSubFeature = swFeature.GetFirstSubFeature()

      If nameTypeFeature = "FlatPattern" Then
        While Not swSubFeature Is Nothing

        Dim nameTypeSubFeature As String
        nameTypeSubFeature = swSubFeature.GetTypeName2()
        Dim nameSubFeature As String
        nameSubFeature = swSubFeature.Name()

          bres = swSubFeature.SetSuppression2(swFeatureSuppressionAction_e.swUnSuppressFeature, _ 
          swInConfigurationOpts_e.swAllConfiguration, arrNamesConfig)

          swSubFeature = swSubFeature.GetNextSubFeature()
        End While

     End If
     swFeature = swFeature.GetNextFeature()
End While

swModel.EditRebuild3()
Exit Sub

End Sub 

post-41325-0-01364800-1391851147_thumb.jpg

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

А если поиграться с swInConfigurationOpts_e? К примеру, заменить на swSpecifyConfiguration и в последнем параметре SetSuppression2 указать "чета-там-FLAT-PATTERN"

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

Господа, добрый день!

 

Помогите разобраться  с высвечиванием SubFeatures. Проблема состоит в том что помимо высвечивание SubFeatures в "Развертка1" высвечивает ненужные мне "Вытянуть1"  с "Ребро-кромка2 и Ребро-кромка3". Я смею предположить что мне надо указать что SubFeatures должны высвечиваться именно в "Развертка1" ?

 

Проблема в том, как узнать, какие именно SubFeature? При прохождении циклом фьючерса типа "FlatPattern", в вашем случае "Развертка1", будут найдены все субфьчерсы типа "UiBend". У вас это EdgeBend5, EdgeBend6, EdgeBend7, EdgeBend8, которые присутствуют видимыми в "Развертке1", но и EdgeBend9, EdgeBend10, EdgeBend11, EdgeBend12, которых не видно в "Развертке1", так как погашены Ребро-Кромка2 и Ребро-Кромка3. Функцией bres = swSubFeature.SetSuppression2(swUnSuppressFeature, swAllConfiguration, arrNamesConfig) вы их размораживаете, соответственно, размораживаются родительские Ребро-Кромка2 и Ребро-Кромка3. А Ребро-Кромка2 тащит за собой еще разморозку своего родителя "Вытянуть1". Значить вам надо проверять состояние родительского фьючерса, и в зависимости от этого состояния и поставленных задач применять функцию  SetSuppression2 к субфьючерсу типа "UiBend" или нет.

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

А если поиграться с swInConfigurationOpts_e? К примеру, заменить на swSpecifyConfiguration и в последнем параметре SetSuppression2 указать "чета-там-FLAT-PATTERN"

 

Неа, без изменений(

 

 

Господа, добрый день!

 

Помогите разобраться  с высвечиванием SubFeatures. Проблема состоит в том что помимо высвечивание SubFeatures в "Развертка1" высвечивает ненужные мне "Вытянуть1"  с "Ребро-кромка2 и Ребро-кромка3". Я смею предположить что мне надо указать что SubFeatures должны высвечиваться именно в "Развертка1" ?

 

Проблема в том, как узнать, какие именно SubFeature? При прохождении циклом фьючерса типа "FlatPattern", в вашем случае "Развертка1", будут найдены все субфьчерсы типа "UiBend". У вас это EdgeBend5, EdgeBend6, EdgeBend7, EdgeBend8, которые присутствуют видимыми в "Развертке1", но и EdgeBend9, EdgeBend10, EdgeBend11, EdgeBend12, которых не видно в "Развертке1", так как погашены Ребро-Кромка2 и Ребро-Кромка3. Функцией bres = swSubFeature.SetSuppression2(swUnSuppressFeature, swAllConfiguration, arrNamesConfig) вы их размораживаете, соответственно, размораживаются родительские Ребро-Кромка2 и Ребро-Кромка3. А Ребро-Кромка2 тащит за собой еще разморозку своего родителя "Вытянуть1". Значить вам надо проверять состояние родительского фьючерса, и в зависимости от этого состояния и поставленных задач применять функцию  SetSuppression2 к субфьючерсу типа "UiBend" или нет.

 

 

Спасибо, это ясно. Но я уже запутался, бьюсь не один день... Будьте добры, как программно задать все это?

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

Спасибо, это ясно. Но я уже запутался, бьюсь не один день... Будьте добры, как программно задать все это?

 

Где то так. Только пример.

Option Explicit

Dim swApp As SldWorks.SldWorks

Sub main()
    On Error GoTo LineError
    Set swApp = Application.SldWorks
    Dim swModel As ModelDoc2
    Set swModel = swApp.ActiveDoc
    
    If swModel Is Nothing Then Exit Sub
    
    Dim typeDoc As Integer
    typeDoc = swModel.GetType()
    
    If typeDoc <> swDocPART Then Exit Sub
    
    Dim swPart As PartDoc
    Set swPart = swModel
    
    Dim arrNamesConfig As Variant
    arrNamesConfig = swModel.GetConfigurationNames()
        
    Dim swFeature As SldWorks.Feature
    Set swFeature = swPart.FirstFeature
    
    
    While Not swFeature Is Nothing
        Dim nameTypeFeature As String
        nameTypeFeature = swFeature.GetTypeName2()
        
                
        If nameTypeFeature = "FlatPattern" Then
            Dim swSubFeature As SldWorks.Feature
            Set swSubFeature = swFeature.GetFirstSubFeature()
            While Not swSubFeature Is Nothing
                Dim nameTypeSubFeature As String
                nameTypeSubFeature = swSubFeature.GetTypeName2()               
                                
                If nameTypeSubFeature = "UiBend" Then ' В вашем примере Плоское состояние-<EdgeBend5>1, Плоское состояние-<EdgeBend6>1 и т.д.
                    
                    ' для типа фьючерса "UiBend" родительским обычно бывает тип фьючерса "OneBend" их и ищем
                    Dim arrOneBendFeautures As Variant
                    arrOneBendFeautures = swSubFeature.GetParents()
                    
                    Dim countOneBend As Integer
                    countOneBend = UBound(arrOneBendFeautures) ' обычно он один. В примере не стал проверять
                    
                    Dim swFeatureOneBend As Feature
                    Set swFeatureOneBend = arrOneBendFeautures(0)
                    
                    Dim nameTypeOneBendFeature As String
                    nameTypeOneBendFeature = swFeatureOneBend.GetTypeName2()
                    
                    ' для типа фьючерса "UiBend" родительским обычно бывает тип фьючерса "OneBend" но на всякий случай проверяем на тип
                    If nameTypeOneBendFeature = "OneBend" Then 'В вашем примере это EdgeBend5, EdgeBend6 и т.д. Они могут быть решены, а могут быть и погашены
                    
                        Dim arrSuppressOneBend As Variant ' массив состояний  фьючеров типа "OneBend" в конфигурациях. False - решен, True - погашен
                        ' если погашен, то лучше решить, можно отдельной функцией, так как не сможем узнать состояние родительского фьючерса.
                        'У вас это Ребро-кромка1, Ребро-кромка2, Ребро-кромка3
                        arrSuppressOneBend = swFeatureOneBend.IsSuppressed2(swThisConfiguration, arrNamesConfig)
                        
                        If arrSuppressOneBend(0) = False Then ' Для примера работаем с решенным элементом для текущей конфигурации у вас может быть другой случай
                        
                            Dim arrParentFeatures As Variant
                            arrParentFeatures = swFeatureOneBend.GetParents() ' массив родительских элементов
                            ' обычно массив состоит из одного элемента, то выходим на родительский фьючерс ( У вас это Ребро-кромка1, Ребро-кромка2, Ребро-кромка3)

                            Dim swParentFeature As Feature
                            Set swParentFeature = arrParentFeatures(0)                            
                        
                            Dim nameTypeParentFeature As String
                            nameTypeParentFeature = swParentFeature.GetTypeName2()                            
                                                    
                            ' ======= массив для текущей конфигурации. Самый простой. Массив, состоящий из одного элемента. ===============
                            Dim arrSuppress As Variant ' массив состояний родителских фьючеров в конфигурациях. False - решен, True - погашен
                            arrSuppress = swFeatureOneBend.IsSuppressed2(swThisConfiguration, arrNamesConfig)
                                                                                    
                            Dim bres As Boolean
                            
                            If arrSuppress(0) = False Then
                                bres = swSubFeature.SetSuppression2(swUnSuppressFeature, swAllConfiguration, arrNamesConfig)
                            End If                            
                            
                            '=======================================================
                            
                            ' Далее несколько сложнее.
                            
                            ' массив сотояний родительского фьючерса для всех конфигураций. Возможно, что состояние в разных конфигурациях может быть разным как у вас например
                            ' Соответственно и подход нужен индивидуальный
                            
                            'Dim arrSuppress As Variant ' массив состояний родителских фьючеров в конфигурациях. False - решен, True - погашен
                            'arrSuppress = swParentFeatures.IsSuppressed2(swAllConfiguration, arrNamesConfig)                            
                                                
                            ' массив для указанных конфигураций. Необходимо создать новый строковый массив arrNamesConfig
                            'arrSuppress = swParentFeatures.IsSuppressed2(swSpecifyConfiguration, arrNamesConfig)
                            
                            'Далее в зависимости от состояний arrSuppress и поставленныз задач
                            
                        End If
                    End If                
                End If
                
                Set swSubFeature = swSubFeature.GetNextSubFeature()
            Wend
            
        End If
        Set swFeature = swFeature.GetNextFeature()
    Wend
    
    swModel.EditRebuild3
    Exit Sub
    
LineError:
End Sub

 

p.s. Цветовое отображение кода, что то не совсем корректное....

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

Добрый день

У меня следующая проблема пишу аддин к SolidWorks2012 на Vb.net d в виде dll при попытке подключиться к базе  данных .accdb солид аварийно завершает работу.

для подключения использую OleDbConnection

возникает ошибка

System.InvalidOperationException

 

При подключении к базе данных через тот же код но без солида все проходит нормально

Вопрос следующий пытался ли кто либо подключаться к базе данных и были ли похожие проблемы

если подключение было удачным то тоже просьба сообщить об этом

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

A что шарпдевелопера есть возможность добавление библиотек? Но может быть такое лутше програмировать в UВ.NЕT, а сдесь подойдет шарп. Потом я ничего не нарушаю. Я тоже использую лицензированую продукцию. Дело в том что даже изолированые файлы могут работать. это проверив на примере библиотеки автокада, когда в головной папки оставил этот файл. То есть здесь надо знать точно где эти файлы библиотек СВ должны быть размещены. Хотя может дело в том что вижуал экспрес бейсик 2005, а СВ 2007 версии то есть библиотека более новая. Хотя играет ли здесь такая временная зависимость. Если да то надо 2008 версию экспреса.

SharpDevelop 4 отлично добавляет библиотеки post-546-0-86696800-1394466187_thumb.png

 

Он только с COM не может работать (см. http://ru.wikipedia.org/wiki/SharpDevelop).

 

Вот это в нем точно работает.

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swcommands;
using SolidWorks.Interop.swconst;


namespace sw
{
	/// <summary>
	/// Description of MainForm.
	/// </summary>
	public partial class MainForm : Form
	{
		public MainForm()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}
		
		void Button1Click(object sender, EventArgs e)
		{
			SldWorks swApp = new SldWorks(); 

			if (swApp == null)

				return;

			swApp.Visible = true; // true - SW видим, false - невидим

			swApp.SendMsgToUser2("Привет!", (int)swMessageBoxIcon_e.swMbInformation, (int)swMessageBoxBtn_e.swMbOk);				
		}
	}
}
Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

это уже полноценный help!

Вам можно организовать курсы по программированию:).

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

Всем привет! 

Я вставляю бомку в сборочный чертеж. Проблема в том что я вставляю бомку TopLevelOnly и у меня получается выгрузить только все конфигурации находящиеся в сборке но мне нужно вставлять бомку с несколькими выбранными конфигурациями, никак не выходит( 

 

Dim swSelMgr As SelectionMgr
Dim swFeatMgr As FeatureManager
Dim swView As SolidWorks.Interop.sldworks.View
Dim swBomAnn As BomTableAnnotation
Dim swBomFeat As BomFeature
Dim anchorType As Long
Dim bomType As Long
Dim configuration As String
Dim tableTemplate As String

Dim boolStatus As Boolean
Dim swDraw As DrawingDoc
Dim swSheet As Sheet

swApp = Marshal.GetActiveObject("SldWorks.Application")
swModel = swApp.ActiveDoc
swSelMgr = swModel.SelectionManager
swFeatMgr = swModel.FeatureManager
swDraw = swModel
swSheet = swDraw.GetCurrentSheet

boolStatus = swModel.Extension.SetUserPreferenceString(swUserPreferenceStringValue_e.swDetailingLayer, swUserPreferenceOption_e.swDetailingBillOfMaterial, "")

boolStatus = swModel.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swOneConfigOnlyTopLevelBom, 0, False)
'Select View
swModel.ClearSelection2(True)
swView = swDraw.GetCurrentSheet.GetViews()(0)

'Insert BOM Table
anchorType = swBOMConfigurationAnchorType_e.swBOMConfigurationAnchor_TopLeft
bomType = swBomType_e.swBomType_TopLevelOnly
configuration = swView.ReferencedConfiguration

swModel.ClearSelection2(True)

swModel = swView.ReferencedDocument

configuration = ""

tableTemplate = "D:\Program Files\SolidWorks 2013\SolidWorks\lang\english\bom-standard.sldbomtbt"

swBomAnn = swView.InsertBomTable2(False, -0, -0, anchorType, bomType, configuration, tableTemplate)

swFeatMgr.UpdateFeatureTree()

swBomFeat = swBomAnn.BomFeature

Dim Names As Object
Dim visible As Object = Nothing

Names = swBomFeat.GetConfigurations(False, visible)
visible(0) = True
boolStatus = swBomFeat.SetConfigurations(True, visible, Names)

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

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

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

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

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

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

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

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

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

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

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



  • Сообщения

    • Mr_Gray
      Если и расфрезеровывать, то обязательно с коррекцией радиуса инструмента G41, чтобы попасть в середину поля допуска. Но лучше все же разверткой или расточной головкой.
    • lem_on
      При хорошей геометрии станка, можно и расфрезеровать. Если неглубокие отверстия, можно и тс сверлом сразу размер получить.
    • Snake 60
      Скорее всего исправляли в конкретной сборке, для конкретных тел. Насколько я помню, надо в самом эскизе профиля заполнить свойство Description
    • Snake 60
      Делаете дырку в свае - вставляете в нее трубу и 2 человеко-силы крутят сваю ) Дёшево и сердито и не нужен никакой планетарный редуктор ))
    • gudstartup
      вы всегда ищите свой путь или будете делать то что вам советуют? с самого начала прежде чем приступать к экспериментам вам нужно было вынуть носитель и сделать образ. diskcopy делает копию гибкого диска на другой а вам надо сделать образ жесткого диска или карты памяти. делайте как советует @Viktor2004 иначе еще чего нибудь сломаете или вам станок не нужен и вы его приобрели для экспериментов ? вот а печатной машинке из прошлого нельзя а вот на синумерике можно - удивительные вещи в настоящем происходят!! на 100 % уверен что там не модуль а либо писимиси ай либо жд @mircomax81 хотите работать в дос почитайте помощь по командам 
    • PuKoLLleT
      Доброго дня всем. Поделитесь опытом,раньше такое не доводилось делать. На торце фланца нужно сделать  восемь отверстий ф17H7 на токарно-фрезерном станке с осью Y ,имеется ManualGuide.В моем понимании нужно просверлить,а затем торцевой фрезой расточить нужный диаметр.Получится такой фокус,или надо разверткой доводить нужный размер?  Стойка Fanuc 0i-Tf.
    • Snake 60
      Всё верно, я даже русификатор делал для него (ушло на это где-то около года). Хороший софт был, я всех знакомых на него подсадил в свое время :) У меня даже где-то образ на виртуалке лежит с SW2014+MechSoft, Жаль, что автодеск его поглотил, а не DS :( А по сути вопроса, проектировал двухступенчатый планетарный редуктор в свое время. Что было нужно: Справочник по планетаркам (автора не помню, если надо поищу), из софта MathCAD + GearTeq (софтина идет вместе с GearTrax, только рассчитывает и моделирует несколько зацеплений согласно выбранной схеме, в том числе планетарки) Ой и ошибаетесь. Звездочки - не равно зубчатые колеса в планетарке) Мы намучились с малой точностью изготовления на эл.эрозии, а Вы лазером ))) Был собран опытный образец редуктора с незакаленными деталями, чисто проверить геометрию, отладить сборку. Так потом начальство этот редуктор сказало испытать в бою, как я не противился)) Помер за пару дней интенсивных нагрузок ))) Материал, термообработка и точности изготовления решают )
    • Snake 60
      @Тихоход  Ещё один вариант - изучать программирование и писать свою программу/макрос. Вот пример конфигуратора двери: https://www.youtube.com/watch?v=wv4HryWQBSk
    • mircomax81
      Посредством Diskcopy можно сделать адекватную копию на флоппи диск?
    • Andrey_kzn
      Да, ведь советовали автору вытащить жёсткий диск и сделать образ. Неужели самому не интересно, как устроен этот старый промкомпьютер? Там может стоять как жёсткий диск, так и CF-карта, или же Disc-on-chip или Disc-on-module.  Как-то очень давно, на подобном промышленном оборудовании (большая печатная машина) я не смог перенести  ПО с родной CF - карты на другую, такого же размера но другой фирмы. Была также станочная оболочка под досом.  Образ я делал Нортон гостом, развернул его на другую CF-карту без проблем. Машина загрузилась нормально и работала ровно 2 дня, на неродной CF-карте,  потом зависла, и отказалась загружаться. Пришлось вызывать сервисника. От него мы узнали, что нельзя просто так взять и заменить карту  - носитель системного ПО, на другую. А полезли мы туда, так как руководство захотело печатать отчёты по работе машины. В станочном ПО такая функция была. Вот только принтер надо было купить у фирмы - производителя этой самой машины. В попытках заставить работать другой принтер мы редактировали файл  AUTOEXEС.BAT, на предмет загрузки драйвера принтера, ничего не получилось, зато перестали открываться некоторые страницы станочного ПО.  Образ у нас был давно снят, и мы развернули его на другую карту памяти. Родную карту я трогать не стал (как чувствовал, что нельзя ). Сервисник восстановил ПО с архивной дискеты на родную карту памяти, и всё заработало. Дискеты с архивами ПО шли вместе с документацией к машине.  Там были дискеты с Досом, станочной оболочкой, параметрами приводов, программой ПЛК. Он же и предупредил нас о предельно аккуратном обращении с родной картой памяти, и посоветовал немедленно сделать образы с архивных дискет, что мы сразу и проделали.. Вот такой сюрприз от машины эпохи Дос.
×
×
  • Создать...