+发表新主题
zhuangquan1 发布于2023-3-5 15:31 274 次浏览 33 位用户参与讨论
跳转到指定楼层
tianxia03 发表于 2023-3-18 22:31:12
loavehz 发表于 2023-3-17 16:28
请问在运行规格的时候有下面的错误提示,是什么原因?...
老中医大佬写的规则只适用于零件,你的是部件,不适合,要不请老中医大佬添加个部件的代码呗
回复

使用道具 举报

computer991 发表于 2023-3-18 22:38:14
ttan 发表于 2023-3-14 05:01
前面有回复,衍生可以。...

衍生做到第三步只是生成了一个方盒子,没有尺寸参数啊,怎样让这个长宽高能被调用呢
回复

使用道具 举报

dutao1221 发表于 2023-3-21 12:13:23
tianxia03 发表于 2023-3-18 22:31
老中医大佬写的规则只适用于零件,你的是部件,不适合,要不请老中医大佬添加个部件的代码呗 ......
原来是这样,谢谢!确实是部件应该更需要这个功能,有请大佬出场!
回复

使用道具 举报

ndht0918 发表于 2023-3-22 07:02:26
把第二行由:Dim oCompDef As PartComponentDefinition
改为:Dim oCompDef As AssemblyComponentDefinition
回复

使用道具 举报

wangkuncu 发表于 2023-3-22 13:24:02
ndht0918 发表于 2023-3-22 07:02
把第二行由:Dim oCompDef As PartComponentDefinition
改为:Dim oCompDef As AssemblyComponentDefinitio ......
大佬现身了
回复

使用道具 举报

cdiyxl 发表于 2023-3-22 13:31:45
ndht0918 发表于 2023-3-22 07:02
把第二行由:Dim oCompDef As PartComponentDefinition
改为:Dim oCompDef As AssemblyComponentDefinitio ......
大佬,这个代码还有个问题,就是当设置零件为ipart时,代码生成的长宽高是一次性的,ipart零件更改型号时,参数栏生成的长宽高不会跟着变化
回复

使用道具 举报

322624cxlcyf 发表于 2023-3-22 13:39:04
答案03 发表于 2023-3-6 23:24
这个不复杂。
1. 创建临时的装配,加入要测量的模型,存盘
2. 创建临时的零件,衍生这个装配,并确定为“包 ......

你这个衍生的能将长宽高数据导出到fx参数么?如果能是怎么做呢
回复

使用道具 举报

ambition 发表于 2023-3-24 16:12:12
cdiyxl 发表于 2023-3-22 13:31
大佬,这个代码还有个问题,就是当设置零件为ipart时,代码生成的长宽高是一次性的,ipart零件更改型号时 ......

  • Dim doc As AssemblyDocument = ThisDoc.Document '如果是零件则把Assembly替换为Part。
  • oCompDef = doc.ComponentDefinition
  • Dim oparams As Parameters = oCompDef.Parameters
  • Dim oparam As Parameter


  • Dim oPt1 As Point, oPt2 As Point
  • oPt1 = oCompDef.RangeBox.MaxPoint
  • oPt2 = oCompDef.RangeBox.MinPoint
  • Dim X As Double, Y As Double, Z As Double
  • X = Abs(oPt1.X - oPt2.X)
  • Y = Abs(oPt1.Y - oPt2.Y)
  • Z = Abs(oPt1.Z - oPt2.Z)

  • For Each oparam In oparams
  •                 If oparam.Name = "长" Then exists = True
  •             If oparam.Name = "宽" Then exists1 = True
  •                 If oparam.Name = "高" Then exists2 = True
  •         Next oparam
  • If exists Then
  •                          oparams.Item("长").Value = Round(X * 1, 0)
  •                 Else
  •                         oparams.UserParameters.AddByValue("长", Round(X * 1, 0), "mm")
  •                 End If
  • If exists1 Then
  •                          oparams.Item("宽").Value = Round(Y * 1, 0)
  •                 Else
  •                         oparams.UserParameters.AddByValue("宽", Round(Y * 1, 0), "mm")
  •                 End If
  • If exists2 Then
  •                          oparams.Item("高").Value = Round(Z * 1, 0)
  •                 Else
  •                         oparams.UserParameters.AddByValue("高", Round(Z * 1, 0), "mm")
  •                 End If               

复制代码
试试这段。要更新参数就运行一次规则,或者添加一个触发
回复

使用道具 举报

stager_id 发表于 2023-3-25 20:17:58
ambition 发表于 2023-3-24 16:12
  • Dim doc As AssemblyDocument = ThisDoc.Document '如果是零件则把Assembly替换为Part。
  • oCompDef  ......
  • 老中医大佬,这个代码还有个问题,就是四舍五入的,比方说,厚度3mm,直接就round成0厚度了;长度452mm,就变成450了。。。。我想把个位数保留,不要小数位,这个代码怎么改呢
    回复

    使用道具 举报

    woxin111 发表于 2023-3-25 20:23:37
    ambition 发表于 2023-3-24 16:12Dim doc As AssemblyDocument = ThisDoc.Document '如果是零件则把Assembly替换为Part。oCompDef  ......

    file:///C:/Users/luoheng/Desktop/test.png老中医大佬,这个实际尺寸跟用代码引用的尺寸差太多了哇

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    回复

    使用道具 举报

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

    本版积分规则

    QQ| Archiver|手机版|小黑屋| 碧波制图网 Published by Stonespider

    Copyright © 2021-2023 Kangli Wu   All Rights Reserved.

    Powered by Discuz! X3.5( 苏ICP备18011607号-1 )

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