Настроенный макрос CATIA V5 для просмотра файла координат Excel и точек графика

Пожалуйста, примите во внимание мои ограниченные знания в CATIA VBA. У меня возникли некоторые трудности с настройкой макроса CATIA V5 для поиска координатных точек Excel и построения их в CATIA, и все это с помощью щелчка на настроенном значке CATIA.

  1. У меня есть файл Excel со многими координатами XYZ, назовем его ExcelP1 (в файле excel нет сценариев/макросов), я хотел бы разработать макрос в CATIA для чтения и построения точек из ExcelP1.
  2. В настоящее время у меня есть еще один «файл Excel с макросом» для просмотра ExcelP1 и построения точек в CATIA. Но мне нужно сначала открыть и запустить «файл Excel с макросом», чтобы запустить CATIA. Сценарии приведены ниже (я не разрабатывал это)

    Public Filename As String
    Private Sub Browse_Click()
        'Open File
            Mainform.Hide
            Filename = Application.GetOpenFilename("Excel Files (*.xls), *.xls")
            If Filename <> "False" Then
                Application.Visible = False
                filenamebox.Value = Filename
            Else
                Application.Visible = False
                Filename = filenamebox.Value
            End If
            Mainform.Show
        End Sub
    
        Private Sub ClearButton_Click()
            Mainform.Hide
            ActiveWorkbook.Close (False)
            Application.Visible = False
        End Sub
    
        Private Sub OKButton_Click()
        'Set Up Message Labels
            Title = "Information Message"
        'Check for Entered Values
            If filenamebox.Value <> "" Then
                Workbooks.Open Filename:=Filename
                Application.Visible = False
        'Start CATIA and add an Open body to the document
                Start_CATIA
                Mainform.Hide
        'Read Point Data from file and create point in CATIA
                i = 2
                Do Until Worksheets("Sheet1").Range("a" & i).Value = ""
                    x = Worksheets("Sheet1").Range("a" & i).Value
                    y = Worksheets("Sheet1").Range("b" & i).Value
                    z = Worksheets("Sheet1").Range("c" & i).Value
                    Create_Point
                    i = i + 1
                Loop
                i = i - 2
                MsgBox i & " Points Created in New Part", , Title
            Else
                MsgBox "Enter a Filename", , Title
            End If
            ActiveWorkbook.Close (False)
            Mainform.Show
        End Sub
    
        Private Sub UserForm_Initialize()
            If Worksheets("Filepath_Location").Range("a1").Value <> "" Then
                Filename = Worksheets("Filepath_Location").Range("a1").Value
                filenamebox.Value = Filename
            End If
        End Sub
    

Что мне нужно добавить/изменить, чтобы скрипты запускались в CATIA?


person IMch    schedule 16.04.2014    source источник
comment
Пробовали ли вы создать макрос из Catia и таким образом импортировать или читать файл Excel? Это очень простая операция. Кроме того, чтение CSV-файла еще проще прочитать в макросе Catia VBA. В противном случае вам нужно добавить библиотеки catia vba в ваш проект excel vba. Я предлагаю начать с Catia и получить данные, если у вас нет особой необходимости оставаться в Excel.   -  person GisMofx    schedule 16.04.2014
comment
Привет GisMofx, я пытаюсь создать макрос в CATIA (в процессе), чтобы просмотреть файл Excel и построить точки. У меня нет проблем с запуском сценариев, размещенных ранее в Excel, и построением точки в CATIA (процесс OUT). Мое намерение состоит в том, чтобы создать индивидуальный значок в Excel, который будет просматривать и читать точечные формы Excel. Извините за мои очень ограниченные знания в CATIA vba, надеюсь получить здесь некоторые рекомендации. Ваше здоровье   -  person IMch    schedule 18.04.2014
comment
Хорошо, ваш комментарий сбивает с толку... Макрос Catia В процессе .. вам нужно получить объект Excel: Set myEXCEL = GetObject(, "EXCEL.Application") или Set myEXCEL = New Excel.Application '= CreateObject("Excel.Application") Вы просто хотите знать правильные методы для создания точек в сценарии Catia? Если да, я могу помочь вам с фрагментом кода для создания точек.   -  person GisMofx    schedule 19.04.2014
comment
Прошу прощения за путаный комментарий. Да, пожалуйста, покажите мне это. Спасибо.   -  person IMch    schedule 21.04.2014
comment
Спасибо. Сделаю. Я помогу предоставить вам код для sub CreatePoint на основе вашего кода выше.   -  person GisMofx    schedule 21.04.2014


Ответы (1)


Первое, что вам нужно сделать после того, как вы запустите Catia и получите приложение, — это создать новую часть, в которую вы будете добавлять точки.

Dim MyPartDocument As PartDocument
Dim MyPart As Part
Dim PointGeoSet As HybridBody
Set MyPartDocument = CATIA.Documents.Add("Part")
Set MyPart = MyPartDocument.Part
Set PointGeoSet = MyPart.HybridBodies.Add()
PointGeoSet.Name = "MyPoints"

Следующее, что нужно сделать, это создать точку из данных Excel с помощью такой функции. Мне нравится создавать оболочку, но вы можете переписать это так, как хотите:

Sub CreateXYZPoint(TargetPart As Part, TargetGeometricalSet As HybridBody, _
                Xmm As Double, Ymm As Double, Zmm As Double, _
                PointCount As String)
Dim HSFactory As HybridShapeFactory
Dim NewPoint As Point

'get the factory
Set HSFactory = TargetPart.HybridShapeFactory

'create the point with the factory
Set NewPoint = HSFactory.AddNewPointCoord(Xmm, Ymm, Zmm)

'Append the point to the geometrical set
TargetGeometricalSet.AppendHybridShape NewPoint

'rename the point
NewPoint.Name = "Point." & PointCount

End Sub

Вы бы назвали CreateZYXPoint MyPart, PointGeoSet,x,y,z,cstr(i) в своем цикле

Наконец, в конце вашего цикла вы захотите обновить часть, поэтому вызовите: MyPart.Update

Гораздо быстрее сделать одно обновление в конце вашей программы, чем обновлять после создания каждой точки.

Это должно помочь вам начать. Помните, что в Catia в качестве основных внутренних единиц измерения используются миллиметры. Таким образом, ваша электронная таблица соответствует единицам, или вы должны выполнить преобразование единиц перед вызовом CreateXYZPoint... или Как бы вы этого ни хотели.

Дайте мне знать, если это работает для вас.

Изменить. Вот ссылка на код, объединенный с вашим кодом выше. Вы должны убедиться, что ваш код Excel работает, но я вставил код Catia правильно: http://pastebin.com/vxFcPw52

person GisMofx    schedule 21.04.2014
comment
Спасибо GisMofx за предоставление этого фрагмента... было бы здорово, если бы вы могли показать код файла импорта и создать точку. Простите меня за мои очень плохие знания VBA ... я усердно работаю, пытаясь наверстать упущенное. Миллион благодарностей - person IMch; 23.04.2014
comment
@IMch Я обновил и добавил ссылку в свой ответ с объединенным кодом. Должно быть понятно, что я добавил новый Sub в конец кода и вставил вызов после того, как вы прочитали данные точки из excel. Пока ваш код Excel работает, вызовы Catia должны работать нормально. - person GisMofx; 23.04.2014
comment
@IMch Это решило вашу проблему? Если да, не могли бы вы отметить это как принятый ответ? В противном случае, дайте мне знать, если у вас есть другие вопросы по этому поводу. - person GisMofx; 27.04.2014
comment
Привет, GisMofx, спасибо за код, но код не работал в CATIA VBA (IN-Process). - person IMch; 28.04.2014
comment
Привет GisMofx, Private Sub UserForm_Initialize() - person IMch; 07.05.2014
comment
@IMch Этот комментарий бесполезен. Пожалуйста, опубликуйте весь код или ошибку, которую вы получаете. С другой стороны, этот код должен входить в другую подпрограмму, не пользовательская форма инициализирует подпрограмму. Помогите мне помочь вам. - person GisMofx; 08.05.2014