查看: 2908|回复: 11
收起左侧

[套料软件] GEN指令转换,零件导CAD

[复制链接]
发表于 2023-2-26 22:29 | 显示全部楼层 |阅读模式 来自: 中国上海
最近发现和个开源的ANYCAD工具,超级好用,可以用他来用他来显示GEN
1.利用NUGET,下载ANYCAD到到工程,会自动引用
image.png -->
2.在窗体上放置一个SplitContainer控件
image.png -->
3.把SplitContainer1.Panel当成挂上ANYCAD显示控件,代码如下
image.png -->
4.写选择左边的LIST时的事件
  1.     Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
  2.         GroupBox2.Text = "GEN文件列表" + ListBox1.SelectedItems.Count.ToString + "/" + ListBox1.Items.Count.ToString
  3.         If Me.ListBox1.SelectedItems.Count > 0 Then
  4.             mRenderView.ClearAll()
  5.             Dim material_mark As BasicMaterial
  6.             material_mark = BasicMaterial.Create("gold")
  7.             material_mark.SetColor(New AnyCAD.Foundation.Vector3(0, 1, 0))
  8.             Dim material_burn As BasicMaterial
  9.             material_burn = BasicMaterial.Create("ruby")
  10.             material_burn.SetColor(New AnyCAD.Foundation.Vector3(1, 0, 0))
  11.             Dim material_plate As BasicMaterial
  12.             material_plate = BasicMaterial.Create("ruby")
  13.             material_plate.SetColor(New AnyCAD.Foundation.Vector3(1, 1, 1))
  14.             Dim str As String = Me.ListBox1.SelectedItems(0)
  15.             Dim genFileName As String = (Me.ToolStripStatusLabel4.Text & str)
  16.             Dim pocessor As New ToppingPocessor
  17.             pocessor.GetSegList(genFileName)
  18.             For i = 0 To pocessor.segList.Count - 1
  19.                 Dim segment As SegmentCls = pocessor.segList(i)
  20.                 If segment.radius = 0 Then
  21.                     Dim line_SB = SketchBuilder.MakeLine(New GPnt(segment.start_u, segment.start_v, 0), New GPnt(segment.end_u, segment.end_v, 0))
  22.                     If segment.action = "Mark" Then
  23.                         mRenderView.ShowSceneNode(BrepSceneNode.Create(line_SB, material_mark, material_mark))
  24.                     Else
  25.                         mRenderView.ShowSceneNode(BrepSceneNode.Create(line_SB, material_burn, material_burn))
  26.                     End If
  27.                 Else
  28.                     Dim arc_SB = SketchBuilder.MakeArcOfCircle(New GPnt(segment.start_u, segment.start_v, 0), New GPnt(segment.end_u, segment.end_v, 0), New GPnt(segment.amp_u, segment.amp_v, 0))
  29.                     If segment.action = "Mark" Then
  30.                         mRenderView.ShowSceneNode(BrepSceneNode.Create(arc_SB, material_mark, material_mark))
  31.                     Else
  32.                         mRenderView.ShowSceneNode(BrepSceneNode.Create(arc_SB, material_burn, material_burn))
  33.                     End If
  34.                 End If
  35.             Next
  36.             Dim line_SB1 = SketchBuilder.MakeLine(New GPnt(0, 0, 0), New GPnt(pocessor.plate_Length * 0.1, 0, 0))
  37.             mRenderView.ShowSceneNode(BrepSceneNode.Create(line_SB1, material_plate, material_plate))
  38.             Dim line_SB2 = SketchBuilder.MakeLine(New GPnt(pocessor.plate_Length * 0.1, 0, 0), New GPnt(pocessor.plate_Length * 0.1, pocessor.plate_Width * 0.1, 0))
  39.             mRenderView.ShowSceneNode(BrepSceneNode.Create(line_SB2, material_plate, material_plate))
  40.             Dim line_SB3 = SketchBuilder.MakeLine(New GPnt(pocessor.plate_Length * 0.1, pocessor.plate_Width * 0.1, 0), New GPnt(0, pocessor.plate_Width * 0.1, 0))
  41.             mRenderView.ShowSceneNode(BrepSceneNode.Create(line_SB3, material_plate, material_plate))
  42.             Dim line_SB4 = SketchBuilder.MakeLine(New GPnt(0, pocessor.plate_Width * 0.1, 0), New GPnt(0, 0, 0))
  43.             mRenderView.ShowSceneNode(BrepSceneNode.Create(line_SB4, material_plate, material_plate))
  44.             mRenderView.ZoomAll()
  45.         End If
  46.     End Sub
复制代码

image.png -->
5.显示效果如下
image.png -->
image.png -->

image.png -->
6.花两个小时搞定,ANYCAD功能引大,多花点时间,其实可以可以把做成3D的,并可以把每个边的坡口都可以做进去,进行显示。如果有客户有需求的可以搞搞。
image.png -->

今天晚上没事做,研究了一下,做成立体的零件
image.png -->

在立体面上,增加划线功能。并把切割引点加上。
ANYCAD,还有模拟仿真,应该可以做出销切割机的仿真切割。
image.png -->

image.png -->



image.png
回复

使用道具 举报

龙船学院
 楼主| 发表于 2023-2-26 22:43 | 显示全部楼层 来自: 中国上海
把程序放到网盘了,要用的朋友可以去网盘下载

链接:https://pan.baidu.com/s/1nUSzaBGx4fEe58x39VNSrQ
提取码:lpl3
回复 支持 反对

使用道具 举报

发表于 2023-2-27 08:20 | 显示全部楼层 来自: 中国浙江台州
能gen转成TXT吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-27 09:40 | 显示全部楼层 来自: 中国上海

转TXT,MPG,都可以转,网盘里的只能浏览GEN
回复 支持 反对

使用道具 举报

发表于 2023-2-27 14:59 | 显示全部楼层 来自: 中国山东威海

GEN转TXT早就有一个免费的小软件,很好用的
回复 支持 反对

使用道具 举报

发表于 2023-2-28 06:53 | 显示全部楼层 来自: 中国浙江台州
收费的东西就不要拿出来晒了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-28 22:57 | 显示全部楼层 来自: 中国上海
生主立体零件代码如下:
  1.            Dim start_contour As Boolean = False
  2.             Dim start_hole As Boolean = False
  3.             Dim topoShapes As TopoShapeList = New TopoShapeList()
  4.             Dim hole_list As New List(Of TopoShape)
  5.             For i = 0 To pocessor.segList.Count - 1
  6.                 Dim segment As SegmentCls = pocessor.segList(i)
  7.                 Dim cls2 As SegmentCls = pocessor.segList(i)
  8.                 If (i <> (pocessor.segList.Count - 1)) Then
  9.                     cls2 = pocessor.segList((i + 1))
  10.                 End If


  11.                 If segment.shape = "HOLE" Then
  12.                     If start_hole = False Then
  13.                         topoShapes = New TopoShapeList()
  14.                     End If
  15.                     If segment.radius = 0 Then          '绘制直线
  16.                         Dim line_SB = SketchBuilder.MakeLine(New GPnt(segment.start_u, segment.start_v, 0), New GPnt(segment.end_u, segment.end_v, 0))
  17.                         topoShapes.Add(line_SB)
  18.                     Else                '绘制圆弧
  19.                         Dim arc_SB = SketchBuilder.MakeArcOfCircle(New GPnt(segment.start_u, segment.start_v, 0), New GPnt(segment.end_u, segment.end_v, 0), New GPnt(segment.amp_u, segment.amp_v, 0))
  20.                         topoShapes.Add(arc_SB)
  21.                     End If
  22.                     start_hole = True
  23.                     If cls2.shape <> "HOLE" Then
  24.                         Dim Shape = ShapeBuilder.MakeCompound(topoShapes)
  25.                         Shape = SketchBuilder.MakeWire(topoShapes)
  26.                         Dim part_face = SketchBuilder.MakePlanarFace(Shape)
  27.                         hole_list.Add(part_face)
  28.                         start_hole = False
  29.                     End If
  30.                 End If

  31.                 If segment.shape = "OUTER_CONTOUR" Then
  32.                     If start_contour = False Then
  33.                         topoShapes = New TopoShapeList()
  34.                     End If
  35.                     If segment.radius = 0 Then          '绘制直线
  36.                         Dim line_SB = SketchBuilder.MakeLine(New GPnt(segment.start_u, segment.start_v, 0), New GPnt(segment.end_u, segment.end_v, 0))
  37.                         topoShapes.Add(line_SB)
  38.                     Else                '绘制圆弧
  39.                         Dim arc_SB = SketchBuilder.MakeArcOfCircle(New GPnt(segment.start_u, segment.start_v, 0), New GPnt(segment.end_u, segment.end_v, 0), New GPnt(segment.amp_u, segment.amp_v, 0))
  40.                         topoShapes.Add(arc_SB)
  41.                     End If
  42.                     start_contour = True

  43.                     If cls2.shape <> "OUTER_CONTOUR" Then
  44.                         Dim Shape = ShapeBuilder.MakeCompound(topoShapes)
  45.                         Shape = SketchBuilder.MakeWire(topoShapes)
  46.                         Dim part_face = SketchBuilder.MakePlanarFace(Shape)
  47.                         For Each hole_one In hole_list
  48.                             part_face = BooleanTool.Cut(part_face, hole_one)
  49.                         Next
  50.                         Dim part = FeatureTool.Extrude(part_face, thickness, New GDir(0, 0, -1))
  51.                         mRenderView.ShowShape(part, ColorTable.Beige)
  52.                         start_contour = False
  53.                         hole_list.Clear()
  54.                     End If
  55.                 End If
  56.             Next
复制代码
回复 支持 反对

使用道具 举报

发表于 2023-5-18 16:24 | 显示全部楼层 来自: 中国江苏南通
一堆代码
看不懂
回复 支持 反对

使用道具 举报

发表于 2023-5-20 16:45 | 显示全部楼层 来自: 中国湖北
谢谢分享,牛逼哄哄的
回复 支持 反对

使用道具 举报

发表于 2023-8-21 14:19 | 显示全部楼层 来自: 中国上海
不明觉厉,谢谢分享
回复 支持 反对

使用道具 举报

发表于 2023-8-30 00:06 | 显示全部楼层 来自: 中国安徽芜湖
不明觉厉,一堆代码,看不懂!
回复 支持 反对

使用道具 举报

发表于 2023-10-8 16:55 | 显示全部楼层 来自: 中国江西吉安
能把这个类ToppingPocessor的源码发一下码?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|标签|免责声明|龙船社区

GMT+8, 2024-4-25 00:50

Powered by Imarine

Copyright © 2006, 龙船社区

快速回复 返回顶部 返回列表