| 会员登录 立即注册
关注公众号

关注公众号拿干货

CATIA论坛公众号
加入联盟

扫微信(sakula)入联盟

CATIA软件
风格切换

catia教程

搜索

CATIA联盟论坛

[CATIA插件] CATIA二次开发:Excel中点坐标数据导入与生成点应用程序编写

[复制链接]
CATIA视频教程 发表于 2019-9-19 09:35:24 | 显示全部楼层 |阅读模式
CATIA视频教程
2019-9-19 09:35:24 1116 0 看全部
  前几期为大家介绍了基于VBA二次开发的CATIA软件焊点坐标数据导出应用程序编写以及焊点小球生成工具应用程序的编写,本期再来为大家介绍一下基于VBA二次开发的Excel焊点坐标数据导入与生成点数模的应用程序编写。

  CATIA软件版本:CATIA v5R21。

  VisualStudio软件版本:VisualStudio Ultimate 2010。

  一、项目创建

  打开VisualStudio软件,进入VB.Net开发环境。然后新建项目,选择“Windows窗口应用程序”模板,创建点坐标数据导入工具项目。

  二、CATIA AutomationAPI类库引用

  在添加引用对话框中点选上方的“COM”标签,下方的组件显示框中全选带有“CATIA V5”前缀的API组件,点击确定按钮,稍等片刻后组件加载完成后窗口将自动关闭。
CATIA二次开发:Excel中点坐标数据导入与生成点应用程序编写99

  三、软件界面设计
  1.在自动添加的Form1窗体控件中分别添加一个Button公共控件和一个OpenFileDialog对话框控件。2.分别设置Form1窗体控件属性参数与Button公共控件属性参数。
Form1窗体属性
属性
设置参数值
说明
FormBorderStyle
FixedSingle
设置窗体的边框样式为固定单边框。
MaximizeBox
False
设置在窗体的标题栏中不显示 “最大化”按钮。
MinimizeBox
False
设置在窗体的标题栏中不显示 “最小化”按钮。
Text
点坐标数据导入工具
设置窗体标题为“焊点小球生成工具”。
TopMost
True
设置该窗体显示为最顶层窗体。
Button控件属性
(Name)
CreatePointBotton
设置控件的名称为CreatePointBotton。
Text
数据导入
设置控件显示内容为“数据导入”。
  3.控件属性设置完成后将Form1窗体控件拖拽到合适大小,然后将Button控件拖放到剧中位置。
CATIA二次开发:Excel中点坐标数据导入与生成点应用程序编写69

  四、程序编写
  1.双击Form1窗体控件,打开程序代码编辑窗口,在Public Class Form1代码上方编写CATIA API类库引用代码。
CATIA二次开发:Excel中点坐标数据导入与生成点应用程序编写56

  2.在Form1窗口控件的Load事件代码编辑器区中编写CATIA软件连接控制VBA代码。
CATIA二次开发:Excel中点坐标数据导入与生成点应用程序编写1

  3.双击Form1窗体控件上的Button控件,进入按钮的Click事件代码编辑区,分别编写打开点坐标数据Excel文件代码、遍历Excel文件中点坐标数据代码、生成点数模VBA代码。
CATIA二次开发:Excel中点坐标数据导入与生成点应用程序编写67

  4.完整程序VBA代码如下所示。


      '添加CATIA API引用

      Imports SURFACEMACHINING

      Imports CATStrSettingsTypeLib

      Imports StrTypeLib

      Imports SPATypeLib

      Imports SMTypeLib

      Imports SimulationTypeLib

      Imports SIM

      Imports CATRsc2

      Imports ProductStructureTypeLib

      Imports PRISMATICMACHINING

      Imports PPR

      Imports PCBITF

      Imports PARTITF

      Imports OSMInterfacesTypeLib

      Imports NavigatorTypeLib

      Imports MECMOD

      Imports MANUFACTURING

      Imports KnowledgewareTypeLib

      Imports KinTypeLib

      Imports INFITF

      Imports HybridShapeTypeLib

      Imports GenKwe

      Imports FittingTypeLib

      Imports ElectricalTypeLib

      Imports ElecSchematicTypeLib

      Imports DRAFTINGITF

      Imports LAYOUT2DITF

      Imports DNBSimulation

      Imports DNBSimIO

      Imports DNBSimAct

      Imports DNBRobot

      Imports DNBIgpResourceProgram

      Imports DNBReporting

      Imports DNBMHIItf

      Imports DNBManufacturingLayoutItf

      Imports DNBIgripSim

      Imports DNBIgpTagPath

      Imports SWKHumanModelingItf

      Imports DNBPert

      Imports DNBFastener

      Imports DNBDpmItf

      Imports DNBBIW

      Imports DNBDevice

      Imports DNBDeviceActivity

      Imports DNBD5I

      Imports DNBASY

      Imports PROCESSITF

      Imports ComponentsCatalogsTypeLib

      Imports AnnotationTypeLib

      Imports CATTooling

      Imports CATStk

      Imports CATSmInterfacesTypeLib

      Imports CATSmarTeamInteg

      Imports SHEITF

      Imports CATSdeSetting

      Imports CATSchematicTypeLib

      Imports CATRsc

      Imports CATRma

      Imports CATRpmReporterTypeLib

      Imports CATRdg

      Imports CATPspPlantShipTypeLib

      Imports CATOBM

      Imports CATMultiCAD

      Imports CATMat

      Imports DNBIPD

      Imports CATInstantCollabItf

      Imports CATImm

      Imports CATIdeSettings

      Imports CATV4IInteropTypeLib

      Imports CATHumanPackaging

      Imports CATFunctSystem

      Imports CATEdbTypeLib

      Imports CATDrmRmsSettings

      Imports CATDataExch

      Imports BehaviorTypeLib

      Imports CATAssemblyTypeLib

      Imports CATArrangementTypeLib

      Imports SAMITF

      Imports CAT3DXml

      Imports CATCompositesMat

      Imports AECRTypeLib

      Public Class Form1

          '声明CATIA COM对象

          Dim CATIA As Object

          Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

              Try

                  '获取CATIA COM对象

                  CATIA = GetObject(, "CATIA.Application")

              Catch ex As Exception

                  '未打开CATIA软件时提示打开CATIA软件

                  MsgBox("请先启动CATIA软件。")

                  End

              End Try

          End Sub



          Private Sub CreatePointBotton_Click(sender As System.Object, e As System.EventArgs) Handles CreatePointBotton.Click

              '打开点坐标数据Excel文件

              Dim FilePath As String

              On Error Resume Next

              OpenFileDialog1.FileName = "" '清空打开文件对话框文件名

              OpenFileDialog1.Filter = "Excel工作簿|*.xlsx" '筛选扩展名为“Excel工作簿”或“*.xlsx”格式的文件

              OpenFileDialog1.ShowDialog() '显示打开文件对话框

              If OpenFileDialog1.FileName <> "" Then '判断是否选择了文件,若选择了Excel文件则将其赋值给FilePath,若未选择则不做任何响应

                  FilePath = OpenFileDialog1.FileName

              End If

              On Error GoTo 0

              '点坐标数据生成点

              If FilePath <> "" Then '判断是否已选择点坐标数据Excel文件,若打开则执行生成点,若为打开则无响应

                  Dim partDocument1 As Document '创建文件

                  partDocument1 = CATIA.ActiveDocument

                  Dim part1 As Part '创建部件

                  part1 = partDocument1.part

                  Dim hybridBodies1 As HybridBodies

                  hybridBodies1 = part1.HybridBodies '获取Part中的几何图形集集合对象

                  Dim hybridBody1 As HybridBody

                  hybridBody1 = hybridBodies1.Add() '添加一个几何图形集

                  part1.Update() '更新零件显示

                  Dim hybridShapeFactory1 As HybridShapeFactory

                  hybridShapeFactory1 = part1.HybridShapeFactory '获得HybridShapeFactory对象

                  Dim excel As Object '调用excel对象

                  excel = GetObject(FilePath) '获取坐标数据Excel文件路径

                  '利用循环语句,遍历读入Excel中的数据。这些值分别存于Excel的Sheet1中的B、C、D中,把这些值分别赋给变量x,y,z

                  Dim i As Integer

                  i = 1

                  Dim x, y, z As String

                  x = excel.worksheets(1).cells.range("B" & i).Value '初始化x坐标数据

                  Do While x <> ""

                      y = excel.worksheets(1).cells.range("C" & i).value 'Excel中C列单元格数据赋值y坐标数据

                      z = excel.worksheets(1).cells.range("D" & i).value 'Excel中D列单元格数据赋值z坐标数据

                      '定义点坐标

                      Dim hybridShapePointCoord1 As HybridShapePointCoord

                      hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(x, y, z)

                      '生成点

                      hybridBody1.AppendHybridShape(hybridShapePointCoord1)

                      part1.InWorkObject = hybridShapePointCoord1 '定义当前工作对象,此行代码可以不要

                      i = i + 1

                      x = excel.worksheets(1).cells.range("B" & i).value 'Excel中B列单元格数据赋值x坐标数据

                  Loop

                  part1.Update()

              End If

          End Sub

      End Class

  五、运行测试

  1.创建一个Excel点坐标数据文件,在工作簿1(Sheet1)的A列输入点ID,B、C、D列分别输入点的x、y、z坐标值,并保存。
CATIA二次开发:Excel中点坐标数据导入与生成点应用程序编写10

  2.打开CATIA软件,新建或打开一个零件文件。

  3.对编写的代码进行测试,打开点坐标数据导入工具软件,点击“数据导入”按钮,在打开的文件浏览对话框中选择创建的点坐标数据Excel文件并打开。
CATIA二次开发:Excel中点坐标数据导入与生成点应用程序编写33

  4.如果未出错,等待片刻后CATIA软件中将生成以Excel文件中的数据为坐标值的点数模。
CATIA二次开发:Excel中点坐标数据导入与生成点应用程序编写43

  5.在项目文件夹的Debug目录下可以找到编译生成了“点坐标数据导入工具”应用程序,直接双击打开使用,效果与调试程序一致。


CATIA论坛官方公众号
  • 您可能感兴趣
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

查看:1116 | 回复:0

CATIA教程| CATIA视频| CATIA培训| CATIA下载| CATIA安装| CATIA插件| CATIA入门| CATIA V5| CATIA V6| CATIA论坛
联系电话:18982019507 地址:成都市青羊区二环路西一段155号天祥广场4栋1801
版权所有 ©软易达 •( 蜀ICP备14018086号 )Copyright © 2001-2013 Comsenz Inc. All Rights Reserved.   Powered by Discuz! X3.4
联盟微信客服:
silhouette023CATIA软件


CATIA技术群

微信公众号 CATIA微信公众号
“CATIA联盟”